51265 lines
1.4 MiB
51265 lines
1.4 MiB
// 4.7.5 (2018-01-22)
|
|
!(function() {
|
|
"use strict";
|
|
var e,
|
|
t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v = function(e) {
|
|
return function() {
|
|
return e;
|
|
};
|
|
},
|
|
y = {
|
|
noop: function() {},
|
|
noarg: function(e) {
|
|
return function() {
|
|
return e();
|
|
};
|
|
},
|
|
compose: function(e, t) {
|
|
return function() {
|
|
return e(t.apply(null, arguments));
|
|
};
|
|
},
|
|
constant: v,
|
|
identity: function(e) {
|
|
return e;
|
|
},
|
|
tripleEquals: function(e, t) {
|
|
return e === t;
|
|
},
|
|
curry: function(e) {
|
|
for (
|
|
var t = new Array(arguments.length - 1), n = 1;
|
|
n < arguments.length;
|
|
n++
|
|
)
|
|
t[n - 1] = arguments[n];
|
|
return function() {
|
|
for (var n = new Array(arguments.length), r = 0; r < n.length; r++)
|
|
n[r] = arguments[r];
|
|
var o = t.concat(n);
|
|
return e.apply(null, o);
|
|
};
|
|
},
|
|
not: function(e) {
|
|
return function() {
|
|
return !e.apply(null, arguments);
|
|
};
|
|
},
|
|
die: function(e) {
|
|
return function() {
|
|
throw new Error(e);
|
|
};
|
|
},
|
|
apply: function(e) {
|
|
return e();
|
|
},
|
|
call: function(e) {
|
|
e();
|
|
},
|
|
never: v(!1),
|
|
always: v(!0)
|
|
},
|
|
b = y.never,
|
|
C = y.always,
|
|
x = function() {
|
|
return w;
|
|
},
|
|
w = ((r = {
|
|
fold: function(e, t) {
|
|
return e();
|
|
},
|
|
is: b,
|
|
isSome: b,
|
|
isNone: C,
|
|
getOr: (n = function(e) {
|
|
return e;
|
|
}),
|
|
getOrThunk: (t = function(e) {
|
|
return e();
|
|
}),
|
|
getOrDie: function(e) {
|
|
throw new Error(e || "error: getOrDie called on none.");
|
|
},
|
|
or: n,
|
|
orThunk: t,
|
|
map: x,
|
|
ap: x,
|
|
each: function() {},
|
|
bind: x,
|
|
flatten: x,
|
|
exists: b,
|
|
forall: C,
|
|
filter: x,
|
|
equals: (e = function(e) {
|
|
return e.isNone();
|
|
}),
|
|
equals_: e,
|
|
toArray: function() {
|
|
return [];
|
|
},
|
|
toString: y.constant("none()")
|
|
}),
|
|
Object.freeze && Object.freeze(r),
|
|
r),
|
|
N = function(e) {
|
|
var t = function() {
|
|
return e;
|
|
},
|
|
n = function() {
|
|
return o;
|
|
},
|
|
r = function(t) {
|
|
return t(e);
|
|
},
|
|
o = {
|
|
fold: function(t, n) {
|
|
return n(e);
|
|
},
|
|
is: function(t) {
|
|
return e === t;
|
|
},
|
|
isSome: C,
|
|
isNone: b,
|
|
getOr: t,
|
|
getOrThunk: t,
|
|
getOrDie: t,
|
|
or: n,
|
|
orThunk: n,
|
|
map: function(t) {
|
|
return N(t(e));
|
|
},
|
|
ap: function(t) {
|
|
return t.fold(x, function(t) {
|
|
return N(t(e));
|
|
});
|
|
},
|
|
each: function(t) {
|
|
t(e);
|
|
},
|
|
bind: r,
|
|
flatten: t,
|
|
exists: r,
|
|
forall: r,
|
|
filter: function(t) {
|
|
return t(e) ? o : w;
|
|
},
|
|
equals: function(t) {
|
|
return t.is(e);
|
|
},
|
|
equals_: function(t, n) {
|
|
return t.fold(b, function(t) {
|
|
return n(e, t);
|
|
});
|
|
},
|
|
toArray: function() {
|
|
return [e];
|
|
},
|
|
toString: function() {
|
|
return "some(" + e + ")";
|
|
}
|
|
};
|
|
return o;
|
|
},
|
|
E = {
|
|
some: N,
|
|
none: x,
|
|
from: function(e) {
|
|
return null === e || e === undefined ? w : N(e);
|
|
}
|
|
},
|
|
S =
|
|
(o = Array.prototype.indexOf) === undefined
|
|
? function(e, t) {
|
|
return D(e, t);
|
|
}
|
|
: function(e, t) {
|
|
return o.call(e, t);
|
|
},
|
|
k = function(e, t) {
|
|
return S(e, t) > -1;
|
|
},
|
|
T = function(e, t) {
|
|
for (var n = e.length, r = new Array(n), o = 0; o < n; o++) {
|
|
var i = e[o];
|
|
r[o] = t(i, o, e);
|
|
}
|
|
return r;
|
|
},
|
|
A = function(e, t) {
|
|
for (var n = 0, r = e.length; n < r; n++) t(e[n], n, e);
|
|
},
|
|
_ = function(e, t) {
|
|
for (var n = e.length - 1; n >= 0; n--) t(e[n], n, e);
|
|
},
|
|
B = function(e, t) {
|
|
for (var n = [], r = 0, o = e.length; r < o; r++) {
|
|
var i = e[r];
|
|
t(i, r, e) && n.push(i);
|
|
}
|
|
return n;
|
|
},
|
|
R = function(e, t) {
|
|
for (var n = 0, r = e.length; n < r; n++)
|
|
if (t(e[n], n, e)) return E.some(n);
|
|
return E.none();
|
|
},
|
|
D = function(e, t) {
|
|
for (var n = 0, r = e.length; n < r; ++n) if (e[n] === t) return n;
|
|
return -1;
|
|
},
|
|
O = Array.prototype.push,
|
|
P = function(e) {
|
|
for (var t = [], n = 0, r = e.length; n < r; ++n) {
|
|
if (!Array.prototype.isPrototypeOf(e[n]))
|
|
throw new Error(
|
|
"Arr.flatten item " + n + " was not an array, input: " + e
|
|
);
|
|
O.apply(t, e[n]);
|
|
}
|
|
return t;
|
|
},
|
|
I = function(e, t) {
|
|
for (var n = 0, r = e.length; n < r; ++n)
|
|
if (!0 !== t(e[n], n, e)) return !1;
|
|
return !0;
|
|
},
|
|
L = Array.prototype.slice,
|
|
M = {
|
|
map: T,
|
|
each: A,
|
|
eachr: _,
|
|
partition: function(e, t) {
|
|
for (var n = [], r = [], o = 0, i = e.length; o < i; o++) {
|
|
var a = e[o];
|
|
(t(a, o, e) ? n : r).push(a);
|
|
}
|
|
return { pass: n, fail: r };
|
|
},
|
|
filter: B,
|
|
groupBy: function(e, t) {
|
|
if (0 === e.length) return [];
|
|
for (var n = t(e[0]), r = [], o = [], i = 0, a = e.length; i < a; i++) {
|
|
var s = e[i],
|
|
u = t(s);
|
|
u !== n && (r.push(o), (o = [])), (n = u), o.push(s);
|
|
}
|
|
return 0 !== o.length && r.push(o), r;
|
|
},
|
|
indexOf: function(e, t) {
|
|
var n = S(e, t);
|
|
return -1 === n ? E.none() : E.some(n);
|
|
},
|
|
foldr: function(e, t, n) {
|
|
return (
|
|
_(e, function(e) {
|
|
n = t(n, e);
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
foldl: function(e, t, n) {
|
|
return (
|
|
A(e, function(e) {
|
|
n = t(n, e);
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
find: function(e, t) {
|
|
for (var n = 0, r = e.length; n < r; n++) {
|
|
var o = e[n];
|
|
if (t(o, n, e)) return E.some(o);
|
|
}
|
|
return E.none();
|
|
},
|
|
findIndex: R,
|
|
flatten: P,
|
|
bind: function(e, t) {
|
|
var n = T(e, t);
|
|
return P(n);
|
|
},
|
|
forall: I,
|
|
exists: function(e, t) {
|
|
return R(e, t).isSome();
|
|
},
|
|
contains: k,
|
|
equal: function(e, t) {
|
|
return (
|
|
e.length === t.length &&
|
|
I(e, function(e, n) {
|
|
return e === t[n];
|
|
})
|
|
);
|
|
},
|
|
reverse: function(e) {
|
|
var t = L.call(e, 0);
|
|
return t.reverse(), t;
|
|
},
|
|
chunk: function(e, t) {
|
|
for (var n = [], r = 0; r < e.length; r += t) {
|
|
var o = e.slice(r, r + t);
|
|
n.push(o);
|
|
}
|
|
return n;
|
|
},
|
|
difference: function(e, t) {
|
|
return B(e, function(e) {
|
|
return !k(t, e);
|
|
});
|
|
},
|
|
mapToObject: function(e, t) {
|
|
for (var n = {}, r = 0, o = e.length; r < o; r++) {
|
|
var i = e[r];
|
|
n[String(i)] = t(i, r);
|
|
}
|
|
return n;
|
|
},
|
|
pure: function(e) {
|
|
return [e];
|
|
},
|
|
sort: function(e, t) {
|
|
var n = L.call(e, 0);
|
|
return n.sort(t), n;
|
|
},
|
|
range: function(e, t) {
|
|
for (var n = [], r = 0; r < e; r++) n.push(t(r));
|
|
return n;
|
|
},
|
|
head: function(e) {
|
|
return 0 === e.length ? E.none() : E.some(e[0]);
|
|
},
|
|
last: function(e) {
|
|
return 0 === e.length ? E.none() : E.some(e[e.length - 1]);
|
|
}
|
|
},
|
|
F = "undefined" != typeof window ? window : Function("return this;")(),
|
|
z = function(e, t) {
|
|
for (
|
|
var n = t !== undefined && null !== t ? t : F, r = 0;
|
|
r < e.length && n !== undefined && null !== n;
|
|
++r
|
|
)
|
|
n = n[e[r]];
|
|
return n;
|
|
},
|
|
U = function(e, t) {
|
|
var n = e.split(".");
|
|
return z(n, t);
|
|
},
|
|
V = function(e, t) {
|
|
var n = U(e, t);
|
|
if (n === undefined || null === n)
|
|
throw e + " not available on this browser";
|
|
return n;
|
|
},
|
|
H = function() {
|
|
return V("URL");
|
|
},
|
|
q = function(e) {
|
|
return H().createObjectURL(e);
|
|
},
|
|
j = function(e) {
|
|
H().revokeObjectURL(e);
|
|
},
|
|
$ = navigator,
|
|
W = $.userAgent,
|
|
K = function(e) {
|
|
return "matchMedia" in window && matchMedia(e).matches;
|
|
};
|
|
(d = /Android/.test(W)),
|
|
(a =
|
|
(a =
|
|
!(i = /WebKit/.test(W)) &&
|
|
/MSIE/gi.test(W) &&
|
|
/Explorer/gi.test($.appName)) && /MSIE (\w+)\./.exec(W)[1]),
|
|
(s =
|
|
-1 !== W.indexOf("Trident/") &&
|
|
(-1 !== W.indexOf("rv:") || -1 !== $.appName.indexOf("Netscape")) &&
|
|
11),
|
|
(u = -1 !== W.indexOf("Edge/") && !a && !s && 12),
|
|
(a = a || s || u),
|
|
(c = !i && !s && /Gecko/.test(W)),
|
|
(l = -1 !== W.indexOf("Mac")),
|
|
(f = /(iPad|iPhone)/.test(W)),
|
|
(m =
|
|
"FormData" in window && "FileReader" in window && "URL" in window && !!q),
|
|
(p = K("only screen and (max-device-width: 480px)") && (d || f)),
|
|
(g = K("only screen and (min-width: 800px)") && (d || f)),
|
|
(h = -1 !== W.indexOf("Windows Phone")),
|
|
u && (i = !1);
|
|
var X,
|
|
Y,
|
|
G,
|
|
J,
|
|
Q,
|
|
Z,
|
|
ee,
|
|
te,
|
|
ne,
|
|
re,
|
|
oe,
|
|
ie,
|
|
ae,
|
|
se,
|
|
ue,
|
|
ce,
|
|
le,
|
|
fe,
|
|
de,
|
|
me = {
|
|
opera: !1,
|
|
webkit: i,
|
|
ie: a,
|
|
gecko: c,
|
|
mac: l,
|
|
iOS: f,
|
|
android: d,
|
|
contentEditable:
|
|
!f || m || parseInt(W.match(/AppleWebKit\/(\d*)/)[1], 10) >= 534,
|
|
transparentSrc:
|
|
"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
|
|
caretAfter: 8 !== a,
|
|
range: window.getSelection && "Range" in window,
|
|
documentMode: a && !u ? document.documentMode || 7 : 10,
|
|
fileApi: m,
|
|
ceFalse: !1 === a || a > 8,
|
|
cacheSuffix: "",
|
|
container: null,
|
|
overrideViewPort: null,
|
|
experimentalShadowDom: !1,
|
|
canHaveCSP: !1 === a || a > 11,
|
|
desktop: !p && !g,
|
|
windowsPhone: h
|
|
},
|
|
pe = window.Promise
|
|
? window.Promise
|
|
: (function() {
|
|
function e(e, t) {
|
|
return function() {
|
|
e.apply(t, arguments);
|
|
};
|
|
}
|
|
var t =
|
|
Array.isArray ||
|
|
function(e) {
|
|
return "[object Array]" === Object.prototype.toString.call(e);
|
|
},
|
|
n = function(t) {
|
|
if ("object" != typeof this)
|
|
throw new TypeError("Promises must be constructed via new");
|
|
if ("function" != typeof t) throw new TypeError("not a function");
|
|
(this._state = null),
|
|
(this._value = null),
|
|
(this._deferreds = []),
|
|
u(t, e(i, this), e(a, this));
|
|
},
|
|
r =
|
|
n.immediateFn ||
|
|
("function" == typeof setImmediate && setImmediate) ||
|
|
function(e) {
|
|
setTimeout(e, 1);
|
|
};
|
|
function o(e) {
|
|
var t = this;
|
|
null !== this._state
|
|
? r(function() {
|
|
var n = t._state ? e.onFulfilled : e.onRejected;
|
|
if (null !== n) {
|
|
var r;
|
|
try {
|
|
r = n(t._value);
|
|
} catch (o) {
|
|
return void e.reject(o);
|
|
}
|
|
e.resolve(r);
|
|
} else (t._state ? e.resolve : e.reject)(t._value);
|
|
})
|
|
: this._deferreds.push(e);
|
|
}
|
|
function i(t) {
|
|
try {
|
|
if (t === this)
|
|
throw new TypeError(
|
|
"A promise cannot be resolved with itself."
|
|
);
|
|
if (t && ("object" == typeof t || "function" == typeof t)) {
|
|
var n = t.then;
|
|
if ("function" == typeof n)
|
|
return void u(e(n, t), e(i, this), e(a, this));
|
|
}
|
|
(this._state = !0), (this._value = t), s.call(this);
|
|
} catch (r) {
|
|
a.call(this, r);
|
|
}
|
|
}
|
|
function a(e) {
|
|
(this._state = !1), (this._value = e), s.call(this);
|
|
}
|
|
function s() {
|
|
for (var e = 0, t = this._deferreds.length; e < t; e++)
|
|
o.call(this, this._deferreds[e]);
|
|
this._deferreds = null;
|
|
}
|
|
function u(e, t, n) {
|
|
var r = !1;
|
|
try {
|
|
e(
|
|
function(e) {
|
|
r || ((r = !0), t(e));
|
|
},
|
|
function(e) {
|
|
r || ((r = !0), n(e));
|
|
}
|
|
);
|
|
} catch (o) {
|
|
if (r) return;
|
|
(r = !0), n(o);
|
|
}
|
|
}
|
|
return (
|
|
(n.prototype["catch"] = function(e) {
|
|
return this.then(null, e);
|
|
}),
|
|
(n.prototype.then = function(e, t) {
|
|
var r = this;
|
|
return new n(function(n, i) {
|
|
o.call(
|
|
r,
|
|
new function(e, t, n, r) {
|
|
(this.onFulfilled = "function" == typeof e ? e : null),
|
|
(this.onRejected = "function" == typeof t ? t : null),
|
|
(this.resolve = n),
|
|
(this.reject = r);
|
|
}(e, t, n, i)
|
|
);
|
|
});
|
|
}),
|
|
(n.all = function() {
|
|
var e = Array.prototype.slice.call(
|
|
1 === arguments.length && t(arguments[0])
|
|
? arguments[0]
|
|
: arguments
|
|
);
|
|
return new n(function(t, n) {
|
|
if (0 === e.length) return t([]);
|
|
var r = e.length;
|
|
function o(i, a) {
|
|
try {
|
|
if (a && ("object" == typeof a || "function" == typeof a)) {
|
|
var s = a.then;
|
|
if ("function" == typeof s)
|
|
return void s.call(
|
|
a,
|
|
function(e) {
|
|
o(i, e);
|
|
},
|
|
n
|
|
);
|
|
}
|
|
(e[i] = a), 0 == --r && t(e);
|
|
} catch (u) {
|
|
n(u);
|
|
}
|
|
}
|
|
for (var i = 0; i < e.length; i++) o(i, e[i]);
|
|
});
|
|
}),
|
|
(n.resolve = function(e) {
|
|
return e && "object" == typeof e && e.constructor === n
|
|
? e
|
|
: new n(function(t) {
|
|
t(e);
|
|
});
|
|
}),
|
|
(n.reject = function(e) {
|
|
return new n(function(t, n) {
|
|
n(e);
|
|
});
|
|
}),
|
|
(n.race = function(e) {
|
|
return new n(function(t, n) {
|
|
for (var r = 0, o = e.length; r < o; r++) e[r].then(t, n);
|
|
});
|
|
}),
|
|
n
|
|
);
|
|
})(),
|
|
ge = function(e, t) {
|
|
return "number" != typeof t && (t = 0), setTimeout(e, t);
|
|
},
|
|
he = function(e, t) {
|
|
return "number" != typeof t && (t = 1), setInterval(e, t);
|
|
},
|
|
ve = function(e, t) {
|
|
var n, r;
|
|
return (
|
|
((r = function() {
|
|
var r = arguments;
|
|
clearTimeout(n),
|
|
(n = ge(function() {
|
|
e.apply(this, r);
|
|
}, t));
|
|
}).stop = function() {
|
|
clearTimeout(n);
|
|
}),
|
|
r
|
|
);
|
|
},
|
|
ye = {
|
|
requestAnimationFrame: function(e, t) {
|
|
X
|
|
? X.then(e)
|
|
: (X = new pe(function(e) {
|
|
t || (t = document.body),
|
|
(function(e, t) {
|
|
var n,
|
|
r = window.requestAnimationFrame,
|
|
o = ["ms", "moz", "webkit"];
|
|
for (n = 0; n < o.length && !r; n++)
|
|
r = window[o[n] + "RequestAnimationFrame"];
|
|
r ||
|
|
(r = function(e) {
|
|
window.setTimeout(e, 0);
|
|
}),
|
|
r(e, t);
|
|
})(e, t);
|
|
}).then(e));
|
|
},
|
|
setTimeout: ge,
|
|
setInterval: he,
|
|
setEditorTimeout: function(e, t, n) {
|
|
return ge(function() {
|
|
e.removed || t();
|
|
}, n);
|
|
},
|
|
setEditorInterval: function(e, t, n) {
|
|
var r;
|
|
return (r = he(function() {
|
|
e.removed ? clearInterval(r) : t();
|
|
}, n));
|
|
},
|
|
debounce: ve,
|
|
throttle: ve,
|
|
clearInterval: function(e) {
|
|
return clearInterval(e);
|
|
},
|
|
clearTimeout: function(e) {
|
|
return clearTimeout(e);
|
|
}
|
|
},
|
|
be = /^(?:mouse|contextmenu)|click/,
|
|
Ce = {
|
|
keyLocation: 1,
|
|
layerX: 1,
|
|
layerY: 1,
|
|
returnValue: 1,
|
|
webkitMovementX: 1,
|
|
webkitMovementY: 1,
|
|
keyIdentifier: 1
|
|
},
|
|
xe = function() {
|
|
return !1;
|
|
},
|
|
we = function() {
|
|
return !0;
|
|
},
|
|
Ne = function(e, t, n, r) {
|
|
e.addEventListener
|
|
? e.addEventListener(t, n, r || !1)
|
|
: e.attachEvent && e.attachEvent("on" + t, n);
|
|
},
|
|
Ee = function(e, t, n, r) {
|
|
e.removeEventListener
|
|
? e.removeEventListener(t, n, r || !1)
|
|
: e.detachEvent && e.detachEvent("on" + t, n);
|
|
},
|
|
Se = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = t || {};
|
|
for (n in e) Ce[n] || (u[n] = e[n]);
|
|
if (
|
|
(u.target || (u.target = u.srcElement || document),
|
|
me.experimentalShadowDom &&
|
|
(u.target = ((r = e),
|
|
(o = u.target),
|
|
(a = o),
|
|
(i = r.path) && i.length > 0 && (a = i[0]),
|
|
r.deepPath && (i = r.deepPath()) && i.length > 0 && (a = i[0]),
|
|
a)),
|
|
e &&
|
|
be.test(e.type) &&
|
|
e.pageX === undefined &&
|
|
e.clientX !== undefined)
|
|
) {
|
|
var c = u.target.ownerDocument || document,
|
|
l = c.documentElement,
|
|
f = c.body;
|
|
(u.pageX =
|
|
e.clientX +
|
|
((l && l.scrollLeft) || (f && f.scrollLeft) || 0) -
|
|
((l && l.clientLeft) || (f && f.clientLeft) || 0)),
|
|
(u.pageY =
|
|
e.clientY +
|
|
((l && l.scrollTop) || (f && f.scrollTop) || 0) -
|
|
((l && l.clientTop) || (f && f.clientTop) || 0));
|
|
}
|
|
return (
|
|
(u.preventDefault = function() {
|
|
(u.isDefaultPrevented = we),
|
|
e && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1));
|
|
}),
|
|
(u.stopPropagation = function() {
|
|
(u.isPropagationStopped = we),
|
|
e &&
|
|
(e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = !0));
|
|
}),
|
|
(u.stopImmediatePropagation = function() {
|
|
(u.isImmediatePropagationStopped = we), u.stopPropagation();
|
|
}),
|
|
0 ==
|
|
((s = u).isDefaultPrevented === we || s.isDefaultPrevented === xe) &&
|
|
((u.isDefaultPrevented = xe),
|
|
(u.isPropagationStopped = xe),
|
|
(u.isImmediatePropagationStopped = xe)),
|
|
"undefined" == typeof u.metaKey && (u.metaKey = !1),
|
|
u
|
|
);
|
|
},
|
|
ke = function(e, t, n) {
|
|
var r = e.document,
|
|
o = { type: "ready" };
|
|
if (n.domLoaded) t(o);
|
|
else {
|
|
var i = function() {
|
|
return (
|
|
"complete" === r.readyState ||
|
|
("interactive" === r.readyState && r.body)
|
|
);
|
|
},
|
|
a = function() {
|
|
n.domLoaded || ((n.domLoaded = !0), t(o));
|
|
},
|
|
s = function() {
|
|
i() && (Ee(r, "readystatechange", s), a());
|
|
},
|
|
u = function() {
|
|
try {
|
|
r.documentElement.doScroll("left");
|
|
} catch (e) {
|
|
return void ye.setTimeout(u);
|
|
}
|
|
a();
|
|
};
|
|
!r.addEventListener || (me.ie && me.ie < 11)
|
|
? (Ne(r, "readystatechange", s),
|
|
r.documentElement.doScroll && e.self === e.top && u())
|
|
: i()
|
|
? a()
|
|
: Ne(e, "DOMContentLoaded", a),
|
|
Ne(e, "load", a);
|
|
}
|
|
},
|
|
Te = function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
r,
|
|
o,
|
|
i = this,
|
|
a = {};
|
|
(t = "mce-data-" + (+new Date()).toString(32)),
|
|
(r = "onmouseenter" in document.documentElement),
|
|
(n = "onfocusin" in document.documentElement),
|
|
(o = { mouseenter: "mouseover", mouseleave: "mouseout" }),
|
|
(e = 1),
|
|
(i.domLoaded = !1),
|
|
(i.events = a);
|
|
var s = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
s = a[t];
|
|
if ((n = s && s[e.type]))
|
|
for (r = 0, o = n.length; r < o; r++)
|
|
if (
|
|
((i = n[r]) &&
|
|
!1 === i.func.call(i.scope, e) &&
|
|
e.preventDefault(),
|
|
e.isImmediatePropagationStopped())
|
|
)
|
|
return;
|
|
};
|
|
(i.bind = function(u, c, l, f) {
|
|
var d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b = window,
|
|
C = function(e) {
|
|
s(Se(e || b.event), d);
|
|
};
|
|
if (u && 3 !== u.nodeType && 8 !== u.nodeType) {
|
|
for (
|
|
u[t] ? (d = u[t]) : ((d = e++), (u[t] = d), (a[d] = {})),
|
|
f = f || u,
|
|
p = (c = c.split(" ")).length;
|
|
p--;
|
|
|
|
)
|
|
(v = C),
|
|
(h = y = !1),
|
|
"DOMContentLoaded" === (g = c[p]) && (g = "ready"),
|
|
i.domLoaded && "ready" === g && "complete" === u.readyState
|
|
? l.call(f, Se({ type: g }))
|
|
: (r ||
|
|
((h = o[g]) &&
|
|
(v = function(e) {
|
|
var t, n;
|
|
if (
|
|
((t = e.currentTarget),
|
|
(n = e.relatedTarget) && t.contains)
|
|
)
|
|
n = t.contains(n);
|
|
else for (; n && n !== t; ) n = n.parentNode;
|
|
n ||
|
|
(((e = Se(e || b.event)).type =
|
|
"mouseout" === e.type
|
|
? "mouseleave"
|
|
: "mouseenter"),
|
|
(e.target = t),
|
|
s(e, d));
|
|
})),
|
|
n ||
|
|
("focusin" !== g && "focusout" !== g) ||
|
|
((y = !0),
|
|
(h = "focusin" === g ? "focus" : "blur"),
|
|
(v = function(e) {
|
|
((e = Se(e || b.event)).type =
|
|
"focus" === e.type ? "focusin" : "focusout"),
|
|
s(e, d);
|
|
})),
|
|
(m = a[d][g])
|
|
? "ready" === g && i.domLoaded
|
|
? l({ type: g })
|
|
: m.push({ func: l, scope: f })
|
|
: ((a[d][g] = m = [{ func: l, scope: f }]),
|
|
(m.fakeName = h),
|
|
(m.capture = y),
|
|
(m.nativeHandler = v),
|
|
"ready" === g ? ke(u, v, i) : Ne(u, h || g, v, y)));
|
|
return (u = m = 0), l;
|
|
}
|
|
}),
|
|
(i.unbind = function(e, n, r) {
|
|
var o, s, u, c, l, f;
|
|
if (!e || 3 === e.nodeType || 8 === e.nodeType) return i;
|
|
if ((o = e[t])) {
|
|
if (((f = a[o]), n)) {
|
|
for (u = (n = n.split(" ")).length; u--; )
|
|
if ((s = f[(l = n[u])])) {
|
|
if (r)
|
|
for (c = s.length; c--; )
|
|
if (s[c].func === r) {
|
|
var d = s.nativeHandler,
|
|
m = s.fakeName,
|
|
p = s.capture;
|
|
((s = s
|
|
.slice(0, c)
|
|
.concat(s.slice(c + 1))).nativeHandler = d),
|
|
(s.fakeName = m),
|
|
(s.capture = p),
|
|
(f[l] = s);
|
|
}
|
|
(r && 0 !== s.length) ||
|
|
(delete f[l],
|
|
Ee(e, s.fakeName || l, s.nativeHandler, s.capture));
|
|
}
|
|
} else {
|
|
for (l in f)
|
|
(s = f[l]), Ee(e, s.fakeName || l, s.nativeHandler, s.capture);
|
|
f = {};
|
|
}
|
|
for (l in f) return i;
|
|
delete a[o];
|
|
try {
|
|
delete e[t];
|
|
} catch (g) {
|
|
e[t] = null;
|
|
}
|
|
}
|
|
return i;
|
|
}),
|
|
(i.fire = function(e, n, r) {
|
|
var o;
|
|
if (!e || 3 === e.nodeType || 8 === e.nodeType) return i;
|
|
((r = Se(null, r)).type = n), (r.target = e);
|
|
do {
|
|
(o = e[t]) && s(r, o),
|
|
(e =
|
|
e.parentNode ||
|
|
e.ownerDocument ||
|
|
e.defaultView ||
|
|
e.parentWindow);
|
|
} while (e && !r.isPropagationStopped());
|
|
return i;
|
|
}),
|
|
(i.clean = function(e) {
|
|
var n,
|
|
r,
|
|
o = i.unbind;
|
|
if (!e || 3 === e.nodeType || 8 === e.nodeType) return i;
|
|
if (
|
|
(e[t] && o(e),
|
|
e.getElementsByTagName || (e = e.document),
|
|
e && e.getElementsByTagName)
|
|
)
|
|
for (o(e), n = (r = e.getElementsByTagName("*")).length; n--; )
|
|
(e = r[n])[t] && o(e);
|
|
return i;
|
|
}),
|
|
(i.destroy = function() {
|
|
a = {};
|
|
}),
|
|
(i.cancel = function(e) {
|
|
return e && (e.preventDefault(), e.stopImmediatePropagation()), !1;
|
|
});
|
|
};
|
|
(Te.Event = new Te()).bind(window, "ready", function() {});
|
|
var Ae = "sizzle" + -new Date(),
|
|
_e = window.document,
|
|
Be = 0,
|
|
Re = 0,
|
|
De = ft(),
|
|
Oe = ft(),
|
|
Pe = ft(),
|
|
Ie = function(e, t) {
|
|
return e === t && (ie = !0), 0;
|
|
},
|
|
Le = typeof undefined,
|
|
Me = 1 << 31,
|
|
Fe = {}.hasOwnProperty,
|
|
ze = [],
|
|
Ue = ze.pop,
|
|
Ve = ze.push,
|
|
He = ze.push,
|
|
qe = ze.slice,
|
|
je =
|
|
ze.indexOf ||
|
|
function(e) {
|
|
for (var t = 0, n = this.length; t < n; t++)
|
|
if (this[t] === e) return t;
|
|
return -1;
|
|
},
|
|
$e = "[\\x20\\t\\r\\n\\f]",
|
|
We = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
|
|
Ke =
|
|
"\\[" +
|
|
$e +
|
|
"*(" +
|
|
We +
|
|
")(?:" +
|
|
$e +
|
|
"*([*^$|!~]?=)" +
|
|
$e +
|
|
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" +
|
|
We +
|
|
"))|)" +
|
|
$e +
|
|
"*\\]",
|
|
Xe =
|
|
":(" +
|
|
We +
|
|
")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" +
|
|
Ke +
|
|
")*)|.*)\\)|)",
|
|
Ye = new RegExp("^" + $e + "+|((?:^|[^\\\\])(?:\\\\.)*)" + $e + "+$", "g"),
|
|
Ge = new RegExp("^" + $e + "*," + $e + "*"),
|
|
Je = new RegExp("^" + $e + "*([>+~]|" + $e + ")" + $e + "*"),
|
|
Qe = new RegExp("=" + $e + "*([^\\]'\"]*?)" + $e + "*\\]", "g"),
|
|
Ze = new RegExp(Xe),
|
|
et = new RegExp("^" + We + "$"),
|
|
tt = {
|
|
ID: new RegExp("^#(" + We + ")"),
|
|
CLASS: new RegExp("^\\.(" + We + ")"),
|
|
TAG: new RegExp("^(" + We + "|[*])"),
|
|
ATTR: new RegExp("^" + Ke),
|
|
PSEUDO: new RegExp("^" + Xe),
|
|
CHILD: new RegExp(
|
|
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
|
|
$e +
|
|
"*(even|odd|(([+-]|)(\\d*)n|)" +
|
|
$e +
|
|
"*(?:([+-]|)" +
|
|
$e +
|
|
"*(\\d+)|))" +
|
|
$e +
|
|
"*\\)|)",
|
|
"i"
|
|
),
|
|
bool: new RegExp(
|
|
"^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$",
|
|
"i"
|
|
),
|
|
needsContext: new RegExp(
|
|
"^" +
|
|
$e +
|
|
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
|
|
$e +
|
|
"*((?:-\\d)?\\d*)" +
|
|
$e +
|
|
"*\\)|)(?=[^-]|$)",
|
|
"i"
|
|
)
|
|
},
|
|
nt = /^(?:input|select|textarea|button)$/i,
|
|
rt = /^h\d$/i,
|
|
ot = /^[^{]+\{\s*\[native \w/,
|
|
it = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
|
at = /[+~]/,
|
|
st = /'|\\/g,
|
|
ut = new RegExp("\\\\([\\da-f]{1,6}" + $e + "?|(" + $e + ")|.)", "ig"),
|
|
ct = function(e, t, n) {
|
|
var r = "0x" + t - 65536;
|
|
return r != r || n
|
|
? t
|
|
: r < 0
|
|
? String.fromCharCode(r + 65536)
|
|
: String.fromCharCode((r >> 10) | 55296, (1023 & r) | 56320);
|
|
};
|
|
try {
|
|
He.apply((ze = qe.call(_e.childNodes)), _e.childNodes),
|
|
ze[_e.childNodes.length].nodeType;
|
|
} catch (yC) {
|
|
He = {
|
|
apply: ze.length
|
|
? function(e, t) {
|
|
Ve.apply(e, qe.call(t));
|
|
}
|
|
: function(e, t) {
|
|
for (var n = e.length, r = 0; (e[n++] = t[r++]); );
|
|
e.length = n - 1;
|
|
}
|
|
};
|
|
}
|
|
var lt = function(e, t, n, r) {
|
|
var o, i, a, s, u, c, l, f, d, m;
|
|
if (
|
|
((t ? t.ownerDocument || t : _e) !== se && ae(t),
|
|
(t = t || se),
|
|
(n = n || []),
|
|
!e || "string" != typeof e)
|
|
)
|
|
return n;
|
|
if (1 !== (s = t.nodeType) && 9 !== s) return [];
|
|
if (ce && !r) {
|
|
if ((o = it.exec(e)))
|
|
if ((a = o[1])) {
|
|
if (9 === s) {
|
|
if (!(i = t.getElementById(a)) || !i.parentNode) return n;
|
|
if (i.id === a) return n.push(i), n;
|
|
} else if (
|
|
t.ownerDocument &&
|
|
(i = t.ownerDocument.getElementById(a)) &&
|
|
de(t, i) &&
|
|
i.id === a
|
|
)
|
|
return n.push(i), n;
|
|
} else {
|
|
if (o[2]) return He.apply(n, t.getElementsByTagName(e)), n;
|
|
if ((a = o[3]) && G.getElementsByClassName)
|
|
return He.apply(n, t.getElementsByClassName(a)), n;
|
|
}
|
|
if (G.qsa && (!le || !le.test(e))) {
|
|
if (
|
|
((f = l = Ae),
|
|
(d = t),
|
|
(m = 9 === s && e),
|
|
1 === s && "object" !== t.nodeName.toLowerCase())
|
|
) {
|
|
for (
|
|
c = ee(e),
|
|
(l = t.getAttribute("id"))
|
|
? (f = l.replace(st, "\\$&"))
|
|
: t.setAttribute("id", f),
|
|
f = "[id='" + f + "'] ",
|
|
u = c.length;
|
|
u--;
|
|
|
|
)
|
|
c[u] = f + bt(c[u]);
|
|
(d = (at.test(e) && vt(t.parentNode)) || t), (m = c.join(","));
|
|
}
|
|
if (m)
|
|
try {
|
|
return He.apply(n, d.querySelectorAll(m)), n;
|
|
} catch (p) {
|
|
} finally {
|
|
l || t.removeAttribute("id");
|
|
}
|
|
}
|
|
}
|
|
return ne(e.replace(Ye, "$1"), t, n, r);
|
|
};
|
|
function ft() {
|
|
var e = [];
|
|
return function t(n, r) {
|
|
return (
|
|
e.push(n + " ") > J.cacheLength && delete t[e.shift()], (t[n + " "] = r)
|
|
);
|
|
};
|
|
}
|
|
function dt(e) {
|
|
return (e[Ae] = !0), e;
|
|
}
|
|
function mt(e, t) {
|
|
var n = t && e,
|
|
r =
|
|
n &&
|
|
1 === e.nodeType &&
|
|
1 === t.nodeType &&
|
|
(~t.sourceIndex || Me) - (~e.sourceIndex || Me);
|
|
if (r) return r;
|
|
if (n) for (; (n = n.nextSibling); ) if (n === t) return -1;
|
|
return e ? 1 : -1;
|
|
}
|
|
function pt(e) {
|
|
return function(t) {
|
|
return "input" === t.nodeName.toLowerCase() && t.type === e;
|
|
};
|
|
}
|
|
function gt(e) {
|
|
return function(t) {
|
|
var n = t.nodeName.toLowerCase();
|
|
return ("input" === n || "button" === n) && t.type === e;
|
|
};
|
|
}
|
|
function ht(e) {
|
|
return dt(function(t) {
|
|
return (
|
|
(t = +t),
|
|
dt(function(n, r) {
|
|
for (var o, i = e([], n.length, t), a = i.length; a--; )
|
|
n[(o = i[a])] && (n[o] = !(r[o] = n[o]));
|
|
})
|
|
);
|
|
});
|
|
}
|
|
function vt(e) {
|
|
return e && typeof e.getElementsByTagName !== Le && e;
|
|
}
|
|
for (Y in ((G = lt.support = {}),
|
|
(Z = lt.isXML = function(e) {
|
|
var t = e && (e.ownerDocument || e).documentElement;
|
|
return !!t && "HTML" !== t.nodeName;
|
|
}),
|
|
(ae = lt.setDocument = function(e) {
|
|
var t,
|
|
n = e ? e.ownerDocument || e : _e,
|
|
r = n.defaultView;
|
|
return n !== se && 9 === n.nodeType && n.documentElement
|
|
? ((se = n),
|
|
(ue = n.documentElement),
|
|
(ce = !Z(n)),
|
|
r &&
|
|
r !==
|
|
(function(e) {
|
|
try {
|
|
return e.top;
|
|
} catch (t) {}
|
|
return null;
|
|
})(r) &&
|
|
(r.addEventListener
|
|
? r.addEventListener(
|
|
"unload",
|
|
function() {
|
|
ae();
|
|
},
|
|
!1
|
|
)
|
|
: r.attachEvent &&
|
|
r.attachEvent("onunload", function() {
|
|
ae();
|
|
})),
|
|
(G.attributes = !0),
|
|
(G.getElementsByTagName = !0),
|
|
(G.getElementsByClassName = ot.test(n.getElementsByClassName)),
|
|
(G.getById = !0),
|
|
(J.find.ID = function(e, t) {
|
|
if (typeof t.getElementById !== Le && ce) {
|
|
var n = t.getElementById(e);
|
|
return n && n.parentNode ? [n] : [];
|
|
}
|
|
}),
|
|
(J.filter.ID = function(e) {
|
|
var t = e.replace(ut, ct);
|
|
return function(e) {
|
|
return e.getAttribute("id") === t;
|
|
};
|
|
}),
|
|
(J.find.TAG = G.getElementsByTagName
|
|
? function(e, t) {
|
|
if (typeof t.getElementsByTagName !== Le)
|
|
return t.getElementsByTagName(e);
|
|
}
|
|
: function(e, t) {
|
|
var n,
|
|
r = [],
|
|
o = 0,
|
|
i = t.getElementsByTagName(e);
|
|
if ("*" === e) {
|
|
for (; (n = i[o++]); ) 1 === n.nodeType && r.push(n);
|
|
return r;
|
|
}
|
|
return i;
|
|
}),
|
|
(J.find.CLASS =
|
|
G.getElementsByClassName &&
|
|
function(e, t) {
|
|
if (ce) return t.getElementsByClassName(e);
|
|
}),
|
|
(fe = []),
|
|
(le = []),
|
|
(G.disconnectedMatch = !0),
|
|
(le = le.length && new RegExp(le.join("|"))),
|
|
(fe = fe.length && new RegExp(fe.join("|"))),
|
|
(t = ot.test(ue.compareDocumentPosition)),
|
|
(de =
|
|
t || ot.test(ue.contains)
|
|
? function(e, t) {
|
|
var n = 9 === e.nodeType ? e.documentElement : e,
|
|
r = t && t.parentNode;
|
|
return (
|
|
e === r ||
|
|
!(
|
|
!r ||
|
|
1 !== r.nodeType ||
|
|
!(n.contains
|
|
? n.contains(r)
|
|
: e.compareDocumentPosition &&
|
|
16 & e.compareDocumentPosition(r))
|
|
)
|
|
);
|
|
}
|
|
: function(e, t) {
|
|
if (t) for (; (t = t.parentNode); ) if (t === e) return !0;
|
|
return !1;
|
|
}),
|
|
(Ie = t
|
|
? function(e, t) {
|
|
if (e === t) return (ie = !0), 0;
|
|
var r = !e.compareDocumentPosition - !t.compareDocumentPosition;
|
|
return (
|
|
r ||
|
|
(1 &
|
|
(r =
|
|
(e.ownerDocument || e) === (t.ownerDocument || t)
|
|
? e.compareDocumentPosition(t)
|
|
: 1) ||
|
|
(!G.sortDetached && t.compareDocumentPosition(e) === r)
|
|
? e === n || (e.ownerDocument === _e && de(_e, e))
|
|
? -1
|
|
: t === n || (t.ownerDocument === _e && de(_e, t))
|
|
? 1
|
|
: oe
|
|
? je.call(oe, e) - je.call(oe, t)
|
|
: 0
|
|
: 4 & r
|
|
? -1
|
|
: 1)
|
|
);
|
|
}
|
|
: function(e, t) {
|
|
if (e === t) return (ie = !0), 0;
|
|
var r,
|
|
o = 0,
|
|
i = e.parentNode,
|
|
a = t.parentNode,
|
|
s = [e],
|
|
u = [t];
|
|
if (!i || !a)
|
|
return e === n
|
|
? -1
|
|
: t === n
|
|
? 1
|
|
: i
|
|
? -1
|
|
: a
|
|
? 1
|
|
: oe
|
|
? je.call(oe, e) - je.call(oe, t)
|
|
: 0;
|
|
if (i === a) return mt(e, t);
|
|
for (r = e; (r = r.parentNode); ) s.unshift(r);
|
|
for (r = t; (r = r.parentNode); ) u.unshift(r);
|
|
for (; s[o] === u[o]; ) o++;
|
|
return o
|
|
? mt(s[o], u[o])
|
|
: s[o] === _e
|
|
? -1
|
|
: u[o] === _e
|
|
? 1
|
|
: 0;
|
|
}),
|
|
n)
|
|
: se;
|
|
}),
|
|
(lt.matches = function(e, t) {
|
|
return lt(e, null, null, t);
|
|
}),
|
|
(lt.matchesSelector = function(e, t) {
|
|
if (
|
|
((e.ownerDocument || e) !== se && ae(e),
|
|
(t = t.replace(Qe, "='$1']")),
|
|
G.matchesSelector && ce && (!fe || !fe.test(t)) && (!le || !le.test(t)))
|
|
)
|
|
try {
|
|
var n = (void 0).call(e, t);
|
|
if (
|
|
n ||
|
|
G.disconnectedMatch ||
|
|
(e.document && 11 !== e.document.nodeType)
|
|
)
|
|
return n;
|
|
} catch (yC) {}
|
|
return lt(t, se, null, [e]).length > 0;
|
|
}),
|
|
(lt.contains = function(e, t) {
|
|
return (e.ownerDocument || e) !== se && ae(e), de(e, t);
|
|
}),
|
|
(lt.attr = function(e, t) {
|
|
(e.ownerDocument || e) !== se && ae(e);
|
|
var n = J.attrHandle[t.toLowerCase()],
|
|
r =
|
|
n && Fe.call(J.attrHandle, t.toLowerCase()) ? n(e, t, !ce) : undefined;
|
|
return r !== undefined
|
|
? r
|
|
: G.attributes || !ce
|
|
? e.getAttribute(t)
|
|
: (r = e.getAttributeNode(t)) && r.specified
|
|
? r.value
|
|
: null;
|
|
}),
|
|
(lt.error = function(e) {
|
|
throw new Error("Syntax error, unrecognized expression: " + e);
|
|
}),
|
|
(lt.uniqueSort = function(e) {
|
|
var t,
|
|
n = [],
|
|
r = 0,
|
|
o = 0;
|
|
if (
|
|
((ie = !G.detectDuplicates),
|
|
(oe = !G.sortStable && e.slice(0)),
|
|
e.sort(Ie),
|
|
ie)
|
|
) {
|
|
for (; (t = e[o++]); ) t === e[o] && (r = n.push(o));
|
|
for (; r--; ) e.splice(n[r], 1);
|
|
}
|
|
return (oe = null), e;
|
|
}),
|
|
(Q = lt.getText = function(e) {
|
|
var t,
|
|
n = "",
|
|
r = 0,
|
|
o = e.nodeType;
|
|
if (o) {
|
|
if (1 === o || 9 === o || 11 === o) {
|
|
if ("string" == typeof e.textContent) return e.textContent;
|
|
for (e = e.firstChild; e; e = e.nextSibling) n += Q(e);
|
|
} else if (3 === o || 4 === o) return e.nodeValue;
|
|
} else for (; (t = e[r++]); ) n += Q(t);
|
|
return n;
|
|
}),
|
|
((J = lt.selectors = {
|
|
cacheLength: 50,
|
|
createPseudo: dt,
|
|
match: tt,
|
|
attrHandle: {},
|
|
find: {},
|
|
relative: {
|
|
">": { dir: "parentNode", first: !0 },
|
|
" ": { dir: "parentNode" },
|
|
"+": { dir: "previousSibling", first: !0 },
|
|
"~": { dir: "previousSibling" }
|
|
},
|
|
preFilter: {
|
|
ATTR: function(e) {
|
|
return (
|
|
(e[1] = e[1].replace(ut, ct)),
|
|
(e[3] = (e[3] || e[4] || e[5] || "").replace(ut, ct)),
|
|
"~=" === e[2] && (e[3] = " " + e[3] + " "),
|
|
e.slice(0, 4)
|
|
);
|
|
},
|
|
CHILD: function(e) {
|
|
return (
|
|
(e[1] = e[1].toLowerCase()),
|
|
"nth" === e[1].slice(0, 3)
|
|
? (e[3] || lt.error(e[0]),
|
|
(e[4] = +(e[4]
|
|
? e[5] + (e[6] || 1)
|
|
: 2 * ("even" === e[3] || "odd" === e[3]))),
|
|
(e[5] = +(e[7] + e[8] || "odd" === e[3])))
|
|
: e[3] && lt.error(e[0]),
|
|
e
|
|
);
|
|
},
|
|
PSEUDO: function(e) {
|
|
var t,
|
|
n = !e[6] && e[2];
|
|
return tt.CHILD.test(e[0])
|
|
? null
|
|
: (e[3]
|
|
? (e[2] = e[4] || e[5] || "")
|
|
: n &&
|
|
Ze.test(n) &&
|
|
(t = ee(n, !0)) &&
|
|
(t = n.indexOf(")", n.length - t) - n.length) &&
|
|
((e[0] = e[0].slice(0, t)), (e[2] = n.slice(0, t))),
|
|
e.slice(0, 3));
|
|
}
|
|
},
|
|
filter: {
|
|
TAG: function(e) {
|
|
var t = e.replace(ut, ct).toLowerCase();
|
|
return "*" === e
|
|
? function() {
|
|
return !0;
|
|
}
|
|
: function(e) {
|
|
return e.nodeName && e.nodeName.toLowerCase() === t;
|
|
};
|
|
},
|
|
CLASS: function(e) {
|
|
var t = De[e + " "];
|
|
return (
|
|
t ||
|
|
((t = new RegExp("(^|" + $e + ")" + e + "(" + $e + "|$)")) &&
|
|
De(e, function(e) {
|
|
return t.test(
|
|
("string" == typeof e.className && e.className) ||
|
|
(typeof e.getAttribute !== Le && e.getAttribute("class")) ||
|
|
""
|
|
);
|
|
}))
|
|
);
|
|
},
|
|
ATTR: function(e, t, n) {
|
|
return function(r) {
|
|
var o = lt.attr(r, e);
|
|
return null == o
|
|
? "!=" === t
|
|
: !t ||
|
|
((o += ""),
|
|
"=" === t
|
|
? o === n
|
|
: "!=" === t
|
|
? o !== n
|
|
: "^=" === t
|
|
? n && 0 === o.indexOf(n)
|
|
: "*=" === t
|
|
? n && o.indexOf(n) > -1
|
|
: "$=" === t
|
|
? n && o.slice(-n.length) === n
|
|
: "~=" === t
|
|
? (" " + o + " ").indexOf(n) > -1
|
|
: "|=" === t &&
|
|
(o === n || o.slice(0, n.length + 1) === n + "-"));
|
|
};
|
|
},
|
|
CHILD: function(e, t, n, r, o) {
|
|
var i = "nth" !== e.slice(0, 3),
|
|
a = "last" !== e.slice(-4),
|
|
s = "of-type" === t;
|
|
return 1 === r && 0 === o
|
|
? function(e) {
|
|
return !!e.parentNode;
|
|
}
|
|
: function(t, n, u) {
|
|
var c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g = i !== a ? "nextSibling" : "previousSibling",
|
|
h = t.parentNode,
|
|
v = s && t.nodeName.toLowerCase(),
|
|
y = !u && !s;
|
|
if (h) {
|
|
if (i) {
|
|
for (; g; ) {
|
|
for (f = t; (f = f[g]); )
|
|
if (s ? f.nodeName.toLowerCase() === v : 1 === f.nodeType)
|
|
return !1;
|
|
p = g = "only" === e && !p && "nextSibling";
|
|
}
|
|
return !0;
|
|
}
|
|
if (((p = [a ? h.firstChild : h.lastChild]), a && y)) {
|
|
for (
|
|
m =
|
|
(c = (l = h[Ae] || (h[Ae] = {}))[e] || [])[0] === Be &&
|
|
c[1],
|
|
d = c[0] === Be && c[2],
|
|
f = m && h.childNodes[m];
|
|
(f = (++m && f && f[g]) || (d = m = 0) || p.pop());
|
|
|
|
)
|
|
if (1 === f.nodeType && ++d && f === t) {
|
|
l[e] = [Be, m, d];
|
|
break;
|
|
}
|
|
} else if (y && (c = (t[Ae] || (t[Ae] = {}))[e]) && c[0] === Be)
|
|
d = c[1];
|
|
else
|
|
for (
|
|
;
|
|
(f = (++m && f && f[g]) || (d = m = 0) || p.pop()) &&
|
|
((s ? f.nodeName.toLowerCase() !== v : 1 !== f.nodeType) ||
|
|
!++d ||
|
|
(y && ((f[Ae] || (f[Ae] = {}))[e] = [Be, d]), f !== t));
|
|
|
|
);
|
|
return (d -= o) === r || (d % r == 0 && d / r >= 0);
|
|
}
|
|
};
|
|
},
|
|
PSEUDO: function(e, t) {
|
|
var n,
|
|
r =
|
|
J.pseudos[e] ||
|
|
J.setFilters[e.toLowerCase()] ||
|
|
lt.error("unsupported pseudo: " + e);
|
|
return r[Ae]
|
|
? r(t)
|
|
: r.length > 1
|
|
? ((n = [e, e, "", t]),
|
|
J.setFilters.hasOwnProperty(e.toLowerCase())
|
|
? dt(function(e, n) {
|
|
for (var o, i = r(e, t), a = i.length; a--; )
|
|
e[(o = je.call(e, i[a]))] = !(n[o] = i[a]);
|
|
})
|
|
: function(e) {
|
|
return r(e, 0, n);
|
|
})
|
|
: r;
|
|
}
|
|
},
|
|
pseudos: {
|
|
not: dt(function(e) {
|
|
var t = [],
|
|
n = [],
|
|
r = te(e.replace(Ye, "$1"));
|
|
return r[Ae]
|
|
? dt(function(e, t, n, o) {
|
|
for (var i, a = r(e, null, o, []), s = e.length; s--; )
|
|
(i = a[s]) && (e[s] = !(t[s] = i));
|
|
})
|
|
: function(e, o, i) {
|
|
return (t[0] = e), r(t, null, i, n), !n.pop();
|
|
};
|
|
}),
|
|
has: dt(function(e) {
|
|
return function(t) {
|
|
return lt(e, t).length > 0;
|
|
};
|
|
}),
|
|
contains: dt(function(e) {
|
|
return (
|
|
(e = e.replace(ut, ct)),
|
|
function(t) {
|
|
return (t.textContent || t.innerText || Q(t)).indexOf(e) > -1;
|
|
}
|
|
);
|
|
}),
|
|
lang: dt(function(e) {
|
|
return (
|
|
et.test(e || "") || lt.error("unsupported lang: " + e),
|
|
(e = e.replace(ut, ct).toLowerCase()),
|
|
function(t) {
|
|
var n;
|
|
do {
|
|
if (
|
|
(n = ce
|
|
? t.lang
|
|
: t.getAttribute("xml:lang") || t.getAttribute("lang"))
|
|
)
|
|
return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-");
|
|
} while ((t = t.parentNode) && 1 === t.nodeType);
|
|
return !1;
|
|
}
|
|
);
|
|
}),
|
|
target: function(e) {
|
|
var t = window.location && window.location.hash;
|
|
return t && t.slice(1) === e.id;
|
|
},
|
|
root: function(e) {
|
|
return e === ue;
|
|
},
|
|
focus: function(e) {
|
|
return (
|
|
e === se.activeElement &&
|
|
(!se.hasFocus || se.hasFocus()) &&
|
|
!!(e.type || e.href || ~e.tabIndex)
|
|
);
|
|
},
|
|
enabled: function(e) {
|
|
return !1 === e.disabled;
|
|
},
|
|
disabled: function(e) {
|
|
return !0 === e.disabled;
|
|
},
|
|
checked: function(e) {
|
|
var t = e.nodeName.toLowerCase();
|
|
return (
|
|
("input" === t && !!e.checked) || ("option" === t && !!e.selected)
|
|
);
|
|
},
|
|
selected: function(e) {
|
|
return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected;
|
|
},
|
|
empty: function(e) {
|
|
for (e = e.firstChild; e; e = e.nextSibling)
|
|
if (e.nodeType < 6) return !1;
|
|
return !0;
|
|
},
|
|
parent: function(e) {
|
|
return !J.pseudos.empty(e);
|
|
},
|
|
header: function(e) {
|
|
return rt.test(e.nodeName);
|
|
},
|
|
input: function(e) {
|
|
return nt.test(e.nodeName);
|
|
},
|
|
button: function(e) {
|
|
var t = e.nodeName.toLowerCase();
|
|
return ("input" === t && "button" === e.type) || "button" === t;
|
|
},
|
|
text: function(e) {
|
|
var t;
|
|
return (
|
|
"input" === e.nodeName.toLowerCase() &&
|
|
"text" === e.type &&
|
|
(null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
|
|
);
|
|
},
|
|
first: ht(function() {
|
|
return [0];
|
|
}),
|
|
last: ht(function(e, t) {
|
|
return [t - 1];
|
|
}),
|
|
eq: ht(function(e, t, n) {
|
|
return [n < 0 ? n + t : n];
|
|
}),
|
|
even: ht(function(e, t) {
|
|
for (var n = 0; n < t; n += 2) e.push(n);
|
|
return e;
|
|
}),
|
|
odd: ht(function(e, t) {
|
|
for (var n = 1; n < t; n += 2) e.push(n);
|
|
return e;
|
|
}),
|
|
lt: ht(function(e, t, n) {
|
|
for (var r = n < 0 ? n + t : n; --r >= 0; ) e.push(r);
|
|
return e;
|
|
}),
|
|
gt: ht(function(e, t, n) {
|
|
for (var r = n < 0 ? n + t : n; ++r < t; ) e.push(r);
|
|
return e;
|
|
})
|
|
}
|
|
}).pseudos.nth = J.pseudos.eq),
|
|
{ radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }))
|
|
J.pseudos[Y] = pt(Y);
|
|
for (Y in { submit: !0, reset: !0 }) J.pseudos[Y] = gt(Y);
|
|
function yt() {}
|
|
function bt(e) {
|
|
for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
|
|
return r;
|
|
}
|
|
function Ct(e, t, n) {
|
|
var r = t.dir,
|
|
o = n && "parentNode" === r,
|
|
i = Re++;
|
|
return t.first
|
|
? function(t, n, i) {
|
|
for (; (t = t[r]); ) if (1 === t.nodeType || o) return e(t, n, i);
|
|
}
|
|
: function(t, n, a) {
|
|
var s,
|
|
u,
|
|
c = [Be, i];
|
|
if (a) {
|
|
for (; (t = t[r]); )
|
|
if ((1 === t.nodeType || o) && e(t, n, a)) return !0;
|
|
} else
|
|
for (; (t = t[r]); )
|
|
if (1 === t.nodeType || o) {
|
|
if (
|
|
(s = (u = t[Ae] || (t[Ae] = {}))[r]) &&
|
|
s[0] === Be &&
|
|
s[1] === i
|
|
)
|
|
return (c[2] = s[2]);
|
|
if (((u[r] = c), (c[2] = e(t, n, a)))) return !0;
|
|
}
|
|
};
|
|
}
|
|
function xt(e) {
|
|
return e.length > 1
|
|
? function(t, n, r) {
|
|
for (var o = e.length; o--; ) if (!e[o](t, n, r)) return !1;
|
|
return !0;
|
|
}
|
|
: e[0];
|
|
}
|
|
function wt(e, t, n, r, o) {
|
|
for (var i, a = [], s = 0, u = e.length, c = null != t; s < u; s++)
|
|
(i = e[s]) && ((n && !n(i, r, o)) || (a.push(i), c && t.push(s)));
|
|
return a;
|
|
}
|
|
function Nt(e, t, n, r, o, i) {
|
|
return (
|
|
r && !r[Ae] && (r = Nt(r)),
|
|
o && !o[Ae] && (o = Nt(o, i)),
|
|
dt(function(i, a, s, u) {
|
|
var c,
|
|
l,
|
|
f,
|
|
d = [],
|
|
m = [],
|
|
p = a.length,
|
|
g =
|
|
i ||
|
|
(function(e, t, n) {
|
|
for (var r = 0, o = t.length; r < o; r++) lt(e, t[r], n);
|
|
return n;
|
|
})(t || "*", s.nodeType ? [s] : s, []),
|
|
h = !e || (!i && t) ? g : wt(g, d, e, s, u),
|
|
v = n ? (o || (i ? e : p || r) ? [] : a) : h;
|
|
if ((n && n(h, v, s, u), r))
|
|
for (c = wt(v, m), r(c, [], s, u), l = c.length; l--; )
|
|
(f = c[l]) && (v[m[l]] = !(h[m[l]] = f));
|
|
if (i) {
|
|
if (o || e) {
|
|
if (o) {
|
|
for (c = [], l = v.length; l--; )
|
|
(f = v[l]) && c.push((h[l] = f));
|
|
o(null, (v = []), c, u);
|
|
}
|
|
for (l = v.length; l--; )
|
|
(f = v[l]) &&
|
|
(c = o ? je.call(i, f) : d[l]) > -1 &&
|
|
(i[c] = !(a[c] = f));
|
|
}
|
|
} else (v = wt(v === a ? v.splice(p, v.length) : v)), o ? o(null, a, v, u) : He.apply(a, v);
|
|
})
|
|
);
|
|
}
|
|
function Et(e) {
|
|
for (
|
|
var t,
|
|
n,
|
|
r,
|
|
o = e.length,
|
|
i = J.relative[e[0].type],
|
|
a = i || J.relative[" "],
|
|
s = i ? 1 : 0,
|
|
u = Ct(
|
|
function(e) {
|
|
return e === t;
|
|
},
|
|
a,
|
|
!0
|
|
),
|
|
c = Ct(
|
|
function(e) {
|
|
return je.call(t, e) > -1;
|
|
},
|
|
a,
|
|
!0
|
|
),
|
|
l = [
|
|
function(e, n, r) {
|
|
return (
|
|
(!i && (r || n !== re)) ||
|
|
((t = n).nodeType ? u(e, n, r) : c(e, n, r))
|
|
);
|
|
}
|
|
];
|
|
s < o;
|
|
s++
|
|
)
|
|
if ((n = J.relative[e[s].type])) l = [Ct(xt(l), n)];
|
|
else {
|
|
if ((n = J.filter[e[s].type].apply(null, e[s].matches))[Ae]) {
|
|
for (r = ++s; r < o && !J.relative[e[r].type]; r++);
|
|
return Nt(
|
|
s > 1 && xt(l),
|
|
s > 1 &&
|
|
bt(
|
|
e
|
|
.slice(0, s - 1)
|
|
.concat({ value: " " === e[s - 2].type ? "*" : "" })
|
|
).replace(Ye, "$1"),
|
|
n,
|
|
s < r && Et(e.slice(s, r)),
|
|
r < o && Et((e = e.slice(r))),
|
|
r < o && bt(e)
|
|
);
|
|
}
|
|
l.push(n);
|
|
}
|
|
return xt(l);
|
|
}
|
|
(yt.prototype = J.filters = J.pseudos),
|
|
(J.setFilters = new yt()),
|
|
(ee = lt.tokenize = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = Oe[e + " "];
|
|
if (c) return t ? 0 : c.slice(0);
|
|
for (a = e, s = [], u = J.preFilter; a; ) {
|
|
for (i in ((n && !(r = Ge.exec(a))) ||
|
|
(r && (a = a.slice(r[0].length) || a), s.push((o = []))),
|
|
(n = !1),
|
|
(r = Je.exec(a)) &&
|
|
((n = r.shift()),
|
|
o.push({ value: n, type: r[0].replace(Ye, " ") }),
|
|
(a = a.slice(n.length))),
|
|
J.filter))
|
|
!(r = tt[i].exec(a)) ||
|
|
(u[i] && !(r = u[i](r))) ||
|
|
((n = r.shift()),
|
|
o.push({ value: n, type: i, matches: r }),
|
|
(a = a.slice(n.length)));
|
|
if (!n) break;
|
|
}
|
|
return t ? a.length : a ? lt.error(e) : Oe(e, s).slice(0);
|
|
}),
|
|
(te = lt.compile = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = [],
|
|
c = [],
|
|
l = Pe[e + " "];
|
|
if (!l) {
|
|
for (t || (t = ee(e)), n = t.length; n--; )
|
|
(l = Et(t[n]))[Ae] ? u.push(l) : c.push(l);
|
|
(l = Pe(
|
|
e,
|
|
((r = c),
|
|
(i = (o = u).length > 0),
|
|
(a = r.length > 0),
|
|
(s = function(e, t, n, s, u) {
|
|
var c,
|
|
l,
|
|
f,
|
|
d = 0,
|
|
m = "0",
|
|
p = e && [],
|
|
g = [],
|
|
h = re,
|
|
v = e || (a && J.find.TAG("*", u)),
|
|
y = (Be += null == h ? 1 : Math.random() || 0.1),
|
|
b = v.length;
|
|
for (
|
|
u && (re = t !== se && t);
|
|
m !== b && null != (c = v[m]);
|
|
m++
|
|
) {
|
|
if (a && c) {
|
|
for (l = 0; (f = r[l++]); )
|
|
if (f(c, t, n)) {
|
|
s.push(c);
|
|
break;
|
|
}
|
|
u && (Be = y);
|
|
}
|
|
i && ((c = !f && c) && d--, e && p.push(c));
|
|
}
|
|
if (((d += m), i && m !== d)) {
|
|
for (l = 0; (f = o[l++]); ) f(p, g, t, n);
|
|
if (e) {
|
|
if (d > 0) for (; m--; ) p[m] || g[m] || (g[m] = Ue.call(s));
|
|
g = wt(g);
|
|
}
|
|
He.apply(s, g),
|
|
u && !e && g.length > 0 && d + o.length > 1 && lt.uniqueSort(s);
|
|
}
|
|
return u && ((Be = y), (re = h)), p;
|
|
}),
|
|
i ? dt(s) : s)
|
|
)).selector = e;
|
|
}
|
|
return l;
|
|
}),
|
|
(ne = lt.select = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = "function" == typeof e && e,
|
|
l = !r && ee((e = c.selector || e));
|
|
if (((n = n || []), 1 === l.length)) {
|
|
if (
|
|
(i = l[0] = l[0].slice(0)).length > 2 &&
|
|
"ID" === (a = i[0]).type &&
|
|
G.getById &&
|
|
9 === t.nodeType &&
|
|
ce &&
|
|
J.relative[i[1].type]
|
|
) {
|
|
if (!(t = (J.find.ID(a.matches[0].replace(ut, ct), t) || [])[0]))
|
|
return n;
|
|
c && (t = t.parentNode), (e = e.slice(i.shift().value.length));
|
|
}
|
|
for (
|
|
o = tt.needsContext.test(e) ? 0 : i.length;
|
|
o-- && ((a = i[o]), !J.relative[(s = a.type)]);
|
|
|
|
)
|
|
if (
|
|
(u = J.find[s]) &&
|
|
(r = u(
|
|
a.matches[0].replace(ut, ct),
|
|
(at.test(i[0].type) && vt(t.parentNode)) || t
|
|
))
|
|
) {
|
|
if ((i.splice(o, 1), !(e = r.length && bt(i))))
|
|
return He.apply(n, r), n;
|
|
break;
|
|
}
|
|
}
|
|
return (
|
|
(c || te(e, l))(r, t, !ce, n, (at.test(e) && vt(t.parentNode)) || t), n
|
|
);
|
|
}),
|
|
(G.sortStable =
|
|
Ae.split("")
|
|
.sort(Ie)
|
|
.join("") === Ae),
|
|
(G.detectDuplicates = !!ie),
|
|
ae(),
|
|
(G.sortDetached = !0);
|
|
var St =
|
|
Array.isArray ||
|
|
function(e) {
|
|
return "[object Array]" === Object.prototype.toString.call(e);
|
|
},
|
|
kt = function(e, t, n) {
|
|
var r, o;
|
|
if (!e) return 0;
|
|
if (((n = n || e), e.length !== undefined)) {
|
|
for (r = 0, o = e.length; r < o; r++)
|
|
if (!1 === t.call(n, e[r], r, e)) return 0;
|
|
} else
|
|
for (r in e)
|
|
if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r, e)) return 0;
|
|
return 1;
|
|
},
|
|
Tt = function(e, t, n) {
|
|
var r, o;
|
|
for (r = 0, o = e.length; r < o; r++) if (t.call(n, e[r], r, e)) return r;
|
|
return -1;
|
|
},
|
|
At = {
|
|
isArray: St,
|
|
toArray: function(e) {
|
|
var t,
|
|
n,
|
|
r = e;
|
|
if (!St(e)) for (r = [], t = 0, n = e.length; t < n; t++) r[t] = e[t];
|
|
return r;
|
|
},
|
|
each: kt,
|
|
map: function(e, t) {
|
|
var n = [];
|
|
return (
|
|
kt(e, function(r, o) {
|
|
n.push(t(r, o, e));
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
filter: function(e, t) {
|
|
var n = [];
|
|
return (
|
|
kt(e, function(r, o) {
|
|
(t && !t(r, o, e)) || n.push(r);
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
indexOf: function(e, t) {
|
|
var n, r;
|
|
if (e) for (n = 0, r = e.length; n < r; n++) if (e[n] === t) return n;
|
|
return -1;
|
|
},
|
|
reduce: function(e, t, n, r) {
|
|
var o = 0;
|
|
for (arguments.length < 3 && (n = e[0]); o < e.length; o++)
|
|
n = t.call(r, n, e[o], o);
|
|
return n;
|
|
},
|
|
findIndex: Tt,
|
|
find: function(e, t, n) {
|
|
var r = Tt(e, t, n);
|
|
return -1 !== r ? e[r] : undefined;
|
|
},
|
|
last: function(e) {
|
|
return e[e.length - 1];
|
|
}
|
|
},
|
|
_t = /^\s*|\s*$/g,
|
|
Bt = function(e) {
|
|
return null === e || e === undefined ? "" : ("" + e).replace(_t, "");
|
|
},
|
|
Rt = function(e, t) {
|
|
return t
|
|
? !("array" !== t || !At.isArray(e)) || typeof e === t
|
|
: e !== undefined;
|
|
},
|
|
Dt = function(e, t, n, r) {
|
|
(r = r || this),
|
|
e &&
|
|
(n && (e = e[n]),
|
|
At.each(e, function(e, o) {
|
|
if (!1 === t.call(r, e, o, n)) return !1;
|
|
Dt(e, t, n, r);
|
|
}));
|
|
},
|
|
Ot = {
|
|
trim: Bt,
|
|
isArray: At.isArray,
|
|
is: Rt,
|
|
toArray: At.toArray,
|
|
makeMap: function(e, t, n) {
|
|
var r;
|
|
for (
|
|
e = e || [],
|
|
t = t || ",",
|
|
"string" == typeof e && (e = e.split(t)),
|
|
n = n || {},
|
|
r = e.length;
|
|
r--;
|
|
|
|
)
|
|
n[e[r]] = {};
|
|
return n;
|
|
},
|
|
each: At.each,
|
|
map: At.map,
|
|
grep: At.filter,
|
|
inArray: At.indexOf,
|
|
hasOwn: function(e, t) {
|
|
return Object.prototype.hasOwnProperty.call(e, t);
|
|
},
|
|
extend: function(e, t) {
|
|
for (var n, r, o, i = [], a = 2; a < arguments.length; a++)
|
|
i[a - 2] = arguments[a];
|
|
var s,
|
|
u = arguments;
|
|
for (n = 1, r = u.length; n < r; n++)
|
|
for (o in (t = u[n]))
|
|
t.hasOwnProperty(o) && (s = t[o]) !== undefined && (e[o] = s);
|
|
return e;
|
|
},
|
|
create: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = this,
|
|
c = 0;
|
|
if (
|
|
((e = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(e)),
|
|
(i = e[3].match(/(^|\.)(\w+)$/i)[2]),
|
|
!(o = u.createNS(e[3].replace(/\.\w+$/, ""), n))[i])
|
|
) {
|
|
if ("static" === e[2])
|
|
return (
|
|
(o[i] = t),
|
|
void (this.onCreate && this.onCreate(e[2], e[3], o[i]))
|
|
);
|
|
t[i] || ((t[i] = function() {}), (c = 1)),
|
|
(o[i] = t[i]),
|
|
u.extend(o[i].prototype, t),
|
|
e[5] &&
|
|
((r = u.resolve(e[5]).prototype),
|
|
(a = e[5].match(/\.(\w+)$/i)[1]),
|
|
(s = o[i]),
|
|
(o[i] = c
|
|
? function() {
|
|
return r[a].apply(this, arguments);
|
|
}
|
|
: function() {
|
|
return (this.parent = r[a]), s.apply(this, arguments);
|
|
}),
|
|
(o[i].prototype[i] = o[i]),
|
|
u.each(r, function(e, t) {
|
|
o[i].prototype[t] = r[t];
|
|
}),
|
|
u.each(t, function(e, t) {
|
|
r[t]
|
|
? (o[i].prototype[t] = function() {
|
|
return (this.parent = r[t]), e.apply(this, arguments);
|
|
})
|
|
: t !== i && (o[i].prototype[t] = e);
|
|
})),
|
|
u.each(t["static"], function(e, t) {
|
|
o[i][t] = e;
|
|
});
|
|
}
|
|
},
|
|
walk: Dt,
|
|
createNS: function(e, t) {
|
|
var n, r;
|
|
for (t = t || window, e = e.split("."), n = 0; n < e.length; n++)
|
|
t[(r = e[n])] || (t[r] = {}), (t = t[r]);
|
|
return t;
|
|
},
|
|
resolve: function(e, t) {
|
|
var n, r;
|
|
for (
|
|
t = t || window, n = 0, r = (e = e.split(".")).length;
|
|
n < r && (t = t[e[n]]);
|
|
n++
|
|
);
|
|
return t;
|
|
},
|
|
explode: function(e, t) {
|
|
return !e || Rt(e, "array") ? e : At.map(e.split(t || ","), Bt);
|
|
},
|
|
_addCacheSuffix: function(e) {
|
|
var t = me.cacheSuffix;
|
|
return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e;
|
|
}
|
|
},
|
|
Pt = document,
|
|
It = Array.prototype.push,
|
|
Lt = Array.prototype.slice,
|
|
Mt = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
|
|
Ft = Te.Event,
|
|
zt = Ot.makeMap("children,contents,next,prev"),
|
|
Ut = function(e) {
|
|
return void 0 !== e;
|
|
},
|
|
Vt = function(e) {
|
|
return "string" == typeof e;
|
|
},
|
|
Ht = function(e, t) {
|
|
var n, r, o;
|
|
for (
|
|
o = (t = t || Pt).createElement("div"),
|
|
n = t.createDocumentFragment(),
|
|
o.innerHTML = e;
|
|
(r = o.firstChild);
|
|
|
|
)
|
|
n.appendChild(r);
|
|
return n;
|
|
},
|
|
qt = function(e, t, n, r) {
|
|
var o;
|
|
if (Vt(t)) t = Ht(t, rn(e[0]));
|
|
else if (t.length && !t.nodeType) {
|
|
if (((t = Qt.makeArray(t)), r))
|
|
for (o = t.length - 1; o >= 0; o--) qt(e, t[o], n, r);
|
|
else for (o = 0; o < t.length; o++) qt(e, t[o], n, r);
|
|
return e;
|
|
}
|
|
if (t.nodeType) for (o = e.length; o--; ) n.call(e[o], t);
|
|
return e;
|
|
},
|
|
jt = function(e, t) {
|
|
return e && t && -1 !== (" " + e.className + " ").indexOf(" " + t + " ");
|
|
},
|
|
$t = function(e, t, n) {
|
|
var r, o;
|
|
return (
|
|
(t = Qt(t)[0]),
|
|
e.each(function() {
|
|
var e = this;
|
|
n && r === e.parentNode
|
|
? o.appendChild(e)
|
|
: ((r = e.parentNode),
|
|
(o = t.cloneNode(!1)),
|
|
e.parentNode.insertBefore(o, e),
|
|
o.appendChild(e));
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
Wt = Ot.makeMap(
|
|
"fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom",
|
|
" "
|
|
),
|
|
Kt = Ot.makeMap(
|
|
"checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected",
|
|
" "
|
|
),
|
|
Xt = { for: "htmlFor", class: "className", readonly: "readOnly" },
|
|
Yt = { float: "cssFloat" },
|
|
Gt = {},
|
|
Jt = {},
|
|
Qt = function(e, t) {
|
|
return new Qt.fn.init(e, t);
|
|
},
|
|
Zt = /^\s*|\s*$/g,
|
|
en = function(e) {
|
|
return null === e || e === undefined ? "" : ("" + e).replace(Zt, "");
|
|
},
|
|
tn = function(e, t) {
|
|
var n, r, o, i;
|
|
if (e)
|
|
if ((n = e.length) === undefined) {
|
|
for (r in e)
|
|
if (e.hasOwnProperty(r) && ((i = e[r]), !1 === t.call(i, r, i)))
|
|
break;
|
|
} else for (o = 0; o < n && ((i = e[o]), !1 !== t.call(i, o, i)); o++);
|
|
return e;
|
|
},
|
|
nn = function(e, t) {
|
|
var n = [];
|
|
return (
|
|
tn(e, function(e, r) {
|
|
t(r, e) && n.push(r);
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
rn = function(e) {
|
|
return e ? (9 === e.nodeType ? e : e.ownerDocument) : Pt;
|
|
};
|
|
(Qt.fn = Qt.prototype = {
|
|
constructor: Qt,
|
|
selector: "",
|
|
context: null,
|
|
length: 0,
|
|
init: function(e, t) {
|
|
var n,
|
|
r,
|
|
o = this;
|
|
if (!e) return o;
|
|
if (e.nodeType) return (o.context = o[0] = e), (o.length = 1), o;
|
|
if (t && t.nodeType) o.context = t;
|
|
else {
|
|
if (t) return Qt(e).attr(t);
|
|
o.context = t = document;
|
|
}
|
|
if (Vt(e)) {
|
|
if (
|
|
((o.selector = e),
|
|
!(n =
|
|
"<" === e.charAt(0) &&
|
|
">" === e.charAt(e.length - 1) &&
|
|
e.length >= 3
|
|
? [null, e, null]
|
|
: Mt.exec(e)))
|
|
)
|
|
return Qt(t).find(e);
|
|
if (n[1])
|
|
for (r = Ht(e, rn(t)).firstChild; r; )
|
|
It.call(o, r), (r = r.nextSibling);
|
|
else {
|
|
if (!(r = rn(t).getElementById(n[2]))) return o;
|
|
if (r.id !== n[2]) return o.find(e);
|
|
(o.length = 1), (o[0] = r);
|
|
}
|
|
} else this.add(e, !1);
|
|
return o;
|
|
},
|
|
toArray: function() {
|
|
return Ot.toArray(this);
|
|
},
|
|
add: function(e, t) {
|
|
var n,
|
|
r,
|
|
o = this;
|
|
if (Vt(e)) return o.add(Qt(e));
|
|
if (!1 !== t)
|
|
for (
|
|
n = Qt.unique(o.toArray().concat(Qt.makeArray(e))),
|
|
o.length = n.length,
|
|
r = 0;
|
|
r < n.length;
|
|
r++
|
|
)
|
|
o[r] = n[r];
|
|
else It.apply(o, Qt.makeArray(e));
|
|
return o;
|
|
},
|
|
attr: function(e, t) {
|
|
var n,
|
|
r = this;
|
|
if ("object" == typeof e)
|
|
tn(e, function(e, t) {
|
|
r.attr(e, t);
|
|
});
|
|
else {
|
|
if (!Ut(t)) {
|
|
if (r[0] && 1 === r[0].nodeType) {
|
|
if ((n = Gt[e]) && n.get) return n.get(r[0], e);
|
|
if (Kt[e]) return r.prop(e) ? e : undefined;
|
|
null === (t = r[0].getAttribute(e, 2)) && (t = undefined);
|
|
}
|
|
return t;
|
|
}
|
|
this.each(function() {
|
|
var n;
|
|
if (1 === this.nodeType) {
|
|
if ((n = Gt[e]) && n.set) return void n.set(this, t);
|
|
null === t
|
|
? this.removeAttribute(e, 2)
|
|
: this.setAttribute(e, t, 2);
|
|
}
|
|
});
|
|
}
|
|
return r;
|
|
},
|
|
removeAttr: function(e) {
|
|
return this.attr(e, null);
|
|
},
|
|
prop: function(e, t) {
|
|
var n = this;
|
|
if ("object" == typeof (e = Xt[e] || e))
|
|
tn(e, function(e, t) {
|
|
n.prop(e, t);
|
|
});
|
|
else {
|
|
if (!Ut(t)) return n[0] && n[0].nodeType && e in n[0] ? n[0][e] : t;
|
|
this.each(function() {
|
|
1 === this.nodeType && (this[e] = t);
|
|
});
|
|
}
|
|
return n;
|
|
},
|
|
css: function(e, t) {
|
|
var n,
|
|
r,
|
|
o = this,
|
|
i = function(e) {
|
|
return e.replace(/-(\D)/g, function(e, t) {
|
|
return t.toUpperCase();
|
|
});
|
|
},
|
|
a = function(e) {
|
|
return e.replace(/[A-Z]/g, function(e) {
|
|
return "-" + e;
|
|
});
|
|
};
|
|
if ("object" == typeof e)
|
|
tn(e, function(e, t) {
|
|
o.css(e, t);
|
|
});
|
|
else if (Ut(t))
|
|
(e = i(e)),
|
|
"number" != typeof t || Wt[e] || (t = t.toString() + "px"),
|
|
o.each(function() {
|
|
var n = this.style;
|
|
if ((r = Jt[e]) && r.set) r.set(this, t);
|
|
else {
|
|
try {
|
|
this.style[Yt[e] || e] = t;
|
|
} catch (o) {}
|
|
(null !== t && "" !== t) ||
|
|
(n.removeProperty
|
|
? n.removeProperty(a(e))
|
|
: n.removeAttribute(e));
|
|
}
|
|
});
|
|
else {
|
|
if (((n = o[0]), (r = Jt[e]) && r.get)) return r.get(n);
|
|
if (n.ownerDocument.defaultView)
|
|
try {
|
|
return n.ownerDocument.defaultView
|
|
.getComputedStyle(n, null)
|
|
.getPropertyValue(a(e));
|
|
} catch (s) {
|
|
return undefined;
|
|
}
|
|
else if (n.currentStyle) return n.currentStyle[i(e)];
|
|
}
|
|
return o;
|
|
},
|
|
remove: function() {
|
|
for (var e, t = this.length; t--; )
|
|
(e = this[t]), Ft.clean(e), e.parentNode && e.parentNode.removeChild(e);
|
|
return this;
|
|
},
|
|
empty: function() {
|
|
for (var e, t = this.length; t--; )
|
|
for (e = this[t]; e.firstChild; ) e.removeChild(e.firstChild);
|
|
return this;
|
|
},
|
|
html: function(e) {
|
|
var t,
|
|
n = this;
|
|
if (Ut(e)) {
|
|
t = n.length;
|
|
try {
|
|
for (; t--; ) n[t].innerHTML = e;
|
|
} catch (r) {
|
|
Qt(n[t])
|
|
.empty()
|
|
.append(e);
|
|
}
|
|
return n;
|
|
}
|
|
return n[0] ? n[0].innerHTML : "";
|
|
},
|
|
text: function(e) {
|
|
var t,
|
|
n = this;
|
|
if (Ut(e)) {
|
|
for (t = n.length; t--; )
|
|
"innerText" in n[t] ? (n[t].innerText = e) : (n[0].textContent = e);
|
|
return n;
|
|
}
|
|
return n[0] ? n[0].innerText || n[0].textContent : "";
|
|
},
|
|
append: function() {
|
|
return qt(this, arguments, function(e) {
|
|
(1 === this.nodeType || (this.host && 1 === this.host.nodeType)) &&
|
|
this.appendChild(e);
|
|
});
|
|
},
|
|
prepend: function() {
|
|
return qt(
|
|
this,
|
|
arguments,
|
|
function(e) {
|
|
(1 === this.nodeType || (this.host && 1 === this.host.nodeType)) &&
|
|
this.insertBefore(e, this.firstChild);
|
|
},
|
|
!0
|
|
);
|
|
},
|
|
before: function() {
|
|
return this[0] && this[0].parentNode
|
|
? qt(this, arguments, function(e) {
|
|
this.parentNode.insertBefore(e, this);
|
|
})
|
|
: this;
|
|
},
|
|
after: function() {
|
|
return this[0] && this[0].parentNode
|
|
? qt(
|
|
this,
|
|
arguments,
|
|
function(e) {
|
|
this.parentNode.insertBefore(e, this.nextSibling);
|
|
},
|
|
!0
|
|
)
|
|
: this;
|
|
},
|
|
appendTo: function(e) {
|
|
return Qt(e).append(this), this;
|
|
},
|
|
prependTo: function(e) {
|
|
return Qt(e).prepend(this), this;
|
|
},
|
|
replaceWith: function(e) {
|
|
return this.before(e).remove();
|
|
},
|
|
wrap: function(e) {
|
|
return $t(this, e);
|
|
},
|
|
wrapAll: function(e) {
|
|
return $t(this, e, !0);
|
|
},
|
|
wrapInner: function(e) {
|
|
return (
|
|
this.each(function() {
|
|
Qt(this)
|
|
.contents()
|
|
.wrapAll(e);
|
|
}),
|
|
this
|
|
);
|
|
},
|
|
unwrap: function() {
|
|
return this.parent().each(function() {
|
|
Qt(this).replaceWith(this.childNodes);
|
|
});
|
|
},
|
|
clone: function() {
|
|
var e = [];
|
|
return (
|
|
this.each(function() {
|
|
e.push(this.cloneNode(!0));
|
|
}),
|
|
Qt(e)
|
|
);
|
|
},
|
|
addClass: function(e) {
|
|
return this.toggleClass(e, !0);
|
|
},
|
|
removeClass: function(e) {
|
|
return this.toggleClass(e, !1);
|
|
},
|
|
toggleClass: function(e, t) {
|
|
var n = this;
|
|
return "string" != typeof e
|
|
? n
|
|
: (-1 !== e.indexOf(" ")
|
|
? tn(e.split(" "), function() {
|
|
n.toggleClass(this, t);
|
|
})
|
|
: n.each(function(n, r) {
|
|
var o, i;
|
|
(i = jt(r, e)) !== t &&
|
|
((o = r.className),
|
|
i
|
|
? (r.className = en(
|
|
(" " + o + " ").replace(" " + e + " ", " ")
|
|
))
|
|
: (r.className += o ? " " + e : e));
|
|
}),
|
|
n);
|
|
},
|
|
hasClass: function(e) {
|
|
return jt(this[0], e);
|
|
},
|
|
each: function(e) {
|
|
return tn(this, e);
|
|
},
|
|
on: function(e, t) {
|
|
return this.each(function() {
|
|
Ft.bind(this, e, t);
|
|
});
|
|
},
|
|
off: function(e, t) {
|
|
return this.each(function() {
|
|
Ft.unbind(this, e, t);
|
|
});
|
|
},
|
|
trigger: function(e) {
|
|
return this.each(function() {
|
|
"object" == typeof e ? Ft.fire(this, e.type, e) : Ft.fire(this, e);
|
|
});
|
|
},
|
|
show: function() {
|
|
return this.css("display", "");
|
|
},
|
|
hide: function() {
|
|
return this.css("display", "none");
|
|
},
|
|
slice: function() {
|
|
return new Qt(Lt.apply(this, arguments));
|
|
},
|
|
eq: function(e) {
|
|
return -1 === e ? this.slice(e) : this.slice(e, +e + 1);
|
|
},
|
|
first: function() {
|
|
return this.eq(0);
|
|
},
|
|
last: function() {
|
|
return this.eq(-1);
|
|
},
|
|
find: function(e) {
|
|
var t,
|
|
n,
|
|
r = [];
|
|
for (t = 0, n = this.length; t < n; t++) Qt.find(e, this[t], r);
|
|
return Qt(r);
|
|
},
|
|
filter: function(e) {
|
|
return Qt(
|
|
"function" == typeof e
|
|
? nn(this.toArray(), function(t, n) {
|
|
return e(n, t);
|
|
})
|
|
: Qt.filter(e, this.toArray())
|
|
);
|
|
},
|
|
closest: function(e) {
|
|
var t = [];
|
|
return (
|
|
e instanceof Qt && (e = e[0]),
|
|
this.each(function(n, r) {
|
|
for (; r; ) {
|
|
if ("string" == typeof e && Qt(r).is(e)) {
|
|
t.push(r);
|
|
break;
|
|
}
|
|
if (r === e) {
|
|
t.push(r);
|
|
break;
|
|
}
|
|
r = r.parentNode;
|
|
}
|
|
}),
|
|
Qt(t)
|
|
);
|
|
},
|
|
offset: function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i = 0,
|
|
a = 0;
|
|
return e
|
|
? this.css(e)
|
|
: ((t = this[0]) &&
|
|
((r = (n = t.ownerDocument).documentElement),
|
|
t.getBoundingClientRect &&
|
|
((i =
|
|
(o = t.getBoundingClientRect()).left +
|
|
(r.scrollLeft || n.body.scrollLeft) -
|
|
r.clientLeft),
|
|
(a = o.top + (r.scrollTop || n.body.scrollTop) - r.clientTop))),
|
|
{ left: i, top: a });
|
|
},
|
|
push: It,
|
|
sort: [].sort,
|
|
splice: [].splice
|
|
}),
|
|
Ot.extend(Qt, {
|
|
extend: Ot.extend,
|
|
makeArray: function(e) {
|
|
return ((t = e) && t === t.window) || e.nodeType ? [e] : Ot.toArray(e);
|
|
var t;
|
|
},
|
|
inArray: function(e, t) {
|
|
var n;
|
|
if (t.indexOf) return t.indexOf(e);
|
|
for (n = t.length; n--; ) if (t[n] === e) return n;
|
|
return -1;
|
|
},
|
|
isArray: Ot.isArray,
|
|
each: tn,
|
|
trim: en,
|
|
grep: nn,
|
|
find: lt,
|
|
expr: lt.selectors,
|
|
unique: lt.uniqueSort,
|
|
text: lt.getText,
|
|
contains: lt.contains,
|
|
filter: function(e, t, n) {
|
|
var r = t.length;
|
|
for (n && (e = ":not(" + e + ")"); r--; )
|
|
1 !== t[r].nodeType && t.splice(r, 1);
|
|
return (t =
|
|
1 === t.length
|
|
? Qt.find.matchesSelector(t[0], e)
|
|
? [t[0]]
|
|
: []
|
|
: Qt.find.matches(e, t));
|
|
}
|
|
});
|
|
var on = function(e, t, n) {
|
|
var r = [],
|
|
o = e[t];
|
|
for (
|
|
"string" != typeof n && n instanceof Qt && (n = n[0]);
|
|
o && 9 !== o.nodeType;
|
|
|
|
) {
|
|
if (n !== undefined) {
|
|
if (o === n) break;
|
|
if ("string" == typeof n && Qt(o).is(n)) break;
|
|
}
|
|
1 === o.nodeType && r.push(o), (o = o[t]);
|
|
}
|
|
return r;
|
|
},
|
|
an = function(e, t, n, r) {
|
|
var o = [];
|
|
for (r instanceof Qt && (r = r[0]); e; e = e[t])
|
|
if (!n || e.nodeType === n) {
|
|
if (r !== undefined) {
|
|
if (e === r) break;
|
|
if ("string" == typeof r && Qt(e).is(r)) break;
|
|
}
|
|
o.push(e);
|
|
}
|
|
return o;
|
|
},
|
|
sn = function(e, t, n) {
|
|
for (e = e[t]; e; e = e[t]) if (e.nodeType === n) return e;
|
|
return null;
|
|
};
|
|
tn(
|
|
{
|
|
parent: function(e) {
|
|
var t = e.parentNode;
|
|
return t && 11 !== t.nodeType ? t : null;
|
|
},
|
|
parents: function(e) {
|
|
return on(e, "parentNode");
|
|
},
|
|
next: function(e) {
|
|
return sn(e, "nextSibling", 1);
|
|
},
|
|
prev: function(e) {
|
|
return sn(e, "previousSibling", 1);
|
|
},
|
|
children: function(e) {
|
|
return an(e.firstChild, "nextSibling", 1);
|
|
},
|
|
contents: function(e) {
|
|
return Ot.toArray(
|
|
("iframe" === e.nodeName
|
|
? e.contentDocument || e.contentWindow.document
|
|
: e
|
|
).childNodes
|
|
);
|
|
}
|
|
},
|
|
function(e, t) {
|
|
Qt.fn[e] = function(n) {
|
|
var r = [];
|
|
return (
|
|
this.each(function() {
|
|
var e = t.call(r, this, n, r);
|
|
e && (Qt.isArray(e) ? r.push.apply(r, e) : r.push(e));
|
|
}),
|
|
this.length > 1 &&
|
|
(zt[e] || (r = Qt.unique(r)),
|
|
0 === e.indexOf("parents") && (r = r.reverse())),
|
|
(r = Qt(r)),
|
|
n ? r.filter(n) : r
|
|
);
|
|
};
|
|
}
|
|
),
|
|
tn(
|
|
{
|
|
parentsUntil: function(e, t) {
|
|
return on(e, "parentNode", t);
|
|
},
|
|
nextUntil: function(e, t) {
|
|
return an(e, "nextSibling", 1, t).slice(1);
|
|
},
|
|
prevUntil: function(e, t) {
|
|
return an(e, "previousSibling", 1, t).slice(1);
|
|
}
|
|
},
|
|
function(e, t) {
|
|
Qt.fn[e] = function(n, r) {
|
|
var o = [];
|
|
return (
|
|
this.each(function() {
|
|
var e = t.call(o, this, n, o);
|
|
e && (Qt.isArray(e) ? o.push.apply(o, e) : o.push(e));
|
|
}),
|
|
this.length > 1 &&
|
|
((o = Qt.unique(o)),
|
|
(0 !== e.indexOf("parents") && "prevUntil" !== e) ||
|
|
(o = o.reverse())),
|
|
(o = Qt(o)),
|
|
r ? o.filter(r) : o
|
|
);
|
|
};
|
|
}
|
|
),
|
|
(Qt.fn.is = function(e) {
|
|
return !!e && this.filter(e).length > 0;
|
|
}),
|
|
(Qt.fn.init.prototype = Qt.fn),
|
|
(Qt.overrideDefaults = function(e) {
|
|
var t,
|
|
n = function(r, o) {
|
|
return (
|
|
(t = t || e()),
|
|
0 === arguments.length && (r = t.element),
|
|
o || (o = t.context),
|
|
new n.fn.init(r, o)
|
|
);
|
|
};
|
|
return Qt.extend(n, this), n;
|
|
});
|
|
var un = function(e, t, n) {
|
|
tn(n, function(n, r) {
|
|
(e[n] = e[n] || {}), (e[n][t] = r);
|
|
});
|
|
};
|
|
me.ie &&
|
|
me.ie < 8 &&
|
|
(un(Gt, "get", {
|
|
maxlength: function(e) {
|
|
var t = e.maxLength;
|
|
return 2147483647 === t ? undefined : t;
|
|
},
|
|
size: function(e) {
|
|
var t = e.size;
|
|
return 20 === t ? undefined : t;
|
|
},
|
|
class: function(e) {
|
|
return e.className;
|
|
},
|
|
style: function(e) {
|
|
var t = e.style.cssText;
|
|
return 0 === t.length ? undefined : t;
|
|
}
|
|
}),
|
|
un(Gt, "set", {
|
|
class: function(e, t) {
|
|
e.className = t;
|
|
},
|
|
style: function(e, t) {
|
|
e.style.cssText = t;
|
|
}
|
|
})),
|
|
me.ie &&
|
|
me.ie < 9 &&
|
|
((Yt["float"] = "styleFloat"),
|
|
un(Jt, "set", {
|
|
opacity: function(e, t) {
|
|
var n = e.style;
|
|
null === t || "" === t
|
|
? n.removeAttribute("filter")
|
|
: ((n.zoom = 1), (n.filter = "alpha(opacity=" + 100 * t + ")"));
|
|
}
|
|
})),
|
|
(Qt.attrHooks = Gt),
|
|
(Qt.cssHooks = Jt);
|
|
var cn,
|
|
ln,
|
|
fn,
|
|
dn,
|
|
mn = function(e) {
|
|
var t,
|
|
n = !1;
|
|
return function() {
|
|
return n || ((n = !0), (t = e.apply(null, arguments))), t;
|
|
};
|
|
},
|
|
pn = function(e, t) {
|
|
var n = (function(e, t) {
|
|
for (var n = 0; n < e.length; n++) {
|
|
var r = e[n];
|
|
if (r.test(t)) return r;
|
|
}
|
|
return undefined;
|
|
})(e, t);
|
|
if (!n) return { major: 0, minor: 0 };
|
|
var r = function(e) {
|
|
return Number(t.replace(n, "$" + e));
|
|
};
|
|
return hn(r(1), r(2));
|
|
},
|
|
gn = function() {
|
|
return hn(0, 0);
|
|
},
|
|
hn = function(e, t) {
|
|
return { major: e, minor: t };
|
|
},
|
|
vn = {
|
|
nu: hn,
|
|
detect: function(e, t) {
|
|
var n = String(t).toLowerCase();
|
|
return 0 === e.length ? gn() : pn(e, n);
|
|
},
|
|
unknown: gn
|
|
},
|
|
yn = "Firefox",
|
|
bn = function(e, t) {
|
|
return function() {
|
|
return t === e;
|
|
};
|
|
},
|
|
Cn = function(e) {
|
|
var t = e.current;
|
|
return {
|
|
current: t,
|
|
version: e.version,
|
|
isEdge: bn("Edge", t),
|
|
isChrome: bn("Chrome", t),
|
|
isIE: bn("IE", t),
|
|
isOpera: bn("Opera", t),
|
|
isFirefox: bn(yn, t),
|
|
isSafari: bn("Safari", t)
|
|
};
|
|
},
|
|
xn = {
|
|
unknown: function() {
|
|
return Cn({ current: undefined, version: vn.unknown() });
|
|
},
|
|
nu: Cn,
|
|
edge: y.constant("Edge"),
|
|
chrome: y.constant("Chrome"),
|
|
ie: y.constant("IE"),
|
|
opera: y.constant("Opera"),
|
|
firefox: y.constant(yn),
|
|
safari: y.constant("Safari")
|
|
},
|
|
wn = "Windows",
|
|
Nn = "Android",
|
|
En = "Solaris",
|
|
Sn = "FreeBSD",
|
|
kn = function(e, t) {
|
|
return function() {
|
|
return t === e;
|
|
};
|
|
},
|
|
Tn = function(e) {
|
|
var t = e.current;
|
|
return {
|
|
current: t,
|
|
version: e.version,
|
|
isWindows: kn(wn, t),
|
|
isiOS: kn("iOS", t),
|
|
isAndroid: kn(Nn, t),
|
|
isOSX: kn("OSX", t),
|
|
isLinux: kn("Linux", t),
|
|
isSolaris: kn(En, t),
|
|
isFreeBSD: kn(Sn, t)
|
|
};
|
|
},
|
|
An = {
|
|
unknown: function() {
|
|
return Tn({ current: undefined, version: vn.unknown() });
|
|
},
|
|
nu: Tn,
|
|
windows: y.constant(wn),
|
|
ios: y.constant("iOS"),
|
|
android: y.constant(Nn),
|
|
linux: y.constant("Linux"),
|
|
osx: y.constant("OSX"),
|
|
solaris: y.constant(En),
|
|
freebsd: y.constant(Sn)
|
|
},
|
|
_n = function(e, t) {
|
|
var n = String(t).toLowerCase();
|
|
return M.find(e, function(e) {
|
|
return e.search(n);
|
|
});
|
|
},
|
|
Bn = function(e, t) {
|
|
return _n(e, t).map(function(e) {
|
|
var n = vn.detect(e.versionRegexes, t);
|
|
return { current: e.name, version: n };
|
|
});
|
|
},
|
|
Rn = function(e, t) {
|
|
return _n(e, t).map(function(e) {
|
|
var n = vn.detect(e.versionRegexes, t);
|
|
return { current: e.name, version: n };
|
|
});
|
|
},
|
|
Dn = function(e, t) {
|
|
return -1 !== e.indexOf(t);
|
|
},
|
|
On = function(e) {
|
|
return e.replace(/^\s+|\s+$/g, "");
|
|
},
|
|
Pn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
|
|
In = function(e) {
|
|
return function(t) {
|
|
return Dn(t, e);
|
|
};
|
|
},
|
|
Ln = [
|
|
{
|
|
name: "Edge",
|
|
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
|
|
search: function(e) {
|
|
return (
|
|
Dn(e, "edge/") &&
|
|
Dn(e, "chrome") &&
|
|
Dn(e, "safari") &&
|
|
Dn(e, "applewebkit")
|
|
);
|
|
}
|
|
},
|
|
{
|
|
name: "Chrome",
|
|
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Pn],
|
|
search: function(e) {
|
|
return Dn(e, "chrome") && !Dn(e, "chromeframe");
|
|
}
|
|
},
|
|
{
|
|
name: "IE",
|
|
versionRegexes: [
|
|
/.*?msie\ ?([0-9]+)\.([0-9]+).*/,
|
|
/.*?rv:([0-9]+)\.([0-9]+).*/
|
|
],
|
|
search: function(e) {
|
|
return Dn(e, "msie") || Dn(e, "trident");
|
|
}
|
|
},
|
|
{
|
|
name: "Opera",
|
|
versionRegexes: [Pn, /.*?opera\/([0-9]+)\.([0-9]+).*/],
|
|
search: In("opera")
|
|
},
|
|
{
|
|
name: "Firefox",
|
|
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
|
|
search: In("firefox")
|
|
},
|
|
{
|
|
name: "Safari",
|
|
versionRegexes: [Pn, /.*?cpu os ([0-9]+)_([0-9]+).*/],
|
|
search: function(e) {
|
|
return (Dn(e, "safari") || Dn(e, "mobile/")) && Dn(e, "applewebkit");
|
|
}
|
|
}
|
|
],
|
|
Mn = [
|
|
{
|
|
name: "Windows",
|
|
search: In("win"),
|
|
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
|
|
},
|
|
{
|
|
name: "iOS",
|
|
search: function(e) {
|
|
return Dn(e, "iphone") || Dn(e, "ipad");
|
|
},
|
|
versionRegexes: [
|
|
/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
|
|
/.*cpu os ([0-9]+)_([0-9]+).*/,
|
|
/.*cpu iphone os ([0-9]+)_([0-9]+).*/
|
|
]
|
|
},
|
|
{
|
|
name: "Android",
|
|
search: In("android"),
|
|
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
|
|
},
|
|
{
|
|
name: "OSX",
|
|
search: In("os x"),
|
|
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
|
|
},
|
|
{ name: "Linux", search: In("linux"), versionRegexes: [] },
|
|
{ name: "Solaris", search: In("sunos"), versionRegexes: [] },
|
|
{ name: "FreeBSD", search: In("freebsd"), versionRegexes: [] }
|
|
],
|
|
Fn = { browsers: y.constant(Ln), oses: y.constant(Mn) },
|
|
zn = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = Fn.browsers(),
|
|
m = Fn.oses(),
|
|
p = Bn(d, e).fold(xn.unknown, xn.nu),
|
|
g = Rn(m, e).fold(An.unknown, An.nu);
|
|
return {
|
|
browser: p,
|
|
os: g,
|
|
deviceType: ((n = p),
|
|
(r = e),
|
|
(o = (t = g).isiOS() && !0 === /ipad/i.test(r)),
|
|
(i = t.isiOS() && !o),
|
|
(a = t.isAndroid() && 3 === t.version.major),
|
|
(s = t.isAndroid() && 4 === t.version.major),
|
|
(u = o || a || (s && !0 === /mobile/i.test(r))),
|
|
(c = t.isiOS() || t.isAndroid()),
|
|
(l = c && !u),
|
|
(f = n.isSafari() && t.isiOS() && !1 === /safari/i.test(r)),
|
|
{
|
|
isiPad: y.constant(o),
|
|
isiPhone: y.constant(i),
|
|
isTablet: y.constant(u),
|
|
isPhone: y.constant(l),
|
|
isTouch: y.constant(c),
|
|
isAndroid: t.isAndroid,
|
|
isiOS: t.isiOS,
|
|
isWebView: y.constant(f)
|
|
})
|
|
};
|
|
},
|
|
Un = {
|
|
detect: mn(function() {
|
|
var e = navigator.userAgent;
|
|
return zn(e);
|
|
})
|
|
},
|
|
Vn = function(e) {
|
|
if (null === e || e === undefined)
|
|
throw new Error("Node cannot be null or undefined");
|
|
return { dom: y.constant(e) };
|
|
},
|
|
Hn = {
|
|
fromHtml: function(e, t) {
|
|
var n = (t || document).createElement("div");
|
|
if (((n.innerHTML = e), !n.hasChildNodes() || n.childNodes.length > 1))
|
|
throw (console.error("HTML does not have a single root node", e),
|
|
"HTML must have a single root node");
|
|
return Vn(n.childNodes[0]);
|
|
},
|
|
fromTag: function(e, t) {
|
|
var n = (t || document).createElement(e);
|
|
return Vn(n);
|
|
},
|
|
fromText: function(e, t) {
|
|
var n = (t || document).createTextNode(e);
|
|
return Vn(n);
|
|
},
|
|
fromDom: Vn,
|
|
fromPoint: function(e, t, n) {
|
|
return E.from(e.dom().elementFromPoint(t, n)).map(Vn);
|
|
}
|
|
},
|
|
qn = 8,
|
|
jn = 9,
|
|
$n = 1,
|
|
Wn = 3,
|
|
Kn = function(e) {
|
|
return e.dom().nodeName.toLowerCase();
|
|
},
|
|
Xn = function(e) {
|
|
return e.dom().nodeType;
|
|
},
|
|
Yn = function(e) {
|
|
return function(t) {
|
|
return Xn(t) === e;
|
|
};
|
|
},
|
|
Gn = Yn($n),
|
|
Jn = Yn(Wn),
|
|
Qn = Yn(jn),
|
|
Zn = {
|
|
name: Kn,
|
|
type: Xn,
|
|
value: function(e) {
|
|
return e.dom().nodeValue;
|
|
},
|
|
isElement: Gn,
|
|
isText: Jn,
|
|
isDocument: Qn,
|
|
isComment: function(e) {
|
|
return Xn(e) === qn || "#comment" === Kn(e);
|
|
}
|
|
},
|
|
er = function(e) {
|
|
return function(t) {
|
|
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;
|
|
})(t) === e
|
|
);
|
|
};
|
|
},
|
|
tr = {
|
|
isString: er("string"),
|
|
isObject: er("object"),
|
|
isArray: er("array"),
|
|
isNull: er("null"),
|
|
isBoolean: er("boolean"),
|
|
isUndefined: er("undefined"),
|
|
isFunction: er("function"),
|
|
isNumber: er("number")
|
|
},
|
|
nr =
|
|
(cn = Object.keys) === undefined
|
|
? function(e) {
|
|
var t = [];
|
|
for (var n in e) e.hasOwnProperty(n) && t.push(n);
|
|
return t;
|
|
}
|
|
: cn,
|
|
rr = function(e, t) {
|
|
for (var n = nr(e), r = 0, o = n.length; r < o; r++) {
|
|
var i = n[r];
|
|
t(e[i], i, e);
|
|
}
|
|
},
|
|
or = function(e, t) {
|
|
var n = {};
|
|
return (
|
|
rr(e, function(r, o) {
|
|
var i = t(r, o, e);
|
|
n[i.k] = i.v;
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
ir = function(e, t) {
|
|
var n = [];
|
|
return (
|
|
rr(e, function(e, r) {
|
|
n.push(t(e, r));
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
ar = function(e) {
|
|
return ir(e, function(e) {
|
|
return e;
|
|
});
|
|
},
|
|
sr = {
|
|
bifilter: function(e, t) {
|
|
var n = {},
|
|
r = {};
|
|
return (
|
|
rr(e, function(e, o) {
|
|
(t(e, o) ? n : r)[o] = e;
|
|
}),
|
|
{ t: n, f: r }
|
|
);
|
|
},
|
|
each: rr,
|
|
map: function(e, t) {
|
|
return or(e, function(e, n, r) {
|
|
return { k: n, v: t(e, n, r) };
|
|
});
|
|
},
|
|
mapToArray: ir,
|
|
tupleMap: or,
|
|
find: function(e, t) {
|
|
for (var n = nr(e), r = 0, o = n.length; r < o; r++) {
|
|
var i = n[r],
|
|
a = e[i];
|
|
if (t(a, i, e)) return E.some(a);
|
|
}
|
|
return E.none();
|
|
},
|
|
keys: nr,
|
|
values: ar,
|
|
size: function(e) {
|
|
return ar(e).length;
|
|
}
|
|
},
|
|
ur = function(e, t, n) {
|
|
if (!(tr.isString(n) || tr.isBoolean(n) || tr.isNumber(n)))
|
|
throw (console.error(
|
|
"Invalid call to Attr.set. Key ",
|
|
t,
|
|
":: Value ",
|
|
n,
|
|
":: Element ",
|
|
e
|
|
),
|
|
new Error("Attribute value was not simple"));
|
|
e.setAttribute(t, n + "");
|
|
},
|
|
cr = function(e, t, n) {
|
|
ur(e.dom(), t, n);
|
|
},
|
|
lr = function(e, t) {
|
|
var n = e.dom().getAttribute(t);
|
|
return null === n ? undefined : n;
|
|
},
|
|
fr = function(e, t) {
|
|
var n = e.dom();
|
|
return !(!n || !n.hasAttribute) && n.hasAttribute(t);
|
|
},
|
|
dr = {
|
|
clone: function(e) {
|
|
return M.foldl(
|
|
e.dom().attributes,
|
|
function(e, t) {
|
|
return (e[t.name] = t.value), e;
|
|
},
|
|
{}
|
|
);
|
|
},
|
|
set: cr,
|
|
setAll: function(e, t) {
|
|
var n = e.dom();
|
|
sr.each(t, function(e, t) {
|
|
ur(n, t, e);
|
|
});
|
|
},
|
|
get: lr,
|
|
has: fr,
|
|
remove: function(e, t) {
|
|
e.dom().removeAttribute(t);
|
|
},
|
|
hasNone: function(e) {
|
|
var t = e.dom().attributes;
|
|
return t === undefined || null === t || 0 === t.length;
|
|
},
|
|
transfer: function(e, t, n) {
|
|
Zn.isElement(e) &&
|
|
Zn.isElement(t) &&
|
|
M.each(n, function(n) {
|
|
var r, o, i;
|
|
(o = t), fr((r = e), (i = n)) && !fr(o, i) && cr(o, i, lr(r, i));
|
|
});
|
|
}
|
|
},
|
|
mr = mn(function() {
|
|
return pr(Hn.fromDom(document));
|
|
}),
|
|
pr = function(e) {
|
|
var t = e.dom().body;
|
|
if (null === t || t === undefined) throw "Body is not available yet";
|
|
return Hn.fromDom(t);
|
|
},
|
|
gr = {
|
|
body: mr,
|
|
getBody: pr,
|
|
inBody: function(e) {
|
|
var t = Zn.isText(e) ? e.dom().parentNode : e.dom();
|
|
return (
|
|
t !== undefined && null !== t && t.ownerDocument.body.contains(t)
|
|
);
|
|
}
|
|
},
|
|
hr = function(e) {
|
|
return e.style !== undefined;
|
|
},
|
|
vr = function(e, t, n) {
|
|
if (!tr.isString(n))
|
|
throw (console.error(
|
|
"Invalid call to CSS.set. Property ",
|
|
t,
|
|
":: Value ",
|
|
n,
|
|
":: Element ",
|
|
e
|
|
),
|
|
new Error("CSS value must be a string: " + n));
|
|
hr(e) && e.style.setProperty(t, n);
|
|
},
|
|
yr = function(e, t) {
|
|
return hr(e) ? e.style.getPropertyValue(t) : "";
|
|
},
|
|
br = function(e, t) {
|
|
var n = e.dom();
|
|
sr.each(t, function(e, t) {
|
|
vr(n, t, e);
|
|
});
|
|
},
|
|
Cr = function(e, t) {
|
|
var n = e.dom(),
|
|
r = window.getComputedStyle(n).getPropertyValue(t),
|
|
o = "" !== r || gr.inBody(e) ? r : yr(n, t);
|
|
return null === o ? undefined : o;
|
|
},
|
|
xr = function() {
|
|
var e = arguments;
|
|
return function() {
|
|
for (var t = new Array(arguments.length), n = 0; n < t.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 (
|
|
M.each(e, function(e, n) {
|
|
r[e] = y.constant(t[n]);
|
|
}),
|
|
r
|
|
);
|
|
};
|
|
},
|
|
wr = function(e, t) {
|
|
var n = [],
|
|
r = function(e) {
|
|
return n.push(e), t(e);
|
|
},
|
|
o = t(e);
|
|
do {
|
|
o = o.bind(r);
|
|
} while (o.isSome());
|
|
return n;
|
|
},
|
|
Nr = function() {
|
|
return V("Node");
|
|
},
|
|
Er = function(e, t, n) {
|
|
return 0 != (e.compareDocumentPosition(t) & n);
|
|
},
|
|
Sr = function(e, t) {
|
|
return Er(e, t, Nr().DOCUMENT_POSITION_CONTAINED_BY);
|
|
},
|
|
kr = $n,
|
|
Tr = jn,
|
|
Ar = function(e) {
|
|
return (
|
|
(e.nodeType !== kr && e.nodeType !== Tr) || 0 === e.childElementCount
|
|
);
|
|
},
|
|
_r = {
|
|
all: function(e, t) {
|
|
var n = t === undefined ? document : t.dom();
|
|
return Ar(n) ? [] : M.map(n.querySelectorAll(e), Hn.fromDom);
|
|
},
|
|
is: function(e, t) {
|
|
var n = e.dom();
|
|
if (n.nodeType !== kr) 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 Ar(n) ? E.none() : E.from(n.querySelector(e)).map(Hn.fromDom);
|
|
}
|
|
},
|
|
Br = function(e, t) {
|
|
return e.dom() === t.dom();
|
|
},
|
|
Rr = Un.detect().browser.isIE()
|
|
? function(e, t) {
|
|
return Sr(e.dom(), t.dom());
|
|
}
|
|
: function(e, t) {
|
|
var n = e.dom(),
|
|
r = t.dom();
|
|
return n !== r && n.contains(r);
|
|
},
|
|
Dr = {
|
|
eq: Br,
|
|
isEqualNode: function(e, t) {
|
|
return e.dom().isEqualNode(t.dom());
|
|
},
|
|
member: function(e, t) {
|
|
return M.exists(t, y.curry(Br, e));
|
|
},
|
|
contains: Rr,
|
|
is: _r.is
|
|
},
|
|
Or = function(e) {
|
|
return Hn.fromDom(e.dom().ownerDocument);
|
|
},
|
|
Pr = function(e) {
|
|
var t = e.dom();
|
|
return E.from(t.parentNode).map(Hn.fromDom);
|
|
},
|
|
Ir = function(e) {
|
|
var t = e.dom();
|
|
return E.from(t.previousSibling).map(Hn.fromDom);
|
|
},
|
|
Lr = function(e) {
|
|
var t = e.dom();
|
|
return E.from(t.nextSibling).map(Hn.fromDom);
|
|
},
|
|
Mr = function(e) {
|
|
var t = e.dom();
|
|
return M.map(t.childNodes, Hn.fromDom);
|
|
},
|
|
Fr = function(e, t) {
|
|
var n = e.dom().childNodes;
|
|
return E.from(n[t]).map(Hn.fromDom);
|
|
},
|
|
zr = xr("element", "offset"),
|
|
Ur = {
|
|
owner: Or,
|
|
defaultView: function(e) {
|
|
var t = e.dom().ownerDocument.defaultView;
|
|
return Hn.fromDom(t);
|
|
},
|
|
documentElement: function(e) {
|
|
var t = Or(e);
|
|
return Hn.fromDom(t.dom().documentElement);
|
|
},
|
|
parent: Pr,
|
|
findIndex: function(e) {
|
|
return Pr(e).bind(function(t) {
|
|
var n = Mr(t);
|
|
return M.findIndex(n, function(t) {
|
|
return Dr.eq(e, t);
|
|
});
|
|
});
|
|
},
|
|
parents: function(e, t) {
|
|
for (
|
|
var n = tr.isFunction(t) ? t : y.constant(!1), r = e.dom(), o = [];
|
|
null !== r.parentNode && r.parentNode !== undefined;
|
|
|
|
) {
|
|
var i = r.parentNode,
|
|
a = Hn.fromDom(i);
|
|
if ((o.push(a), !0 === n(a))) break;
|
|
r = i;
|
|
}
|
|
return o;
|
|
},
|
|
siblings: function(e) {
|
|
return Pr(e)
|
|
.map(Mr)
|
|
.map(function(t) {
|
|
return M.filter(t, function(t) {
|
|
return !Dr.eq(e, t);
|
|
});
|
|
})
|
|
.getOr([]);
|
|
},
|
|
prevSibling: Ir,
|
|
offsetParent: function(e) {
|
|
var t = e.dom();
|
|
return E.from(t.offsetParent).map(Hn.fromDom);
|
|
},
|
|
prevSiblings: function(e) {
|
|
return M.reverse(wr(e, Ir));
|
|
},
|
|
nextSibling: Lr,
|
|
nextSiblings: function(e) {
|
|
return wr(e, Lr);
|
|
},
|
|
children: Mr,
|
|
child: Fr,
|
|
firstChild: function(e) {
|
|
return Fr(e, 0);
|
|
},
|
|
lastChild: function(e) {
|
|
return Fr(e, e.dom().childNodes.length - 1);
|
|
},
|
|
childNodesCount: function(e) {
|
|
return e.dom().childNodes.length;
|
|
},
|
|
hasChildNodes: function(e) {
|
|
return e.dom().hasChildNodes();
|
|
},
|
|
leaf: function(e, t) {
|
|
var n = Mr(e);
|
|
return n.length > 0 && t < n.length ? zr(n[t], 0) : zr(e, t);
|
|
}
|
|
},
|
|
Vr = Un.detect().browser,
|
|
Hr = function(e) {
|
|
return M.find(e, Zn.isElement);
|
|
},
|
|
qr = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a = 0,
|
|
s = 0,
|
|
u = e.ownerDocument;
|
|
if (((n = n || e), t)) {
|
|
if (
|
|
n === e &&
|
|
t.getBoundingClientRect &&
|
|
"static" === Cr(Hn.fromDom(e), "position")
|
|
)
|
|
return {
|
|
x: (a =
|
|
(o = t.getBoundingClientRect()).left +
|
|
(u.documentElement.scrollLeft || e.scrollLeft) -
|
|
u.documentElement.clientLeft),
|
|
y: (s =
|
|
o.top +
|
|
(u.documentElement.scrollTop || e.scrollTop) -
|
|
u.documentElement.clientTop)
|
|
};
|
|
for (r = t; r && r !== n && r.nodeType; )
|
|
(a += r.offsetLeft || 0),
|
|
(s += r.offsetTop || 0),
|
|
(r = r.offsetParent);
|
|
for (r = t.parentNode; r && r !== n && r.nodeType; )
|
|
(a -= r.scrollLeft || 0), (s -= r.scrollTop || 0), (r = r.parentNode);
|
|
s += ((i = Hn.fromDom(t)),
|
|
Vr.isFirefox() && "table" === Zn.name(i)
|
|
? Hr(Ur.children(i))
|
|
.filter(function(e) {
|
|
return "caption" === Zn.name(e);
|
|
})
|
|
.bind(function(e) {
|
|
return Hr(Ur.nextSiblings(e)).map(function(t) {
|
|
var n = t.dom().offsetTop,
|
|
r = e.dom().offsetTop,
|
|
o = e.dom().offsetHeight;
|
|
return n <= r ? -o : 0;
|
|
});
|
|
})
|
|
.getOr(0)
|
|
: 0);
|
|
}
|
|
return { x: a, y: s };
|
|
},
|
|
jr = function(e) {
|
|
var t = E.none(),
|
|
n = [],
|
|
r = function(e) {
|
|
o() ? a(e) : n.push(e);
|
|
},
|
|
o = function() {
|
|
return t.isSome();
|
|
},
|
|
i = function(e) {
|
|
M.each(e, a);
|
|
},
|
|
a = function(e) {
|
|
t.each(function(t) {
|
|
setTimeout(function() {
|
|
e(t);
|
|
}, 0);
|
|
});
|
|
};
|
|
return (
|
|
e(function(e) {
|
|
(t = E.some(e)), i(n), (n = []);
|
|
}),
|
|
{
|
|
get: r,
|
|
map: function(e) {
|
|
return jr(function(t) {
|
|
r(function(n) {
|
|
t(e(n));
|
|
});
|
|
});
|
|
},
|
|
isReady: o
|
|
}
|
|
);
|
|
},
|
|
$r = {
|
|
nu: jr,
|
|
pure: function(e) {
|
|
return jr(function(t) {
|
|
t(e);
|
|
});
|
|
}
|
|
},
|
|
Wr = function(e) {
|
|
return function() {
|
|
var t = Array.prototype.slice.call(arguments),
|
|
n = this;
|
|
setTimeout(function() {
|
|
e.apply(n, t);
|
|
}, 0);
|
|
};
|
|
},
|
|
Kr = function(e) {
|
|
var t = function(t) {
|
|
e(Wr(t));
|
|
};
|
|
return {
|
|
map: function(e) {
|
|
return Kr(function(n) {
|
|
t(function(t) {
|
|
var r = e(t);
|
|
n(r);
|
|
});
|
|
});
|
|
},
|
|
bind: function(e) {
|
|
return Kr(function(n) {
|
|
t(function(t) {
|
|
e(t).get(n);
|
|
});
|
|
});
|
|
},
|
|
anonBind: function(e) {
|
|
return Kr(function(n) {
|
|
t(function(t) {
|
|
e.get(n);
|
|
});
|
|
});
|
|
},
|
|
toLazy: function() {
|
|
return $r.nu(t);
|
|
},
|
|
get: t
|
|
};
|
|
},
|
|
Xr = {
|
|
nu: Kr,
|
|
pure: function(e) {
|
|
return Kr(function(t) {
|
|
t(e);
|
|
});
|
|
}
|
|
},
|
|
Yr = function(e, t) {
|
|
return t(function(t) {
|
|
var n = [],
|
|
r = 0;
|
|
0 === e.length
|
|
? t([])
|
|
: M.each(e, function(o, i) {
|
|
var a;
|
|
o.get(
|
|
((a = i),
|
|
function(o) {
|
|
(n[a] = o), ++r >= e.length && t(n);
|
|
})
|
|
);
|
|
});
|
|
});
|
|
},
|
|
Gr = function(e) {
|
|
return Yr(e, Xr.nu);
|
|
},
|
|
Jr = Gr,
|
|
Qr = function(e) {
|
|
return {
|
|
is: function(t) {
|
|
return e === t;
|
|
},
|
|
isValue: y.constant(!0),
|
|
isError: y.constant(!1),
|
|
getOr: y.constant(e),
|
|
getOrThunk: y.constant(e),
|
|
getOrDie: y.constant(e),
|
|
or: function(t) {
|
|
return Qr(e);
|
|
},
|
|
orThunk: function(t) {
|
|
return Qr(e);
|
|
},
|
|
fold: function(t, n) {
|
|
return n(e);
|
|
},
|
|
map: function(t) {
|
|
return Qr(t(e));
|
|
},
|
|
each: function(t) {
|
|
t(e);
|
|
},
|
|
bind: function(t) {
|
|
return t(e);
|
|
},
|
|
exists: function(t) {
|
|
return t(e);
|
|
},
|
|
forall: function(t) {
|
|
return t(e);
|
|
},
|
|
toOption: function() {
|
|
return E.some(e);
|
|
}
|
|
};
|
|
},
|
|
Zr = function(e) {
|
|
return {
|
|
is: y.constant(!1),
|
|
isValue: y.constant(!1),
|
|
isError: y.constant(!0),
|
|
getOr: y.identity,
|
|
getOrThunk: function(e) {
|
|
return e();
|
|
},
|
|
getOrDie: function() {
|
|
return y.die(e)();
|
|
},
|
|
or: function(e) {
|
|
return e;
|
|
},
|
|
orThunk: function(e) {
|
|
return e();
|
|
},
|
|
fold: function(t, n) {
|
|
return t(e);
|
|
},
|
|
map: function(t) {
|
|
return Zr(e);
|
|
},
|
|
each: y.noop,
|
|
bind: function(t) {
|
|
return Zr(e);
|
|
},
|
|
exists: y.constant(!1),
|
|
forall: y.constant(!0),
|
|
toOption: E.none
|
|
};
|
|
},
|
|
eo = { value: Qr, error: Zr },
|
|
to = function(e, t) {
|
|
var n = e,
|
|
r = function(e, n, r, o) {
|
|
var i, a;
|
|
if (e) {
|
|
if (!o && e[n]) return e[n];
|
|
if (e !== t) {
|
|
if ((i = e[r])) return i;
|
|
for (a = e.parentNode; a && a !== t; a = a.parentNode)
|
|
if ((i = a[r])) return i;
|
|
}
|
|
}
|
|
};
|
|
(this.current = function() {
|
|
return n;
|
|
}),
|
|
(this.next = function(e) {
|
|
return (n = r(n, "firstChild", "nextSibling", e));
|
|
}),
|
|
(this.prev = function(e) {
|
|
return (n = r(n, "lastChild", "previousSibling", e));
|
|
}),
|
|
(this.prev2 = function(e) {
|
|
return (n = (function(e, n, r, o) {
|
|
var i, a, s;
|
|
if (e) {
|
|
if (((i = e[r]), t && i === t)) return;
|
|
if (i) {
|
|
if (!o) for (s = i[n]; s; s = s[n]) if (!s[n]) return s;
|
|
return i;
|
|
}
|
|
if ((a = e.parentNode) && a !== t) return a;
|
|
}
|
|
})(n, "lastChild", "previousSibling", e));
|
|
});
|
|
},
|
|
no = function(e) {
|
|
var t;
|
|
return function(n) {
|
|
return (t = t || M.mapToObject(e, y.constant(!0))).hasOwnProperty(
|
|
Zn.name(n)
|
|
);
|
|
};
|
|
},
|
|
ro = no(["h1", "h2", "h3", "h4", "h5", "h6"]),
|
|
oo = no([
|
|
"article",
|
|
"aside",
|
|
"details",
|
|
"div",
|
|
"dt",
|
|
"figcaption",
|
|
"footer",
|
|
"form",
|
|
"fieldset",
|
|
"header",
|
|
"hgroup",
|
|
"html",
|
|
"main",
|
|
"nav",
|
|
"section",
|
|
"summary",
|
|
"body",
|
|
"p",
|
|
"dl",
|
|
"multicol",
|
|
"dd",
|
|
"figure",
|
|
"address",
|
|
"center",
|
|
"blockquote",
|
|
"h1",
|
|
"h2",
|
|
"h3",
|
|
"h4",
|
|
"h5",
|
|
"h6",
|
|
"listing",
|
|
"xmp",
|
|
"pre",
|
|
"plaintext",
|
|
"menu",
|
|
"dir",
|
|
"ul",
|
|
"ol",
|
|
"li",
|
|
"hr",
|
|
"table",
|
|
"tbody",
|
|
"thead",
|
|
"tfoot",
|
|
"th",
|
|
"tr",
|
|
"td",
|
|
"caption"
|
|
]),
|
|
io = {
|
|
isBlock: oo,
|
|
isInline: function(e) {
|
|
return Zn.isElement(e) && !oo(e);
|
|
},
|
|
isHeading: ro,
|
|
isTextBlock: no([
|
|
"h1",
|
|
"h2",
|
|
"h3",
|
|
"h4",
|
|
"h5",
|
|
"h6",
|
|
"p",
|
|
"div",
|
|
"address",
|
|
"pre",
|
|
"form",
|
|
"blockquote",
|
|
"center",
|
|
"dir",
|
|
"fieldset",
|
|
"header",
|
|
"footer",
|
|
"article",
|
|
"section",
|
|
"hgroup",
|
|
"aside",
|
|
"nav",
|
|
"figure"
|
|
]),
|
|
isList: no(["ul", "ol", "dl"]),
|
|
isListItem: no(["li", "dd", "dt"]),
|
|
isVoid: no([
|
|
"area",
|
|
"base",
|
|
"basefont",
|
|
"br",
|
|
"col",
|
|
"frame",
|
|
"hr",
|
|
"img",
|
|
"input",
|
|
"isindex",
|
|
"link",
|
|
"meta",
|
|
"param",
|
|
"embed",
|
|
"source",
|
|
"wbr",
|
|
"track"
|
|
]),
|
|
isTableSection: no(["thead", "tbody", "tfoot"]),
|
|
isTableCell: no(["td", "th"]),
|
|
isBr: function(e) {
|
|
return Zn.isElement(e) && "br" === Zn.name(e);
|
|
}
|
|
},
|
|
ao = function(e) {
|
|
return function(t) {
|
|
return !!t && t.nodeType === e;
|
|
};
|
|
},
|
|
so = ao(1),
|
|
uo = function(e) {
|
|
var t = e.toLowerCase().split(" ");
|
|
return function(e) {
|
|
var n, r;
|
|
if (e && e.nodeType)
|
|
for (r = e.nodeName.toLowerCase(), n = 0; n < t.length; n++)
|
|
if (r === t[n]) return !0;
|
|
return !1;
|
|
};
|
|
},
|
|
co = function(e) {
|
|
return function(t) {
|
|
if (so(t)) {
|
|
if (t.contentEditable === e) return !0;
|
|
if (t.getAttribute("data-mce-contenteditable") === e) return !0;
|
|
}
|
|
return !1;
|
|
};
|
|
},
|
|
lo = ao(3),
|
|
fo = ao(8),
|
|
mo = ao(9),
|
|
po = uo("br"),
|
|
go = co("true"),
|
|
ho = co("false"),
|
|
vo = {
|
|
isText: lo,
|
|
isElement: so,
|
|
isComment: fo,
|
|
isDocument: mo,
|
|
isBr: po,
|
|
isContentEditableTrue: go,
|
|
isContentEditableFalse: ho,
|
|
matchNodeNames: uo,
|
|
hasPropValue: function(e, t) {
|
|
return function(n) {
|
|
return so(n) && n[e] === t;
|
|
};
|
|
},
|
|
hasAttribute: function(e, t) {
|
|
return function(t) {
|
|
return so(t) && t.hasAttribute(e);
|
|
};
|
|
},
|
|
hasAttributeValue: function(e, t) {
|
|
return function(n) {
|
|
return so(n) && n.getAttribute(e) === t;
|
|
};
|
|
},
|
|
matchStyleValues: function(e, t) {
|
|
var n = t.toLowerCase().split(" ");
|
|
return function(t) {
|
|
var r;
|
|
if (so(t))
|
|
for (r = 0; r < n.length; r++)
|
|
if (
|
|
t.ownerDocument.defaultView
|
|
.getComputedStyle(t, null)
|
|
.getPropertyValue(e) === n[r]
|
|
)
|
|
return !0;
|
|
return !1;
|
|
};
|
|
},
|
|
isBogus: function(e) {
|
|
return so(e) && e.hasAttribute("data-mce-bogus");
|
|
}
|
|
},
|
|
yo = function(e) {
|
|
return (
|
|
e &&
|
|
"SPAN" === e.tagName &&
|
|
"bookmark" === e.getAttribute("data-mce-type")
|
|
);
|
|
},
|
|
bo = function(e, t) {
|
|
var n,
|
|
r = t.childNodes;
|
|
if (!vo.isElement(t) || !yo(t)) {
|
|
for (n = r.length - 1; n >= 0; n--) bo(e, r[n]);
|
|
if (!1 === vo.isDocument(t)) {
|
|
if (vo.isText(t) && t.nodeValue.length > 0) {
|
|
var o = Ot.trim(t.nodeValue).length;
|
|
if (e.isBlock(t.parentNode) || o > 0) return;
|
|
if (
|
|
0 === o &&
|
|
((a =
|
|
(i = t).previousSibling &&
|
|
"SPAN" === i.previousSibling.nodeName),
|
|
(s = i.nextSibling && "SPAN" === i.nextSibling.nodeName),
|
|
a && s)
|
|
)
|
|
return;
|
|
} else if (
|
|
vo.isElement(t) &&
|
|
(1 === (r = t.childNodes).length &&
|
|
yo(r[0]) &&
|
|
t.parentNode.insertBefore(r[0], t),
|
|
r.length || io.isVoid(Hn.fromDom(t)))
|
|
)
|
|
return;
|
|
e.remove(t);
|
|
}
|
|
var i, a, s;
|
|
return t;
|
|
}
|
|
},
|
|
Co = { trimNode: bo },
|
|
xo = Ot.makeMap,
|
|
wo = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
|
|
No = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
|
|
Eo = /[<>&\"\']/g,
|
|
So = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
|
|
ko = {
|
|
128: "\u20ac",
|
|
130: "\u201a",
|
|
131: "\u0192",
|
|
132: "\u201e",
|
|
133: "\u2026",
|
|
134: "\u2020",
|
|
135: "\u2021",
|
|
136: "\u02c6",
|
|
137: "\u2030",
|
|
138: "\u0160",
|
|
139: "\u2039",
|
|
140: "\u0152",
|
|
142: "\u017d",
|
|
145: "\u2018",
|
|
146: "\u2019",
|
|
147: "\u201c",
|
|
148: "\u201d",
|
|
149: "\u2022",
|
|
150: "\u2013",
|
|
151: "\u2014",
|
|
152: "\u02dc",
|
|
153: "\u2122",
|
|
154: "\u0161",
|
|
155: "\u203a",
|
|
156: "\u0153",
|
|
158: "\u017e",
|
|
159: "\u0178"
|
|
};
|
|
(fn = {
|
|
'"': """,
|
|
"'": "'",
|
|
"<": "<",
|
|
">": ">",
|
|
"&": "&",
|
|
"`": "`"
|
|
}),
|
|
(dn = {
|
|
"<": "<",
|
|
">": ">",
|
|
"&": "&",
|
|
""": '"',
|
|
"'": "'"
|
|
});
|
|
var To = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = {};
|
|
if (e) {
|
|
for (e = e.split(","), t = t || 10, n = 0; n < e.length; n += 2)
|
|
(r = String.fromCharCode(parseInt(e[n], t))),
|
|
fn[r] || ((o = "&" + e[n + 1] + ";"), (i[r] = o), (i[o] = r));
|
|
return i;
|
|
}
|
|
};
|
|
ln = To(
|
|
"50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",
|
|
32
|
|
);
|
|
var Ao = {
|
|
encodeRaw: function(e, t) {
|
|
return e.replace(t ? wo : No, function(e) {
|
|
return fn[e] || e;
|
|
});
|
|
},
|
|
encodeAllRaw: function(e) {
|
|
return ("" + e).replace(Eo, function(e) {
|
|
return fn[e] || e;
|
|
});
|
|
},
|
|
encodeNumeric: function(e, t) {
|
|
return e.replace(t ? wo : No, function(e) {
|
|
return e.length > 1
|
|
? "&#" +
|
|
(1024 * (e.charCodeAt(0) - 55296) +
|
|
(e.charCodeAt(1) - 56320) +
|
|
65536) +
|
|
";"
|
|
: fn[e] || "&#" + e.charCodeAt(0) + ";";
|
|
});
|
|
},
|
|
encodeNamed: function(e, t, n) {
|
|
return (
|
|
(n = n || ln),
|
|
e.replace(t ? wo : No, function(e) {
|
|
return fn[e] || n[e] || e;
|
|
})
|
|
);
|
|
},
|
|
getEncodeFunc: function(e, t) {
|
|
return (
|
|
(t = To(t) || ln),
|
|
(e = xo(e.replace(/\+/g, ","))).named && e.numeric
|
|
? function(e, n) {
|
|
return e.replace(n ? wo : No, function(e) {
|
|
return fn[e] !== undefined
|
|
? fn[e]
|
|
: t[e] !== undefined
|
|
? t[e]
|
|
: e.length > 1
|
|
? "&#" +
|
|
(1024 * (e.charCodeAt(0) - 55296) +
|
|
(e.charCodeAt(1) - 56320) +
|
|
65536) +
|
|
";"
|
|
: "&#" + e.charCodeAt(0) + ";";
|
|
});
|
|
}
|
|
: e.named
|
|
? t
|
|
? function(e, n) {
|
|
return Ao.encodeNamed(e, n, t);
|
|
}
|
|
: Ao.encodeNamed
|
|
: e.numeric
|
|
? Ao.encodeNumeric
|
|
: Ao.encodeRaw
|
|
);
|
|
},
|
|
decode: function(e) {
|
|
return e.replace(So, function(e, t) {
|
|
return t
|
|
? (t =
|
|
"x" === t.charAt(0).toLowerCase()
|
|
? parseInt(t.substr(1), 16)
|
|
: parseInt(t, 10)) > 65535
|
|
? ((t -= 65536),
|
|
String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t)))
|
|
: ko[t] || String.fromCharCode(t)
|
|
: dn[e] ||
|
|
ln[e] ||
|
|
((n = e),
|
|
((r = Hn.fromTag("div").dom()).innerHTML = n),
|
|
r.textContent || r.innerText || n);
|
|
var n, r;
|
|
});
|
|
}
|
|
},
|
|
_o = {},
|
|
Bo = {},
|
|
Ro = Ot.makeMap,
|
|
Do = Ot.each,
|
|
Oo = Ot.extend,
|
|
Po = Ot.explode,
|
|
Io = Ot.inArray,
|
|
Lo = function(e, t) {
|
|
return (e = Ot.trim(e)) ? e.split(t || " ") : [];
|
|
},
|
|
Mo = function(e, t) {
|
|
var n;
|
|
return (
|
|
e &&
|
|
((n = {}),
|
|
"string" == typeof e && (e = { "*": e }),
|
|
Do(e, function(e, r) {
|
|
n[r] = n[r.toUpperCase()] =
|
|
"map" === t ? Ro(e, /[, ]/) : Po(e, /[, ]/);
|
|
})),
|
|
n
|
|
);
|
|
},
|
|
Fo = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b,
|
|
C,
|
|
x,
|
|
w,
|
|
N,
|
|
E = {},
|
|
S = {},
|
|
k = {},
|
|
T = [],
|
|
A = {},
|
|
_ = {},
|
|
B = function(t, n, r) {
|
|
var o = e[t];
|
|
return (
|
|
o
|
|
? (o = Ro(o, /[, ]/, Ro(o.toUpperCase(), /[, ]/)))
|
|
: (o = _o[t]) ||
|
|
((o = Ro(n, " ", Ro(n.toUpperCase(), " "))),
|
|
(o = Oo(o, r)),
|
|
(_o[t] = o)),
|
|
o
|
|
);
|
|
};
|
|
(p = (e = e || {}).schema),
|
|
(x = {}),
|
|
(w = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = {};
|
|
for (n = 0, r = e.length; n < r; n++) o[e[n]] = t || {};
|
|
return o;
|
|
};
|
|
for (
|
|
n = n || [],
|
|
t = t || "",
|
|
"string" == typeof n && (n = Lo(n)),
|
|
r = (e = Lo(e)).length;
|
|
r--;
|
|
|
|
)
|
|
(i = {
|
|
attributes: a((o = Lo([g, t].join(" ")))),
|
|
attributesOrder: o,
|
|
children: a(n, Bo)
|
|
}),
|
|
(x[e[r]] = i);
|
|
}),
|
|
(N = function(e, t) {
|
|
var n, r, o, i;
|
|
for (n = (e = Lo(e)).length, t = Lo(t); n--; )
|
|
for (r = x[e[n]], o = 0, i = t.length; o < i; o++)
|
|
(r.attributes[t[o]] = {}), r.attributesOrder.push(t[o]);
|
|
}),
|
|
(r = _o[p]
|
|
? _o[p]
|
|
: ((g = "id accesskey class dir lang style tabindex title role"),
|
|
(h =
|
|
"address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),
|
|
(v =
|
|
"a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),
|
|
"html4" !== p &&
|
|
((g +=
|
|
" contenteditable contextmenu draggable dropzone hidden spellcheck translate"),
|
|
(h +=
|
|
" article aside details dialog figure header footer hgroup section nav"),
|
|
(v +=
|
|
" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen")),
|
|
"html5-strict" !== p &&
|
|
((g += " xml:lang"),
|
|
(v = [v, (C = "acronym applet basefont big font strike tt")].join(
|
|
" "
|
|
)),
|
|
Do(Lo(C), function(e) {
|
|
w(e, "", v);
|
|
}),
|
|
(h = [h, (b = "center dir isindex noframes")].join(" ")),
|
|
(y = [h, v].join(" ")),
|
|
Do(Lo(b), function(e) {
|
|
w(e, "", y);
|
|
})),
|
|
(y = y || [h, v].join(" ")),
|
|
w("html", "manifest", "head body"),
|
|
w("head", "", "base command link meta noscript script style title"),
|
|
w("title hr noscript br"),
|
|
w("base", "href target"),
|
|
w("link", "href rel media hreflang type sizes hreflang"),
|
|
w("meta", "name http-equiv content charset"),
|
|
w("style", "media type scoped"),
|
|
w("script", "src async defer type charset"),
|
|
w(
|
|
"body",
|
|
"onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",
|
|
y
|
|
),
|
|
w("address dt dd div caption", "", y),
|
|
w(
|
|
"h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn",
|
|
"",
|
|
v
|
|
),
|
|
w("blockquote", "cite", y),
|
|
w("ol", "reversed start type", "li"),
|
|
w("ul", "", "li"),
|
|
w("li", "value", y),
|
|
w("dl", "", "dt dd"),
|
|
w("a", "href target rel media hreflang type", v),
|
|
w("q", "cite", v),
|
|
w("ins del", "cite datetime", y),
|
|
w("img", "src sizes srcset alt usemap ismap width height"),
|
|
w("iframe", "src name width height", y),
|
|
w("embed", "src type width height"),
|
|
w(
|
|
"object",
|
|
"data type typemustmatch name usemap form width height",
|
|
[y, "param"].join(" ")
|
|
),
|
|
w("param", "name value"),
|
|
w("map", "name", [y, "area"].join(" ")),
|
|
w("area", "alt coords shape href target rel media hreflang type"),
|
|
w(
|
|
"table",
|
|
"border",
|
|
"caption colgroup thead tfoot tbody tr" +
|
|
("html4" === p ? " col" : "")
|
|
),
|
|
w("colgroup", "span", "col"),
|
|
w("col", "span"),
|
|
w("tbody thead tfoot", "", "tr"),
|
|
w("tr", "", "td th"),
|
|
w("td", "colspan rowspan headers", y),
|
|
w("th", "colspan rowspan headers scope abbr", y),
|
|
w(
|
|
"form",
|
|
"accept-charset action autocomplete enctype method name novalidate target",
|
|
y
|
|
),
|
|
w("fieldset", "disabled form name", [y, "legend"].join(" ")),
|
|
w("label", "form for", v),
|
|
w(
|
|
"input",
|
|
"accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"
|
|
),
|
|
w(
|
|
"button",
|
|
"disabled form formaction formenctype formmethod formnovalidate formtarget name type value",
|
|
"html4" === p ? y : v
|
|
),
|
|
w(
|
|
"select",
|
|
"disabled form multiple name required size",
|
|
"option optgroup"
|
|
),
|
|
w("optgroup", "disabled label", "option"),
|
|
w("option", "disabled label selected value"),
|
|
w(
|
|
"textarea",
|
|
"cols dirname disabled form maxlength name readonly required rows wrap"
|
|
),
|
|
w("menu", "type label", [y, "li"].join(" ")),
|
|
w("noscript", "", y),
|
|
"html4" !== p &&
|
|
(w("wbr"),
|
|
w("ruby", "", [v, "rt rp"].join(" ")),
|
|
w("figcaption", "", y),
|
|
w("mark rt rp summary bdi", "", v),
|
|
w("canvas", "width height", y),
|
|
w(
|
|
"video",
|
|
"src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",
|
|
[y, "track source"].join(" ")
|
|
),
|
|
w(
|
|
"audio",
|
|
"src crossorigin preload autoplay mediagroup loop muted controls buffered volume",
|
|
[y, "track source"].join(" ")
|
|
),
|
|
w("picture", "", "img source"),
|
|
w("source", "src srcset type media sizes"),
|
|
w("track", "kind src srclang label default"),
|
|
w("datalist", "", [v, "option"].join(" ")),
|
|
w("article section nav aside header footer", "", y),
|
|
w("hgroup", "", "h1 h2 h3 h4 h5 h6"),
|
|
w("figure", "", [y, "figcaption"].join(" ")),
|
|
w("time", "datetime", v),
|
|
w("dialog", "open", y),
|
|
w(
|
|
"command",
|
|
"type label icon disabled checked radiogroup command"
|
|
),
|
|
w("output", "for form name", v),
|
|
w("progress", "value max", v),
|
|
w("meter", "value min max low high optimum", v),
|
|
w("details", "open", [y, "summary"].join(" ")),
|
|
w("keygen", "autofocus challenge disabled form keytype name")),
|
|
"html5-strict" !== p &&
|
|
(N("script", "language xml:space"),
|
|
N("style", "xml:space"),
|
|
N(
|
|
"object",
|
|
"declare classid code codebase codetype archive standby align border hspace vspace"
|
|
),
|
|
N("embed", "align name hspace vspace"),
|
|
N("param", "valuetype type"),
|
|
N("a", "charset name rev shape coords"),
|
|
N("br", "clear"),
|
|
N(
|
|
"applet",
|
|
"codebase archive code object alt name width height align hspace vspace"
|
|
),
|
|
N("img", "name longdesc align border hspace vspace"),
|
|
N(
|
|
"iframe",
|
|
"longdesc frameborder marginwidth marginheight scrolling align"
|
|
),
|
|
N("font basefont", "size color face"),
|
|
N("input", "usemap align"),
|
|
N("select", "onchange"),
|
|
N("textarea"),
|
|
N("h1 h2 h3 h4 h5 h6 div p legend caption", "align"),
|
|
N("ul", "type compact"),
|
|
N("li", "type"),
|
|
N("ol dl menu dir", "compact"),
|
|
N("pre", "width xml:space"),
|
|
N("hr", "align noshade size width"),
|
|
N("isindex", "prompt"),
|
|
N(
|
|
"table",
|
|
"summary width frame rules cellspacing cellpadding align bgcolor"
|
|
),
|
|
N("col", "width align char charoff valign"),
|
|
N("colgroup", "width align char charoff valign"),
|
|
N("thead", "align char charoff valign"),
|
|
N("tr", "align char charoff valign bgcolor"),
|
|
N(
|
|
"th",
|
|
"axis align char charoff valign nowrap bgcolor width height"
|
|
),
|
|
N("form", "accept"),
|
|
N(
|
|
"td",
|
|
"abbr axis scope align char charoff valign nowrap bgcolor width height"
|
|
),
|
|
N("tfoot", "align char charoff valign"),
|
|
N("tbody", "align char charoff valign"),
|
|
N("area", "nohref"),
|
|
N("body", "background bgcolor text link vlink alink")),
|
|
"html4" !== p &&
|
|
(N("input button select textarea", "autofocus"),
|
|
N("input textarea", "placeholder"),
|
|
N("a", "download"),
|
|
N("link script img", "crossorigin"),
|
|
N("iframe", "sandbox seamless allowfullscreen")),
|
|
Do(Lo("a form meter progress dfn"), function(e) {
|
|
x[e] && delete x[e].children[e];
|
|
}),
|
|
delete x.caption.children.table,
|
|
delete x.script,
|
|
(_o[p] = x),
|
|
x)),
|
|
!1 === e.verify_html && (e.valid_elements = "*[*]"),
|
|
(t = Mo(e.valid_styles)),
|
|
(n = Mo(e.invalid_styles, "map")),
|
|
(u = Mo(e.valid_classes, "map")),
|
|
(o = B(
|
|
"whitespace_elements",
|
|
"pre script noscript style textarea video audio iframe object code"
|
|
)),
|
|
(i = B(
|
|
"self_closing_elements",
|
|
"colgroup dd dt li option p td tfoot th thead tr"
|
|
)),
|
|
(a = B(
|
|
"short_ended_elements",
|
|
"area base basefont br col frame hr img input isindex link meta param embed source wbr track"
|
|
)),
|
|
(s = B(
|
|
"boolean_attributes",
|
|
"checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"
|
|
)),
|
|
(l = B(
|
|
"non_empty_elements",
|
|
"td th iframe video audio object script pre code",
|
|
a
|
|
)),
|
|
(f = B("move_caret_before_on_enter_elements", "table", l)),
|
|
(d = B(
|
|
"text_block_elements",
|
|
"h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"
|
|
)),
|
|
(c = B(
|
|
"block_elements",
|
|
"hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption",
|
|
d
|
|
)),
|
|
(m = B(
|
|
"text_inline_elements",
|
|
"span strong b em i font strike u var cite dfn code mark q sup sub samp"
|
|
)),
|
|
Do(
|
|
(
|
|
e.special ||
|
|
"script noscript noframes noembed title style textarea xmp"
|
|
).split(" "),
|
|
function(e) {
|
|
_[e] = new RegExp("</" + e + "[^>]*>", "gi");
|
|
}
|
|
);
|
|
var R = function(e) {
|
|
return new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$");
|
|
},
|
|
D = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b,
|
|
C = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,
|
|
x = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
|
|
w = /[*?+]/;
|
|
if (e)
|
|
for (
|
|
e = Lo(e, ","),
|
|
S["@"] &&
|
|
((h = S["@"].attributes), (v = S["@"].attributesOrder)),
|
|
t = 0,
|
|
n = e.length;
|
|
t < n;
|
|
t++
|
|
)
|
|
if ((i = C.exec(e[t]))) {
|
|
if (
|
|
((p = i[1]),
|
|
(c = i[2]),
|
|
(g = i[3]),
|
|
(u = i[5]),
|
|
(a = { attributes: (d = {}), attributesOrder: (m = []) }),
|
|
"#" === p && (a.paddEmpty = !0),
|
|
"-" === p && (a.removeEmpty = !0),
|
|
"!" === i[4] && (a.removeEmptyAttrs = !0),
|
|
h)
|
|
) {
|
|
for (y in h) d[y] = h[y];
|
|
m.push.apply(m, v);
|
|
}
|
|
if (u)
|
|
for (r = 0, o = (u = Lo(u, "|")).length; r < o; r++)
|
|
if ((i = x.exec(u[r]))) {
|
|
if (
|
|
((s = {}),
|
|
(f = i[1]),
|
|
(l = i[2].replace(/[\\:]:/g, ":")),
|
|
(p = i[3]),
|
|
(b = i[4]),
|
|
"!" === f &&
|
|
((a.attributesRequired = a.attributesRequired || []),
|
|
a.attributesRequired.push(l),
|
|
(s.required = !0)),
|
|
"-" === f)
|
|
) {
|
|
delete d[l], m.splice(Io(m, l), 1);
|
|
continue;
|
|
}
|
|
p &&
|
|
("=" === p &&
|
|
((a.attributesDefault = a.attributesDefault || []),
|
|
a.attributesDefault.push({ name: l, value: b }),
|
|
(s.defaultValue = b)),
|
|
":" === p &&
|
|
((a.attributesForced = a.attributesForced || []),
|
|
a.attributesForced.push({ name: l, value: b }),
|
|
(s.forcedValue = b)),
|
|
"<" === p && (s.validValues = Ro(b, "?"))),
|
|
w.test(l)
|
|
? ((a.attributePatterns = a.attributePatterns || []),
|
|
(s.pattern = R(l)),
|
|
a.attributePatterns.push(s))
|
|
: (d[l] || m.push(l), (d[l] = s));
|
|
}
|
|
h || "@" !== c || ((h = d), (v = m)),
|
|
g && ((a.outputName = c), (S[g] = a)),
|
|
w.test(c) ? ((a.pattern = R(c)), T.push(a)) : (S[c] = a);
|
|
}
|
|
},
|
|
O = function(e) {
|
|
(S = {}),
|
|
(T = []),
|
|
D(e),
|
|
Do(r, function(e, t) {
|
|
k[t] = e.children;
|
|
});
|
|
},
|
|
P = function(e) {
|
|
var t = /^(~)?(.+)$/;
|
|
e &&
|
|
((_o.text_block_elements = _o.block_elements = null),
|
|
Do(Lo(e, ","), function(e) {
|
|
var n = t.exec(e),
|
|
r = "~" === n[1],
|
|
o = r ? "span" : "div",
|
|
i = n[2];
|
|
if (
|
|
((k[i] = k[o]),
|
|
(A[i] = o),
|
|
r || ((c[i.toUpperCase()] = {}), (c[i] = {})),
|
|
!S[i])
|
|
) {
|
|
var a = S[o];
|
|
delete (a = Oo({}, a)).removeEmptyAttrs,
|
|
delete a.removeEmpty,
|
|
(S[i] = a);
|
|
}
|
|
Do(k, function(e, t) {
|
|
e[o] && ((k[t] = e = Oo({}, k[t])), (e[i] = e[o]));
|
|
});
|
|
}));
|
|
},
|
|
I = function(t) {
|
|
var n = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
|
|
(_o[e.schema] = null),
|
|
t &&
|
|
Do(Lo(t, ","), function(e) {
|
|
var t,
|
|
r,
|
|
o = n.exec(e);
|
|
o &&
|
|
((r = o[1]),
|
|
(t = r ? k[o[2]] : (k[o[2]] = { "#comment": {} })),
|
|
(t = k[o[2]]),
|
|
Do(Lo(o[3], "|"), function(e) {
|
|
"-" === r ? delete t[e] : (t[e] = {});
|
|
}));
|
|
});
|
|
},
|
|
L = function(e) {
|
|
var t,
|
|
n = S[e];
|
|
if (n) return n;
|
|
for (t = T.length; t--; ) if ((n = T[t]).pattern.test(e)) return n;
|
|
};
|
|
return (
|
|
e.valid_elements
|
|
? O(e.valid_elements)
|
|
: (Do(r, function(e, t) {
|
|
(S[t] = {
|
|
attributes: e.attributes,
|
|
attributesOrder: e.attributesOrder
|
|
}),
|
|
(k[t] = e.children);
|
|
}),
|
|
"html5" !== e.schema &&
|
|
Do(Lo("strong/b em/i"), function(e) {
|
|
(e = Lo(e, "/")), (S[e[1]].outputName = e[0]);
|
|
}),
|
|
Do(
|
|
Lo(
|
|
"ol ul sub sup blockquote span font a table tbody tr strong em b i"
|
|
),
|
|
function(e) {
|
|
S[e] && (S[e].removeEmpty = !0);
|
|
}
|
|
),
|
|
Do(
|
|
Lo("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),
|
|
function(e) {
|
|
S[e].paddEmpty = !0;
|
|
}
|
|
),
|
|
Do(Lo("span"), function(e) {
|
|
S[e].removeEmptyAttrs = !0;
|
|
})),
|
|
P(e.custom_elements),
|
|
I(e.valid_children),
|
|
D(e.extended_valid_elements),
|
|
I("+ol[ul|ol],+ul[ul|ol]"),
|
|
Do(
|
|
{
|
|
dd: "dl",
|
|
dt: "dl",
|
|
li: "ul ol",
|
|
td: "tr",
|
|
th: "tr",
|
|
tr: "tbody thead tfoot",
|
|
tbody: "table",
|
|
thead: "table",
|
|
tfoot: "table",
|
|
legend: "fieldset",
|
|
area: "map",
|
|
param: "video audio object"
|
|
},
|
|
function(e, t) {
|
|
S[t] && (S[t].parentsRequired = Lo(e));
|
|
}
|
|
),
|
|
e.invalid_elements &&
|
|
Do(Po(e.invalid_elements), function(e) {
|
|
S[e] && delete S[e];
|
|
}),
|
|
L("span") || D("span[!data-mce-type|*]"),
|
|
(E.children = k),
|
|
(E.getValidStyles = function() {
|
|
return t;
|
|
}),
|
|
(E.getInvalidStyles = function() {
|
|
return n;
|
|
}),
|
|
(E.getValidClasses = function() {
|
|
return u;
|
|
}),
|
|
(E.getBoolAttrs = function() {
|
|
return s;
|
|
}),
|
|
(E.getBlockElements = function() {
|
|
return c;
|
|
}),
|
|
(E.getTextBlockElements = function() {
|
|
return d;
|
|
}),
|
|
(E.getTextInlineElements = function() {
|
|
return m;
|
|
}),
|
|
(E.getShortEndedElements = function() {
|
|
return a;
|
|
}),
|
|
(E.getSelfClosingElements = function() {
|
|
return i;
|
|
}),
|
|
(E.getNonEmptyElements = function() {
|
|
return l;
|
|
}),
|
|
(E.getMoveCaretBeforeOnEnterElements = function() {
|
|
return f;
|
|
}),
|
|
(E.getWhiteSpaceElements = function() {
|
|
return o;
|
|
}),
|
|
(E.getSpecialElements = function() {
|
|
return _;
|
|
}),
|
|
(E.isValidChild = function(e, t) {
|
|
var n = k[e.toLowerCase()];
|
|
return !(!n || !n[t.toLowerCase()]);
|
|
}),
|
|
(E.isValid = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = L(e);
|
|
if (o) {
|
|
if (!t) return !0;
|
|
if (o.attributes[t]) return !0;
|
|
if ((n = o.attributePatterns))
|
|
for (r = n.length; r--; ) if (n[r].pattern.test(e)) return !0;
|
|
}
|
|
return !1;
|
|
}),
|
|
(E.getElementRule = L),
|
|
(E.getCustomElements = function() {
|
|
return A;
|
|
}),
|
|
(E.addValidElements = D),
|
|
(E.setValidElements = O),
|
|
(E.addCustomElements = P),
|
|
(E.addValidChildren = I),
|
|
(E.elements = S),
|
|
E
|
|
);
|
|
},
|
|
zo = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
|
|
s = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
|
|
u = /\s*([^:]+):\s*([^;]+);?/g,
|
|
c = /\s+$/,
|
|
l = {},
|
|
f = "\ufeff";
|
|
for (
|
|
e = e || {},
|
|
t && ((o = t.getValidStyles()), (i = t.getInvalidStyles())),
|
|
r = ("\\\" \\' \\; \\: ; : " + f).split(" "),
|
|
n = 0;
|
|
n < r.length;
|
|
n++
|
|
)
|
|
(l[r[n]] = f + n), (l[f + n] = r[n]);
|
|
var d = function(e, t, n, r) {
|
|
var o = function(e) {
|
|
return (e = parseInt(e, 10).toString(16)).length > 1 ? e : "0" + e;
|
|
};
|
|
return "#" + o(t) + o(n) + o(r);
|
|
};
|
|
return {
|
|
toHex: function(e) {
|
|
return e.replace(a, d);
|
|
},
|
|
parse: function(t) {
|
|
var r,
|
|
o,
|
|
i,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y = {},
|
|
b = e.url_converter,
|
|
C = e.url_converter_scope || this,
|
|
x = function(e, t, r) {
|
|
var o, i, a, s;
|
|
if (
|
|
(o = y[e + "-top" + t]) &&
|
|
(i = y[e + "-right" + t]) &&
|
|
(a = y[e + "-bottom" + t]) &&
|
|
(s = y[e + "-left" + t])
|
|
) {
|
|
var u = [o, i, a, s];
|
|
for (n = u.length - 1; n-- && u[n] === u[n + 1]; );
|
|
(n > -1 && r) ||
|
|
((y[e + t] = -1 === n ? u[0] : u.join(" ")),
|
|
delete y[e + "-top" + t],
|
|
delete y[e + "-right" + t],
|
|
delete y[e + "-bottom" + t],
|
|
delete y[e + "-left" + t]);
|
|
}
|
|
},
|
|
w = function(e) {
|
|
var t,
|
|
n = y[e];
|
|
if (n) {
|
|
for (t = (n = n.split(" ")).length; t--; )
|
|
if (n[t] !== n[0]) return !1;
|
|
return (y[e] = n[0]), !0;
|
|
}
|
|
},
|
|
N = function(e) {
|
|
return (m = !0), l[e];
|
|
},
|
|
E = function(e, t) {
|
|
return (
|
|
m &&
|
|
(e = e.replace(/\uFEFF[0-9]/g, function(e) {
|
|
return l[e];
|
|
})),
|
|
t || (e = e.replace(/\\([\'\";:])/g, "$1")),
|
|
e
|
|
);
|
|
},
|
|
S = function(e) {
|
|
return String.fromCharCode(parseInt(e.slice(1), 16));
|
|
},
|
|
k = function(e) {
|
|
return e.replace(/\\[0-9a-f]+/gi, S);
|
|
},
|
|
T = function(t, n, r, o, i, a) {
|
|
if ((i = i || a))
|
|
return "'" + (i = E(i)).replace(/\'/g, "\\'") + "'";
|
|
if (((n = E(n || r || o)), !e.allow_script_urls)) {
|
|
var s = n.replace(/[\s\r\n]+/g, "");
|
|
if (/(java|vb)script:/i.test(s)) return "";
|
|
if (!e.allow_svg_data_urls && /^data:image\/svg/i.test(s))
|
|
return "";
|
|
}
|
|
return (
|
|
b && (n = b.call(C, n, "style")),
|
|
"url('" + n.replace(/\'/g, "\\'") + "')"
|
|
);
|
|
};
|
|
if (t) {
|
|
for (
|
|
t = (t = t.replace(/[\u0000-\u001F]/g, ""))
|
|
.replace(/\\[\"\';:\uFEFF]/g, N)
|
|
.replace(/\"[^\"]+\"|\'[^\']+\'/g, function(e) {
|
|
return e.replace(/[;:]/g, N);
|
|
});
|
|
(r = u.exec(t));
|
|
|
|
)
|
|
if (
|
|
((u.lastIndex = r.index + r[0].length),
|
|
(o = r[1].replace(c, "").toLowerCase()),
|
|
(i = r[2].replace(c, "")),
|
|
o && i)
|
|
) {
|
|
if (
|
|
((o = k(o)),
|
|
(i = k(i)),
|
|
-1 !== o.indexOf(f) || -1 !== o.indexOf('"'))
|
|
)
|
|
continue;
|
|
if (
|
|
!e.allow_script_urls &&
|
|
("behavior" === o || /expression\s*\(|\/\*|\*\//.test(i))
|
|
)
|
|
continue;
|
|
"font-weight" === o && "700" === i
|
|
? (i = "bold")
|
|
: ("color" !== o && "background-color" !== o) ||
|
|
(i = i.toLowerCase()),
|
|
(i = (i = i.replace(a, d)).replace(s, T)),
|
|
(y[o] = m ? E(i, !0) : i);
|
|
}
|
|
x("border", "", !0),
|
|
x("border", "-width"),
|
|
x("border", "-color"),
|
|
x("border", "-style"),
|
|
x("padding", ""),
|
|
x("margin", ""),
|
|
(p = "border"),
|
|
(h = "border-style"),
|
|
(v = "border-color"),
|
|
w((g = "border-width")) &&
|
|
w(h) &&
|
|
w(v) &&
|
|
((y[p] = y[g] + " " + y[h] + " " + y[v]),
|
|
delete y[g],
|
|
delete y[h],
|
|
delete y[v]),
|
|
"medium none" === y.border && delete y.border,
|
|
"none" === y["border-image"] && delete y["border-image"];
|
|
}
|
|
return y;
|
|
},
|
|
serialize: function(e, t) {
|
|
var n,
|
|
r,
|
|
a,
|
|
s,
|
|
u,
|
|
c = "",
|
|
l = function(t) {
|
|
var n, r, i, a;
|
|
if ((n = o[t]))
|
|
for (r = 0, i = n.length; r < i; r++)
|
|
(t = n[r]),
|
|
(a = e[t]) &&
|
|
(c += (c.length > 0 ? " " : "") + t + ": " + a + ";");
|
|
};
|
|
if (t && o) l("*"), l(t);
|
|
else
|
|
for (n in e)
|
|
!(r = e[n]) ||
|
|
(i &&
|
|
((a = n),
|
|
(s = t),
|
|
(u = void 0),
|
|
((u = i["*"]) && u[a]) || ((u = i[s]) && u[a]))) ||
|
|
(c += (c.length > 0 ? " " : "") + n + ": " + r + ";");
|
|
return c;
|
|
}
|
|
};
|
|
},
|
|
Uo = Ot.each,
|
|
Vo = Ot.is,
|
|
Ho = Ot.grep,
|
|
qo = me.ie,
|
|
jo = /^([a-z0-9],?)+$/i,
|
|
$o = /^[ \t\r\n]*$/,
|
|
Wo = function(e, t) {
|
|
var n = t.attr("style");
|
|
(n = e.serializeStyle(e.parseStyle(n), t[0].nodeName)) || (n = null),
|
|
t.attr("data-mce-style", n);
|
|
},
|
|
Ko = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = 0;
|
|
if (e)
|
|
for (n = e.nodeType, e = e.previousSibling; e; e = e.previousSibling)
|
|
(r = e.nodeType),
|
|
(!t || 3 !== r || (r !== n && e.nodeValue.length)) &&
|
|
(o++, (n = r));
|
|
return o;
|
|
},
|
|
Xo = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = this;
|
|
(u.doc = e),
|
|
(u.win = window),
|
|
(u.files = {}),
|
|
(u.counter = 0),
|
|
(u.stdMode = !qo || e.documentMode >= 8),
|
|
(u.boxModel = !qo || "CSS1Compat" === e.compatMode || u.stdMode),
|
|
(u.styleSheetLoader = (function(e, t) {
|
|
var n,
|
|
r = 0,
|
|
o = {};
|
|
n = (t = t || {}).maxLoadTime || 5e3;
|
|
var i = function(t) {
|
|
e.getElementsByTagName("head")[0].appendChild(t);
|
|
},
|
|
a = function(t, a, s) {
|
|
var u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = function() {
|
|
for (var e = f.passed, t = e.length; t--; ) e[t]();
|
|
(f.status = 2), (f.passed = []), (f.failed = []);
|
|
},
|
|
m = function() {
|
|
for (var e = f.failed, t = e.length; t--; ) e[t]();
|
|
(f.status = 3), (f.passed = []), (f.failed = []);
|
|
},
|
|
p = function(e, t) {
|
|
e() ||
|
|
(new Date().getTime() - l < n ? ye.setTimeout(t) : m());
|
|
},
|
|
g = function() {
|
|
p(function() {
|
|
for (var t, n, r = e.styleSheets, o = r.length; o--; )
|
|
if (
|
|
(n = (t = r[o]).ownerNode
|
|
? t.ownerNode
|
|
: t.owningElement) &&
|
|
n.id === u.id
|
|
)
|
|
return d(), !0;
|
|
}, g);
|
|
},
|
|
h = function() {
|
|
p(function() {
|
|
try {
|
|
var e = c.sheet.cssRules;
|
|
return d(), !!e;
|
|
} catch (t) {}
|
|
}, h);
|
|
};
|
|
if (
|
|
((t = Ot._addCacheSuffix(t)),
|
|
o[t]
|
|
? (f = o[t])
|
|
: ((f = { passed: [], failed: [] }), (o[t] = f)),
|
|
a && f.passed.push(a),
|
|
s && f.failed.push(s),
|
|
1 !== f.status)
|
|
)
|
|
if (2 !== f.status)
|
|
if (3 !== f.status) {
|
|
if (
|
|
((f.status = 1),
|
|
((u = e.createElement("link")).rel = "stylesheet"),
|
|
(u.type = "text/css"),
|
|
(u.id = "u" + r++),
|
|
(u.async = !1),
|
|
(u.defer = !1),
|
|
(l = new Date().getTime()),
|
|
"onload" in u &&
|
|
!(
|
|
(v = navigator.userAgent.match(/WebKit\/(\d*)/)) &&
|
|
parseInt(v[1], 10) < 536
|
|
))
|
|
)
|
|
(u.onload = g), (u.onerror = m);
|
|
else {
|
|
if (navigator.userAgent.indexOf("Firefox") > 0)
|
|
return (
|
|
((c = e.createElement("style")).textContent =
|
|
'@import "' + t + '"'),
|
|
h(),
|
|
void i(c)
|
|
);
|
|
g();
|
|
}
|
|
var v;
|
|
i(u), (u.href = t);
|
|
} else m();
|
|
else d();
|
|
},
|
|
s = function(e) {
|
|
return Xr.nu(function(t) {
|
|
a(
|
|
e,
|
|
y.compose(
|
|
t,
|
|
y.constant(eo.value(e))
|
|
),
|
|
y.compose(
|
|
t,
|
|
y.constant(eo.error(e))
|
|
)
|
|
);
|
|
});
|
|
},
|
|
u = function(e) {
|
|
return e.fold(y.identity, y.identity);
|
|
};
|
|
return {
|
|
load: a,
|
|
loadAll: function(e, t, n) {
|
|
Jr(M.map(e, s)).get(function(e) {
|
|
var r = M.partition(e, function(e) {
|
|
return e.isValue();
|
|
});
|
|
r.fail.length > 0 ? n(r.fail.map(u)) : t(r.pass.map(u));
|
|
});
|
|
}
|
|
};
|
|
})(e)),
|
|
(u.boundEvents = []),
|
|
(u.settings = t = t || {}),
|
|
(u.schema = t.schema ? t.schema : Fo({})),
|
|
(u.styles = zo(
|
|
{
|
|
url_converter: t.url_converter,
|
|
url_converter_scope: t.url_converter_scope
|
|
},
|
|
t.schema
|
|
)),
|
|
u.fixDoc(e),
|
|
(u.events = t.ownEvents ? new Te(t.proxy) : Te.Event),
|
|
(u.attrHooks = ((r = u),
|
|
(a = {}),
|
|
(s = (o = t).keep_values),
|
|
(i = {
|
|
set: function(e, t, n) {
|
|
o.url_converter &&
|
|
(t = o.url_converter.call(
|
|
o.url_converter_scope || r,
|
|
t,
|
|
n,
|
|
e[0]
|
|
)),
|
|
e.attr("data-mce-" + n, t).attr(n, t);
|
|
},
|
|
get: function(e, t) {
|
|
return e.attr("data-mce-" + t) || e.attr(t);
|
|
}
|
|
}),
|
|
(a = {
|
|
style: {
|
|
set: function(e, t) {
|
|
null === t || "object" != typeof t
|
|
? (s && e.attr("data-mce-style", t), e.attr("style", t))
|
|
: e.css(t);
|
|
},
|
|
get: function(e) {
|
|
var t = e.attr("data-mce-style") || e.attr("style");
|
|
return (t = r.serializeStyle(r.parseStyle(t), e[0].nodeName));
|
|
}
|
|
}
|
|
}),
|
|
s && (a.href = a.src = i),
|
|
a)),
|
|
(n = u.schema.getBlockElements()),
|
|
(u.$ = Qt.overrideDefaults(function() {
|
|
return { context: e, element: u.getRoot() };
|
|
})),
|
|
(u.isBlock = function(e) {
|
|
if (!e) return !1;
|
|
var t = e.nodeType;
|
|
return t ? !(1 !== t || !n[e.nodeName]) : !!n[e];
|
|
});
|
|
};
|
|
(Xo.prototype = {
|
|
$$: function(e) {
|
|
return "string" == typeof e && (e = this.get(e)), this.$(e);
|
|
},
|
|
root: null,
|
|
fixDoc: function(e) {},
|
|
clone: function(e, t) {
|
|
var n,
|
|
r,
|
|
o = this;
|
|
return !qo || 1 !== e.nodeType || t
|
|
? e.cloneNode(t)
|
|
: ((r = o.doc),
|
|
t
|
|
? n.firstChild
|
|
: ((n = r.createElement(e.nodeName)),
|
|
Uo(o.getAttribs(e), function(t) {
|
|
o.setAttrib(n, t.nodeName, o.getAttrib(e, t.nodeName));
|
|
}),
|
|
n));
|
|
},
|
|
getRoot: function() {
|
|
return this.settings.root_element || this.doc.body;
|
|
},
|
|
getViewPort: function(e) {
|
|
var t, n;
|
|
return (
|
|
(t = (e = e || this.win).document),
|
|
(n = this.boxModel ? t.documentElement : t.body),
|
|
{
|
|
x: e.pageXOffset || n.scrollLeft,
|
|
y: e.pageYOffset || n.scrollTop,
|
|
w: e.innerWidth || n.clientWidth,
|
|
h: e.innerHeight || n.clientHeight
|
|
}
|
|
);
|
|
},
|
|
getRect: function(e) {
|
|
var t, n;
|
|
return (
|
|
(e = this.get(e)),
|
|
(t = this.getPos(e)),
|
|
(n = this.getSize(e)),
|
|
{ x: t.x, y: t.y, w: n.w, h: n.h }
|
|
);
|
|
},
|
|
getSize: function(e) {
|
|
var t, n;
|
|
return (
|
|
(e = this.get(e)),
|
|
(t = this.getStyle(e, "width")),
|
|
(n = this.getStyle(e, "height")),
|
|
-1 === t.indexOf("px") && (t = 0),
|
|
-1 === n.indexOf("px") && (n = 0),
|
|
{
|
|
w: parseInt(t, 10) || e.offsetWidth || e.clientWidth,
|
|
h: parseInt(n, 10) || e.offsetHeight || e.clientHeight
|
|
}
|
|
);
|
|
},
|
|
getParent: function(e, t, n) {
|
|
return this.getParents(e, t, n, !1);
|
|
},
|
|
getParents: function(e, t, n, r) {
|
|
var o,
|
|
i = this,
|
|
a = [];
|
|
for (
|
|
e = i.get(e),
|
|
r = r === undefined,
|
|
n =
|
|
n ||
|
|
("BODY" !== i.getRoot().nodeName ? i.getRoot().parentNode : null),
|
|
Vo(t, "string") &&
|
|
((o = t),
|
|
(t =
|
|
"*" === t
|
|
? function(e) {
|
|
return 1 === e.nodeType;
|
|
}
|
|
: function(e) {
|
|
return i.is(e, o);
|
|
}));
|
|
e && e !== n && e.nodeType && 9 !== e.nodeType;
|
|
|
|
) {
|
|
if (!t || t(e)) {
|
|
if (!r) return e;
|
|
a.push(e);
|
|
}
|
|
e = e.parentNode;
|
|
}
|
|
return r ? a : null;
|
|
},
|
|
get: function(e) {
|
|
var t;
|
|
return e &&
|
|
this.doc &&
|
|
"string" == typeof e &&
|
|
((t = e), (e = this.doc.getElementById(e)) && e.id !== t)
|
|
? this.doc.getElementsByName(t)[1]
|
|
: e;
|
|
},
|
|
getNext: function(e, t) {
|
|
return this._findSib(e, t, "nextSibling");
|
|
},
|
|
getPrev: function(e, t) {
|
|
return this._findSib(e, t, "previousSibling");
|
|
},
|
|
select: function(e, t) {
|
|
return lt(e, this.get(t) || this.settings.root_element || this.doc, []);
|
|
},
|
|
is: function(e, t) {
|
|
var n;
|
|
if (!e) return !1;
|
|
if (e.length === undefined) {
|
|
if ("*" === t) return 1 === e.nodeType;
|
|
if (jo.test(t)) {
|
|
for (
|
|
t = t.toLowerCase().split(/,/),
|
|
e = e.nodeName.toLowerCase(),
|
|
n = t.length - 1;
|
|
n >= 0;
|
|
n--
|
|
)
|
|
if (t[n] === e) return !0;
|
|
return !1;
|
|
}
|
|
}
|
|
if (e.nodeType && 1 !== e.nodeType) return !1;
|
|
var r = e.nodeType ? [e] : e;
|
|
return lt(t, r[0].ownerDocument || r[0], null, r).length > 0;
|
|
},
|
|
add: function(e, t, n, r, o) {
|
|
var i = this;
|
|
return this.run(e, function(e) {
|
|
var a;
|
|
return (
|
|
(a = Vo(t, "string") ? i.doc.createElement(t) : t),
|
|
i.setAttribs(a, n),
|
|
r && (r.nodeType ? a.appendChild(r) : i.setHTML(a, r)),
|
|
o ? a : e.appendChild(a)
|
|
);
|
|
});
|
|
},
|
|
create: function(e, t, n) {
|
|
return this.add(this.doc.createElement(e), e, t, n, 1);
|
|
},
|
|
createHTML: function(e, t, n) {
|
|
var r,
|
|
o = "";
|
|
for (r in ((o += "<" + e), t))
|
|
t.hasOwnProperty(r) &&
|
|
null !== t[r] &&
|
|
"undefined" != typeof t[r] &&
|
|
(o += " " + r + '="' + this.encode(t[r]) + '"');
|
|
return void 0 !== n ? o + ">" + n + "</" + e + ">" : o + " />";
|
|
},
|
|
createFragment: function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o = this.doc;
|
|
for (
|
|
r = o.createElement("div"),
|
|
t = o.createDocumentFragment(),
|
|
e && (r.innerHTML = e);
|
|
(n = r.firstChild);
|
|
|
|
)
|
|
t.appendChild(n);
|
|
return t;
|
|
},
|
|
remove: function(e, t) {
|
|
return (
|
|
(e = this.$$(e)),
|
|
t
|
|
? e
|
|
.each(function() {
|
|
for (var e; (e = this.firstChild); )
|
|
3 === e.nodeType && 0 === e.data.length
|
|
? this.removeChild(e)
|
|
: this.parentNode.insertBefore(e, this);
|
|
})
|
|
.remove()
|
|
: e.remove(),
|
|
e.length > 1 ? e.toArray() : e[0]
|
|
);
|
|
},
|
|
setStyle: function(e, t, n) {
|
|
(e = this.$$(e).css(t, n)), this.settings.update_styles && Wo(this, e);
|
|
},
|
|
getStyle: function(e, t, n) {
|
|
return (
|
|
(e = this.$$(e)),
|
|
n
|
|
? e.css(t)
|
|
: ("float" ===
|
|
(t = t.replace(/-(\D)/g, function(e, t) {
|
|
return t.toUpperCase();
|
|
})) && (t = me.ie && me.ie < 12 ? "styleFloat" : "cssFloat"),
|
|
e[0] && e[0].style ? e[0].style[t] : undefined)
|
|
);
|
|
},
|
|
setStyles: function(e, t) {
|
|
(e = this.$$(e).css(t)), this.settings.update_styles && Wo(this, e);
|
|
},
|
|
removeAllAttribs: function(e) {
|
|
return this.run(e, function(e) {
|
|
var t,
|
|
n = e.attributes;
|
|
for (t = n.length - 1; t >= 0; t--) e.removeAttributeNode(n.item(t));
|
|
});
|
|
},
|
|
setAttrib: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i = this.settings;
|
|
"" === n && (n = null),
|
|
(r = (e = this.$$(e)).attr(t)),
|
|
e.length &&
|
|
((o = this.attrHooks[t]) && o.set ? o.set(e, n, t) : e.attr(t, n),
|
|
r !== n &&
|
|
i.onSetAttrib &&
|
|
i.onSetAttrib({ attrElm: e, attrName: t, attrValue: n }));
|
|
},
|
|
setAttribs: function(e, t) {
|
|
var n = this;
|
|
n.$$(e).each(function(e, r) {
|
|
Uo(t, function(e, t) {
|
|
n.setAttrib(r, t, e);
|
|
});
|
|
});
|
|
},
|
|
getAttrib: function(e, t, n) {
|
|
var r, o;
|
|
return (
|
|
(e = this.$$(e)).length &&
|
|
(o = (r = this.attrHooks[t]) && r.get ? r.get(e, t) : e.attr(t)),
|
|
void 0 === o && (o = n || ""),
|
|
o
|
|
);
|
|
},
|
|
getPos: function(e, t) {
|
|
return qr(this.doc.body, this.get(e), t);
|
|
},
|
|
parseStyle: function(e) {
|
|
return this.styles.parse(e);
|
|
},
|
|
serializeStyle: function(e, t) {
|
|
return this.styles.serialize(e, t);
|
|
},
|
|
addStyle: function(e) {
|
|
var t,
|
|
n,
|
|
r = this.doc;
|
|
if (this !== Xo.DOM && r === document) {
|
|
var o = Xo.DOM.addedStyles;
|
|
if ((o = o || [])[e]) return;
|
|
(o[e] = !0), (Xo.DOM.addedStyles = o);
|
|
}
|
|
(n = r.getElementById("mceDefaultStyles")) ||
|
|
(((n = r.createElement("style")).id = "mceDefaultStyles"),
|
|
(n.type = "text/css"),
|
|
(t = r.getElementsByTagName("head")[0]).firstChild
|
|
? t.insertBefore(n, t.firstChild)
|
|
: t.appendChild(n)),
|
|
n.styleSheet
|
|
? (n.styleSheet.cssText += e)
|
|
: n.appendChild(r.createTextNode(e));
|
|
},
|
|
loadCSS: function(e) {
|
|
var t,
|
|
n = this,
|
|
r = n.doc;
|
|
n === Xo.DOM || r !== document
|
|
? (e || (e = ""),
|
|
(t = r.getElementsByTagName("head")[0]),
|
|
Uo(e.split(","), function(e) {
|
|
var o;
|
|
(e = Ot._addCacheSuffix(e)),
|
|
n.files[e] ||
|
|
((n.files[e] = !0),
|
|
(o = n.create("link", { rel: "stylesheet", href: e })),
|
|
qo &&
|
|
r.documentMode &&
|
|
r.recalc &&
|
|
(o.onload = function() {
|
|
r.recalc && r.recalc(), (o.onload = null);
|
|
}),
|
|
t.appendChild(o));
|
|
}))
|
|
: Xo.DOM.loadCSS(e);
|
|
},
|
|
addClass: function(e, t) {
|
|
this.$$(e).addClass(t);
|
|
},
|
|
removeClass: function(e, t) {
|
|
this.toggleClass(e, t, !1);
|
|
},
|
|
hasClass: function(e, t) {
|
|
return this.$$(e).hasClass(t);
|
|
},
|
|
toggleClass: function(e, t, n) {
|
|
this.$$(e)
|
|
.toggleClass(t, n)
|
|
.each(function() {
|
|
"" === this.className && Qt(this).attr("class", null);
|
|
});
|
|
},
|
|
show: function(e) {
|
|
this.$$(e).show();
|
|
},
|
|
hide: function(e) {
|
|
this.$$(e).hide();
|
|
},
|
|
isHidden: function(e) {
|
|
return "none" === this.$$(e).css("display");
|
|
},
|
|
uniqueId: function(e) {
|
|
return (e || "mce_") + this.counter++;
|
|
},
|
|
setHTML: function(e, t) {
|
|
(e = this.$$(e)),
|
|
qo
|
|
? e.each(function(e, n) {
|
|
if (!1 !== n.canHaveHTML) {
|
|
for (; n.firstChild; ) n.removeChild(n.firstChild);
|
|
try {
|
|
(n.innerHTML = "<br>" + t), n.removeChild(n.firstChild);
|
|
} catch (r) {
|
|
Qt("<div></div>")
|
|
.html("<br>" + t)
|
|
.contents()
|
|
.slice(1)
|
|
.appendTo(n);
|
|
}
|
|
return t;
|
|
}
|
|
})
|
|
: e.html(t);
|
|
},
|
|
getOuterHTML: function(e) {
|
|
return 1 === (e = this.get(e)).nodeType && "outerHTML" in e
|
|
? e.outerHTML
|
|
: Qt("<div></div>")
|
|
.append(Qt(e).clone())
|
|
.html();
|
|
},
|
|
setOuterHTML: function(e, t) {
|
|
var n = this;
|
|
n.$$(e).each(function() {
|
|
try {
|
|
if ("outerHTML" in this) return void (this.outerHTML = t);
|
|
} catch (e) {}
|
|
n.remove(Qt(this).html(t), !0);
|
|
});
|
|
},
|
|
decode: Ao.decode,
|
|
encode: Ao.encodeAllRaw,
|
|
insertAfter: function(e, t) {
|
|
return (
|
|
(t = this.get(t)),
|
|
this.run(e, function(e) {
|
|
var n, r;
|
|
return (
|
|
(n = t.parentNode),
|
|
(r = t.nextSibling) ? n.insertBefore(e, r) : n.appendChild(e),
|
|
e
|
|
);
|
|
})
|
|
);
|
|
},
|
|
replace: function(e, t, n) {
|
|
return this.run(t, function(t) {
|
|
return (
|
|
Vo(t, "array") && (e = e.cloneNode(!0)),
|
|
n &&
|
|
Uo(Ho(t.childNodes), function(t) {
|
|
e.appendChild(t);
|
|
}),
|
|
t.parentNode.replaceChild(e, t)
|
|
);
|
|
});
|
|
},
|
|
rename: function(e, t) {
|
|
var n,
|
|
r = this;
|
|
return (
|
|
e.nodeName !== t.toUpperCase() &&
|
|
((n = r.create(t)),
|
|
Uo(r.getAttribs(e), function(t) {
|
|
r.setAttrib(n, t.nodeName, r.getAttrib(e, t.nodeName));
|
|
}),
|
|
r.replace(n, e, 1)),
|
|
n || e
|
|
);
|
|
},
|
|
findCommonAncestor: function(e, t) {
|
|
for (var n, r = e; r; ) {
|
|
for (n = t; n && r !== n; ) n = n.parentNode;
|
|
if (r === n) break;
|
|
r = r.parentNode;
|
|
}
|
|
return !r && e.ownerDocument ? e.ownerDocument.documentElement : r;
|
|
},
|
|
toHex: function(e) {
|
|
return this.styles.toHex(Ot.trim(e));
|
|
},
|
|
run: function(e, t, n) {
|
|
var r,
|
|
o = this;
|
|
return (
|
|
"string" == typeof e && (e = o.get(e)),
|
|
!!e &&
|
|
((n = n || this),
|
|
e.nodeType || (!e.length && 0 !== e.length)
|
|
? t.call(n, e)
|
|
: ((r = []),
|
|
Uo(e, function(e, i) {
|
|
e &&
|
|
("string" == typeof e && (e = o.get(e)),
|
|
r.push(t.call(n, e, i)));
|
|
}),
|
|
r))
|
|
);
|
|
},
|
|
getAttribs: function(e) {
|
|
var t;
|
|
return (e = this.get(e))
|
|
? qo
|
|
? ((t = []),
|
|
"OBJECT" === e.nodeName
|
|
? e.attributes
|
|
: ("OPTION" === e.nodeName &&
|
|
this.getAttrib(e, "selected") &&
|
|
t.push({ specified: 1, nodeName: "selected" }),
|
|
e
|
|
.cloneNode(!1)
|
|
.outerHTML.replace(
|
|
/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,
|
|
""
|
|
)
|
|
.replace(/[\w:\-]+/gi, function(e) {
|
|
t.push({ specified: 1, nodeName: e });
|
|
}),
|
|
t))
|
|
: e.attributes
|
|
: [];
|
|
},
|
|
isEmpty: function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = 0;
|
|
if ((e = e.firstChild)) {
|
|
(a = new to(e, e.parentNode)),
|
|
(t = t || (this.schema ? this.schema.getNonEmptyElements() : null)),
|
|
(i = this.schema ? this.schema.getWhiteSpaceElements() : {});
|
|
do {
|
|
if (1 === (o = e.nodeType)) {
|
|
var c = e.getAttribute("data-mce-bogus");
|
|
if (c) {
|
|
e = a.next("all" === c);
|
|
continue;
|
|
}
|
|
if (((s = e.nodeName.toLowerCase()), t && t[s])) {
|
|
if ("br" === s) {
|
|
u++, (e = a.next());
|
|
continue;
|
|
}
|
|
return !1;
|
|
}
|
|
for (n = (r = this.getAttribs(e)).length; n--; )
|
|
if ("name" === (s = r[n].nodeName) || "data-mce-bookmark" === s)
|
|
return !1;
|
|
}
|
|
if (8 === o) return !1;
|
|
if (3 === o && !$o.test(e.nodeValue)) return !1;
|
|
if (
|
|
3 === o &&
|
|
e.parentNode &&
|
|
i[e.parentNode.nodeName] &&
|
|
$o.test(e.nodeValue)
|
|
)
|
|
return !1;
|
|
e = a.next();
|
|
} while (e);
|
|
}
|
|
return u <= 1;
|
|
},
|
|
createRng: function() {
|
|
return this.doc.createRange();
|
|
},
|
|
nodeIndex: Ko,
|
|
split: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a = this.createRng();
|
|
if (e && t)
|
|
return (
|
|
a.setStart(e.parentNode, this.nodeIndex(e)),
|
|
a.setEnd(t.parentNode, this.nodeIndex(t)),
|
|
(r = a.extractContents()),
|
|
(a = this.createRng()).setStart(t.parentNode, this.nodeIndex(t) + 1),
|
|
a.setEnd(e.parentNode, this.nodeIndex(e) + 1),
|
|
(o = a.extractContents()),
|
|
(i = e.parentNode).insertBefore(Co.trimNode(this, r), e),
|
|
n ? i.insertBefore(n, e) : i.insertBefore(t, e),
|
|
i.insertBefore(Co.trimNode(this, o), e),
|
|
this.remove(e),
|
|
n || t
|
|
);
|
|
},
|
|
bind: function(e, t, n, r) {
|
|
if (Ot.isArray(e)) {
|
|
for (var o = e.length; o--; ) e[o] = this.bind(e[o], t, n, r);
|
|
return e;
|
|
}
|
|
return (
|
|
!this.settings.collect ||
|
|
(e !== this.doc && e !== this.win) ||
|
|
this.boundEvents.push([e, t, n, r]),
|
|
this.events.bind(e, t, n, r || this)
|
|
);
|
|
},
|
|
unbind: function(e, t, n) {
|
|
var r;
|
|
if (Ot.isArray(e)) {
|
|
for (r = e.length; r--; ) e[r] = this.unbind(e[r], t, n);
|
|
return e;
|
|
}
|
|
if (this.boundEvents && (e === this.doc || e === this.win))
|
|
for (r = this.boundEvents.length; r--; ) {
|
|
var o = this.boundEvents[r];
|
|
e !== o[0] ||
|
|
(t && t !== o[1]) ||
|
|
(n && n !== o[2]) ||
|
|
this.events.unbind(o[0], o[1], o[2]);
|
|
}
|
|
return this.events.unbind(e, t, n);
|
|
},
|
|
fire: function(e, t, n) {
|
|
return this.events.fire(e, t, n);
|
|
},
|
|
getContentEditable: function(e) {
|
|
var t;
|
|
return e && 1 === e.nodeType
|
|
? (t = e.getAttribute("data-mce-contenteditable")) && "inherit" !== t
|
|
? t
|
|
: "inherit" !== e.contentEditable
|
|
? e.contentEditable
|
|
: null
|
|
: null;
|
|
},
|
|
getContentEditableParent: function(e) {
|
|
for (
|
|
var t = this.getRoot(), n = null;
|
|
e && e !== t && null === (n = this.getContentEditable(e));
|
|
e = e.parentNode
|
|
);
|
|
return n;
|
|
},
|
|
destroy: function() {
|
|
if (this.boundEvents) {
|
|
for (var e = this.boundEvents.length; e--; ) {
|
|
var t = this.boundEvents[e];
|
|
this.events.unbind(t[0], t[1], t[2]);
|
|
}
|
|
this.boundEvents = null;
|
|
}
|
|
lt.setDocument && lt.setDocument(),
|
|
(this.win = this.doc = this.root = this.events = this.frag = null);
|
|
},
|
|
isChildOf: function(e, t) {
|
|
for (; e; ) {
|
|
if (t === e) return !0;
|
|
e = e.parentNode;
|
|
}
|
|
return !1;
|
|
},
|
|
dumpRng: function(e) {
|
|
return (
|
|
"startContainer: " +
|
|
e.startContainer.nodeName +
|
|
", startOffset: " +
|
|
e.startOffset +
|
|
", endContainer: " +
|
|
e.endContainer.nodeName +
|
|
", endOffset: " +
|
|
e.endOffset
|
|
);
|
|
},
|
|
_findSib: function(e, t, n) {
|
|
var r = this,
|
|
o = t;
|
|
if (e)
|
|
for (
|
|
"string" == typeof o &&
|
|
(o = function(e) {
|
|
return r.is(e, t);
|
|
}),
|
|
e = e[n];
|
|
e;
|
|
e = e[n]
|
|
)
|
|
if (o(e)) return e;
|
|
return null;
|
|
}
|
|
}),
|
|
(Xo.DOM = new Xo(document)),
|
|
(Xo.nodeIndex = Ko);
|
|
var Yo = Xo.DOM,
|
|
Go = Ot.each,
|
|
Jo = Ot.grep,
|
|
Qo = function(e) {
|
|
return "function" == typeof e;
|
|
},
|
|
Zo = function() {
|
|
var e = {},
|
|
t = [],
|
|
n = {},
|
|
r = [],
|
|
o = 0;
|
|
(this.isDone = function(t) {
|
|
return 2 === e[t];
|
|
}),
|
|
(this.markDone = function(t) {
|
|
e[t] = 2;
|
|
}),
|
|
(this.add = this.load = function(r, o, i, a) {
|
|
e[r] === undefined && (t.push(r), (e[r] = 0)),
|
|
o &&
|
|
(n[r] || (n[r] = []),
|
|
n[r].push({ success: o, failure: a, scope: i || this }));
|
|
}),
|
|
(this.remove = function(t) {
|
|
delete e[t], delete n[t];
|
|
}),
|
|
(this.loadQueue = function(e, n, r) {
|
|
this.loadScripts(t, e, n, r);
|
|
}),
|
|
(this.loadScripts = function(t, i, a, s) {
|
|
var u,
|
|
c = [],
|
|
l = function(e, t) {
|
|
Go(n[t], function(t) {
|
|
Qo(t[e]) && t[e].call(t.scope);
|
|
}),
|
|
(n[t] = undefined);
|
|
};
|
|
r.push({ success: i, failure: s, scope: a || this }),
|
|
(u = function() {
|
|
var n = Jo(t);
|
|
if (
|
|
((t.length = 0),
|
|
Go(n, function(t) {
|
|
var n, r, i, a, s, f, d;
|
|
2 !== e[t]
|
|
? 3 !== e[t]
|
|
? 1 !== e[t] &&
|
|
((e[t] = 1),
|
|
o++,
|
|
(n = t),
|
|
(r = function() {
|
|
(e[t] = 2), o--, l("success", t), u();
|
|
}),
|
|
(i = function() {
|
|
(e[t] = 3), o--, c.push(t), l("failure", t), u();
|
|
}),
|
|
(d = function() {
|
|
f.remove(s),
|
|
a && (a.onreadystatechange = a.onload = a = null),
|
|
r();
|
|
}),
|
|
(s = (f = Yo).uniqueId()),
|
|
((a = document.createElement("script")).id = s),
|
|
(a.type = "text/javascript"),
|
|
(a.src = Ot._addCacheSuffix(n)),
|
|
"onreadystatechange" in a
|
|
? (a.onreadystatechange = function() {
|
|
/loaded|complete/.test(a.readyState) && d();
|
|
})
|
|
: (a.onload = d),
|
|
(a.onerror = function() {
|
|
Qo(i)
|
|
? i()
|
|
: "undefined" != typeof console &&
|
|
console.log &&
|
|
console.log("Failed to load script: " + n);
|
|
}),
|
|
(
|
|
document.getElementsByTagName("head")[0] ||
|
|
document.body
|
|
).appendChild(a))
|
|
: l("failure", t)
|
|
: l("success", t);
|
|
}),
|
|
!o)
|
|
) {
|
|
var i = r.slice(0);
|
|
(r.length = 0),
|
|
Go(i, function(e) {
|
|
0 === c.length
|
|
? Qo(e.success) && e.success.call(e.scope)
|
|
: Qo(e.failure) && e.failure.call(e.scope, c);
|
|
});
|
|
}
|
|
})();
|
|
});
|
|
};
|
|
Zo.ScriptLoader = new Zo();
|
|
var ei = Ot.each,
|
|
ti = function() {
|
|
(this.items = []),
|
|
(this.urls = {}),
|
|
(this.lookup = {}),
|
|
(this._listeners = []);
|
|
};
|
|
(ti.prototype = {
|
|
get: function(e) {
|
|
return this.lookup[e] ? this.lookup[e].instance : undefined;
|
|
},
|
|
dependencies: function(e) {
|
|
var t;
|
|
return this.lookup[e] && (t = this.lookup[e].dependencies), t || [];
|
|
},
|
|
requireLangPack: function(e, t) {
|
|
var n = ti.language;
|
|
if (n && !1 !== ti.languageLoad) {
|
|
if (t)
|
|
if (-1 !== (t = "," + t + ",").indexOf("," + n.substr(0, 2) + ","))
|
|
n = n.substr(0, 2);
|
|
else if (-1 === t.indexOf("," + n + ",")) return;
|
|
Zo.ScriptLoader.add(this.urls[e] + "/langs/" + n + ".js");
|
|
}
|
|
},
|
|
add: function(e, t, n) {
|
|
this.items.push(t), (this.lookup[e] = { instance: t, dependencies: n });
|
|
var r = M.partition(this._listeners, function(t) {
|
|
return t.name === e;
|
|
});
|
|
return (
|
|
(this._listeners = r.fail),
|
|
ei(r.pass, function(e) {
|
|
e.callback();
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
remove: function(e) {
|
|
delete this.urls[e], delete this.lookup[e];
|
|
},
|
|
createUrl: function(e, t) {
|
|
return "object" == typeof t
|
|
? t
|
|
: { prefix: e.prefix, resource: t, suffix: e.suffix };
|
|
},
|
|
addComponents: function(e, t) {
|
|
var n = this.urls[e];
|
|
ei(t, function(e) {
|
|
Zo.ScriptLoader.add(n + "/" + e);
|
|
});
|
|
},
|
|
load: function(e, t, n, r, o) {
|
|
var i = this,
|
|
a = t,
|
|
s = function() {
|
|
var o = i.dependencies(e);
|
|
ei(o, function(e) {
|
|
var n = i.createUrl(t, e);
|
|
i.load(n.resource, n, undefined, undefined);
|
|
}),
|
|
n && (r ? n.call(r) : n.call(Zo));
|
|
};
|
|
i.urls[e] ||
|
|
("object" == typeof t && (a = t.prefix + t.resource + t.suffix),
|
|
0 !== a.indexOf("/") &&
|
|
-1 === a.indexOf("://") &&
|
|
(a = ti.baseURL + "/" + a),
|
|
(i.urls[e] = a.substring(0, a.lastIndexOf("/"))),
|
|
i.lookup[e] ? s() : Zo.ScriptLoader.add(a, s, r, o));
|
|
},
|
|
waitFor: function(e, t) {
|
|
this.lookup.hasOwnProperty(e)
|
|
? t()
|
|
: this._listeners.push({ name: e, callback: t });
|
|
}
|
|
}),
|
|
(ti.PluginManager = new ti()),
|
|
(ti.ThemeManager = new ti());
|
|
var ni = "\ufeff",
|
|
ri = function(e) {
|
|
return e === ni;
|
|
},
|
|
oi = ni,
|
|
ii = function(e) {
|
|
return e.replace(new RegExp(ni, "g"), "");
|
|
},
|
|
ai = vo.isElement,
|
|
si = vo.isText,
|
|
ui = function(e) {
|
|
return (
|
|
si(e) && (e = e.parentNode), ai(e) && e.hasAttribute("data-mce-caret")
|
|
);
|
|
},
|
|
ci = function(e) {
|
|
return si(e) && ri(e.data);
|
|
},
|
|
li = function(e) {
|
|
return ui(e) || ci(e);
|
|
},
|
|
fi = function(e) {
|
|
return si(e) && e.data[0] === oi;
|
|
},
|
|
di = function(e) {
|
|
return si(e) && e.data[e.data.length - 1] === oi;
|
|
},
|
|
mi = {
|
|
isCaretContainer: li,
|
|
isCaretContainerBlock: ui,
|
|
isCaretContainerInline: ci,
|
|
showCaretContainerBlock: function(e) {
|
|
return e && e.hasAttribute("data-mce-caret")
|
|
? ((t = e.getElementsByTagName("br")),
|
|
(n = t[t.length - 1]),
|
|
vo.isBogus(n) && n.parentNode.removeChild(n),
|
|
e.removeAttribute("data-mce-caret"),
|
|
e.removeAttribute("data-mce-bogus"),
|
|
e.removeAttribute("style"),
|
|
e.removeAttribute("_moz_abspos"),
|
|
e)
|
|
: null;
|
|
var t, n;
|
|
},
|
|
insertInline: function(e, t) {
|
|
var n, r, o;
|
|
if (((r = e.ownerDocument.createTextNode(oi)), (o = e.parentNode), t)) {
|
|
if (((n = e.previousSibling), si(n))) {
|
|
if (li(n)) return n;
|
|
if (di(n)) return n.splitText(n.data.length - 1);
|
|
}
|
|
o.insertBefore(r, e);
|
|
} else {
|
|
if (((n = e.nextSibling), si(n))) {
|
|
if (li(n)) return n;
|
|
if (fi(n)) return n.splitText(1), n;
|
|
}
|
|
e.nextSibling ? o.insertBefore(r, e.nextSibling) : o.appendChild(r);
|
|
}
|
|
return r;
|
|
},
|
|
prependInline: function(e) {
|
|
if (vo.isText(e)) {
|
|
var t = e.data;
|
|
return t.length > 0 && t.charAt(0) !== oi && e.insertData(0, oi), e;
|
|
}
|
|
return null;
|
|
},
|
|
appendInline: function(e) {
|
|
if (vo.isText(e)) {
|
|
var t = e.data;
|
|
return (
|
|
t.length > 0 &&
|
|
t.charAt(t.length - 1) !== oi &&
|
|
e.insertData(t.length, oi),
|
|
e
|
|
);
|
|
}
|
|
return null;
|
|
},
|
|
isBeforeInline: function(e) {
|
|
return (
|
|
e &&
|
|
vo.isText(e.container()) &&
|
|
e.container().data.charAt(e.offset()) === oi
|
|
);
|
|
},
|
|
isAfterInline: function(e) {
|
|
return (
|
|
e &&
|
|
vo.isText(e.container()) &&
|
|
e.container().data.charAt(e.offset() - 1) === oi
|
|
);
|
|
},
|
|
insertBlock: function(e, t, n) {
|
|
var r, o, i;
|
|
return (
|
|
(r = t.ownerDocument.createElement(e)).setAttribute(
|
|
"data-mce-caret",
|
|
n ? "before" : "after"
|
|
),
|
|
r.setAttribute("data-mce-bogus", "all"),
|
|
r.appendChild(
|
|
((i = document.createElement("br")).setAttribute(
|
|
"data-mce-bogus",
|
|
"1"
|
|
),
|
|
i)
|
|
),
|
|
(o = t.parentNode),
|
|
n
|
|
? o.insertBefore(r, t)
|
|
: t.nextSibling
|
|
? o.insertBefore(r, t.nextSibling)
|
|
: o.appendChild(r),
|
|
r
|
|
);
|
|
},
|
|
hasContent: function(e) {
|
|
return e.firstChild !== e.lastChild || !vo.isBr(e.firstChild);
|
|
},
|
|
startsWithCaretContainer: fi,
|
|
endsWithCaretContainer: di
|
|
},
|
|
pi = vo.isContentEditableTrue,
|
|
gi = vo.isContentEditableFalse,
|
|
hi = vo.isBr,
|
|
vi = vo.isText,
|
|
yi = vo.matchNodeNames("script style textarea"),
|
|
bi = vo.matchNodeNames("img input textarea hr iframe video audio object"),
|
|
Ci = vo.matchNodeNames("table"),
|
|
xi = mi.isCaretContainer,
|
|
wi = function(e) {
|
|
return (
|
|
!xi(e) && (vi(e) ? !yi(e.parentNode) : bi(e) || hi(e) || Ci(e) || gi(e))
|
|
);
|
|
},
|
|
Ni = function(e, t) {
|
|
for (e = e.parentNode; e && e !== t; e = e.parentNode) {
|
|
if (gi(e)) return !1;
|
|
if (pi(e)) return !0;
|
|
}
|
|
return !0;
|
|
},
|
|
Ei = wi,
|
|
Si = function(e) {
|
|
return (
|
|
bi(e) ||
|
|
(!!gi((t = e)) &&
|
|
!0 !==
|
|
At.reduce(
|
|
t.getElementsByTagName("*"),
|
|
function(e, t) {
|
|
return e || pi(t);
|
|
},
|
|
!1
|
|
))
|
|
);
|
|
var t;
|
|
},
|
|
ki = function(e, t) {
|
|
return wi(e) && Ni(e, t);
|
|
},
|
|
Ti = Math.round,
|
|
Ai = function(e) {
|
|
return e
|
|
? {
|
|
left: Ti(e.left),
|
|
top: Ti(e.top),
|
|
bottom: Ti(e.bottom),
|
|
right: Ti(e.right),
|
|
width: Ti(e.width),
|
|
height: Ti(e.height)
|
|
}
|
|
: { left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0 };
|
|
},
|
|
_i = function(e, t, n) {
|
|
return e >= 0 && e <= Math.min(t.height, n.height) / 2;
|
|
},
|
|
Bi = function(e, t) {
|
|
return (
|
|
e.bottom - e.height / 2 < t.top ||
|
|
(!(e.top > t.bottom) && _i(t.top - e.bottom, e, t))
|
|
);
|
|
},
|
|
Ri = function(e, t) {
|
|
return (
|
|
e.top > t.bottom || (!(e.bottom < t.top) && _i(t.bottom - e.top, e, t))
|
|
);
|
|
},
|
|
Di = Ai,
|
|
Oi = function(e, t) {
|
|
return (
|
|
(e = Ai(e)),
|
|
t
|
|
? (e.right = e.left)
|
|
: ((e.left = e.left + e.width), (e.right = e.left)),
|
|
(e.width = 0),
|
|
e
|
|
);
|
|
},
|
|
Pi = function(e, t) {
|
|
return (
|
|
e.left === t.left &&
|
|
e.top === t.top &&
|
|
e.bottom === t.bottom &&
|
|
e.right === t.right
|
|
);
|
|
},
|
|
Ii = Bi,
|
|
Li = Ri,
|
|
Mi = function(e, t, n) {
|
|
return t >= e.left && t <= e.right && n >= e.top && n <= e.bottom;
|
|
},
|
|
Fi = function(e) {
|
|
var t = e.startContainer,
|
|
n = e.startOffset;
|
|
return t.hasChildNodes() && e.endOffset === n + 1
|
|
? t.childNodes[n]
|
|
: null;
|
|
},
|
|
zi = function(e, t) {
|
|
return (
|
|
1 === e.nodeType &&
|
|
e.hasChildNodes() &&
|
|
(t >= e.childNodes.length && (t = e.childNodes.length - 1),
|
|
(e = e.childNodes[t])),
|
|
e
|
|
);
|
|
},
|
|
Ui = new RegExp(
|
|
"[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"
|
|
),
|
|
Vi = function(e) {
|
|
return "string" == typeof e && e.charCodeAt(0) >= 768 && Ui.test(e);
|
|
},
|
|
Hi = [].slice,
|
|
qi = function(e) {
|
|
for (var t = [], n = 1; n < arguments.length; n++)
|
|
t[n - 1] = arguments[n];
|
|
var r = Hi.call(arguments);
|
|
return r.length - 1 >= e.length
|
|
? e.apply(this, r.slice(1))
|
|
: function() {
|
|
var e = r.concat([].slice.call(arguments));
|
|
return qi.apply(this, e);
|
|
};
|
|
},
|
|
ji = {
|
|
constant: function(e) {
|
|
return function() {
|
|
return e;
|
|
};
|
|
},
|
|
negate: function(e) {
|
|
return function(t) {
|
|
return !e(t);
|
|
};
|
|
},
|
|
and: function() {
|
|
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
|
|
var n = Hi.call(arguments);
|
|
return function(e) {
|
|
for (var t = 0; t < n.length; t++) if (!n[t](e)) return !1;
|
|
return !0;
|
|
};
|
|
},
|
|
or: function() {
|
|
for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
|
|
var n = Hi.call(arguments);
|
|
return function(e) {
|
|
for (var t = 0; t < n.length; t++) if (n[t](e)) return !0;
|
|
return !1;
|
|
};
|
|
},
|
|
curry: qi,
|
|
compose: function(e, t) {
|
|
return function(n) {
|
|
return e(t(n));
|
|
};
|
|
},
|
|
noop: function() {}
|
|
},
|
|
$i = vo.isElement,
|
|
Wi = Ei,
|
|
Ki = vo.matchStyleValues("display", "block table"),
|
|
Xi = vo.matchStyleValues("float", "left right"),
|
|
Yi = ji.and($i, Wi, ji.negate(Xi)),
|
|
Gi = ji.negate(vo.matchStyleValues("white-space", "pre pre-line pre-wrap")),
|
|
Ji = vo.isText,
|
|
Qi = vo.isBr,
|
|
Zi = Xo.nodeIndex,
|
|
ea = zi,
|
|
ta = function(e) {
|
|
return "createRange" in e ? e.createRange() : Xo.DOM.createRng();
|
|
},
|
|
na = function(e) {
|
|
return e && /[\r\n\t ]/.test(e);
|
|
},
|
|
ra = function(e) {
|
|
var t,
|
|
n = e.startContainer,
|
|
r = e.startOffset;
|
|
return !!(
|
|
na(e.toString()) &&
|
|
Gi(n.parentNode) &&
|
|
((t = n.data), na(t[r - 1]) || na(t[r + 1]))
|
|
);
|
|
},
|
|
oa = function(e) {
|
|
var t,
|
|
n,
|
|
r = [],
|
|
o = function(e) {
|
|
var t, n, r, o, i, a, s, u;
|
|
return (
|
|
(t =
|
|
(n = e.getClientRects()).length > 0
|
|
? Di(n[0])
|
|
: Di(e.getBoundingClientRect())),
|
|
Qi(e) && 0 === t.left
|
|
? ((i = (r = e).ownerDocument),
|
|
(a = ta(i)),
|
|
(s = i.createTextNode("\xa0")),
|
|
(u = r.parentNode).insertBefore(s, r),
|
|
a.setStart(s, 0),
|
|
a.setEnd(s, 1),
|
|
(o = Di(a.getBoundingClientRect())),
|
|
u.removeChild(s),
|
|
o)
|
|
: t
|
|
);
|
|
},
|
|
i = function(e, t) {
|
|
return ((e = Oi(e, t)).width = 1), (e.right = e.left + 1), e;
|
|
},
|
|
a = function(e) {
|
|
0 !== e.height &&
|
|
((r.length > 0 && Pi(e, r[r.length - 1])) || r.push(e));
|
|
},
|
|
s = function(e, t) {
|
|
var n = ta(e.ownerDocument);
|
|
if (t < e.data.length) {
|
|
if (Vi(e.data[t])) return r;
|
|
if (
|
|
Vi(e.data[t - 1]) &&
|
|
(n.setStart(e, t), n.setEnd(e, t + 1), !ra(n))
|
|
)
|
|
return a(i(o(n), !1)), r;
|
|
}
|
|
t > 0 &&
|
|
(n.setStart(e, t - 1), n.setEnd(e, t), ra(n) || a(i(o(n), !1))),
|
|
t < e.data.length &&
|
|
(n.setStart(e, t), n.setEnd(e, t + 1), ra(n) || a(i(o(n), !0)));
|
|
};
|
|
if (Ji(e.container())) return s(e.container(), e.offset()), r;
|
|
if ($i(e.container()))
|
|
if (e.isAtEnd())
|
|
(n = ea(e.container(), e.offset())),
|
|
Ji(n) && s(n, n.data.length),
|
|
Yi(n) && !Qi(n) && a(i(o(n), !1));
|
|
else {
|
|
if (
|
|
((n = ea(e.container(), e.offset())),
|
|
Ji(n) && s(n, 0),
|
|
Yi(n) && e.isAtEnd())
|
|
)
|
|
return a(i(o(n), !1)), r;
|
|
(t = ea(e.container(), e.offset() - 1)),
|
|
Yi(t) && !Qi(t) && (Ki(t) || Ki(n) || !Yi(n)) && a(i(o(t), !1)),
|
|
Yi(n) && a(i(o(n), !0));
|
|
}
|
|
return r;
|
|
},
|
|
ia = function(e, t, n) {
|
|
var r = function() {
|
|
return n || (n = oa(new ia(e, t))), n;
|
|
};
|
|
return {
|
|
container: ji.constant(e),
|
|
offset: ji.constant(t),
|
|
toRange: function() {
|
|
var n;
|
|
return (n = ta(e.ownerDocument)).setStart(e, t), n.setEnd(e, t), n;
|
|
},
|
|
getClientRects: r,
|
|
isVisible: function() {
|
|
return r().length > 0;
|
|
},
|
|
isAtStart: function() {
|
|
return Ji(e), 0 === t;
|
|
},
|
|
isAtEnd: function() {
|
|
return Ji(e) ? t >= e.data.length : t >= e.childNodes.length;
|
|
},
|
|
isEqual: function(n) {
|
|
return n && e === n.container() && t === n.offset();
|
|
},
|
|
getNode: function(n) {
|
|
return ea(e, n ? t - 1 : t);
|
|
}
|
|
};
|
|
};
|
|
(ia.fromRangeStart = function(e) {
|
|
return new ia(e.startContainer, e.startOffset);
|
|
}),
|
|
(ia.fromRangeEnd = function(e) {
|
|
return new ia(e.endContainer, e.endOffset);
|
|
}),
|
|
(ia.after = function(e) {
|
|
return new ia(e.parentNode, Zi(e) + 1);
|
|
}),
|
|
(ia.before = function(e) {
|
|
return new ia(e.parentNode, Zi(e));
|
|
}),
|
|
(ia.isAtStart = function(e) {
|
|
return !!e && e.isAtStart();
|
|
}),
|
|
(ia.isAtEnd = function(e) {
|
|
return !!e && e.isAtEnd();
|
|
}),
|
|
(ia.isTextPosition = function(e) {
|
|
return !!e && vo.isText(e.container());
|
|
});
|
|
var aa,
|
|
sa,
|
|
ua,
|
|
ca,
|
|
la,
|
|
fa = vo.isContentEditableTrue,
|
|
da = vo.isContentEditableFalse,
|
|
ma = vo.matchStyleValues(
|
|
"display",
|
|
"block table table-cell table-caption list-item"
|
|
),
|
|
pa = mi.isCaretContainer,
|
|
ga = mi.isCaretContainerBlock,
|
|
ha = ji.curry,
|
|
va = vo.isElement,
|
|
ya = Ei,
|
|
ba = function(e) {
|
|
return e > 0;
|
|
},
|
|
Ca = function(e) {
|
|
return e < 0;
|
|
},
|
|
xa = function(e, t) {
|
|
for (var n; (n = e(t)); ) if (!ga(n)) return n;
|
|
return null;
|
|
},
|
|
wa = function(e, t) {
|
|
for (e = e.parentNode; e && e !== t; e = e.parentNode)
|
|
if (fa(e)) return e;
|
|
return t;
|
|
},
|
|
Na = function(e, t) {
|
|
for (; e && e !== t; ) {
|
|
if (ma(e)) return e;
|
|
e = e.parentNode;
|
|
}
|
|
return null;
|
|
},
|
|
Ea = function(e, t) {
|
|
var n = t.ownerDocument.createRange();
|
|
return (
|
|
e
|
|
? (n.setStartBefore(t), n.setEndBefore(t))
|
|
: (n.setStartAfter(t), n.setEndAfter(t)),
|
|
n
|
|
);
|
|
},
|
|
Sa = function(e, t, n) {
|
|
var r, o, i, a;
|
|
for (o = e ? "previousSibling" : "nextSibling"; n && n !== t; ) {
|
|
if (((r = n[o]), pa(r) && (r = r[o]), da(r))) {
|
|
if (((a = n), Na(r, (i = t)) === Na(a, i))) return r;
|
|
break;
|
|
}
|
|
if (ya(r)) break;
|
|
n = n.parentNode;
|
|
}
|
|
return null;
|
|
},
|
|
ka = ha(Ea, !0),
|
|
Ta = ha(Ea, !1),
|
|
Aa = function(e, t) {
|
|
return da(
|
|
((n = e),
|
|
(r = t)
|
|
? ((o = r.container()),
|
|
(i = r.offset()),
|
|
va(o) ? o.childNodes[i + n] : null)
|
|
: null)
|
|
);
|
|
var n, r, o, i;
|
|
},
|
|
_a = {
|
|
isForwards: ba,
|
|
isBackwards: Ca,
|
|
findNode: function(e, t, n, r, o) {
|
|
var i = new to(e, r);
|
|
if (Ca(t)) {
|
|
if ((da(e) || ga(e)) && n((e = xa(i.prev, !0)))) return e;
|
|
for (; (e = xa(i.prev, o)); ) if (n(e)) return e;
|
|
}
|
|
if (ba(t)) {
|
|
if ((da(e) || ga(e)) && n((e = xa(i.next, !0)))) return e;
|
|
for (; (e = xa(i.next, o)); ) if (n(e)) return e;
|
|
}
|
|
return null;
|
|
},
|
|
getEditingHost: wa,
|
|
getParentBlock: Na,
|
|
isInSameBlock: function(e, t, n) {
|
|
return Na(e.container(), n) === Na(t.container(), n);
|
|
},
|
|
isInSameEditingHost: function(e, t, n) {
|
|
return wa(e.container(), n) === wa(t.container(), n);
|
|
},
|
|
isBeforeContentEditableFalse: ha(Aa, 0),
|
|
isAfterContentEditableFalse: ha(Aa, -1),
|
|
normalizeRange: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = ha(Sa, !0, t),
|
|
u = ha(Sa, !1, t);
|
|
if (
|
|
((o = n.startContainer),
|
|
(i = n.startOffset),
|
|
mi.isCaretContainerBlock(o))
|
|
) {
|
|
if (
|
|
(va(o) || (o = o.parentNode),
|
|
"before" === (a = o.getAttribute("data-mce-caret")) &&
|
|
((r = o.nextSibling), da(r)))
|
|
)
|
|
return ka(r);
|
|
if ("after" === a && ((r = o.previousSibling), da(r))) return Ta(r);
|
|
}
|
|
if (!n.collapsed) return n;
|
|
if (vo.isText(o)) {
|
|
if (pa(o)) {
|
|
if (1 === e) {
|
|
if ((r = u(o))) return ka(r);
|
|
if ((r = s(o))) return Ta(r);
|
|
}
|
|
if (-1 === e) {
|
|
if ((r = s(o))) return Ta(r);
|
|
if ((r = u(o))) return ka(r);
|
|
}
|
|
return n;
|
|
}
|
|
if (mi.endsWithCaretContainer(o) && i >= o.data.length - 1)
|
|
return 1 === e && (r = u(o)) ? ka(r) : n;
|
|
if (mi.startsWithCaretContainer(o) && i <= 1)
|
|
return -1 === e && (r = s(o)) ? Ta(r) : n;
|
|
if (i === o.data.length) return (r = u(o)) ? ka(r) : n;
|
|
if (0 === i) return (r = s(o)) ? Ta(r) : n;
|
|
}
|
|
return n;
|
|
}
|
|
},
|
|
Ba = vo.isContentEditableFalse,
|
|
Ra = vo.isText,
|
|
Da = vo.isElement,
|
|
Oa = vo.isBr,
|
|
Pa = _a.isForwards,
|
|
Ia = _a.isBackwards,
|
|
La = Ei,
|
|
Ma = Si,
|
|
Fa = ki,
|
|
za = function(e, t) {
|
|
return e.hasChildNodes() && t < e.childNodes.length
|
|
? e.childNodes[t]
|
|
: null;
|
|
},
|
|
Ua = function(e, t) {
|
|
if (Pa(e)) {
|
|
if (La(t.previousSibling) && !Ra(t.previousSibling))
|
|
return ia.before(t);
|
|
if (Ra(t)) return ia(t, 0);
|
|
}
|
|
if (Ia(e)) {
|
|
if (La(t.nextSibling) && !Ra(t.nextSibling)) return ia.after(t);
|
|
if (Ra(t)) return ia(t, t.data.length);
|
|
}
|
|
return Ia(e) ? (Oa(t) ? ia.before(t) : ia.after(t)) : ia.before(t);
|
|
},
|
|
Va = function(e, t, n) {
|
|
var r, o, i, a, s, u, c, l, f, d;
|
|
if (!Da(n) || !t) return null;
|
|
if (t.isEqual(ia.after(n)) && n.lastChild) {
|
|
if (
|
|
((c = ia.after(n.lastChild)),
|
|
Ia(e) && La(n.lastChild) && Da(n.lastChild))
|
|
)
|
|
return Oa(n.lastChild) ? ia.before(n.lastChild) : c;
|
|
} else c = t;
|
|
if (((r = c.container()), (o = c.offset()), Ra(r))) {
|
|
if (Ia(e) && o > 0) return ia(r, --o);
|
|
if (Pa(e) && o < r.length) return ia(r, ++o);
|
|
i = r;
|
|
} else {
|
|
if (Ia(e) && o > 0 && ((a = za(r, o - 1)), La(a)))
|
|
return !Ma(a) && (s = _a.findNode(a, e, Fa, a))
|
|
? Ra(s)
|
|
? ia(s, s.data.length)
|
|
: ia.after(s)
|
|
: Ra(a)
|
|
? ia(a, a.data.length)
|
|
: ia.before(a);
|
|
if (Pa(e) && o < r.childNodes.length && ((a = za(r, o)), La(a)))
|
|
return (
|
|
(l = a),
|
|
(f = n),
|
|
vo.isBr(l) &&
|
|
(d = Va(1, ia.after(l), f)) &&
|
|
!_a.isInSameBlock(ia.before(l), ia.before(d), f)
|
|
? Va(e, ia.after(a), n)
|
|
: !Ma(a) && (s = _a.findNode(a, e, Fa, a))
|
|
? Ra(s)
|
|
? ia(s, 0)
|
|
: ia.before(s)
|
|
: Ra(a)
|
|
? ia(a, 0)
|
|
: ia.after(a)
|
|
);
|
|
i = c.getNode();
|
|
}
|
|
return ((Pa(e) && c.isAtEnd()) || (Ia(e) && c.isAtStart())) &&
|
|
((i = _a.findNode(i, e, ji.constant(!0), n, !0)), Fa(i, n))
|
|
? Ua(e, i)
|
|
: ((a = _a.findNode(i, e, Fa, n)),
|
|
!(u = At.last(
|
|
At.filter(
|
|
(function(e, t) {
|
|
for (var n = []; e && e !== t; ) n.push(e), (e = e.parentNode);
|
|
return n;
|
|
})(r, n),
|
|
Ba
|
|
)
|
|
)) ||
|
|
(a && u.contains(a))
|
|
? a
|
|
? Ua(e, a)
|
|
: null
|
|
: (c = Pa(e) ? ia.after(u) : ia.before(u)));
|
|
},
|
|
Ha = function(e) {
|
|
return {
|
|
next: function(t) {
|
|
return Va(1, t, e);
|
|
},
|
|
prev: function(t) {
|
|
return Va(-1, t, e);
|
|
}
|
|
};
|
|
},
|
|
qa = function(e) {
|
|
return Ot.grep(e.childNodes, function(e) {
|
|
return "LI" === e.nodeName;
|
|
});
|
|
},
|
|
ja = function(e) {
|
|
return (
|
|
e &&
|
|
e.firstChild &&
|
|
e.firstChild === e.lastChild &&
|
|
("\xa0" === (t = e.firstChild).data || vo.isBr(t))
|
|
);
|
|
var t;
|
|
},
|
|
$a = function(e) {
|
|
return e.length > 0 && (!(t = e[e.length - 1]).firstChild || ja(t))
|
|
? e.slice(0, -1)
|
|
: e;
|
|
var t;
|
|
},
|
|
Wa = function(e, t) {
|
|
var n = e.getParent(t, e.isBlock);
|
|
return n && "LI" === n.nodeName ? n : null;
|
|
},
|
|
Ka = function(e, t) {
|
|
var n = ia.after(e),
|
|
r = Ha(t).prev(n);
|
|
return r ? r.toRange() : null;
|
|
},
|
|
Xa = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = e.parentNode;
|
|
return (
|
|
Ot.each(t, function(t) {
|
|
s.insertBefore(t, e);
|
|
}),
|
|
(r = e),
|
|
(o = n),
|
|
(i = ia.before(r)),
|
|
(a = Ha(o).next(i)) ? a.toRange() : null
|
|
);
|
|
},
|
|
Ya = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = t.firstChild,
|
|
c = t.lastChild;
|
|
return (
|
|
u && "meta" === u.name && (u = u.next),
|
|
c && "mce_marker" === c.attr("id") && (c = c.prev),
|
|
(r = c),
|
|
(s = (n = e).getNonEmptyElements()),
|
|
r &&
|
|
(r.isEmpty(s) ||
|
|
((o = r),
|
|
n.getBlockElements()[o.name] &&
|
|
(a = o).firstChild &&
|
|
a.firstChild === a.lastChild &&
|
|
("br" === (i = o.firstChild).name || "\xa0" === i.value))) &&
|
|
(c = c.prev),
|
|
!(!u || u !== c || ("ul" !== u.name && "ol" !== u.name))
|
|
);
|
|
},
|
|
Ga = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b,
|
|
C,
|
|
x,
|
|
w,
|
|
N = ((o = t),
|
|
(i = r),
|
|
(c = e.serialize(i)),
|
|
(l = o.createFragment(c)),
|
|
(s = (a = l).firstChild),
|
|
(u = a.lastChild),
|
|
s && "META" === s.nodeName && s.parentNode.removeChild(s),
|
|
u && "mce_marker" === u.id && u.parentNode.removeChild(u),
|
|
a),
|
|
E = Wa(t, n.startContainer),
|
|
S = $a(qa(N.firstChild)),
|
|
k = t.getRoot(),
|
|
T = function(e) {
|
|
var r = ia.fromRangeStart(n),
|
|
o = Ha(t.getRoot()),
|
|
i = 1 === e ? o.prev(r) : o.next(r);
|
|
return !i || Wa(t, i.getNode()) !== E;
|
|
};
|
|
return T(1)
|
|
? Xa(E, S, k)
|
|
: T(2)
|
|
? ((f = E),
|
|
(d = S),
|
|
(m = k),
|
|
t.insertAfter(d.reverse(), f),
|
|
Ka(d[0], m))
|
|
: ((g = S),
|
|
(h = k),
|
|
(v = p = E),
|
|
(b = (y = n).cloneRange()),
|
|
(C = y.cloneRange()),
|
|
b.setStartBefore(v),
|
|
C.setEndAfter(v),
|
|
(x = [b.cloneContents(), C.cloneContents()]),
|
|
(w = p.parentNode).insertBefore(x[0], p),
|
|
Ot.each(g, function(e) {
|
|
w.insertBefore(e, p);
|
|
}),
|
|
w.insertBefore(x[1], p),
|
|
w.removeChild(p),
|
|
Ka(g[g.length - 1], h));
|
|
},
|
|
Ja = function(e, t) {
|
|
return !!Wa(e, t);
|
|
},
|
|
Qa = vo.isText,
|
|
Za = vo.isBogus,
|
|
es = Xo.nodeIndex,
|
|
ts = function(e) {
|
|
var t = e.parentNode;
|
|
return Za(t) ? ts(t) : t;
|
|
},
|
|
ns = function(e) {
|
|
return e
|
|
? At.reduce(
|
|
e.childNodes,
|
|
function(e, t) {
|
|
return (
|
|
Za(t) && "BR" !== t.nodeName
|
|
? (e = e.concat(ns(t)))
|
|
: e.push(t),
|
|
e
|
|
);
|
|
},
|
|
[]
|
|
)
|
|
: [];
|
|
},
|
|
rs = function(e) {
|
|
return function(t) {
|
|
return e === t;
|
|
};
|
|
},
|
|
os = function(e) {
|
|
var t, n, r, o;
|
|
return (
|
|
(Qa(e) ? "text()" : e.nodeName.toLowerCase()) +
|
|
"[" +
|
|
((n = ns(ts((t = e)))),
|
|
(r = At.findIndex(n, rs(t), t)),
|
|
(n = n.slice(0, r + 1)),
|
|
(o = At.reduce(
|
|
n,
|
|
function(e, t, r) {
|
|
return Qa(t) && Qa(n[r - 1]) && e++, e;
|
|
},
|
|
0
|
|
)),
|
|
(n = At.filter(n, vo.matchNodeNames(t.nodeName))),
|
|
(r = At.findIndex(n, rs(t), t)) - o) +
|
|
"]"
|
|
);
|
|
},
|
|
is = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = [];
|
|
return (
|
|
(n = t.container()),
|
|
(r = t.offset()),
|
|
Qa(n)
|
|
? (o = (function(e, t) {
|
|
for (; (e = e.previousSibling) && Qa(e); ) t += e.data.length;
|
|
return t;
|
|
})(n, r))
|
|
: (r >= (i = n.childNodes).length
|
|
? ((o = "after"), (r = i.length - 1))
|
|
: (o = "before"),
|
|
(n = i[r])),
|
|
s.push(os(n)),
|
|
(a = (function(e, t, n) {
|
|
var r = [];
|
|
for (t = t.parentNode; !(t === e || (n && n(t))); t = t.parentNode)
|
|
r.push(t);
|
|
return r;
|
|
})(e, n)),
|
|
(a = At.filter(a, ji.negate(vo.isBogus))),
|
|
(s = s.concat(
|
|
At.map(a, function(e) {
|
|
return os(e);
|
|
})
|
|
))
|
|
.reverse()
|
|
.join("/") +
|
|
"," +
|
|
o
|
|
);
|
|
},
|
|
as = function(e, t) {
|
|
var n, r, o;
|
|
return t
|
|
? ((t = (n = t.split(","))[0].split("/")),
|
|
(o = n.length > 1 ? n[1] : "before"),
|
|
(r = At.reduce(
|
|
t,
|
|
function(e, t) {
|
|
return (t = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))
|
|
? ("text()" === t[1] && (t[1] = "#text"),
|
|
(n = e),
|
|
(r = t[1]),
|
|
(o = parseInt(t[2], 10)),
|
|
(i = ns(n)),
|
|
(i = At.filter(i, function(e, t) {
|
|
return !Qa(e) || !Qa(i[t - 1]);
|
|
})),
|
|
(i = At.filter(i, vo.matchNodeNames(r)))[o])
|
|
: null;
|
|
var n, r, o, i;
|
|
},
|
|
e
|
|
))
|
|
? Qa(r)
|
|
? (function(e, t) {
|
|
for (var n, r = e, o = 0; Qa(r); ) {
|
|
if (((n = r.data.length), t >= o && t <= o + n)) {
|
|
(e = r), (t -= o);
|
|
break;
|
|
}
|
|
if (!Qa(r.nextSibling)) {
|
|
(e = r), (t = n);
|
|
break;
|
|
}
|
|
(o += n), (r = r.nextSibling);
|
|
}
|
|
return t > e.data.length && (t = e.data.length), new ia(e, t);
|
|
})(r, parseInt(o, 10))
|
|
: ((o = "after" === o ? es(r) + 1 : es(r)),
|
|
new ia(r.parentNode, o))
|
|
: null)
|
|
: null;
|
|
},
|
|
ss = vo.isContentEditableFalse,
|
|
us = function(e, t, n, r, o) {
|
|
var i,
|
|
a = r[o ? "startContainer" : "endContainer"],
|
|
s = r[o ? "startOffset" : "endOffset"],
|
|
u = [],
|
|
c = 0,
|
|
l = e.getRoot();
|
|
for (
|
|
vo.isText(a)
|
|
? u.push(
|
|
n
|
|
? (function(e, t, n) {
|
|
var r, o;
|
|
for (
|
|
o = e(t.data.slice(0, n)).length, r = t.previousSibling;
|
|
r && vo.isText(r);
|
|
r = r.previousSibling
|
|
)
|
|
o += e(r.data).length;
|
|
return o;
|
|
})(t, a, s)
|
|
: s
|
|
)
|
|
: (s >= (i = a.childNodes).length &&
|
|
i.length &&
|
|
((c = 1), (s = Math.max(0, i.length - 1))),
|
|
u.push(e.nodeIndex(i[s], n) + c));
|
|
a && a !== l;
|
|
a = a.parentNode
|
|
)
|
|
u.push(e.nodeIndex(a, n));
|
|
return u;
|
|
},
|
|
cs = function(e) {
|
|
vo.isText(e) && 0 === e.data.length && e.parentNode.removeChild(e);
|
|
},
|
|
ls = function(e, t, n) {
|
|
var r = 0;
|
|
return (
|
|
Ot.each(e.select(t), function(e) {
|
|
if ("all" !== e.getAttribute("data-mce-bogus"))
|
|
return e !== n && void r++;
|
|
}),
|
|
r
|
|
);
|
|
},
|
|
fs = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = t ? "start" : "end";
|
|
(n = e[i + "Container"]),
|
|
(r = e[i + "Offset"]),
|
|
vo.isElement(n) &&
|
|
"TR" === n.nodeName &&
|
|
(n = (o = n.childNodes)[Math.min(t ? r : r - 1, o.length - 1)]) &&
|
|
((r = t ? 0 : n.childNodes.length),
|
|
e["set" + (t ? "Start" : "End")](n, r));
|
|
},
|
|
ds = function(e) {
|
|
return fs(e, !0), fs(e, !1), e;
|
|
},
|
|
ms = function(e, t) {
|
|
var n;
|
|
if (vo.isElement(e) && ((e = zi(e, t)), ss(e))) return e;
|
|
if (mi.isCaretContainer(e)) {
|
|
if (
|
|
(vo.isText(e) && mi.isCaretContainerBlock(e) && (e = e.parentNode),
|
|
(n = e.previousSibling),
|
|
ss(n))
|
|
)
|
|
return n;
|
|
if (((n = e.nextSibling), ss(n))) return n;
|
|
}
|
|
},
|
|
ps = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l = n.getNode(),
|
|
f = l ? l.nodeName : null,
|
|
d = n.getRng();
|
|
return ss(l) || "IMG" === f
|
|
? { name: f, index: ls(n.dom, f, l) }
|
|
: (l =
|
|
ms((r = d).startContainer, r.startOffset) ||
|
|
ms(r.endContainer, r.endOffset))
|
|
? { name: (f = l.tagName), index: ls(n.dom, f, l) }
|
|
: ((o = e),
|
|
(a = t),
|
|
(s = d),
|
|
(u = (i = n).dom),
|
|
((c = {}).start = us(u, o, a, s, !0)),
|
|
i.isCollapsed() || (c.end = us(u, o, a, s, !1)),
|
|
c);
|
|
},
|
|
gs = {
|
|
getBookmark: function(e, t, n) {
|
|
return 2 === t
|
|
? ps(ii, n, e)
|
|
: 3 === t
|
|
? ((o = (r = e).getRng()),
|
|
{
|
|
start: is(r.dom.getRoot(), ia.fromRangeStart(o)),
|
|
end: is(r.dom.getRoot(), ia.fromRangeEnd(o))
|
|
})
|
|
: t
|
|
? { rng: e.getRng() }
|
|
: (function(e) {
|
|
var t = e.dom,
|
|
n = e.getRng(),
|
|
r = t.uniqueId(),
|
|
o = e.isCollapsed(),
|
|
i = "overflow:hidden;line-height:0px",
|
|
a = e.getNode(),
|
|
s = a.nodeName;
|
|
if ("IMG" === s) return { name: s, index: ls(t, s, a) };
|
|
var u = ds(n.cloneRange());
|
|
if (!o) {
|
|
u.collapse(!1);
|
|
var c = t.create(
|
|
"span",
|
|
{ "data-mce-type": "bookmark", id: r + "_end", style: i },
|
|
""
|
|
);
|
|
u.insertNode(c), cs(c.nextSibling);
|
|
}
|
|
(n = ds(n)).collapse(!0);
|
|
var l = t.create(
|
|
"span",
|
|
{ "data-mce-type": "bookmark", id: r + "_start", style: i },
|
|
""
|
|
);
|
|
return (
|
|
n.insertNode(l),
|
|
cs(l.previousSibling),
|
|
e.moveToBookmark({ id: r, keep: 1 }),
|
|
{ id: r }
|
|
);
|
|
})(e);
|
|
var r, o;
|
|
},
|
|
getUndoBookmark: y.curry(ps, y.identity, !0)
|
|
},
|
|
hs = function(e, t) {
|
|
for (var n = [], r = 0; r < e.length; r++) {
|
|
var o = e[r];
|
|
if (!o.isSome()) return E.none();
|
|
n.push(o.getOrDie());
|
|
}
|
|
return E.some(t.apply(null, n));
|
|
},
|
|
vs = function(e, t) {
|
|
return (
|
|
!e.isBlock(t) ||
|
|
t.innerHTML ||
|
|
me.ie ||
|
|
(t.innerHTML = '<br data-mce-bogus="1" />'),
|
|
t
|
|
);
|
|
},
|
|
ys = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = n[t ? "start" : "end"],
|
|
c = e.getRoot();
|
|
if (u) {
|
|
for (a = u[0], i = c, o = u.length - 1; o >= 1; o--) {
|
|
if (((s = i.childNodes), u[o] > s.length - 1)) return;
|
|
i = s[u[o]];
|
|
}
|
|
3 === i.nodeType && (a = Math.min(u[0], i.nodeValue.length)),
|
|
1 === i.nodeType && (a = Math.min(u[0], i.childNodes.length)),
|
|
t ? r.setStart(i, a) : r.setEnd(i, a);
|
|
}
|
|
return !0;
|
|
},
|
|
bs = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = e.get(n.id + "_" + t),
|
|
l = n.keep;
|
|
if (c) {
|
|
if (
|
|
((r = c.parentNode),
|
|
l ? ((r = c.firstChild), (o = 1)) : (o = e.nodeIndex(c)),
|
|
(s = r),
|
|
(u = o),
|
|
!l)
|
|
) {
|
|
for (
|
|
a = c.previousSibling,
|
|
i = c.nextSibling,
|
|
Ot.each(Ot.grep(c.childNodes), function(e) {
|
|
vo.isText(e) &&
|
|
(e.nodeValue = e.nodeValue.replace(/\uFEFF/g, ""));
|
|
});
|
|
(c = e.get(n.id + "_" + t));
|
|
|
|
)
|
|
e.remove(c, 1);
|
|
a &&
|
|
i &&
|
|
a.nodeType === i.nodeType &&
|
|
vo.isText(a) &&
|
|
!me.opera &&
|
|
((o = a.nodeValue.length),
|
|
a.appendData(i.nodeValue),
|
|
e.remove(i),
|
|
(s = a),
|
|
(u = o));
|
|
}
|
|
return E.some(ia(s, u));
|
|
}
|
|
return E.none();
|
|
},
|
|
Cs = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v = e.dom;
|
|
if (t) {
|
|
if (Ot.isArray(t.start))
|
|
return (
|
|
(g = t),
|
|
(h = (p = v).createRng()),
|
|
ys(p, !0, g, h) && ys(p, !1, g, h) ? E.some(h) : E.none()
|
|
);
|
|
if ("string" == typeof t.start)
|
|
return E.some(
|
|
((f = t),
|
|
(d = (l = v).createRng()),
|
|
(m = as(l.getRoot(), f.start)),
|
|
d.setStart(m.container(), m.offset()),
|
|
(m = as(l.getRoot(), f.end)),
|
|
d.setEnd(m.container(), m.offset()),
|
|
d)
|
|
);
|
|
if (t.id)
|
|
return (
|
|
(u = bs((o = v), "start", (i = t))),
|
|
(c = bs(o, "end", i)),
|
|
hs([u, ((a = c), (s = u), a.isSome() ? a : s)], function(e, t) {
|
|
var n = o.createRng();
|
|
return (
|
|
n.setStart(vs(o, e.container()), e.offset()),
|
|
n.setEnd(vs(o, t.container()), t.offset()),
|
|
n
|
|
);
|
|
})
|
|
);
|
|
if (t.name)
|
|
return (
|
|
(n = v),
|
|
(r = t),
|
|
E.from(n.select(r.name)[r.index]).map(function(e) {
|
|
var t = n.createRng();
|
|
return t.selectNode(e), t;
|
|
})
|
|
);
|
|
if (t.rng) return E.some(t.rng);
|
|
}
|
|
return E.none();
|
|
},
|
|
xs = {
|
|
getBookmark: function(e, t, n) {
|
|
return gs.getBookmark(e, t, n);
|
|
},
|
|
moveToBookmark: function(e, t) {
|
|
Cs(e, t).each(function(t) {
|
|
e.setRng(t);
|
|
});
|
|
},
|
|
isBookmarkNode: function(e) {
|
|
return (
|
|
vo.isElement(e) &&
|
|
"SPAN" === e.tagName &&
|
|
"bookmark" === e.getAttribute("data-mce-type")
|
|
);
|
|
}
|
|
},
|
|
ws = Ot.each,
|
|
Ns = function(e) {
|
|
this.compare = function(t, n) {
|
|
if (t.nodeName !== n.nodeName) return !1;
|
|
var r = function(t) {
|
|
var n = {};
|
|
return (
|
|
ws(e.getAttribs(t), function(r) {
|
|
var o = r.nodeName.toLowerCase();
|
|
0 !== o.indexOf("_") &&
|
|
"style" !== o &&
|
|
0 !== o.indexOf("data-") &&
|
|
(n[o] = e.getAttrib(t, o));
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
o = function(e, t) {
|
|
var n, r;
|
|
for (r in e)
|
|
if (e.hasOwnProperty(r)) {
|
|
if (void 0 === (n = t[r])) return !1;
|
|
if (e[r] !== n) return !1;
|
|
delete t[r];
|
|
}
|
|
for (r in t) if (t.hasOwnProperty(r)) return !1;
|
|
return !0;
|
|
};
|
|
return !(
|
|
!o(r(t), r(n)) ||
|
|
!o(
|
|
e.parseStyle(e.getAttrib(t, "style")),
|
|
e.parseStyle(e.getAttrib(n, "style"))
|
|
) ||
|
|
xs.isBookmarkNode(t) ||
|
|
xs.isBookmarkNode(n)
|
|
);
|
|
};
|
|
},
|
|
Es = function(e, t) {
|
|
Ur.parent(e).each(function(n) {
|
|
n.dom().insertBefore(t.dom(), e.dom());
|
|
});
|
|
},
|
|
Ss = function(e, t) {
|
|
e.dom().appendChild(t.dom());
|
|
},
|
|
ks = {
|
|
before: Es,
|
|
after: function(e, t) {
|
|
Ur.nextSibling(e).fold(
|
|
function() {
|
|
Ur.parent(e).each(function(e) {
|
|
Ss(e, t);
|
|
});
|
|
},
|
|
function(e) {
|
|
Es(e, t);
|
|
}
|
|
);
|
|
},
|
|
prepend: function(e, t) {
|
|
Ur.firstChild(e).fold(
|
|
function() {
|
|
Ss(e, t);
|
|
},
|
|
function(n) {
|
|
e.dom().insertBefore(t.dom(), n.dom());
|
|
}
|
|
);
|
|
},
|
|
append: Ss,
|
|
appendAt: function(e, t, n) {
|
|
Ur.child(e, n).fold(
|
|
function() {
|
|
Ss(e, t);
|
|
},
|
|
function(e) {
|
|
Es(e, t);
|
|
}
|
|
);
|
|
},
|
|
wrap: function(e, t) {
|
|
Es(e, t), Ss(t, e);
|
|
}
|
|
},
|
|
Ts = function(e, t) {
|
|
M.each(t, function(t) {
|
|
ks.before(e, t);
|
|
});
|
|
},
|
|
As = function(e, t) {
|
|
M.each(t, function(t) {
|
|
ks.append(e, t);
|
|
});
|
|
},
|
|
_s = function(e) {
|
|
var t = e.dom();
|
|
null !== t.parentNode && t.parentNode.removeChild(t);
|
|
},
|
|
Bs = {
|
|
empty: function(e) {
|
|
(e.dom().textContent = ""),
|
|
M.each(Ur.children(e), function(e) {
|
|
_s(e);
|
|
});
|
|
},
|
|
remove: _s,
|
|
unwrap: function(e) {
|
|
var t = Ur.children(e);
|
|
t.length > 0 && Ts(e, t), _s(e);
|
|
}
|
|
},
|
|
Rs = ((aa = Zn.isText),
|
|
(sa = "text"),
|
|
(ua = function(e) {
|
|
return aa(e) ? E.from(e.dom().nodeValue) : E.none();
|
|
}),
|
|
(ca = Un.detect().browser),
|
|
{
|
|
get: function(e) {
|
|
if (!aa(e))
|
|
throw new Error("Can only get " + sa + " value of a " + sa + " node");
|
|
return la(e).getOr("");
|
|
},
|
|
getOption: (la =
|
|
ca.isIE() && 10 === ca.version.major
|
|
? function(e) {
|
|
try {
|
|
return ua(e);
|
|
} catch (yC) {
|
|
return E.none();
|
|
}
|
|
}
|
|
: ua),
|
|
set: function(e, t) {
|
|
if (!aa(e))
|
|
throw new Error(
|
|
"Can only set raw " + sa + " value of a " + sa + " node"
|
|
);
|
|
e.dom().nodeValue = t;
|
|
}
|
|
}),
|
|
Ds = function(e) {
|
|
return Rs.get(e);
|
|
},
|
|
Os = function(e, t) {
|
|
return _r.all(t, e);
|
|
},
|
|
Ps = function(e) {
|
|
var t = Os(e, "br"),
|
|
n = M.filter(
|
|
(function(e) {
|
|
for (var t = [], n = e.dom(); n; )
|
|
t.push(Hn.fromDom(n)), (n = n.lastChild);
|
|
return t;
|
|
})(e).slice(-1),
|
|
io.isBr
|
|
);
|
|
t.length === n.length && M.each(n, Bs.remove);
|
|
},
|
|
Is = function(e) {
|
|
Bs.empty(e), ks.append(e, Hn.fromHtml('<br data-mce-bogus="1">'));
|
|
},
|
|
Ls = function(e) {
|
|
Ur.lastChild(e).each(function(t) {
|
|
Ur.prevSibling(t).each(function(n) {
|
|
io.isBlock(e) && io.isBr(t) && io.isBlock(n) && Bs.remove(t);
|
|
});
|
|
});
|
|
},
|
|
Ms = Ot.makeMap,
|
|
Fs = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a = [];
|
|
return (
|
|
(t = (e = e || {}).indent),
|
|
(n = Ms(e.indent_before || "")),
|
|
(r = Ms(e.indent_after || "")),
|
|
(o = Ao.getEncodeFunc(e.entity_encoding || "raw", e.entities)),
|
|
(i = "html" === e.element_format),
|
|
{
|
|
start: function(e, s, u) {
|
|
var c, l, f, d;
|
|
if (
|
|
(t &&
|
|
n[e] &&
|
|
a.length > 0 &&
|
|
(d = a[a.length - 1]).length > 0 &&
|
|
"\n" !== d &&
|
|
a.push("\n"),
|
|
a.push("<", e),
|
|
s)
|
|
)
|
|
for (c = 0, l = s.length; c < l; c++)
|
|
(f = s[c]), a.push(" ", f.name, '="', o(f.value, !0), '"');
|
|
(a[a.length] = !u || i ? ">" : " />"),
|
|
u &&
|
|
t &&
|
|
r[e] &&
|
|
a.length > 0 &&
|
|
(d = a[a.length - 1]).length > 0 &&
|
|
"\n" !== d &&
|
|
a.push("\n");
|
|
},
|
|
end: function(e) {
|
|
var n;
|
|
a.push("</", e, ">"),
|
|
t &&
|
|
r[e] &&
|
|
a.length > 0 &&
|
|
(n = a[a.length - 1]).length > 0 &&
|
|
"\n" !== n &&
|
|
a.push("\n");
|
|
},
|
|
text: function(e, t) {
|
|
e.length > 0 && (a[a.length] = t ? e : o(e));
|
|
},
|
|
cdata: function(e) {
|
|
a.push("<![CDATA[", e, "]]>");
|
|
},
|
|
comment: function(e) {
|
|
a.push("\x3c!--", e, "--\x3e");
|
|
},
|
|
pi: function(e, n) {
|
|
n ? a.push("<?", e, " ", o(n), "?>") : a.push("<?", e, "?>"),
|
|
t && a.push("\n");
|
|
},
|
|
doctype: function(e) {
|
|
a.push("<!DOCTYPE", e, ">", t ? "\n" : "");
|
|
},
|
|
reset: function() {
|
|
a.length = 0;
|
|
},
|
|
getContent: function() {
|
|
return a.join("").replace(/\n$/, "");
|
|
}
|
|
}
|
|
);
|
|
},
|
|
zs = function(e, t) {
|
|
var n = {},
|
|
r = Fs(e);
|
|
return (
|
|
((e = e || {}).validate = !("validate" in e) || e.validate),
|
|
(n.schema = t = t || Fo()),
|
|
(n.writer = r),
|
|
(n.serialize = function(n) {
|
|
var o, i;
|
|
(i = e.validate),
|
|
(o = {
|
|
3: function(e) {
|
|
r.text(e.value, e.raw);
|
|
},
|
|
8: function(e) {
|
|
r.comment(e.value);
|
|
},
|
|
7: function(e) {
|
|
r.pi(e.name, e.value);
|
|
},
|
|
10: function(e) {
|
|
r.doctype(e.value);
|
|
},
|
|
4: function(e) {
|
|
r.cdata(e.value);
|
|
},
|
|
11: function(e) {
|
|
if ((e = e.firstChild))
|
|
do {
|
|
a(e);
|
|
} while ((e = e.next));
|
|
}
|
|
}),
|
|
r.reset();
|
|
var a = function(e) {
|
|
var n,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g = o[e.type];
|
|
if (g) g(e);
|
|
else {
|
|
if (
|
|
((n = e.name),
|
|
(s = e.shortEnded),
|
|
(u = e.attributes),
|
|
i &&
|
|
u &&
|
|
u.length > 1 &&
|
|
(((f = []).map = {}), (p = t.getElementRule(e.name))))
|
|
) {
|
|
for (d = 0, m = p.attributesOrder.length; d < m; d++)
|
|
(c = p.attributesOrder[d]) in u.map &&
|
|
((l = u.map[c]),
|
|
(f.map[c] = l),
|
|
f.push({ name: c, value: l }));
|
|
for (d = 0, m = u.length; d < m; d++)
|
|
(c = u[d].name) in f.map ||
|
|
((l = u.map[c]),
|
|
(f.map[c] = l),
|
|
f.push({ name: c, value: l }));
|
|
u = f;
|
|
}
|
|
if ((r.start(e.name, u, s), !s)) {
|
|
if ((e = e.firstChild))
|
|
do {
|
|
a(e);
|
|
} while ((e = e.next));
|
|
r.end(n);
|
|
}
|
|
}
|
|
};
|
|
return 1 !== n.type || e.inner ? o[11](n) : a(n), r.getContent();
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
Us = function(e) {
|
|
return ia.isTextPosition(e) ? 0 === e.offset() : Ei(e.getNode());
|
|
},
|
|
Vs = function(e) {
|
|
return ia.isTextPosition(e)
|
|
? e.offset() === e.container().data.length
|
|
: Ei(e.getNode(!0));
|
|
},
|
|
Hs = function(e, t) {
|
|
return (
|
|
!ia.isTextPosition(e) &&
|
|
!ia.isTextPosition(t) &&
|
|
e.getNode() === t.getNode(!0)
|
|
);
|
|
},
|
|
qs = function(e, t, n) {
|
|
return e
|
|
? !Hs(t, n) &&
|
|
((r = t), !(!ia.isTextPosition(r) && vo.isBr(r.getNode()))) &&
|
|
Vs(t) &&
|
|
Us(n)
|
|
: !Hs(n, t) && Us(t) && Vs(n);
|
|
var r;
|
|
},
|
|
js = function(e, t, n) {
|
|
var r = Ha(t);
|
|
return E.from(e ? r.next(n) : r.prev(n));
|
|
},
|
|
$s = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = e ? t.firstChild : t.lastChild;
|
|
return vo.isText(s)
|
|
? E.some(new ia(s, e ? 0 : s.data.length))
|
|
: s
|
|
? Ei(s)
|
|
? E.some(
|
|
e
|
|
? ia.before(s)
|
|
: ((a = s), vo.isBr(a) ? ia.before(a) : ia.after(a))
|
|
)
|
|
: ((r = t),
|
|
(o = s),
|
|
(i = (n = e) ? ia.before(o) : ia.after(o)),
|
|
js(n, r, i))
|
|
: E.none();
|
|
},
|
|
Ws = {
|
|
fromPosition: js,
|
|
nextPosition: y.curry(js, !0),
|
|
prevPosition: y.curry(js, !1),
|
|
navigate: function(e, t, n) {
|
|
return js(e, t, n).bind(function(r) {
|
|
return _a.isInSameBlock(n, r, t) && qs(e, n, r)
|
|
? js(e, t, r)
|
|
: E.some(r);
|
|
});
|
|
},
|
|
positionIn: $s,
|
|
firstPositionIn: y.curry($s, !0),
|
|
lastPositionIn: y.curry($s, !1)
|
|
},
|
|
Ks = function(e) {
|
|
var t = ia.fromRangeStart(e),
|
|
n = ia.fromRangeEnd(e),
|
|
r = e.commonAncestorContainer;
|
|
return Ws.fromPosition(!1, r, n)
|
|
.map(function(o) {
|
|
return !_a.isInSameBlock(t, n, r) && _a.isInSameBlock(t, o, r)
|
|
? ((i = t.container()),
|
|
(a = t.offset()),
|
|
(s = o.container()),
|
|
(u = o.offset()),
|
|
(c = document.createRange()).setStart(i, a),
|
|
c.setEnd(s, u),
|
|
c)
|
|
: e;
|
|
var i, a, s, u, c;
|
|
})
|
|
.getOr(e);
|
|
},
|
|
Xs = function(e) {
|
|
return (t = e).collapsed ? t : Ks(t);
|
|
var t;
|
|
},
|
|
Ys = vo.matchNodeNames("td th"),
|
|
Gs = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g = e.schema.getTextInlineElements(),
|
|
h = e.selection,
|
|
v = e.dom;
|
|
if (
|
|
(/^ | $/.test(t) &&
|
|
(t = (function(e) {
|
|
var t, n, r;
|
|
(t = h.getRng()), (n = t.startContainer), (r = t.startOffset);
|
|
var o = function(e) {
|
|
return n[e] && 3 === n[e].nodeType;
|
|
};
|
|
return (
|
|
3 === n.nodeType &&
|
|
(r > 0
|
|
? (e = e.replace(/^ /, " "))
|
|
: o("previousSibling") || (e = e.replace(/^ /, " ")),
|
|
r < n.length
|
|
? (e = e.replace(/ (<br>|)$/, " "))
|
|
: o("nextSibling") ||
|
|
(e = e.replace(/( | )(<br>|)$/, " "))),
|
|
e
|
|
);
|
|
})(t)),
|
|
(r = e.parser),
|
|
(p = n.merge),
|
|
(o = zs({ validate: e.settings.validate }, e.schema)),
|
|
(m =
|
|
'<span id="mce_marker" data-mce-type="bookmark">​</span>'),
|
|
(u = { content: t, format: "html", selection: !0, paste: n.paste }),
|
|
(u = e.fire("BeforeSetContent", u)).isDefaultPrevented())
|
|
)
|
|
e.fire("SetContent", {
|
|
content: u.content,
|
|
format: "html",
|
|
selection: !0,
|
|
paste: n.paste
|
|
});
|
|
else {
|
|
-1 === (t = u.content).indexOf("{$caret}") && (t += "{$caret}"),
|
|
(t = t.replace(/\{\$caret\}/, m));
|
|
var y,
|
|
b,
|
|
C,
|
|
x,
|
|
w =
|
|
(l = h.getRng()).startContainer ||
|
|
(l.parentElement ? l.parentElement() : null),
|
|
N = e.getBody();
|
|
w === N &&
|
|
h.isCollapsed() &&
|
|
v.isBlock(N.firstChild) &&
|
|
(y = N.firstChild) &&
|
|
!e.schema.getShortEndedElements()[y.nodeName] &&
|
|
v.isEmpty(N.firstChild) &&
|
|
((l = v.createRng()).setStart(N.firstChild, 0),
|
|
l.setEnd(N.firstChild, 0),
|
|
h.setRng(l)),
|
|
h.isCollapsed() ||
|
|
(e.selection.setRng(Xs(e.selection.getRng())),
|
|
e.getDoc().execCommand("Delete", !1, null),
|
|
(C = (b = h.getRng()).startContainer),
|
|
(x = b.startOffset),
|
|
3 === C.nodeType &&
|
|
b.collapsed &&
|
|
("\xa0" === C.data[x]
|
|
? (C.deleteData(x, 1), /[\u00a0| ]$/.test(t) || (t += " "))
|
|
: "\xa0" === C.data[x - 1] &&
|
|
(C.deleteData(x - 1, 1),
|
|
/[\u00a0| ]$/.test(t) || (t = " " + t))));
|
|
var S,
|
|
k,
|
|
T,
|
|
A = {
|
|
context: (i = h.getNode()).nodeName.toLowerCase(),
|
|
data: n.data,
|
|
insert: !0
|
|
};
|
|
if (
|
|
((s = r.parse(t, A)), !0 === n.paste && Ya(e.schema, s) && Ja(v, i))
|
|
)
|
|
return (
|
|
(l = Ga(o, v, e.selection.getRng(!0), s)),
|
|
e.selection.setRng(l),
|
|
void e.fire("SetContent", u)
|
|
);
|
|
if (
|
|
((function(e) {
|
|
for (var t = e; (t = t.walk()); )
|
|
1 === t.type && t.attr("data-mce-fragment", "1");
|
|
})(s),
|
|
"mce_marker" === (f = s.lastChild).attr("id"))
|
|
)
|
|
for (c = f, f = f.prev; f; f = f.walk(!0))
|
|
if (3 === f.type || !v.isBlock(f.name)) {
|
|
e.schema.isValidChild(f.parent.name, "span") &&
|
|
f.parent.insert(c, f, "br" === f.name);
|
|
break;
|
|
}
|
|
if ((e._selectionOverrides.showBlockCaretContainer(i), A.invalid)) {
|
|
for (
|
|
h.setContent(m),
|
|
i = h.getNode(),
|
|
a = e.getBody(),
|
|
9 === i.nodeType ? (i = f = a) : (f = i);
|
|
f !== a;
|
|
|
|
)
|
|
(i = f), (f = f.parentNode);
|
|
(t = i === a ? a.innerHTML : v.getOuterHTML(i)),
|
|
(t = o.serialize(
|
|
r.parse(
|
|
t.replace(
|
|
/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,
|
|
function() {
|
|
return o.serialize(s);
|
|
}
|
|
)
|
|
)
|
|
)),
|
|
i === a ? v.setHTML(a, t) : v.setOuterHTML(i, t);
|
|
} else
|
|
(t = o.serialize(s)),
|
|
(function(e, t, n) {
|
|
if ("all" === n.getAttribute("data-mce-bogus"))
|
|
n.parentNode.insertBefore(e.dom.createFragment(t), n);
|
|
else {
|
|
var r = n.firstChild,
|
|
o = n.lastChild;
|
|
!r || (r === o && "BR" === r.nodeName)
|
|
? e.dom.setHTML(n, t)
|
|
: e.selection.setContent(t);
|
|
}
|
|
})(e, t, i);
|
|
!(function() {
|
|
if (p) {
|
|
var t = e.getBody(),
|
|
n = new Ns(v);
|
|
Ot.each(v.select("*[data-mce-fragment]"), function(e) {
|
|
for (var r = e.parentNode; r && r !== t; r = r.parentNode)
|
|
g[e.nodeName.toLowerCase()] &&
|
|
n.compare(r, e) &&
|
|
v.remove(e, !0);
|
|
});
|
|
}
|
|
})(),
|
|
(function(t) {
|
|
var n, r, o;
|
|
if (t) {
|
|
if (
|
|
(h.scrollIntoView(t),
|
|
(n = (function(t) {
|
|
for (var n = e.getBody(); t && t !== n; t = t.parentNode)
|
|
if ("false" === e.dom.getContentEditable(t)) return t;
|
|
return null;
|
|
})(t)))
|
|
)
|
|
return v.remove(t), void h.select(n);
|
|
(l = v.createRng()),
|
|
(f = t.previousSibling) && 3 === f.nodeType
|
|
? (l.setStart(f, f.nodeValue.length),
|
|
me.ie ||
|
|
((d = t.nextSibling) &&
|
|
3 === d.nodeType &&
|
|
(f.appendData(d.data), d.parentNode.removeChild(d))))
|
|
: (l.setStartBefore(t), l.setEndBefore(t)),
|
|
(r = v.getParent(t, v.isBlock)),
|
|
v.remove(t),
|
|
r &&
|
|
v.isEmpty(r) &&
|
|
(e.$(r).empty(),
|
|
l.setStart(r, 0),
|
|
l.setEnd(r, 0),
|
|
Ys(r) ||
|
|
r.getAttribute("data-mce-fragment") ||
|
|
!(o = (function(t) {
|
|
var n = ia.fromRangeStart(t);
|
|
if ((n = Ha(e.getBody()).next(n))) return n.toRange();
|
|
})(l))
|
|
? v.add(r, v.create("br", { "data-mce-bogus": "1" }))
|
|
: ((l = o), v.remove(r))),
|
|
h.setRng(l);
|
|
}
|
|
})(v.get("mce_marker")),
|
|
(S = e.getBody()),
|
|
Ot.each(S.getElementsByTagName("*"), function(e) {
|
|
e.removeAttribute("data-mce-fragment");
|
|
}),
|
|
(k = e.dom),
|
|
(T = e.selection.getStart()),
|
|
E.from(k.getParent(T, "td,th"))
|
|
.map(Hn.fromDom)
|
|
.each(Ls),
|
|
e.fire("SetContent", u),
|
|
e.addVisual();
|
|
}
|
|
},
|
|
Js = function(e, t) {
|
|
var n,
|
|
r,
|
|
o =
|
|
"string" != typeof (n = t)
|
|
? ((r = Ot.extend({ paste: n.paste, data: { paste: n.paste } }, n)),
|
|
{ content: n.content, details: r })
|
|
: { content: n, details: {} };
|
|
Gs(e, o.content, o.details);
|
|
},
|
|
Qs = function(e, t, n, r, o) {
|
|
return e(n, r)
|
|
? E.some(n)
|
|
: tr.isFunction(o) && o(n)
|
|
? E.none()
|
|
: t(n, r, o);
|
|
},
|
|
Zs = function(e, t, n) {
|
|
for (
|
|
var r = e.dom(), o = tr.isFunction(n) ? n : y.constant(!1);
|
|
r.parentNode;
|
|
|
|
) {
|
|
r = r.parentNode;
|
|
var i = Hn.fromDom(r);
|
|
if (t(i)) return E.some(i);
|
|
if (o(i)) break;
|
|
}
|
|
return E.none();
|
|
},
|
|
eu = function(e, t) {
|
|
return M.find(
|
|
e.dom().childNodes,
|
|
y.compose(
|
|
t,
|
|
Hn.fromDom
|
|
)
|
|
).map(Hn.fromDom);
|
|
},
|
|
tu = function(e, t) {
|
|
var n = function(e) {
|
|
for (var r = 0; r < e.childNodes.length; r++) {
|
|
if (t(Hn.fromDom(e.childNodes[r])))
|
|
return E.some(Hn.fromDom(e.childNodes[r]));
|
|
var o = n(e.childNodes[r]);
|
|
if (o.isSome()) return o;
|
|
}
|
|
return E.none();
|
|
};
|
|
return n(e.dom());
|
|
},
|
|
nu = {
|
|
first: function(e) {
|
|
return tu(gr.body(), e);
|
|
},
|
|
ancestor: Zs,
|
|
closest: function(e, t, n) {
|
|
return Qs(
|
|
function(e) {
|
|
return t(e);
|
|
},
|
|
Zs,
|
|
e,
|
|
t,
|
|
n
|
|
);
|
|
},
|
|
sibling: function(e, t) {
|
|
var n = e.dom();
|
|
return n.parentNode
|
|
? eu(Hn.fromDom(n.parentNode), function(n) {
|
|
return !Dr.eq(e, n) && t(n);
|
|
})
|
|
: E.none();
|
|
},
|
|
child: eu,
|
|
descendant: tu
|
|
},
|
|
ru = xr("sections", "settings"),
|
|
ou = Un.detect().deviceType.isTouch(),
|
|
iu = ["lists", "autolink", "autosave"],
|
|
au = { theme: "mobile" },
|
|
su = function(e) {
|
|
var t = tr.isArray(e) ? e.join(" ") : e,
|
|
n = M.map(tr.isString(t) ? t.split(" ") : [], On);
|
|
return M.filter(n, function(e) {
|
|
return e.length > 0;
|
|
});
|
|
},
|
|
uu = function(e, t) {
|
|
return e.sections().hasOwnProperty(t);
|
|
},
|
|
cu = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a = su(n.forced_plugins),
|
|
s = su(r.plugins),
|
|
u =
|
|
e && uu(t, "mobile")
|
|
? ((o = s), M.filter(o, y.curry(M.contains, iu)))
|
|
: s,
|
|
c = ((i = u), [].concat(su(a)).concat(su(i)));
|
|
return Ot.extend(r, { plugins: c.join(" ") });
|
|
},
|
|
lu = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v = ((o = ["mobile"]),
|
|
(i = r),
|
|
(a = sr.bifilter(i, function(e, t) {
|
|
return M.contains(o, t);
|
|
})),
|
|
ru(a.t, a.f)),
|
|
y = Ot.extend(
|
|
t,
|
|
n,
|
|
v.settings(),
|
|
((p = e),
|
|
(h = (g = v).settings().inline),
|
|
p && uu(g, "mobile") && !h
|
|
? ((l = "mobile"),
|
|
(f = au),
|
|
(d = v.sections()),
|
|
(m = d.hasOwnProperty(l) ? d[l] : {}),
|
|
Ot.extend({}, f, m))
|
|
: {}),
|
|
{
|
|
validate: !0,
|
|
content_editable: v.settings().inline,
|
|
external_plugins: ((s = n),
|
|
(u = v.settings()),
|
|
(c = u.external_plugins ? u.external_plugins : {}),
|
|
s && s.external_plugins ? Ot.extend({}, s.external_plugins, c) : c)
|
|
}
|
|
);
|
|
return cu(e, v, n, y);
|
|
},
|
|
fu = function(e, t, n) {
|
|
return E.from(t.settings[n]).filter(e);
|
|
},
|
|
du = y.curry(fu, tr.isString),
|
|
mu = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a = t in e.settings ? e.settings[t] : n;
|
|
return "hash" === r
|
|
? ((i = {}),
|
|
"string" == typeof (o = a)
|
|
? M.each(
|
|
o.indexOf("=") > 0
|
|
? o.split(/[;,](?![^=;,]*(?:[;,]|$))/)
|
|
: o.split(","),
|
|
function(e) {
|
|
(e = e.split("=")).length > 1
|
|
? (i[Ot.trim(e[0])] = Ot.trim(e[1]))
|
|
: (i[Ot.trim(e[0])] = Ot.trim(e));
|
|
}
|
|
)
|
|
: (i = o),
|
|
i)
|
|
: "string" === r
|
|
? fu(tr.isString, e, t).getOr(n)
|
|
: "number" === r
|
|
? fu(tr.isNumber, e, t).getOr(n)
|
|
: "boolean" === r
|
|
? fu(tr.isBoolean, e, t).getOr(n)
|
|
: "object" === r
|
|
? fu(tr.isObject, e, t).getOr(n)
|
|
: "array" === r
|
|
? fu(tr.isArray, e, t).getOr(n)
|
|
: "function" === r
|
|
? fu(tr.isFunction, e, t).getOr(n)
|
|
: a;
|
|
},
|
|
pu = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,
|
|
gu = function(e) {
|
|
return pu.test(e);
|
|
},
|
|
hu = function(e, t) {
|
|
var n = t.container(),
|
|
r = t.offset();
|
|
return e
|
|
? mi.isCaretContainerInline(n)
|
|
? vo.isText(n.nextSibling)
|
|
? new ia(n.nextSibling, 0)
|
|
: ia.after(n)
|
|
: mi.isBeforeInline(t)
|
|
? new ia(n, r + 1)
|
|
: t
|
|
: mi.isCaretContainerInline(n)
|
|
? vo.isText(n.previousSibling)
|
|
? new ia(n.previousSibling, n.previousSibling.data.length)
|
|
: ia.before(n)
|
|
: mi.isAfterInline(t)
|
|
? new ia(n, r - 1)
|
|
: t;
|
|
},
|
|
vu = {
|
|
isInlineTarget: function(e, t) {
|
|
var n = du(e, "inline_boundaries_selector").getOr("a[href],code");
|
|
return _r.is(Hn.fromDom(t), n);
|
|
},
|
|
findRootInline: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a = ((r = e),
|
|
(o = t),
|
|
(i = n),
|
|
M.filter(Xo.DOM.getParents(i.container(), "*", o), r));
|
|
return E.from(a[a.length - 1]);
|
|
},
|
|
isRtl: function(e) {
|
|
return (
|
|
"rtl" === Xo.DOM.getStyle(e, "direction", !0) || gu(e.textContent)
|
|
);
|
|
},
|
|
isAtZwsp: function(e) {
|
|
return mi.isBeforeInline(e) || mi.isAfterInline(e);
|
|
},
|
|
normalizePosition: hu,
|
|
normalizeForwards: y.curry(hu, !0),
|
|
normalizeBackwards: y.curry(hu, !1),
|
|
hasSameParentBlock: function(e, t, n) {
|
|
var r = _a.getParentBlock(t, e),
|
|
o = _a.getParentBlock(n, e);
|
|
return r && r === o;
|
|
}
|
|
},
|
|
yu = function(e, t) {
|
|
return Dr.contains(e, t)
|
|
? nu.closest(
|
|
t,
|
|
function(e) {
|
|
return io.isTextBlock(e) || io.isListItem(e);
|
|
},
|
|
((n = e),
|
|
function(e) {
|
|
return Dr.eq(n, Hn.fromDom(e.dom().parentNode));
|
|
})
|
|
)
|
|
: E.none();
|
|
var n;
|
|
},
|
|
bu = function(e) {
|
|
var t, n, r;
|
|
e.dom.isEmpty(e.getBody()) &&
|
|
(e.setContent(""),
|
|
(n = (t = e).getBody()),
|
|
(r = n.firstChild && t.dom.isBlock(n.firstChild) ? n.firstChild : n),
|
|
t.selection.setCursorLocation(r, 0));
|
|
},
|
|
Cu = function(e, t, n) {
|
|
return hs([Ws.firstPositionIn(n), Ws.lastPositionIn(n)], function(r, o) {
|
|
var i = vu.normalizePosition(!0, r),
|
|
a = vu.normalizePosition(!1, o),
|
|
s = vu.normalizePosition(!1, t);
|
|
return e
|
|
? Ws.nextPosition(n, s)
|
|
.map(function(e) {
|
|
return e.isEqual(a) && t.isEqual(i);
|
|
})
|
|
.getOr(!1)
|
|
: Ws.prevPosition(n, s)
|
|
.map(function(e) {
|
|
return e.isEqual(i) && t.isEqual(a);
|
|
})
|
|
.getOr(!1);
|
|
}).getOr(!0);
|
|
},
|
|
xu = function(e, t, n) {
|
|
return nu.ancestor(
|
|
e,
|
|
function(e) {
|
|
return _r.is(e, t);
|
|
},
|
|
n
|
|
);
|
|
},
|
|
wu = xu,
|
|
Nu = function(e, t) {
|
|
return _r.one(t, e);
|
|
},
|
|
Eu = function(e, t, n) {
|
|
return Qs(_r.is, xu, e, t, n);
|
|
},
|
|
Su = function(e, t, n) {
|
|
return wu(e, t, n).isSome();
|
|
},
|
|
ku = function(e, t) {
|
|
return (
|
|
vo.isText(t) &&
|
|
/^[ \t\r\n]*$/.test(t.data) &&
|
|
!1 ===
|
|
((n = e),
|
|
(r = t),
|
|
(o = Hn.fromDom(n)),
|
|
(i = Hn.fromDom(r)),
|
|
Su(i, "pre,code", y.curry(Dr.eq, o)))
|
|
);
|
|
var n, r, o, i;
|
|
},
|
|
Tu = function(e, t) {
|
|
return (
|
|
(Ei(t) && !1 === ku(e, t)) ||
|
|
((n = t),
|
|
vo.isElement(n) && "A" === n.nodeName && n.hasAttribute("name")) ||
|
|
Au(t)
|
|
);
|
|
var n;
|
|
},
|
|
Au = vo.hasAttribute("data-mce-bookmark"),
|
|
_u = vo.hasAttribute("data-mce-bogus"),
|
|
Bu = vo.hasAttributeValue("data-mce-bogus", "all"),
|
|
Ru = function(e) {
|
|
return (function(e) {
|
|
var t,
|
|
n,
|
|
r = 0;
|
|
if (Tu(e, e)) return !1;
|
|
if (!(n = e.firstChild)) return !0;
|
|
t = new to(n, e);
|
|
do {
|
|
if (Bu(n)) n = t.next(!0);
|
|
else if (_u(n)) n = t.next();
|
|
else if (vo.isBr(n)) r++, (n = t.next());
|
|
else {
|
|
if (Tu(e, n)) return !1;
|
|
n = t.next();
|
|
}
|
|
} while (n);
|
|
return r <= 1;
|
|
})(e.dom());
|
|
},
|
|
Du = xr("block", "position"),
|
|
Ou = xr("from", "to"),
|
|
Pu = function(e, t) {
|
|
var n = Hn.fromDom(e),
|
|
r = Hn.fromDom(t.container());
|
|
return yu(n, r).map(function(e) {
|
|
return Du(e, t);
|
|
});
|
|
},
|
|
Iu = function(e, t, n) {
|
|
var r = Pu(e, ia.fromRangeStart(n)),
|
|
o = r.bind(function(n) {
|
|
return Ws.fromPosition(t, e, n.position()).bind(function(n) {
|
|
return Pu(e, n).map(function(n) {
|
|
return (
|
|
(r = e),
|
|
(o = t),
|
|
(i = n),
|
|
vo.isBr(i.position().getNode()) && !1 === Ru(i.block())
|
|
? Ws.positionIn(!1, i.block().dom())
|
|
.bind(function(e) {
|
|
return e.isEqual(i.position())
|
|
? Ws.fromPosition(o, r, e).bind(function(e) {
|
|
return Pu(r, e);
|
|
})
|
|
: E.some(i);
|
|
})
|
|
.getOr(i)
|
|
: i
|
|
);
|
|
var r, o, i;
|
|
});
|
|
});
|
|
});
|
|
return hs([r, o], Ou).filter(function(e) {
|
|
return (
|
|
(r = e),
|
|
!1 === Dr.eq(r.from().block(), r.to().block()) &&
|
|
((n = e),
|
|
Ur.parent(n.from().block())
|
|
.bind(function(e) {
|
|
return Ur.parent(n.to().block()).filter(function(t) {
|
|
return Dr.eq(e, t);
|
|
});
|
|
})
|
|
.isSome()) &&
|
|
((t = e),
|
|
!1 === vo.isContentEditableFalse(t.from().block()) &&
|
|
!1 === vo.isContentEditableFalse(t.to().block()))
|
|
);
|
|
var t, n, r;
|
|
});
|
|
},
|
|
Lu = function(e, t, n) {
|
|
return n.collapsed ? Iu(e, t, n) : E.none();
|
|
},
|
|
Mu = function(e, t, n) {
|
|
return Dr.contains(t, e)
|
|
? Ur.parents(e, function(e) {
|
|
return n(e) || Dr.eq(e, t);
|
|
}).slice(0, -1)
|
|
: [];
|
|
},
|
|
Fu = function(e, t) {
|
|
return Mu(e, t, y.constant(!1));
|
|
},
|
|
zu = Fu,
|
|
Uu = function(e, t) {
|
|
return [e].concat(Fu(e, t));
|
|
},
|
|
Vu = function(e) {
|
|
var t,
|
|
n,
|
|
r = ((t = e),
|
|
(n = Ur.children(t)),
|
|
M.findIndex(n, io.isBlock).fold(
|
|
function() {
|
|
return n;
|
|
},
|
|
function(e) {
|
|
return n.slice(0, e);
|
|
}
|
|
));
|
|
return (
|
|
M.each(r, function(e) {
|
|
Bs.remove(e);
|
|
}),
|
|
r
|
|
);
|
|
},
|
|
Hu = function(e, t) {
|
|
Ws.positionIn(e, t.dom()).each(function(e) {
|
|
var t = e.getNode();
|
|
vo.isBr(t) && Bs.remove(Hn.fromDom(t));
|
|
});
|
|
},
|
|
qu = function(e, t) {
|
|
var n = Uu(t, e);
|
|
return M.find(n.reverse(), Ru).each(Bs.remove);
|
|
},
|
|
ju = function(e, t) {
|
|
return Dr.contains(t, e)
|
|
? Ur.parent(e).bind(function(n) {
|
|
return Dr.eq(n, t)
|
|
? E.some(e)
|
|
: ((r = t),
|
|
(o = e),
|
|
(i = Ur.parents(o, function(e) {
|
|
return Dr.eq(e, r);
|
|
})),
|
|
E.from(i[i.length - 2]));
|
|
var r, o, i;
|
|
})
|
|
: E.none();
|
|
},
|
|
$u = function(e, t, n) {
|
|
if (Ru(n))
|
|
return Bs.remove(n), Ru(t) && Is(t), Ws.firstPositionIn(t.dom());
|
|
Hu(!0, t), Hu(!1, n);
|
|
var r = Vu(t);
|
|
return ju(t, n).fold(
|
|
function() {
|
|
qu(e, t);
|
|
var o = Ws.lastPositionIn(n.dom());
|
|
return (
|
|
M.each(r, function(e) {
|
|
ks.append(n, e);
|
|
}),
|
|
o
|
|
);
|
|
},
|
|
function(o) {
|
|
var i = Ws.prevPosition(n.dom(), ia.before(o.dom()));
|
|
return (
|
|
M.each(r, function(e) {
|
|
ks.before(o, e);
|
|
}),
|
|
qu(e, t),
|
|
i
|
|
);
|
|
}
|
|
);
|
|
},
|
|
Wu = function(e, t, n, r) {
|
|
return t ? $u(e, r, n) : $u(e, n, r);
|
|
},
|
|
Ku = function(e, t) {
|
|
var n,
|
|
r = Hn.fromDom(e.getBody());
|
|
return (
|
|
(n = Lu(r.dom(), t, e.selection.getRng()).bind(function(e) {
|
|
return Wu(r, t, e.from().block(), e.to().block());
|
|
})).each(function(t) {
|
|
e.selection.setRng(t.toRange());
|
|
}),
|
|
n.isSome()
|
|
);
|
|
},
|
|
Xu = function(e, t) {
|
|
var n = Hn.fromDom(t),
|
|
r = y.curry(Dr.eq, e);
|
|
return nu.ancestor(n, io.isTableCell, r).isSome();
|
|
},
|
|
Yu = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = Ws.prevPosition(e.dom(), ia.fromRangeStart(t)).isNone(),
|
|
i = Ws.nextPosition(e.dom(), ia.fromRangeEnd(t)).isNone();
|
|
return (
|
|
!(Xu((n = e), (r = t).startContainer) || Xu(n, r.endContainer)) &&
|
|
o &&
|
|
i
|
|
);
|
|
},
|
|
Gu = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i = Hn.fromDom(e.getBody()),
|
|
a = e.selection.getRng();
|
|
return Yu(i, a)
|
|
? ((o = e).setContent(""), o.selection.setCursorLocation(), !0)
|
|
: ((t = i),
|
|
(n = e.selection),
|
|
(r = n.getRng()),
|
|
hs(
|
|
[
|
|
yu(t, Hn.fromDom(r.startContainer)),
|
|
yu(t, Hn.fromDom(r.endContainer))
|
|
],
|
|
function(e, o) {
|
|
return (
|
|
!1 === Dr.eq(e, o) &&
|
|
(r.deleteContents(),
|
|
Wu(t, !0, e, o).each(function(e) {
|
|
n.setRng(e.toRange());
|
|
}),
|
|
!0)
|
|
);
|
|
}
|
|
).getOr(!1));
|
|
},
|
|
Ju = function(e, t) {
|
|
return !e.selection.isCollapsed() && Gu(e);
|
|
},
|
|
Qu = function(e) {
|
|
if (!tr.isArray(e)) throw new Error("cases must be an array");
|
|
if (0 === e.length) throw new Error("there must be at least one case");
|
|
var t = [],
|
|
n = {};
|
|
return (
|
|
M.each(e, function(r, o) {
|
|
var i = sr.keys(r);
|
|
if (1 !== i.length) throw new Error("one and only one name per case");
|
|
var a = i[0],
|
|
s = r[a];
|
|
if (n[a] !== undefined)
|
|
throw new Error("duplicate key detected:" + a);
|
|
if ("cata" === a)
|
|
throw new Error("cannot have a case named cata (sorry)");
|
|
if (!tr.isArray(s))
|
|
throw new Error("case arguments must be an array");
|
|
t.push(a),
|
|
(n[a] = function() {
|
|
var n = arguments.length;
|
|
if (n !== s.length)
|
|
throw new Error(
|
|
"Wrong number of arguments to case " +
|
|
a +
|
|
". Expected " +
|
|
s.length +
|
|
" (" +
|
|
s +
|
|
"), got " +
|
|
n
|
|
);
|
|
for (var r = new Array(n), i = 0; i < r.length; i++)
|
|
r[i] = arguments[i];
|
|
return {
|
|
fold: function() {
|
|
if (arguments.length !== e.length)
|
|
throw new Error(
|
|
"Wrong number of arguments to fold. Expected " +
|
|
e.length +
|
|
", got " +
|
|
arguments.length
|
|
);
|
|
return arguments[o].apply(null, r);
|
|
},
|
|
match: function(e) {
|
|
var n = sr.keys(e);
|
|
if (t.length !== n.length)
|
|
throw new Error(
|
|
"Wrong number of arguments to match. Expected: " +
|
|
t.join(",") +
|
|
"\nActual: " +
|
|
n.join(",")
|
|
);
|
|
if (
|
|
!M.forall(t, function(e) {
|
|
return M.contains(n, e);
|
|
})
|
|
)
|
|
throw new Error(
|
|
"Not all branches were specified when using match. Specified: " +
|
|
n.join(", ") +
|
|
"\nRequired: " +
|
|
t.join(", ")
|
|
);
|
|
return e[a].apply(null, r);
|
|
},
|
|
log: function(e) {
|
|
console.log(e, {
|
|
constructors: t,
|
|
constructor: a,
|
|
params: r
|
|
});
|
|
}
|
|
};
|
|
});
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
Zu = Qu([
|
|
{ remove: ["element"] },
|
|
{ moveToElement: ["element"] },
|
|
{ moveToPosition: ["position"] }
|
|
]),
|
|
ec = function(e, t, n, r) {
|
|
var o = r.getNode(!1 === t);
|
|
return yu(Hn.fromDom(e), Hn.fromDom(n.getNode()))
|
|
.map(function(e) {
|
|
return Ru(e) ? Zu.remove(e.dom()) : Zu.moveToElement(o);
|
|
})
|
|
.orThunk(function() {
|
|
return E.some(Zu.moveToElement(o));
|
|
});
|
|
},
|
|
tc = function(e, t, n) {
|
|
return Ws.fromPosition(t, e, n).bind(function(r) {
|
|
return t && vo.isContentEditableFalse(r.getNode())
|
|
? ec(e, t, n, r)
|
|
: !1 === t && vo.isContentEditableFalse(r.getNode(!0))
|
|
? ec(e, t, n, r)
|
|
: t && _a.isAfterContentEditableFalse(n)
|
|
? E.some(Zu.moveToPosition(r))
|
|
: !1 === t && _a.isBeforeContentEditableFalse(n)
|
|
? E.some(Zu.moveToPosition(r))
|
|
: E.none();
|
|
});
|
|
},
|
|
nc = function(e, t, n) {
|
|
return (
|
|
(i = t),
|
|
(a = n.getNode(!1 === i)),
|
|
(s = i ? "after" : "before"),
|
|
vo.isElement(a) && a.getAttribute("data-mce-caret") === s
|
|
? ((r = t),
|
|
(o = n.getNode(!1 === t)),
|
|
r && vo.isContentEditableFalse(o.nextSibling)
|
|
? E.some(Zu.moveToElement(o.nextSibling))
|
|
: !1 === r && vo.isContentEditableFalse(o.previousSibling)
|
|
? E.some(Zu.moveToElement(o.previousSibling))
|
|
: E.none()).fold(function() {
|
|
return tc(e, t, n);
|
|
}, E.some)
|
|
: tc(e, t, n).bind(function(t) {
|
|
return (
|
|
(r = e),
|
|
(o = n),
|
|
t.fold(
|
|
function(e) {
|
|
return E.some(Zu.remove(e));
|
|
},
|
|
function(e) {
|
|
return E.some(Zu.moveToElement(e));
|
|
},
|
|
function(e) {
|
|
return _a.isInSameBlock(o, e, r)
|
|
? E.none()
|
|
: E.some(Zu.moveToPosition(e));
|
|
}
|
|
)
|
|
);
|
|
var r, o;
|
|
})
|
|
);
|
|
var r, o, i, a, s;
|
|
},
|
|
rc = function(e, t, n) {
|
|
var r = _a.normalizeRange(t ? 1 : -1, e, n),
|
|
o = ia.fromRangeStart(r);
|
|
return !1 === t && _a.isAfterContentEditableFalse(o)
|
|
? E.some(Zu.remove(o.getNode(!0)))
|
|
: t && _a.isBeforeContentEditableFalse(o)
|
|
? E.some(Zu.remove(o.getNode()))
|
|
: nc(e, t, o);
|
|
},
|
|
oc = function(e, t) {
|
|
return (
|
|
(r = e),
|
|
(o = (n = t).container()),
|
|
(i = n.offset()),
|
|
!1 === ia.isTextPosition(n) &&
|
|
o === r.parentNode &&
|
|
i > ia.before(r).offset()
|
|
? new ia(t.container(), t.offset() - 1)
|
|
: t
|
|
);
|
|
var n, r, o, i;
|
|
},
|
|
ic = function(e) {
|
|
return Ei(e.previousSibling)
|
|
? E.some(
|
|
((t = e.previousSibling),
|
|
vo.isText(t) ? new ia(t, t.data.length) : ia.after(t))
|
|
)
|
|
: e.previousSibling
|
|
? Ws.lastPositionIn(e.previousSibling)
|
|
: E.none();
|
|
var t;
|
|
},
|
|
ac = function(e) {
|
|
return Ei(e.nextSibling)
|
|
? E.some(
|
|
((t = e.nextSibling), vo.isText(t) ? new ia(t, 0) : ia.before(t))
|
|
)
|
|
: e.nextSibling
|
|
? Ws.firstPositionIn(e.nextSibling)
|
|
: E.none();
|
|
var t;
|
|
},
|
|
sc = function(e, t) {
|
|
return ic(t)
|
|
.orThunk(function() {
|
|
return ac(t);
|
|
})
|
|
.orThunk(function() {
|
|
return (
|
|
(n = e),
|
|
(r = t),
|
|
(o = ia.before(
|
|
r.previousSibling ? r.previousSibling : r.parentNode
|
|
)),
|
|
Ws.prevPosition(n, o).fold(function() {
|
|
return Ws.nextPosition(n, ia.after(r));
|
|
}, E.some)
|
|
);
|
|
var n, r, o;
|
|
});
|
|
},
|
|
uc = function(e, t) {
|
|
return ac(t)
|
|
.orThunk(function() {
|
|
return ic(t);
|
|
})
|
|
.orThunk(function() {
|
|
return (
|
|
(n = e),
|
|
(r = t),
|
|
Ws.nextPosition(n, ia.after(r)).fold(function() {
|
|
return Ws.prevPosition(n, ia.before(r));
|
|
}, E.some)
|
|
);
|
|
var n, r;
|
|
});
|
|
},
|
|
cc = function(e, t, n) {
|
|
return ((r = e), (o = t), (i = n), r ? uc(o, i) : sc(o, i)).map(
|
|
y.curry(oc, n)
|
|
);
|
|
var r, o, i;
|
|
},
|
|
lc = function(e, t, n) {
|
|
n.fold(
|
|
function() {
|
|
e.focus();
|
|
},
|
|
function(n) {
|
|
e.selection.setRng(n.toRange(), t);
|
|
}
|
|
);
|
|
},
|
|
fc = function(e, t) {
|
|
return t && e.schema.getBlockElements().hasOwnProperty(Zn.name(t));
|
|
},
|
|
dc = function(e) {
|
|
if (Ru(e)) {
|
|
var t = Hn.fromHtml('<br data-mce-bogus="1">');
|
|
return Bs.empty(e), ks.append(e, t), E.some(ia.before(t.dom()));
|
|
}
|
|
return E.none();
|
|
},
|
|
mc = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a = cc(t, e.getBody(), n.dom()),
|
|
s = nu.ancestor(
|
|
n,
|
|
y.curry(fc, e),
|
|
((r = e.getBody()),
|
|
function(e) {
|
|
return e.dom() === r;
|
|
})
|
|
),
|
|
u = ((o = n),
|
|
(i = a),
|
|
hs([Ur.prevSibling(o), Ur.nextSibling(o), i], function(e, t, n) {
|
|
var r,
|
|
i = e.dom(),
|
|
a = t.dom();
|
|
return vo.isText(i) && vo.isText(a)
|
|
? ((r = i.data.length),
|
|
i.appendData(a.data),
|
|
Bs.remove(t),
|
|
Bs.remove(o),
|
|
n.container() === a ? new ia(i, r) : n)
|
|
: (Bs.remove(o), n);
|
|
}).orThunk(function() {
|
|
return Bs.remove(o), i;
|
|
}));
|
|
e.dom.isEmpty(e.getBody())
|
|
? (e.setContent(""), e.selection.setCursorLocation())
|
|
: s.bind(dc).fold(
|
|
function() {
|
|
lc(e, t, u);
|
|
},
|
|
function(n) {
|
|
lc(e, t, E.some(n));
|
|
}
|
|
);
|
|
},
|
|
pc = function(e, t) {
|
|
return rc(e.getBody(), t, e.selection.getRng())
|
|
.map(function(n) {
|
|
return n.fold(
|
|
((a = e),
|
|
(s = t),
|
|
function(e) {
|
|
return (
|
|
a._selectionOverrides.hideFakeCaret(),
|
|
mc(a, s, Hn.fromDom(e)),
|
|
!0
|
|
);
|
|
}),
|
|
((o = e),
|
|
(i = t),
|
|
function(e) {
|
|
var t = i ? ia.before(e) : ia.after(e);
|
|
return o.selection.setRng(t.toRange()), !0;
|
|
}),
|
|
((r = e),
|
|
function(e) {
|
|
return r.selection.setRng(e.toRange()), !0;
|
|
})
|
|
);
|
|
var r, o, i, a, s;
|
|
})
|
|
.getOr(!1);
|
|
},
|
|
gc = function(e, t) {
|
|
var n,
|
|
r = e.selection.getNode();
|
|
return (
|
|
!!vo.isContentEditableFalse(r) &&
|
|
((n = Hn.fromDom(e.getBody())),
|
|
M.each(Os(n, ".mce-offscreen-selection"), Bs.remove),
|
|
mc(e, t, Hn.fromDom(e.selection.getNode())),
|
|
bu(e),
|
|
!0)
|
|
);
|
|
},
|
|
hc = function(e, t) {
|
|
return e.selection.isCollapsed() ? pc(e, t) : gc(e, t);
|
|
},
|
|
vc = function(e) {
|
|
var t,
|
|
n = (function(e, t) {
|
|
for (; t && t !== e; ) {
|
|
if (vo.isContentEditableTrue(t) || vo.isContentEditableFalse(t))
|
|
return t;
|
|
t = t.parentNode;
|
|
}
|
|
return null;
|
|
})(e.getBody(), e.selection.getNode());
|
|
return (
|
|
vo.isContentEditableTrue(n) &&
|
|
e.dom.isBlock(n) &&
|
|
e.dom.isEmpty(n) &&
|
|
((t = e.dom.create("br", { "data-mce-bogus": "1" })),
|
|
e.dom.setHTML(n, ""),
|
|
n.appendChild(t),
|
|
e.selection.setRng(ia.before(t).toRange())),
|
|
!0
|
|
);
|
|
},
|
|
yc = vo.isText,
|
|
bc = function(e) {
|
|
return yc(e) && e.data[0] === oi;
|
|
},
|
|
Cc = function(e) {
|
|
return yc(e) && e.data[e.data.length - 1] === oi;
|
|
},
|
|
xc = function(e) {
|
|
return e.ownerDocument.createTextNode(oi);
|
|
},
|
|
wc = function(e, t) {
|
|
return e
|
|
? (function(e) {
|
|
if (yc(e.previousSibling))
|
|
return Cc(e.previousSibling)
|
|
? e.previousSibling
|
|
: (e.previousSibling.appendData(oi), e.previousSibling);
|
|
if (yc(e)) return bc(e) ? e : (e.insertData(0, oi), e);
|
|
var t = xc(e);
|
|
return e.parentNode.insertBefore(t, e), t;
|
|
})(t)
|
|
: (function(e) {
|
|
if (yc(e.nextSibling))
|
|
return bc(e.nextSibling)
|
|
? e.nextSibling
|
|
: (e.nextSibling.insertData(0, oi), e.nextSibling);
|
|
if (yc(e)) return Cc(e) ? e : (e.appendData(oi), e);
|
|
var t = xc(e);
|
|
return (
|
|
e.nextSibling
|
|
? e.parentNode.insertBefore(t, e.nextSibling)
|
|
: e.parentNode.appendChild(t),
|
|
t
|
|
);
|
|
})(t);
|
|
},
|
|
Nc = {
|
|
insertInline: wc,
|
|
insertInlineBefore: y.curry(wc, !0),
|
|
insertInlineAfter: y.curry(wc, !1)
|
|
},
|
|
Ec = vo.isElement,
|
|
Sc = vo.isText,
|
|
kc = function(e) {
|
|
var t = e.parentNode;
|
|
t && t.removeChild(e);
|
|
},
|
|
Tc = function(e, t) {
|
|
0 === t.length ? kc(e) : (e.nodeValue = t);
|
|
},
|
|
Ac = function(e) {
|
|
var t = ii(e);
|
|
return { count: e.length - t.length, text: t };
|
|
},
|
|
_c = function(e, t) {
|
|
return Dc(e), t;
|
|
},
|
|
Bc = function(e, t) {
|
|
return t.container() === e
|
|
? ((r = t),
|
|
(o = Ac((n = e).data.substr(0, r.offset()))),
|
|
(i = Ac(n.data.substr(r.offset()))),
|
|
(a = o.text + i.text).length > 0
|
|
? (Tc(n, a), new ia(n, r.offset() - o.count))
|
|
: r)
|
|
: _c(e, t);
|
|
var n, r, o, i, a;
|
|
},
|
|
Rc = function(e, t) {
|
|
return t.container() === e.parentNode
|
|
? ((n = e),
|
|
(o = (r = t).container()),
|
|
(i = M.indexOf(o.childNodes, n)
|
|
.map(function(e) {
|
|
return e < r.offset() ? new ia(o, r.offset() - 1) : r;
|
|
})
|
|
.getOr(r)),
|
|
Dc(n),
|
|
i)
|
|
: _c(e, t);
|
|
var n, r, o, i;
|
|
},
|
|
Dc = function(e) {
|
|
if (
|
|
(Ec(e) &&
|
|
mi.isCaretContainer(e) &&
|
|
(mi.hasContent(e) ? e.removeAttribute("data-mce-caret") : kc(e)),
|
|
Sc(e))
|
|
) {
|
|
var t = ii(
|
|
(function(e) {
|
|
try {
|
|
return e.nodeValue;
|
|
} catch (t) {
|
|
return "";
|
|
}
|
|
})(e)
|
|
);
|
|
Tc(e, t);
|
|
}
|
|
},
|
|
Oc = {
|
|
removeAndReposition: function(e, t) {
|
|
return ia.isTextPosition(t) ? Bc(e, t) : Rc(e, t);
|
|
},
|
|
remove: Dc
|
|
},
|
|
Pc = function(e, t) {
|
|
return vo.isText(e.container())
|
|
? Nc.insertInline(t, e.container())
|
|
: Nc.insertInline(t, e.getNode());
|
|
},
|
|
Ic = function(e, t) {
|
|
var n = t.get();
|
|
return n && e.container() === n && mi.isCaretContainerInline(n);
|
|
},
|
|
Lc = function(e, t) {
|
|
return t.fold(
|
|
function(t) {
|
|
Oc.remove(e.get());
|
|
var n = Nc.insertInlineBefore(t);
|
|
return e.set(n), E.some(new ia(n, n.length - 1));
|
|
},
|
|
function(t) {
|
|
return Ws.firstPositionIn(t).map(function(t) {
|
|
if (Ic(t, e)) return new ia(e.get(), 1);
|
|
Oc.remove(e.get());
|
|
var n = Pc(t, !0);
|
|
return e.set(n), new ia(n, 1);
|
|
});
|
|
},
|
|
function(t) {
|
|
return Ws.lastPositionIn(t).map(function(t) {
|
|
if (Ic(t, e)) return new ia(e.get(), e.get().length - 1);
|
|
Oc.remove(e.get());
|
|
var n = Pc(t, !1);
|
|
return e.set(n), new ia(n, n.length - 1);
|
|
});
|
|
},
|
|
function(t) {
|
|
Oc.remove(e.get());
|
|
var n = Nc.insertInlineAfter(t);
|
|
return e.set(n), E.some(new ia(n, 1));
|
|
}
|
|
);
|
|
},
|
|
Mc = function(e) {
|
|
return e && /^(IMG)$/.test(e.nodeName);
|
|
},
|
|
Fc = function(e) {
|
|
return e && 3 === e.nodeType && /^([\t \r\n]+|)$/.test(e.nodeValue);
|
|
},
|
|
zc = function(e, t, n) {
|
|
return (
|
|
("color" !== n && "backgroundColor" !== n) || (t = e.toHex(t)),
|
|
"fontWeight" === n && 700 === t && (t = "bold"),
|
|
"fontFamily" === n &&
|
|
(t = t.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")),
|
|
"" + t
|
|
);
|
|
},
|
|
Uc = {
|
|
isInlineBlock: Mc,
|
|
moveStart: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a = n.startContainer,
|
|
s = n.startOffset;
|
|
if (
|
|
(n.startContainer !== n.endContainer ||
|
|
!Mc(n.startContainer.childNodes[n.startOffset])) &&
|
|
(3 === a.nodeType &&
|
|
s >= a.nodeValue.length &&
|
|
((s = e.nodeIndex(a)), (a = a.parentNode)),
|
|
1 === a.nodeType)
|
|
)
|
|
for (
|
|
s < (i = a.childNodes).length
|
|
? ((a = i[s]), (r = new to(a, e.getParent(a, e.isBlock))))
|
|
: ((a = i[i.length - 1]),
|
|
(r = new to(a, e.getParent(a, e.isBlock))).next(!0)),
|
|
o = r.current();
|
|
o;
|
|
o = r.next()
|
|
)
|
|
if (3 === o.nodeType && !Fc(o))
|
|
return n.setStart(o, 0), void t.setRng(n);
|
|
},
|
|
getNonWhiteSpaceSibling: function(e, t, n) {
|
|
if (e)
|
|
for (
|
|
t = t ? "nextSibling" : "previousSibling", e = n ? e : e[t];
|
|
e;
|
|
e = e[t]
|
|
)
|
|
if (1 === e.nodeType || !Fc(e)) return e;
|
|
},
|
|
isTextBlock: function(e, t) {
|
|
return (
|
|
t.nodeType && (t = t.nodeName),
|
|
!!e.schema.getTextBlockElements()[t.toLowerCase()]
|
|
);
|
|
},
|
|
isValid: function(e, t, n) {
|
|
return e.schema.isValidChild(t, n);
|
|
},
|
|
isWhiteSpaceNode: Fc,
|
|
replaceVars: function(e, t) {
|
|
return (
|
|
"string" != typeof e
|
|
? (e = e(t))
|
|
: t &&
|
|
(e = e.replace(/%(\w+)/g, function(e, n) {
|
|
return t[n] || e;
|
|
})),
|
|
e
|
|
);
|
|
},
|
|
isEq: function(e, t) {
|
|
return (
|
|
(e = e || ""),
|
|
(t = t || ""),
|
|
(e = "" + (e.nodeName || e)),
|
|
(t = "" + (t.nodeName || t)),
|
|
e.toLowerCase() === t.toLowerCase()
|
|
);
|
|
},
|
|
normalizeStyleValue: zc,
|
|
getStyle: function(e, t, n) {
|
|
return zc(e, e.getStyle(t, n), n);
|
|
},
|
|
getTextDecoration: function(e, t) {
|
|
var n;
|
|
return (
|
|
e.getParent(t, function(t) {
|
|
return (n = e.getStyle(t, "text-decoration")) && "none" !== n;
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
getParents: function(e, t, n) {
|
|
return e.getParents(t, n, e.getRoot());
|
|
}
|
|
},
|
|
Vc = xs.isBookmarkNode,
|
|
Hc = Uc.getParents,
|
|
qc = Uc.isWhiteSpaceNode,
|
|
jc = Uc.isTextBlock,
|
|
$c = function(e, t) {
|
|
for (
|
|
void 0 === t && (t = 3 === e.nodeType ? e.length : e.childNodes.length);
|
|
e && e.hasChildNodes();
|
|
|
|
)
|
|
(e = e.childNodes[t]) &&
|
|
(t = 3 === e.nodeType ? e.length : e.childNodes.length);
|
|
return { node: e, offset: t };
|
|
},
|
|
Wc = function(e, t) {
|
|
for (var n = t; n; ) {
|
|
if (1 === n.nodeType && e.getContentEditable(n))
|
|
return "false" === e.getContentEditable(n) ? n : t;
|
|
n = n.parentNode;
|
|
}
|
|
return t;
|
|
},
|
|
Kc = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a = n.nodeValue;
|
|
return (
|
|
void 0 === r && (r = e ? a.length : 0),
|
|
e
|
|
? -1 ===
|
|
(o =
|
|
(o = a.lastIndexOf(" ", r)) > (i = a.lastIndexOf("\xa0", r))
|
|
? o
|
|
: i) ||
|
|
t ||
|
|
o++
|
|
: ((o = a.indexOf(" ", r)),
|
|
(i = a.indexOf("\xa0", r)),
|
|
(o = -1 !== o && (-1 === i || o < i) ? o : i)),
|
|
o
|
|
);
|
|
},
|
|
Xc = function(e, t, n, r, o, i) {
|
|
var a, s, u, c;
|
|
if (3 === n.nodeType) {
|
|
if (-1 !== (u = Kc(o, i, n, r))) return { container: n, offset: u };
|
|
c = n;
|
|
}
|
|
for (
|
|
a = new to(n, e.getParent(n, e.isBlock) || t);
|
|
(s = a[o ? "prev" : "next"]());
|
|
|
|
)
|
|
if (3 === s.nodeType) {
|
|
if (((c = s), -1 !== (u = Kc(o, i, s))))
|
|
return { container: s, offset: u };
|
|
} else if (e.isBlock(s)) break;
|
|
if (c) return { container: c, offset: (r = o ? 0 : c.length) };
|
|
},
|
|
Yc = function(e, t, n, r, o) {
|
|
var i, a, s, u;
|
|
for (
|
|
3 === r.nodeType && 0 === r.nodeValue.length && r[o] && (r = r[o]),
|
|
i = Hc(e, r),
|
|
a = 0;
|
|
a < i.length;
|
|
a++
|
|
)
|
|
for (s = 0; s < t.length; s++)
|
|
if (
|
|
!("collapsed" in (u = t[s]) && u.collapsed !== n.collapsed) &&
|
|
e.is(i[a], u.selector)
|
|
)
|
|
return i[a];
|
|
return r;
|
|
},
|
|
Gc = function(e, t, n, r) {
|
|
var o,
|
|
i = e.dom,
|
|
a = i.getRoot();
|
|
if ((t[0].wrapper || (o = i.getParent(n, t[0].block, a)), !o)) {
|
|
var s = i.getParent(n, "LI,TD,TH");
|
|
o = i.getParent(
|
|
3 === n.nodeType ? n.parentNode : n,
|
|
function(t) {
|
|
return t !== a && jc(e, t);
|
|
},
|
|
s
|
|
);
|
|
}
|
|
if ((o && t[0].wrapper && (o = Hc(i, o, "ul,ol").reverse()[0] || o), !o))
|
|
for (
|
|
o = n;
|
|
o[r] && !i.isBlock(o[r]) && ((o = o[r]), !Uc.isEq(o, "br"));
|
|
|
|
);
|
|
return o || n;
|
|
},
|
|
Jc = function(e, t, n, r, o, i, a) {
|
|
var s, u, c, l, f, d;
|
|
if (
|
|
((s = u = a ? n : o),
|
|
(l = a ? "previousSibling" : "nextSibling"),
|
|
(f = e.getRoot()),
|
|
3 === s.nodeType && !qc(s) && (a ? r > 0 : i < s.nodeValue.length))
|
|
)
|
|
return s;
|
|
for (;;) {
|
|
if (!t[0].block_expand && e.isBlock(u)) return u;
|
|
for (c = u[l]; c; c = c[l])
|
|
if (
|
|
!Vc(c) &&
|
|
!qc(c) &&
|
|
("BR" !== (d = c).nodeName ||
|
|
!d.getAttribute("data-mce-bogus") ||
|
|
d.nextSibling)
|
|
)
|
|
return u;
|
|
if (u === f || u.parentNode === f) {
|
|
s = u;
|
|
break;
|
|
}
|
|
u = u.parentNode;
|
|
}
|
|
return s;
|
|
},
|
|
Qc = function(e, t, n, r) {
|
|
var o,
|
|
i = t.startContainer,
|
|
a = t.startOffset,
|
|
s = t.endContainer,
|
|
u = t.endOffset,
|
|
c = e.dom;
|
|
return (
|
|
1 === i.nodeType &&
|
|
i.hasChildNodes() &&
|
|
3 === (i = zi(i, a)).nodeType &&
|
|
(a = 0),
|
|
1 === s.nodeType &&
|
|
s.hasChildNodes() &&
|
|
3 === (s = zi(s, t.collapsed ? u : u - 1)).nodeType &&
|
|
(u = s.nodeValue.length),
|
|
(i = Wc(c, i)),
|
|
(s = Wc(c, s)),
|
|
(Vc(i.parentNode) || Vc(i)) &&
|
|
3 ===
|
|
(i = (i = Vc(i) ? i : i.parentNode).nextSibling || i).nodeType &&
|
|
(a = 0),
|
|
(Vc(s.parentNode) || Vc(s)) &&
|
|
3 ===
|
|
(s = (s = Vc(s) ? s : s.parentNode).previousSibling || s)
|
|
.nodeType &&
|
|
(u = s.length),
|
|
n[0].inline &&
|
|
(t.collapsed &&
|
|
((o = Xc(c, e.getBody(), i, a, !0, r)) &&
|
|
((i = o.container), (a = o.offset)),
|
|
(o = Xc(c, e.getBody(), s, u, !1, r)) &&
|
|
((s = o.container), (u = o.offset))),
|
|
(s = r
|
|
? s
|
|
: (function(e, t) {
|
|
var n = $c(e, t);
|
|
if (n.node) {
|
|
for (; n.node && 0 === n.offset && n.node.previousSibling; )
|
|
n = $c(n.node.previousSibling);
|
|
n.node &&
|
|
n.offset > 0 &&
|
|
3 === n.node.nodeType &&
|
|
" " === n.node.nodeValue.charAt(n.offset - 1) &&
|
|
n.offset > 1 &&
|
|
(e = n.node).splitText(n.offset - 1);
|
|
}
|
|
return e;
|
|
})(s, u))),
|
|
(n[0].inline || n[0].block_expand) &&
|
|
((n[0].inline && 3 === i.nodeType && 0 !== a) ||
|
|
(i = Jc(c, n, i, a, s, u, !0)),
|
|
(n[0].inline && 3 === s.nodeType && u !== s.nodeValue.length) ||
|
|
(s = Jc(c, n, i, a, s, u, !1))),
|
|
n[0].selector &&
|
|
!1 !== n[0].expand &&
|
|
!n[0].inline &&
|
|
((i = Yc(c, n, t, i, "previousSibling")),
|
|
(s = Yc(c, n, t, s, "nextSibling"))),
|
|
(n[0].block || n[0].selector) &&
|
|
((i = Gc(e, n, i, "previousSibling")),
|
|
(s = Gc(e, n, s, "nextSibling")),
|
|
n[0].block &&
|
|
(c.isBlock(i) || (i = Jc(c, n, i, a, s, u, !0)),
|
|
c.isBlock(s) || (s = Jc(c, n, i, a, s, u, !1)))),
|
|
1 === i.nodeType && ((a = c.nodeIndex(i)), (i = i.parentNode)),
|
|
1 === s.nodeType && ((u = c.nodeIndex(s) + 1), (s = s.parentNode)),
|
|
{ startContainer: i, startOffset: a, endContainer: s, endOffset: u }
|
|
);
|
|
},
|
|
Zc = Uc.isEq,
|
|
el = function(e, t, n) {
|
|
var r = e.formatter.get(n);
|
|
if (r)
|
|
for (var o = 0; o < r.length; o++)
|
|
if (!1 === r[o].inherit && e.dom.is(t, r[o].selector)) return !0;
|
|
return !1;
|
|
},
|
|
tl = function(e, t, n, r) {
|
|
var o = e.dom.getRoot();
|
|
return (
|
|
t !== o &&
|
|
((t = e.dom.getParent(t, function(t) {
|
|
return !!el(e, t, n) || t.parentNode === o || !!ol(e, t, n, r, !0);
|
|
})),
|
|
ol(e, t, n, r))
|
|
);
|
|
},
|
|
nl = function(e, t, n) {
|
|
return (
|
|
!!Zc(t, n.inline) ||
|
|
!!Zc(t, n.block) ||
|
|
(n.selector ? 1 === t.nodeType && e.is(t, n.selector) : void 0)
|
|
);
|
|
},
|
|
rl = function(e, t, n, r, o, i) {
|
|
var a,
|
|
s,
|
|
u,
|
|
c = n[r];
|
|
if (n.onmatch) return n.onmatch(t, n, r);
|
|
if (c)
|
|
if ("undefined" == typeof c.length) {
|
|
for (a in c)
|
|
if (c.hasOwnProperty(a)) {
|
|
if (
|
|
((s =
|
|
"attributes" === r
|
|
? e.getAttrib(t, a)
|
|
: Uc.getStyle(e, t, a)),
|
|
o && !s && !n.exact)
|
|
)
|
|
return;
|
|
if (
|
|
(!o || n.exact) &&
|
|
!Zc(s, Uc.normalizeStyleValue(e, Uc.replaceVars(c[a], i), a))
|
|
)
|
|
return;
|
|
}
|
|
} else
|
|
for (u = 0; u < c.length; u++)
|
|
if (
|
|
"attributes" === r
|
|
? e.getAttrib(t, c[u])
|
|
: Uc.getStyle(e, t, c[u])
|
|
)
|
|
return n;
|
|
return n;
|
|
},
|
|
ol = function(e, t, n, r, o) {
|
|
var i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = e.formatter.get(n),
|
|
l = e.dom;
|
|
if (c && t)
|
|
for (a = 0; a < c.length; a++)
|
|
if (
|
|
((i = c[a]),
|
|
nl(e.dom, t, i) &&
|
|
rl(l, t, i, "attributes", o, r) &&
|
|
rl(l, t, i, "styles", o, r))
|
|
) {
|
|
if ((u = i.classes))
|
|
for (s = 0; s < u.length; s++)
|
|
if (!e.dom.hasClass(t, u[s])) return;
|
|
return i;
|
|
}
|
|
},
|
|
il = {
|
|
matchNode: ol,
|
|
matchName: nl,
|
|
match: function(e, t, n, r) {
|
|
var o;
|
|
return r
|
|
? tl(e, r, t, n)
|
|
: ((r = e.selection.getNode()),
|
|
!!tl(e, r, t, n) ||
|
|
!((o = e.selection.getStart()) === r || !tl(e, o, t, n)));
|
|
},
|
|
matchAll: function(e, t, n) {
|
|
var r,
|
|
o = [],
|
|
i = {};
|
|
return (
|
|
(r = e.selection.getStart()),
|
|
e.dom.getParent(
|
|
r,
|
|
function(r) {
|
|
var a, s;
|
|
for (a = 0; a < t.length; a++)
|
|
(s = t[a]), !i[s] && ol(e, r, s, n) && ((i[s] = !0), o.push(s));
|
|
},
|
|
e.dom.getRoot()
|
|
),
|
|
o
|
|
);
|
|
},
|
|
canApply: function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = e.formatter.get(t),
|
|
u = e.dom;
|
|
if (s)
|
|
for (
|
|
n = e.selection.getStart(),
|
|
r = Uc.getParents(u, n),
|
|
i = s.length - 1;
|
|
i >= 0;
|
|
i--
|
|
) {
|
|
if (!(a = s[i].selector) || s[i].defaultBlock) return !0;
|
|
for (o = r.length - 1; o >= 0; o--) if (u.is(r[o], a)) return !0;
|
|
}
|
|
return !1;
|
|
},
|
|
matchesUnInheritedFormatSelector: el
|
|
},
|
|
al = function(e, t) {
|
|
return e.splitText(t);
|
|
},
|
|
sl = {
|
|
split: function(e) {
|
|
var t = e.startContainer,
|
|
n = e.startOffset,
|
|
r = e.endContainer,
|
|
o = e.endOffset;
|
|
return (
|
|
t === r && vo.isText(t)
|
|
? n > 0 &&
|
|
n < t.nodeValue.length &&
|
|
((t = (r = al(t, n)).previousSibling),
|
|
o > n
|
|
? ((t = r = al(r, (o -= n)).previousSibling),
|
|
(o = r.nodeValue.length),
|
|
(n = 0))
|
|
: (o = 0))
|
|
: (vo.isText(t) &&
|
|
n > 0 &&
|
|
n < t.nodeValue.length &&
|
|
((t = al(t, n)), (n = 0)),
|
|
vo.isText(r) &&
|
|
o > 0 &&
|
|
o < r.nodeValue.length &&
|
|
(o = (r = al(r, o).previousSibling).nodeValue.length)),
|
|
{ startContainer: t, startOffset: n, endContainer: r, endOffset: o }
|
|
);
|
|
}
|
|
},
|
|
ul = oi,
|
|
cl = "_mce_caret",
|
|
ll = function(e) {
|
|
return 1 === e.nodeType && e.id === cl;
|
|
},
|
|
fl = function(e) {
|
|
return (
|
|
(function(e) {
|
|
for (var t = []; e; ) {
|
|
if (
|
|
(3 === e.nodeType && e.nodeValue !== ul) ||
|
|
e.childNodes.length > 1
|
|
)
|
|
return [];
|
|
1 === e.nodeType && t.push(e), (e = e.firstChild);
|
|
}
|
|
return t;
|
|
})(e).length > 0
|
|
);
|
|
},
|
|
dl = function(e) {
|
|
var t;
|
|
if (e)
|
|
for (e = (t = new to(e, e)).current(); e; e = t.next())
|
|
if (3 === e.nodeType) return e;
|
|
return null;
|
|
},
|
|
ml = function(e) {
|
|
var t = Hn.fromTag("span");
|
|
return (
|
|
dr.setAll(t, {
|
|
id: cl,
|
|
"data-mce-bogus": "1",
|
|
"data-mce-type": "format-caret"
|
|
}),
|
|
e && ks.append(t, Hn.fromText(ul)),
|
|
t
|
|
);
|
|
},
|
|
pl = function(e, t) {
|
|
for (; t && t !== e; ) {
|
|
if (t.id === cl) return t;
|
|
t = t.parentNode;
|
|
}
|
|
return null;
|
|
},
|
|
gl = function(e, t, n, r) {
|
|
var o, i, a, s;
|
|
(o = t.getRng(!0)),
|
|
(i = e.getParent(n, e.isBlock)),
|
|
fl(n)
|
|
? (!1 !== r && (o.setStartBefore(n), o.setEndBefore(n)), e.remove(n))
|
|
: ((s = dl(n)) && s.nodeValue.charAt(0) === ul && s.deleteData(0, 1),
|
|
(a = s),
|
|
o.startContainer === a &&
|
|
o.startOffset > 0 &&
|
|
o.setStart(a, o.startOffset - 1),
|
|
o.endContainer === a &&
|
|
o.endOffset > 0 &&
|
|
o.setEnd(a, o.endOffset - 1),
|
|
e.remove(n, !0)),
|
|
i && e.isEmpty(i) && Is(Hn.fromDom(i)),
|
|
t.setRng(o);
|
|
},
|
|
hl = function(e, t, n, r, o) {
|
|
if (r) gl(t, n, r, o);
|
|
else if (!(r = pl(e, n.getStart())))
|
|
for (; (r = t.get(cl)); ) gl(t, n, r, !1);
|
|
},
|
|
vl = function(e, t, n) {
|
|
var r = e.dom,
|
|
o = r.getParent(n, ji.curry(Uc.isTextBlock, e));
|
|
o && r.isEmpty(o)
|
|
? n.parentNode.replaceChild(t, n)
|
|
: (Ps(Hn.fromDom(n)),
|
|
r.isEmpty(n) ? n.parentNode.replaceChild(t, n) : r.insertAfter(t, n));
|
|
},
|
|
yl = function(e, t) {
|
|
return e.appendChild(t), t;
|
|
},
|
|
bl = function(e, t) {
|
|
var n = M.foldr(
|
|
e,
|
|
function(e, t) {
|
|
return yl(e, t.cloneNode(!1));
|
|
},
|
|
t
|
|
);
|
|
return yl(n, n.ownerDocument.createTextNode(ul));
|
|
},
|
|
Cl = function(e) {
|
|
var t = e.dom,
|
|
n = e.selection,
|
|
r = e.getBody();
|
|
e.on("mouseup keydown", function(e) {
|
|
var o, i, a, s;
|
|
(o = r),
|
|
(i = t),
|
|
(a = n),
|
|
(s = e.keyCode),
|
|
hl(o, i, a, null, !1),
|
|
8 === s &&
|
|
a.isCollapsed() &&
|
|
a.getStart().innerHTML === ul &&
|
|
hl(o, i, a, pl(o, a.getStart())),
|
|
(37 !== s && 39 !== s) || hl(o, i, a, pl(o, a.getStart()));
|
|
});
|
|
},
|
|
xl = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = e.selection;
|
|
(a = (r = c.getRng(!0)).startOffset),
|
|
(u = r.startContainer.nodeValue),
|
|
(o = pl(e.getBody(), c.getStart())) && (i = dl(o));
|
|
var l,
|
|
f,
|
|
d = /[^\s\u00a0\u00ad\u200b\ufeff]/;
|
|
u &&
|
|
a > 0 &&
|
|
a < u.length &&
|
|
d.test(u.charAt(a)) &&
|
|
d.test(u.charAt(a - 1))
|
|
? ((s = c.getBookmark()),
|
|
r.collapse(!0),
|
|
(r = Qc(e, r, e.formatter.get(t))),
|
|
(r = sl.split(r)),
|
|
e.formatter.apply(t, n, r),
|
|
c.moveToBookmark(s))
|
|
: (o && i.nodeValue === ul
|
|
? e.formatter.apply(t, n, o)
|
|
: ((l = e.getDoc()),
|
|
(f = ml(!0).dom()),
|
|
(i = (o = l.importNode(f, !0)).firstChild),
|
|
r.insertNode(o),
|
|
(a = 1),
|
|
e.formatter.apply(t, n, o)),
|
|
c.setCursorLocation(i, a));
|
|
},
|
|
wl = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f = e.dom,
|
|
d = e.selection,
|
|
m = [],
|
|
p = d.getRng();
|
|
for (
|
|
o = p.startContainer,
|
|
i = p.startOffset,
|
|
u = o,
|
|
3 === o.nodeType &&
|
|
(i !== o.nodeValue.length && (s = !0), (u = u.parentNode));
|
|
u;
|
|
|
|
) {
|
|
if (il.matchNode(e, u, t, n, r)) {
|
|
c = u;
|
|
break;
|
|
}
|
|
u.nextSibling && (s = !0), m.push(u), (u = u.parentNode);
|
|
}
|
|
if (c)
|
|
if (s) {
|
|
(a = d.getBookmark()), p.collapse(!0);
|
|
var g = Qc(e, p, e.formatter.get(t), !0);
|
|
(g = sl.split(g)), e.formatter.remove(t, n, g), d.moveToBookmark(a);
|
|
} else {
|
|
l = pl(e.getBody(), c);
|
|
var h = ml(!1).dom(),
|
|
v = bl(m, h);
|
|
vl(e, h, l || c),
|
|
gl(f, d, l, !1),
|
|
d.setCursorLocation(v, 1),
|
|
f.isEmpty(c) && f.remove(c);
|
|
}
|
|
},
|
|
Nl = ll,
|
|
El = pl,
|
|
Sl = function(e, t) {
|
|
var n = ml(!1),
|
|
r = bl(t, n.dom());
|
|
return ks.before(Hn.fromDom(e), n), Bs.remove(Hn.fromDom(e)), ia(r, 0);
|
|
},
|
|
kl = function(e, t) {
|
|
return (
|
|
e.schema.getTextInlineElements().hasOwnProperty(Zn.name(t)) &&
|
|
!ll(t.dom()) &&
|
|
!vo.isBogus(t.dom())
|
|
);
|
|
},
|
|
Tl = function(e, t) {
|
|
for (var n = 0; n < e.length; n++) {
|
|
var r = e[n].apply(null, t);
|
|
if (r.isSome()) return r;
|
|
}
|
|
return E.none();
|
|
},
|
|
Al = Qu([
|
|
{ before: ["element"] },
|
|
{ start: ["element"] },
|
|
{ end: ["element"] },
|
|
{ after: ["element"] }
|
|
]),
|
|
_l = function(e, t) {
|
|
var n = _a.getParentBlock(t, e);
|
|
return n || e;
|
|
},
|
|
Bl = function(e, t, n) {
|
|
var r = vu.normalizeForwards(n),
|
|
o = _l(t, r.container());
|
|
return vu.findRootInline(e, o, r).fold(function() {
|
|
return Ws.nextPosition(o, r)
|
|
.bind(y.curry(vu.findRootInline, e, o))
|
|
.map(function(e) {
|
|
return Al.before(e);
|
|
});
|
|
}, E.none);
|
|
},
|
|
Rl = function(e, t) {
|
|
return null === El(e, t);
|
|
},
|
|
Dl = function(e, t, n) {
|
|
return vu.findRootInline(e, t, n).filter(y.curry(Rl, t));
|
|
},
|
|
Ol = function(e, t, n) {
|
|
var r = vu.normalizeBackwards(n);
|
|
return Dl(e, t, r).bind(function(e) {
|
|
return Ws.prevPosition(e, r).isNone() ? E.some(Al.start(e)) : E.none();
|
|
});
|
|
},
|
|
Pl = function(e, t, n) {
|
|
var r = vu.normalizeForwards(n);
|
|
return Dl(e, t, r).bind(function(e) {
|
|
return Ws.nextPosition(e, r).isNone() ? E.some(Al.end(e)) : E.none();
|
|
});
|
|
},
|
|
Il = function(e, t, n) {
|
|
var r = vu.normalizeBackwards(n),
|
|
o = _l(t, r.container());
|
|
return vu.findRootInline(e, o, r).fold(function() {
|
|
return Ws.prevPosition(o, r)
|
|
.bind(y.curry(vu.findRootInline, e, o))
|
|
.map(function(e) {
|
|
return Al.after(e);
|
|
});
|
|
}, E.none);
|
|
},
|
|
Ll = function(e) {
|
|
return !1 === vu.isRtl(Fl(e));
|
|
},
|
|
Ml = function(e, t, n) {
|
|
return Tl([Bl, Ol, Pl, Il], [e, t, n]).filter(Ll);
|
|
},
|
|
Fl = function(e) {
|
|
return e.fold(y.identity, y.identity, y.identity, y.identity);
|
|
},
|
|
zl = function(e) {
|
|
return e.fold(
|
|
y.constant("before"),
|
|
y.constant("start"),
|
|
y.constant("end"),
|
|
y.constant("after")
|
|
);
|
|
},
|
|
Ul = function(e) {
|
|
return e.fold(Al.before, Al.before, Al.after, Al.after);
|
|
},
|
|
Vl = function(e, t, n, r, o, i) {
|
|
return hs(
|
|
[vu.findRootInline(t, n, r), vu.findRootInline(t, n, o)],
|
|
function(t, r) {
|
|
return t !== r && vu.hasSameParentBlock(n, t, r)
|
|
? Al.after(e ? t : r)
|
|
: i;
|
|
}
|
|
).getOr(i);
|
|
},
|
|
Hl = function(e, t) {
|
|
return e.fold(y.constant(!0), function(e) {
|
|
return (r = t), !(zl((n = e)) === zl(r) && Fl(n) === Fl(r));
|
|
var n, r;
|
|
});
|
|
},
|
|
ql = function(e, t) {
|
|
return e
|
|
? t.fold(
|
|
y.compose(
|
|
E.some,
|
|
Al.start
|
|
),
|
|
E.none,
|
|
y.compose(
|
|
E.some,
|
|
Al.after
|
|
),
|
|
E.none
|
|
)
|
|
: t.fold(
|
|
E.none,
|
|
y.compose(
|
|
E.some,
|
|
Al.before
|
|
),
|
|
E.none,
|
|
y.compose(
|
|
E.some,
|
|
Al.end
|
|
)
|
|
);
|
|
},
|
|
jl = function(e, t, n, r) {
|
|
var o = vu.normalizePosition(e, r),
|
|
i = Ml(t, n, o);
|
|
return Ml(t, n, o)
|
|
.bind(y.curry(ql, e))
|
|
.orThunk(function() {
|
|
return (
|
|
(o = e),
|
|
(a = t),
|
|
(s = n),
|
|
(u = i),
|
|
(c = r),
|
|
(l = vu.normalizePosition(o, c)),
|
|
Ws.fromPosition(o, s, l)
|
|
.map(y.curry(vu.normalizePosition, o))
|
|
.fold(
|
|
function() {
|
|
return u.map(Ul);
|
|
},
|
|
function(e) {
|
|
return Ml(a, s, e)
|
|
.map(y.curry(Vl, o, a, s, l, e))
|
|
.filter(y.curry(Hl, u));
|
|
}
|
|
)
|
|
.filter(Ll)
|
|
);
|
|
var o, a, s, u, c, l;
|
|
});
|
|
},
|
|
$l = Ml,
|
|
Wl = jl,
|
|
Kl = (y.curry(jl, !1), y.curry(jl, !0), Ul),
|
|
Xl = function(e) {
|
|
return e.fold(Al.start, Al.start, Al.end, Al.end);
|
|
},
|
|
Yl = function(e) {
|
|
var t = e,
|
|
n = function() {
|
|
return t;
|
|
};
|
|
return {
|
|
get: n,
|
|
set: function(e) {
|
|
t = e;
|
|
},
|
|
clone: function() {
|
|
return Yl(n());
|
|
}
|
|
};
|
|
},
|
|
Gl = function(e) {
|
|
return tr.isFunction(e.selection.getSel().modify);
|
|
},
|
|
Jl = function(e, t, n) {
|
|
var r = e ? 1 : -1;
|
|
return (
|
|
t.setRng(ia(n.container(), n.offset() + r).toRange()),
|
|
t.getSel().modify("move", e ? "forward" : "backward", "word"),
|
|
!0
|
|
);
|
|
},
|
|
Ql = function(e, t) {
|
|
var n = t.selection.getRng(),
|
|
r = e ? ia.fromRangeEnd(n) : ia.fromRangeStart(n);
|
|
return (
|
|
!!Gl(t) &&
|
|
(e && mi.isBeforeInline(r)
|
|
? Jl(!0, t.selection, r)
|
|
: !(e || !mi.isAfterInline(r)) && Jl(!1, t.selection, r))
|
|
);
|
|
},
|
|
Zl = function(e, t) {
|
|
var n = e.dom.createRng();
|
|
n.setStart(t.container(), t.offset()),
|
|
n.setEnd(t.container(), t.offset()),
|
|
e.selection.setRng(n);
|
|
},
|
|
ef = function(e) {
|
|
return !1 !== e.settings.inline_boundaries;
|
|
},
|
|
tf = function(e, t) {
|
|
e
|
|
? t.setAttribute("data-mce-selected", "inline-boundary")
|
|
: t.removeAttribute("data-mce-selected");
|
|
},
|
|
nf = function(e, t, n) {
|
|
return Lc(t, n).map(function(t) {
|
|
return Zl(e, t), n;
|
|
});
|
|
},
|
|
rf = function(e, t, n) {
|
|
return function() {
|
|
return !!ef(t) && Ql(e, t);
|
|
};
|
|
},
|
|
of = {
|
|
move: function(e, t, n) {
|
|
return function() {
|
|
return (
|
|
!!ef(e) &&
|
|
((r = e),
|
|
(o = t),
|
|
(i = n),
|
|
(a = r.getBody()),
|
|
(s = ia.fromRangeStart(r.selection.getRng())),
|
|
(u = y.curry(vu.isInlineTarget, r)),
|
|
Wl(i, u, a, s).bind(function(e) {
|
|
return nf(r, o, e);
|
|
})).isSome()
|
|
);
|
|
var r, o, i, a, s, u;
|
|
};
|
|
},
|
|
moveNextWord: y.curry(rf, !0),
|
|
movePrevWord: y.curry(rf, !1),
|
|
setupSelectedState: function(e) {
|
|
var t = new Yl(null),
|
|
n = y.curry(vu.isInlineTarget, e);
|
|
return (
|
|
e.on("NodeChange", function(r) {
|
|
var o, i, a, s, u;
|
|
ef(e) &&
|
|
((o = n),
|
|
(i = e.dom),
|
|
(a = r.parents),
|
|
(s = M.filter(
|
|
i.select('*[data-mce-selected="inline-boundary"]'),
|
|
o
|
|
)),
|
|
(u = M.filter(a, o)),
|
|
M.each(M.difference(s, u), y.curry(tf, !1)),
|
|
M.each(M.difference(u, s), y.curry(tf, !0)),
|
|
(function(e, t) {
|
|
if (
|
|
e.selection.isCollapsed() &&
|
|
!0 !== e.composing &&
|
|
t.get()
|
|
) {
|
|
var n = ia.fromRangeStart(e.selection.getRng());
|
|
ia.isTextPosition(n) &&
|
|
!1 === vu.isAtZwsp(n) &&
|
|
(Zl(e, Oc.removeAndReposition(t.get(), n)), t.set(null));
|
|
}
|
|
})(e, t),
|
|
(function(e, t, n, r) {
|
|
if (t.selection.isCollapsed()) {
|
|
var o = M.filter(r, e);
|
|
M.each(o, function(r) {
|
|
var o = ia.fromRangeStart(t.selection.getRng());
|
|
$l(e, t.getBody(), o).bind(function(e) {
|
|
return nf(t, n, e);
|
|
});
|
|
});
|
|
}
|
|
})(n, e, t, r.parents));
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
setCaretPosition: Zl
|
|
},
|
|
af = function(e, t) {
|
|
return function(n) {
|
|
return Lc(t, n)
|
|
.map(function(t) {
|
|
return of.setCaretPosition(e, t), !0;
|
|
})
|
|
.getOr(!1);
|
|
};
|
|
},
|
|
sf = function(e, t, n, r) {
|
|
var o = e.getBody(),
|
|
i = y.curry(vu.isInlineTarget, e);
|
|
e.undoManager.ignore(function() {
|
|
var a, s, u;
|
|
e.selection.setRng(
|
|
((a = n),
|
|
(s = r),
|
|
(u = document.createRange()).setStart(a.container(), a.offset()),
|
|
u.setEnd(s.container(), s.offset()),
|
|
u)
|
|
),
|
|
e.execCommand("Delete"),
|
|
$l(i, o, ia.fromRangeStart(e.selection.getRng()))
|
|
.map(Xl)
|
|
.map(af(e, t));
|
|
}),
|
|
e.nodeChanged();
|
|
},
|
|
uf = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a = ((o = e.getBody()),
|
|
(i = r.container()),
|
|
_a.getParentBlock(i, o) || o),
|
|
s = y.curry(vu.isInlineTarget, e),
|
|
u = $l(s, a, r);
|
|
return u
|
|
.bind(function(e) {
|
|
return n
|
|
? e.fold(
|
|
y.constant(E.some(Xl(e))),
|
|
E.none,
|
|
y.constant(E.some(Kl(e))),
|
|
E.none
|
|
)
|
|
: e.fold(
|
|
E.none,
|
|
y.constant(E.some(Kl(e))),
|
|
E.none,
|
|
y.constant(E.some(Xl(e)))
|
|
);
|
|
})
|
|
.map(af(e, t))
|
|
.getOrThunk(function() {
|
|
var o = Ws.navigate(n, a, r),
|
|
i = o.bind(function(e) {
|
|
return $l(s, a, e);
|
|
});
|
|
return u.isSome() && i.isSome()
|
|
? vu
|
|
.findRootInline(s, a, r)
|
|
.map(function(t) {
|
|
return (
|
|
(r = t),
|
|
!!hs(
|
|
[Ws.firstPositionIn(r), Ws.lastPositionIn(r)],
|
|
function(e, t) {
|
|
var n = vu.normalizePosition(!0, e),
|
|
o = vu.normalizePosition(!1, t);
|
|
return Ws.nextPosition(r, n)
|
|
.map(function(e) {
|
|
return e.isEqual(o);
|
|
})
|
|
.getOr(!0);
|
|
}
|
|
).getOr(!0) && (mc(e, n, Hn.fromDom(t)), !0)
|
|
);
|
|
var r;
|
|
})
|
|
.getOr(!1)
|
|
: i
|
|
.bind(function(i) {
|
|
return o.map(function(o) {
|
|
return n ? sf(e, t, r, o) : sf(e, t, o, r), !0;
|
|
});
|
|
})
|
|
.getOr(!1);
|
|
});
|
|
},
|
|
cf = function(e, t, n) {
|
|
if (e.selection.isCollapsed() && !1 !== e.settings.inline_boundaries) {
|
|
var r = ia.fromRangeStart(e.selection.getRng());
|
|
return uf(e, t, n, r);
|
|
}
|
|
return !1;
|
|
},
|
|
lf = xr("start", "end"),
|
|
ff = xr("rng", "table", "cells"),
|
|
df = Qu([{ removeTable: ["element"] }, { emptyCells: ["cells"] }]),
|
|
mf = function(e, t) {
|
|
return Eu(Hn.fromDom(e), "td,th", t);
|
|
},
|
|
pf = function(e, t) {
|
|
return wu(e, "table", t);
|
|
},
|
|
gf = function(e) {
|
|
return !1 === Dr.eq(e.start(), e.end());
|
|
},
|
|
hf = function(e, t) {
|
|
return ((n = e),
|
|
(r = t),
|
|
pf(n.start(), r).bind(function(e) {
|
|
return pf(n.end(), r).bind(function(t) {
|
|
return Dr.eq(e, t) ? E.some(e) : E.none();
|
|
});
|
|
})).bind(function(t) {
|
|
var n = Os(t, "td,th");
|
|
return ff(e, t, n);
|
|
});
|
|
var n, r;
|
|
},
|
|
vf = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = y.curry(Dr.eq, e);
|
|
return ((n = t),
|
|
(r = o),
|
|
hs([mf(n.startContainer, r), mf(n.endContainer, r)], lf).filter(gf)).map(
|
|
function(e) {
|
|
return hf(e, o);
|
|
}
|
|
);
|
|
},
|
|
yf = function(e, t) {
|
|
return M.findIndex(e, function(e) {
|
|
return Dr.eq(e, t);
|
|
});
|
|
},
|
|
bf = function(e) {
|
|
return ((t = e),
|
|
hs(
|
|
[yf(t.cells(), t.rng().start()), yf(t.cells(), t.rng().end())],
|
|
function(e, n) {
|
|
return t.cells().slice(e, n + 1);
|
|
}
|
|
)).bind(function(t) {
|
|
var n = e.cells();
|
|
return t.length === n.length
|
|
? df.removeTable(e.table())
|
|
: df.emptyCells(t);
|
|
});
|
|
var t;
|
|
},
|
|
Cf = function(e, t) {
|
|
return vf(e, t).map(bf);
|
|
},
|
|
xf = function(e) {
|
|
var t = [];
|
|
if (e) for (var n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n));
|
|
return t;
|
|
},
|
|
wf = xf,
|
|
Nf = function(e) {
|
|
return M.bind(e, function(e) {
|
|
var t = Fi(e);
|
|
return t ? [Hn.fromDom(t)] : [];
|
|
});
|
|
},
|
|
Ef = function(e) {
|
|
return xf(e).length > 1;
|
|
},
|
|
Sf = function(e) {
|
|
return M.filter(Nf(e), io.isTableCell);
|
|
},
|
|
kf = function(e) {
|
|
return Os(e, "td[data-mce-selected],th[data-mce-selected]");
|
|
},
|
|
Tf = function(e, t) {
|
|
var n = kf(t),
|
|
r = Sf(e);
|
|
return n.length > 0 ? n : r;
|
|
},
|
|
Af = Tf,
|
|
_f = function(e) {
|
|
return Tf(wf(e.selection.getSel()), Hn.fromDom(e.getBody()));
|
|
},
|
|
Bf = function(e, t) {
|
|
return M.each(t, Is), e.selection.setCursorLocation(t[0].dom(), 0), !0;
|
|
},
|
|
Rf = function(e, t) {
|
|
return mc(e, !1, t), !0;
|
|
},
|
|
Df = function(e, t, n, r) {
|
|
return Pf(t, r)
|
|
.fold(
|
|
function() {
|
|
return (
|
|
(r = e),
|
|
Cf(t, n).map(function(e) {
|
|
return e.fold(y.curry(Rf, r), y.curry(Bf, r));
|
|
})
|
|
);
|
|
var r;
|
|
},
|
|
function(t) {
|
|
return If(e, t);
|
|
}
|
|
)
|
|
.getOr(!1);
|
|
},
|
|
Of = function(e, t) {
|
|
return M.find(Uu(t, e), io.isTableCell);
|
|
},
|
|
Pf = function(e, t) {
|
|
return M.find(Uu(t, e), function(e) {
|
|
return "caption" === Zn.name(e);
|
|
});
|
|
},
|
|
If = function(e, t) {
|
|
return Is(t), e.selection.setCursorLocation(t.dom(), 0), E.some(!0);
|
|
},
|
|
Lf = function(e, t, n, r, o) {
|
|
return Ws.navigate(n, e.getBody(), o)
|
|
.bind(function(i) {
|
|
return (
|
|
(u = r),
|
|
(c = n),
|
|
(l = o),
|
|
(f = i),
|
|
Ws.firstPositionIn(u.dom())
|
|
.bind(function(e) {
|
|
return Ws.lastPositionIn(u.dom()).map(function(t) {
|
|
return c
|
|
? l.isEqual(e) && f.isEqual(t)
|
|
: l.isEqual(t) && f.isEqual(e);
|
|
});
|
|
})
|
|
.getOr(!0)
|
|
? If(e, r)
|
|
: ((a = r),
|
|
(s = i),
|
|
Pf(t, Hn.fromDom(s.getNode())).map(function(e) {
|
|
return !1 === Dr.eq(e, a);
|
|
}))
|
|
);
|
|
var a, s, u, c, l, f;
|
|
})
|
|
.or(E.some(!0));
|
|
},
|
|
Mf = function(e, t, n, r) {
|
|
var o = ia.fromRangeStart(e.selection.getRng());
|
|
return Of(n, r).bind(function(r) {
|
|
return Ru(r)
|
|
? If(e, r)
|
|
: ((i = e),
|
|
(a = n),
|
|
(s = t),
|
|
(u = r),
|
|
(c = o),
|
|
Ws.navigate(s, i.getBody(), c).bind(function(e) {
|
|
return Of(a, Hn.fromDom(e.getNode())).map(function(e) {
|
|
return !1 === Dr.eq(e, u);
|
|
});
|
|
}));
|
|
var i, a, s, u, c;
|
|
});
|
|
},
|
|
Ff = function(e, t, n) {
|
|
var r = Hn.fromDom(e.getBody());
|
|
return Pf(r, n)
|
|
.fold(
|
|
function() {
|
|
return Mf(e, t, r, n);
|
|
},
|
|
function(n) {
|
|
return (
|
|
(o = e),
|
|
(i = t),
|
|
(a = r),
|
|
(s = n),
|
|
(u = ia.fromRangeStart(o.selection.getRng())),
|
|
Ru(s) ? If(o, s) : Lf(o, a, i, s, u)
|
|
);
|
|
var o, i, a, s, u;
|
|
}
|
|
)
|
|
.getOr(!1);
|
|
},
|
|
zf = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = Hn.fromDom(e.selection.getStart(!0));
|
|
return e.selection.isCollapsed()
|
|
? Ff(e, t, s)
|
|
: ((n = e),
|
|
(r = s),
|
|
(o = Hn.fromDom(n.getBody())),
|
|
(i = n.selection.getRng()),
|
|
0 !== (a = _f(n)).length ? Bf(n, a) : Df(n, o, i, r));
|
|
},
|
|
Uf = function(e, t) {
|
|
e.getDoc().execCommand(t, !1, null);
|
|
},
|
|
Vf = function(e) {
|
|
hc(e, !1) ||
|
|
cf(e, !1) ||
|
|
Ku(e, !1) ||
|
|
zf(e) ||
|
|
Ju(e, !1) ||
|
|
(Uf(e, "Delete"), bu(e));
|
|
},
|
|
Hf = function(e) {
|
|
hc(e, !0) ||
|
|
cf(e, !0) ||
|
|
Ku(e, !0) ||
|
|
zf(e) ||
|
|
Ju(e, !0) ||
|
|
Uf(e, "ForwardDelete");
|
|
},
|
|
qf = function(e, t) {
|
|
return (
|
|
e &&
|
|
t &&
|
|
e.startContainer === t.startContainer &&
|
|
e.startOffset === t.startOffset &&
|
|
e.endContainer === t.endContainer &&
|
|
e.endOffset === t.endOffset
|
|
);
|
|
},
|
|
jf = xr("container", "offset"),
|
|
$f = function(e, t, n) {
|
|
return (
|
|
null !==
|
|
(function(e, t, n) {
|
|
for (; e && e !== t; ) {
|
|
if (n(e)) return e;
|
|
e = e.parentNode;
|
|
}
|
|
return null;
|
|
})(e, t, n)
|
|
);
|
|
},
|
|
Wf = function(e, t, n) {
|
|
return $f(e, t, function(e) {
|
|
return e.nodeName === n;
|
|
});
|
|
},
|
|
Kf = function(e) {
|
|
return e && "TABLE" === e.nodeName;
|
|
},
|
|
Xf = function(e, t, n) {
|
|
for (
|
|
var r = new to(t, e.getParent(t.parentNode, e.isBlock) || e.getRoot());
|
|
(t = r[n ? "prev" : "next"]());
|
|
|
|
)
|
|
if (vo.isBr(t)) return !0;
|
|
},
|
|
Yf = function(e, t, n, r, o) {
|
|
var i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f = e.getRoot(),
|
|
d = e.schema.getNonEmptyElements();
|
|
if (
|
|
((s = e.getParent(o.parentNode, e.isBlock) || f),
|
|
r && vo.isBr(o) && t && e.isEmpty(s))
|
|
)
|
|
return E.some(jf(o.parentNode, e.nodeIndex(o)));
|
|
for (i = new to(o, s); (u = i[r ? "prev" : "next"]()); ) {
|
|
if (
|
|
"false" === e.getContentEditableParent(u) ||
|
|
((c = u), (l = f), mi.isCaretContainer(c) && !1 === $f(c, l, Nl))
|
|
)
|
|
return E.none();
|
|
if (vo.isText(u) && u.nodeValue.length > 0)
|
|
return !1 === Wf(u, f, "A")
|
|
? E.some(jf(u, r ? u.nodeValue.length : 0))
|
|
: E.none();
|
|
if (e.isBlock(u) || d[u.nodeName.toLowerCase()]) return E.none();
|
|
a = u;
|
|
}
|
|
return n && a ? E.some(jf(a, 0)) : E.none();
|
|
},
|
|
Gf = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p = e.getRoot(),
|
|
g = !1;
|
|
if (
|
|
((o = r[(n ? "start" : "end") + "Container"]),
|
|
(i = r[(n ? "start" : "end") + "Offset"]),
|
|
(l = vo.isElement(o) && i === o.childNodes.length),
|
|
(u = e.schema.getNonEmptyElements()),
|
|
(c = n),
|
|
mi.isCaretContainer(o))
|
|
)
|
|
return E.none();
|
|
if (
|
|
(vo.isElement(o) && i > o.childNodes.length - 1 && (c = !1),
|
|
vo.isDocument(o) && ((o = p), (i = 0)),
|
|
o === p)
|
|
) {
|
|
if (c && (s = o.childNodes[i > 0 ? i - 1 : 0])) {
|
|
if (mi.isCaretContainer(s)) return E.none();
|
|
if (u[s.nodeName] || Kf(s)) return E.none();
|
|
}
|
|
if (o.hasChildNodes()) {
|
|
if (
|
|
((i = Math.min(!c && i > 0 ? i - 1 : i, o.childNodes.length - 1)),
|
|
(o = o.childNodes[i]),
|
|
(i = vo.isText(o) && l ? o.data.length : 0),
|
|
!t && o === p.lastChild && Kf(o))
|
|
)
|
|
return E.none();
|
|
if (
|
|
(function(e, t) {
|
|
for (; t && t !== e; ) {
|
|
if (vo.isContentEditableFalse(t)) return !0;
|
|
t = t.parentNode;
|
|
}
|
|
return !1;
|
|
})(p, o) ||
|
|
mi.isCaretContainer(o)
|
|
)
|
|
return E.none();
|
|
if (o.hasChildNodes() && !1 === Kf(o)) {
|
|
(s = o), (a = new to(o, p));
|
|
do {
|
|
if (vo.isContentEditableFalse(s) || mi.isCaretContainer(s)) {
|
|
g = !1;
|
|
break;
|
|
}
|
|
if (vo.isText(s) && s.nodeValue.length > 0) {
|
|
(i = c ? 0 : s.nodeValue.length), (o = s), (g = !0);
|
|
break;
|
|
}
|
|
if (
|
|
u[s.nodeName.toLowerCase()] &&
|
|
(!(f = s) || !/^(TD|TH|CAPTION)$/.test(f.nodeName))
|
|
) {
|
|
(i = e.nodeIndex(s)),
|
|
(o = s.parentNode),
|
|
("IMG" !== s.nodeName && "PRE" !== s.nodeName) || c || i++,
|
|
(g = !0);
|
|
break;
|
|
}
|
|
} while ((s = c ? a.next() : a.prev()));
|
|
}
|
|
}
|
|
}
|
|
return (
|
|
t &&
|
|
(vo.isText(o) &&
|
|
0 === i &&
|
|
Yf(e, l, t, !0, o).each(function(e) {
|
|
(o = e.container()), (i = e.offset()), (g = !0);
|
|
}),
|
|
vo.isElement(o) &&
|
|
((s = o.childNodes[i]) || (s = o.childNodes[i - 1]),
|
|
!s ||
|
|
!vo.isBr(s) ||
|
|
((m = "A"),
|
|
(d = s).previousSibling && d.previousSibling.nodeName === m) ||
|
|
Xf(e, s, !1) ||
|
|
Xf(e, s, !0) ||
|
|
Yf(e, l, t, !0, s).each(function(e) {
|
|
(o = e.container()), (i = e.offset()), (g = !0);
|
|
}))),
|
|
c &&
|
|
!t &&
|
|
vo.isText(o) &&
|
|
i === o.nodeValue.length &&
|
|
Yf(e, l, t, !1, o).each(function(e) {
|
|
(o = e.container()), (i = e.offset()), (g = !0);
|
|
}),
|
|
g ? E.some(jf(o, i)) : E.none()
|
|
);
|
|
},
|
|
Jf = {
|
|
normalize: function(e, t) {
|
|
var n = t.collapsed,
|
|
r = t.cloneRange();
|
|
return (
|
|
Gf(e, n, !0, r).each(function(e) {
|
|
r.setStart(e.container(), e.offset());
|
|
}),
|
|
n ||
|
|
Gf(e, n, !1, r).each(function(e) {
|
|
r.setEnd(e.container(), e.offset());
|
|
}),
|
|
n && r.collapse(!0),
|
|
qf(t, r) ? E.none() : E.some(r)
|
|
);
|
|
}
|
|
},
|
|
Qf = function(e, t, n) {
|
|
var r = e.create("span", {}, " ");
|
|
n.parentNode.insertBefore(r, n), t.scrollIntoView(r), e.remove(r);
|
|
},
|
|
Zf = function(e, t, n, r) {
|
|
var o = e.createRng();
|
|
r
|
|
? (o.setStartBefore(n), o.setEndBefore(n))
|
|
: (o.setStartAfter(n), o.setEndAfter(n)),
|
|
t.setRng(o);
|
|
},
|
|
ed = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = e.selection,
|
|
i = e.dom,
|
|
a = o.getRng();
|
|
Jf.normalize(i, a).each(function(e) {
|
|
a.setStart(e.startContainer, e.startOffset),
|
|
a.setEnd(e.endContainer, e.endOffset);
|
|
});
|
|
var s = a.startOffset,
|
|
u = a.startContainer;
|
|
if (1 === u.nodeType && u.hasChildNodes()) {
|
|
var c = s > u.childNodes.length - 1;
|
|
(u = u.childNodes[Math.min(s, u.childNodes.length - 1)] || u),
|
|
(s = c && 3 === u.nodeType ? u.nodeValue.length : 0);
|
|
}
|
|
var l = i.getParent(u, i.isBlock),
|
|
f = l ? i.getParent(l.parentNode, i.isBlock) : null,
|
|
d = f ? f.nodeName.toUpperCase() : "",
|
|
m = t && t.ctrlKey;
|
|
"LI" !== d || m || (l = f),
|
|
u &&
|
|
3 === u.nodeType &&
|
|
s >= u.nodeValue.length &&
|
|
((function(e, t, n) {
|
|
for (
|
|
var r, o = new to(t, n), i = e.getNonEmptyElements();
|
|
(r = o.next());
|
|
|
|
)
|
|
if (i[r.nodeName.toLowerCase()] || r.length > 0) return !0;
|
|
})(e.schema, u, l) ||
|
|
((n = i.create("br")),
|
|
a.insertNode(n),
|
|
a.setStartAfter(n),
|
|
a.setEndAfter(n),
|
|
(r = !0))),
|
|
(n = i.create("br")),
|
|
a.insertNode(n),
|
|
Qf(i, o, n),
|
|
Zf(i, o, n, r),
|
|
e.undoManager.add();
|
|
},
|
|
td = function(e, t) {
|
|
var n = Hn.fromTag("br");
|
|
ks.before(Hn.fromDom(t), n), e.undoManager.add();
|
|
},
|
|
nd = function(e, t) {
|
|
rd(e.getBody(), t) || ks.after(Hn.fromDom(t), Hn.fromTag("br"));
|
|
var n = Hn.fromTag("br");
|
|
ks.after(Hn.fromDom(t), n),
|
|
Qf(e.dom, e.selection, n.dom()),
|
|
Zf(e.dom, e.selection, n.dom(), !1),
|
|
e.undoManager.add();
|
|
},
|
|
rd = function(e, t) {
|
|
return (
|
|
(n = ia.after(t)),
|
|
!!vo.isBr(n.getNode()) ||
|
|
Ws.nextPosition(e, ia.after(t))
|
|
.map(function(e) {
|
|
return vo.isBr(e.getNode());
|
|
})
|
|
.getOr(!1)
|
|
);
|
|
var n;
|
|
},
|
|
od = function(e) {
|
|
return e && "A" === e.nodeName && "href" in e;
|
|
},
|
|
id = function(e) {
|
|
return e.fold(y.constant(!1), od, od, y.constant(!1));
|
|
},
|
|
ad = function(e, t) {
|
|
t.fold(y.noop, y.curry(td, e), y.curry(nd, e), y.noop);
|
|
},
|
|
sd = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = ((n = e),
|
|
(r = y.curry(vu.isInlineTarget, n)),
|
|
(o = ia.fromRangeStart(n.selection.getRng())),
|
|
$l(r, n.getBody(), o).filter(id));
|
|
i.isSome() ? i.each(y.curry(ad, e)) : ed(e, t);
|
|
},
|
|
ud = Qu([
|
|
{ before: ["element"] },
|
|
{ on: ["element", "offset"] },
|
|
{ after: ["element"] }
|
|
]),
|
|
cd = (ud.before,
|
|
ud.on,
|
|
ud.after,
|
|
function(e) {
|
|
return e.fold(y.identity, y.identity, y.identity);
|
|
}),
|
|
ld = Qu([
|
|
{ domRange: ["rng"] },
|
|
{ relative: ["startSitu", "finishSitu"] },
|
|
{ exact: ["start", "soffset", "finish", "foffset"] }
|
|
]),
|
|
fd = xr("start", "soffset", "finish", "foffset"),
|
|
dd = {
|
|
domRange: ld.domRange,
|
|
relative: ld.relative,
|
|
exact: ld.exact,
|
|
exactFromRange: function(e) {
|
|
return ld.exact(e.start(), e.soffset(), e.finish(), e.foffset());
|
|
},
|
|
range: fd,
|
|
getWin: function(e) {
|
|
var t = e.match({
|
|
domRange: function(e) {
|
|
return Hn.fromDom(e.startContainer);
|
|
},
|
|
relative: function(e, t) {
|
|
return cd(e);
|
|
},
|
|
exact: function(e, t, n, r) {
|
|
return e;
|
|
}
|
|
});
|
|
return Ur.defaultView(t);
|
|
}
|
|
},
|
|
md = Un.detect().browser,
|
|
pd = function(e, t) {
|
|
var n = Zn.isText(t) ? Ds(t).length : Ur.children(t).length + 1;
|
|
return e > n ? n : e < 0 ? 0 : e;
|
|
},
|
|
gd = function(e) {
|
|
return dd.range(
|
|
e.start(),
|
|
pd(e.soffset(), e.start()),
|
|
e.finish(),
|
|
pd(e.foffset(), e.finish())
|
|
);
|
|
},
|
|
hd = function(e, t) {
|
|
return Dr.contains(e, t) || Dr.eq(e, t);
|
|
},
|
|
vd = function(e) {
|
|
return function(t) {
|
|
return hd(e, t.start()) && hd(e, t.finish());
|
|
};
|
|
},
|
|
yd = function(e) {
|
|
return !0 === e.inline || md.isIE();
|
|
},
|
|
bd = function(e) {
|
|
return dd.range(
|
|
Hn.fromDom(e.startContainer),
|
|
e.startOffset,
|
|
Hn.fromDom(e.endContainer),
|
|
e.endOffset
|
|
);
|
|
},
|
|
Cd = function(e) {
|
|
var t = e.getSelection();
|
|
return (t && 0 !== t.rangeCount ? E.from(t.getRangeAt(0)) : E.none()).map(
|
|
bd
|
|
);
|
|
},
|
|
xd = function(e) {
|
|
var t = Ur.defaultView(e);
|
|
return Cd(t.dom()).filter(vd(e));
|
|
},
|
|
wd = function(e, t) {
|
|
return E.from(t)
|
|
.filter(vd(e))
|
|
.map(gd);
|
|
},
|
|
Nd = function(e) {
|
|
var t = document.createRange();
|
|
return (
|
|
t.setStart(e.start().dom(), e.soffset()),
|
|
t.setEnd(e.finish().dom(), e.foffset()),
|
|
E.some(t)
|
|
);
|
|
},
|
|
Ed = function(e) {
|
|
return (e.bookmark ? e.bookmark : E.none())
|
|
.bind(y.curry(wd, Hn.fromDom(e.getBody())))
|
|
.bind(Nd);
|
|
},
|
|
Sd = function(e) {
|
|
var t = yd(e) ? xd(Hn.fromDom(e.getBody())) : E.none();
|
|
e.bookmark = t.isSome() ? t : e.bookmark;
|
|
},
|
|
kd = function(e) {
|
|
Ed(e).each(function(t) {
|
|
e.selection.setRng(t);
|
|
});
|
|
},
|
|
Td = Ed,
|
|
Ad = Ot.each,
|
|
_d = Ot.extend,
|
|
Bd = Ot.map,
|
|
Rd = Ot.inArray,
|
|
Dd = Ot.explode,
|
|
Od = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i = { state: {}, exec: {}, value: {} },
|
|
a = e.settings;
|
|
e.on("PreInit", function() {
|
|
(t = e.dom), (n = e.selection), (a = e.settings), (r = e.formatter);
|
|
});
|
|
var s = function(t) {
|
|
var n;
|
|
if (!e.quirks.isHidden() && !e.removed) {
|
|
if (((t = t.toLowerCase()), (n = i.state[t]))) return n(t);
|
|
try {
|
|
return e.getDoc().queryCommandState(t);
|
|
} catch (r) {}
|
|
return !1;
|
|
}
|
|
},
|
|
u = function(e, t) {
|
|
(t = t || "exec"),
|
|
Ad(e, function(e, n) {
|
|
Ad(n.toLowerCase().split(","), function(n) {
|
|
i[t][n] = e;
|
|
});
|
|
});
|
|
};
|
|
_d(this, {
|
|
execCommand: function(t, n, r, o) {
|
|
var a,
|
|
s,
|
|
u = !1;
|
|
if (!e.removed) {
|
|
if (
|
|
(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(
|
|
t
|
|
) ||
|
|
(o && o.skip_focus)
|
|
? kd(e)
|
|
: e.focus(),
|
|
(o = e.fire("BeforeExecCommand", {
|
|
command: t,
|
|
ui: n,
|
|
value: r
|
|
})).isDefaultPrevented())
|
|
)
|
|
return !1;
|
|
if (((s = t.toLowerCase()), (a = i.exec[s])))
|
|
return (
|
|
a(s, n, r),
|
|
e.fire("ExecCommand", { command: t, ui: n, value: r }),
|
|
!0
|
|
);
|
|
if (
|
|
(Ad(e.plugins, function(o) {
|
|
if (o.execCommand && o.execCommand(t, n, r))
|
|
return (
|
|
e.fire("ExecCommand", { command: t, ui: n, value: r }),
|
|
(u = !0),
|
|
!1
|
|
);
|
|
}),
|
|
u)
|
|
)
|
|
return u;
|
|
if (e.theme && e.theme.execCommand && e.theme.execCommand(t, n, r))
|
|
return e.fire("ExecCommand", { command: t, ui: n, value: r }), !0;
|
|
try {
|
|
u = e.getDoc().execCommand(t, n, r);
|
|
} catch (c) {}
|
|
return (
|
|
!!u &&
|
|
(e.fire("ExecCommand", { command: t, ui: n, value: r }), !0)
|
|
);
|
|
}
|
|
},
|
|
queryCommandState: s,
|
|
queryCommandValue: function(t) {
|
|
var n;
|
|
if (!e.quirks.isHidden() && !e.removed) {
|
|
if (((t = t.toLowerCase()), (n = i.value[t]))) return n(t);
|
|
try {
|
|
return e.getDoc().queryCommandValue(t);
|
|
} catch (r) {}
|
|
}
|
|
},
|
|
queryCommandSupported: function(t) {
|
|
if (((t = t.toLowerCase()), i.exec[t])) return !0;
|
|
try {
|
|
return e.getDoc().queryCommandSupported(t);
|
|
} catch (n) {}
|
|
return !1;
|
|
},
|
|
addCommands: u,
|
|
addCommand: function(t, n, r) {
|
|
(t = t.toLowerCase()),
|
|
(i.exec[t] = function(t, o, i, a) {
|
|
return n.call(r || e, o, i, a);
|
|
});
|
|
},
|
|
addQueryStateHandler: function(t, n, r) {
|
|
(t = t.toLowerCase()),
|
|
(i.state[t] = function() {
|
|
return n.call(r || e);
|
|
});
|
|
},
|
|
addQueryValueHandler: function(t, n, r) {
|
|
(t = t.toLowerCase()),
|
|
(i.value[t] = function() {
|
|
return n.call(r || e);
|
|
});
|
|
},
|
|
hasCustomCommand: function(e) {
|
|
return (e = e.toLowerCase()), !!i.exec[e];
|
|
}
|
|
});
|
|
var c = function(t, n, r) {
|
|
return (
|
|
n === undefined && (n = !1),
|
|
r === undefined && (r = null),
|
|
e.getDoc().execCommand(t, n, r)
|
|
);
|
|
},
|
|
l = function(e) {
|
|
return r.match(e);
|
|
},
|
|
f = function(t, n) {
|
|
r.toggle(t, n ? { value: n } : undefined), e.nodeChanged();
|
|
},
|
|
d = function(e) {
|
|
o = n.getBookmark(e);
|
|
},
|
|
m = function() {
|
|
n.moveToBookmark(o);
|
|
};
|
|
u({
|
|
"mceResetDesignMode,mceBeginUndoLevel": function() {},
|
|
"mceEndUndoLevel,mceAddUndoLevel": function() {
|
|
e.undoManager.add();
|
|
},
|
|
"Cut,Copy,Paste": function(t) {
|
|
var n,
|
|
r = e.getDoc();
|
|
try {
|
|
c(t);
|
|
} catch (i) {
|
|
n = !0;
|
|
}
|
|
if (
|
|
("paste" !== t || r.queryCommandEnabled(t) || (n = !0),
|
|
n || !r.queryCommandSupported(t))
|
|
) {
|
|
var o = e.translate(
|
|
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead."
|
|
);
|
|
me.mac && (o = o.replace(/Ctrl\+/g, "\u2318+")),
|
|
e.notificationManager.open({ text: o, type: "error" });
|
|
}
|
|
},
|
|
unlink: function() {
|
|
if (n.isCollapsed()) {
|
|
var t = e.dom.getParent(e.selection.getStart(), "a");
|
|
t && e.dom.remove(t, !0);
|
|
} else r.remove("link");
|
|
},
|
|
"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone": function(
|
|
e
|
|
) {
|
|
var t = e.substring(7);
|
|
"full" === t && (t = "justify"),
|
|
Ad("left,center,right,justify".split(","), function(e) {
|
|
t !== e && r.remove("align" + e);
|
|
}),
|
|
"none" !== t && f("align" + t);
|
|
},
|
|
"InsertUnorderedList,InsertOrderedList": function(e) {
|
|
var r, o;
|
|
c(e),
|
|
(r = t.getParent(n.getNode(), "ol,ul")) &&
|
|
((o = r.parentNode),
|
|
/^(H[1-6]|P|ADDRESS|PRE)$/.test(o.nodeName) &&
|
|
(d(), t.split(o, r), m()));
|
|
},
|
|
"Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function(
|
|
e
|
|
) {
|
|
f(e);
|
|
},
|
|
"ForeColor,HiliteColor,FontName": function(e, t, n) {
|
|
f(e, n);
|
|
},
|
|
FontSize: function(e, t, n) {
|
|
var r, o;
|
|
n >= 1 &&
|
|
n <= 7 &&
|
|
((o = Dd(a.font_size_style_values)),
|
|
(n = (r = Dd(a.font_size_classes))
|
|
? r[n - 1] || n
|
|
: o[n - 1] || n)),
|
|
f(e, n);
|
|
},
|
|
RemoveFormat: function(e) {
|
|
r.remove(e);
|
|
},
|
|
mceBlockQuote: function() {
|
|
f("blockquote");
|
|
},
|
|
FormatBlock: function(e, t, n) {
|
|
return f(n || "p");
|
|
},
|
|
mceCleanup: function() {
|
|
var t = n.getBookmark();
|
|
e.setContent(e.getContent({ cleanup: !0 }), { cleanup: !0 }),
|
|
n.moveToBookmark(t);
|
|
},
|
|
mceRemoveNode: function(t, r, o) {
|
|
var i = o || n.getNode();
|
|
i !== e.getBody() && (d(), e.dom.remove(i, !0), m());
|
|
},
|
|
mceSelectNodeDepth: function(r, o, i) {
|
|
var a = 0;
|
|
t.getParent(
|
|
n.getNode(),
|
|
function(e) {
|
|
if (1 === e.nodeType && a++ === i) return n.select(e), !1;
|
|
},
|
|
e.getBody()
|
|
);
|
|
},
|
|
mceSelectNode: function(e, t, r) {
|
|
n.select(r);
|
|
},
|
|
mceInsertContent: function(t, n, r) {
|
|
Js(e, r);
|
|
},
|
|
mceInsertRawHTML: function(t, r, o) {
|
|
n.setContent("tiny_mce_marker"),
|
|
e.setContent(
|
|
e.getContent().replace(/tiny_mce_marker/g, function() {
|
|
return o;
|
|
})
|
|
);
|
|
},
|
|
mceToggleFormat: function(e, t, n) {
|
|
f(n);
|
|
},
|
|
mceSetContent: function(t, n, r) {
|
|
e.setContent(r);
|
|
},
|
|
"Indent,Outdent": function(o) {
|
|
var i, u, l;
|
|
(i = a.indentation),
|
|
(u = /[a-z%]+$/i.exec(i)),
|
|
(i = parseInt(i, 10)),
|
|
s("InsertUnorderedList") || s("InsertOrderedList")
|
|
? c(o)
|
|
: (a.forced_root_block ||
|
|
t.getParent(n.getNode(), t.isBlock) ||
|
|
r.apply("div"),
|
|
Ad(n.getSelectedBlocks(), function(n) {
|
|
if (
|
|
"false" !== t.getContentEditable(n) &&
|
|
"LI" !== n.nodeName
|
|
) {
|
|
var r = e.getParam("indent_use_margin", !1)
|
|
? "margin"
|
|
: "padding";
|
|
(r = "TABLE" === n.nodeName ? "margin" : r),
|
|
(r +=
|
|
"rtl" === t.getStyle(n, "direction", !0)
|
|
? "Right"
|
|
: "Left"),
|
|
"outdent" === o
|
|
? ((l = Math.max(0, parseInt(n.style[r] || 0, 10) - i)),
|
|
t.setStyle(n, r, l ? l + u : ""))
|
|
: ((l = parseInt(n.style[r] || 0, 10) + i + u),
|
|
t.setStyle(n, r, l));
|
|
}
|
|
}));
|
|
},
|
|
mceRepaint: function() {},
|
|
InsertHorizontalRule: function() {
|
|
e.execCommand("mceInsertContent", !1, "<hr />");
|
|
},
|
|
mceToggleVisualAid: function() {
|
|
(e.hasVisual = !e.hasVisual), e.addVisual();
|
|
},
|
|
mceReplaceContent: function(t, r, o) {
|
|
e.execCommand(
|
|
"mceInsertContent",
|
|
!1,
|
|
o.replace(/\{\$selection\}/g, n.getContent({ format: "text" }))
|
|
);
|
|
},
|
|
mceInsertLink: function(e, o, i) {
|
|
var a;
|
|
"string" == typeof i && (i = { href: i }),
|
|
(a = t.getParent(n.getNode(), "a")),
|
|
(i.href = i.href.replace(" ", "%20")),
|
|
(a && i.href) || r.remove("link"),
|
|
i.href && r.apply("link", i, a);
|
|
},
|
|
selectAll: function() {
|
|
var e = t.getParent(n.getStart(), vo.isContentEditableTrue);
|
|
if (e) {
|
|
var r = t.createRng();
|
|
r.selectNodeContents(e), n.setRng(r);
|
|
}
|
|
},
|
|
delete: function() {
|
|
Vf(e);
|
|
},
|
|
forwardDelete: function() {
|
|
Hf(e);
|
|
},
|
|
mceNewDocument: function() {
|
|
e.setContent("");
|
|
},
|
|
InsertLineBreak: function(t, n, r) {
|
|
return sd(e, r), !0;
|
|
}
|
|
}),
|
|
u(
|
|
{
|
|
"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull": function(e) {
|
|
var o = "align" + e.substring(7),
|
|
i = n.isCollapsed()
|
|
? [t.getParent(n.getNode(), t.isBlock)]
|
|
: n.getSelectedBlocks(),
|
|
a = Bd(i, function(e) {
|
|
return !!r.matchNode(e, o);
|
|
});
|
|
return -1 !== Rd(a, !0);
|
|
},
|
|
"Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function(
|
|
e
|
|
) {
|
|
return l(e);
|
|
},
|
|
mceBlockQuote: function() {
|
|
return l("blockquote");
|
|
},
|
|
Outdent: function() {
|
|
var e;
|
|
if (a.inline_styles) {
|
|
if (
|
|
(e = t.getParent(n.getStart(), t.isBlock)) &&
|
|
parseInt(e.style.paddingLeft, 10) > 0
|
|
)
|
|
return !0;
|
|
if (
|
|
(e = t.getParent(n.getEnd(), t.isBlock)) &&
|
|
parseInt(e.style.paddingLeft, 10) > 0
|
|
)
|
|
return !0;
|
|
}
|
|
return (
|
|
s("InsertUnorderedList") ||
|
|
s("InsertOrderedList") ||
|
|
(!a.inline_styles && !!t.getParent(n.getNode(), "BLOCKQUOTE"))
|
|
);
|
|
},
|
|
"InsertUnorderedList,InsertOrderedList": function(e) {
|
|
var r = t.getParent(n.getNode(), "ul,ol");
|
|
return (
|
|
r &&
|
|
(("insertunorderedlist" === e && "UL" === r.tagName) ||
|
|
("insertorderedlist" === e && "OL" === r.tagName))
|
|
);
|
|
}
|
|
},
|
|
"state"
|
|
),
|
|
u(
|
|
{
|
|
"FontSize,FontName": function(e) {
|
|
var r,
|
|
o = 0;
|
|
return (
|
|
(r = t.getParent(n.getNode(), "span")) &&
|
|
(o =
|
|
"fontsize" === e
|
|
? r.style.fontSize
|
|
: r.style.fontFamily
|
|
.replace(/, /g, ",")
|
|
.replace(/[\'\"]/g, "")
|
|
.toLowerCase()),
|
|
o
|
|
);
|
|
}
|
|
},
|
|
"value"
|
|
),
|
|
u({
|
|
Undo: function() {
|
|
e.undoManager.undo();
|
|
},
|
|
Redo: function() {
|
|
e.undoManager.redo();
|
|
}
|
|
});
|
|
},
|
|
Pd = Ot.makeMap(
|
|
"focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend",
|
|
" "
|
|
),
|
|
Id = function(e) {
|
|
var t,
|
|
n,
|
|
r = this,
|
|
o = {},
|
|
i = function() {
|
|
return !1;
|
|
},
|
|
a = function() {
|
|
return !0;
|
|
};
|
|
(t = (e = e || {}).scope || r), (n = e.toggleEvent || i);
|
|
var s = function(e, t, a, s) {
|
|
var u, c, l;
|
|
if ((!1 === t && (t = i), t))
|
|
for (
|
|
t = { func: t },
|
|
s && Ot.extend(t, s),
|
|
l = (c = e.toLowerCase().split(" ")).length;
|
|
l--;
|
|
|
|
)
|
|
(e = c[l]),
|
|
(u = o[e]) || ((u = o[e] = []), n(e, !0)),
|
|
a ? u.unshift(t) : u.push(t);
|
|
return r;
|
|
},
|
|
u = function(e, t) {
|
|
var i, a, s, u, c;
|
|
if (e)
|
|
for (i = (u = e.toLowerCase().split(" ")).length; i--; ) {
|
|
if (((e = u[i]), (a = o[e]), !e)) {
|
|
for (s in o) n(s, !1), delete o[s];
|
|
return r;
|
|
}
|
|
if (a) {
|
|
if (t)
|
|
for (c = a.length; c--; )
|
|
a[c].func === t &&
|
|
((a = a.slice(0, c).concat(a.slice(c + 1))), (o[e] = a));
|
|
else a.length = 0;
|
|
a.length || (n(e, !1), delete o[e]);
|
|
}
|
|
}
|
|
else {
|
|
for (e in o) n(e, !1);
|
|
o = {};
|
|
}
|
|
return r;
|
|
};
|
|
(r.fire = function(n, r) {
|
|
var s, c, l, f;
|
|
if (
|
|
((n = n.toLowerCase()),
|
|
((r = r || {}).type = n),
|
|
r.target || (r.target = t),
|
|
r.preventDefault ||
|
|
((r.preventDefault = function() {
|
|
r.isDefaultPrevented = a;
|
|
}),
|
|
(r.stopPropagation = function() {
|
|
r.isPropagationStopped = a;
|
|
}),
|
|
(r.stopImmediatePropagation = function() {
|
|
r.isImmediatePropagationStopped = a;
|
|
}),
|
|
(r.isDefaultPrevented = i),
|
|
(r.isPropagationStopped = i),
|
|
(r.isImmediatePropagationStopped = i)),
|
|
e.beforeFire && e.beforeFire(r),
|
|
(s = o[n]))
|
|
)
|
|
for (c = 0, l = s.length; c < l; c++) {
|
|
if (
|
|
((f = s[c]).once && u(n, f.func),
|
|
r.isImmediatePropagationStopped())
|
|
)
|
|
return r.stopPropagation(), r;
|
|
if (!1 === f.func.call(t, r)) return r.preventDefault(), r;
|
|
}
|
|
return r;
|
|
}),
|
|
(r.on = s),
|
|
(r.off = u),
|
|
(r.once = function(e, t, n) {
|
|
return s(e, t, n, { once: !0 });
|
|
}),
|
|
(r.has = function(e) {
|
|
return (e = e.toLowerCase()), !(!o[e] || 0 === o[e].length);
|
|
});
|
|
};
|
|
Id.isNative = function(e) {
|
|
return !!Pd[e.toLowerCase()];
|
|
};
|
|
var Ld,
|
|
Md = function(e) {
|
|
return (
|
|
e._eventDispatcher ||
|
|
(e._eventDispatcher = new Id({
|
|
scope: e,
|
|
toggleEvent: function(t, n) {
|
|
Id.isNative(t) &&
|
|
e.toggleNativeEvent &&
|
|
e.toggleNativeEvent(t, n);
|
|
}
|
|
})),
|
|
e._eventDispatcher
|
|
);
|
|
},
|
|
Fd = {
|
|
fire: function(e, t, n) {
|
|
if (this.removed && "remove" !== e) return t;
|
|
if (((t = Md(this).fire(e, t, n)), !1 !== n && this.parent))
|
|
for (var r = this.parent(); r && !t.isPropagationStopped(); )
|
|
r.fire(e, t, !1), (r = r.parent());
|
|
return t;
|
|
},
|
|
on: function(e, t, n) {
|
|
return Md(this).on(e, t, n);
|
|
},
|
|
off: function(e, t) {
|
|
return Md(this).off(e, t);
|
|
},
|
|
once: function(e, t) {
|
|
return Md(this).once(e, t);
|
|
},
|
|
hasEventListeners: function(e) {
|
|
return Md(this).has(e);
|
|
}
|
|
},
|
|
zd = Xo.DOM,
|
|
Ud = function(e, t) {
|
|
return "selectionchange" === t
|
|
? e.getDoc()
|
|
: !e.inline &&
|
|
/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)
|
|
? e.getDoc().documentElement
|
|
: e.settings.event_root
|
|
? (e.eventRoot || (e.eventRoot = zd.select(e.settings.event_root)[0]),
|
|
e.eventRoot)
|
|
: e.getBody();
|
|
},
|
|
Vd = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = function(e) {
|
|
return !e.hidden && !e.readonly;
|
|
};
|
|
if ((e.delegates || (e.delegates = {}), !e.delegates[t] && !e.removed))
|
|
if (((n = Ud(e, t)), e.settings.event_root)) {
|
|
if (
|
|
(Ld ||
|
|
((Ld = {}),
|
|
e.editorManager.on("removeEditor", function() {
|
|
var t;
|
|
if (!e.editorManager.activeEditor && Ld) {
|
|
for (t in Ld) e.dom.unbind(Ud(e, t));
|
|
Ld = null;
|
|
}
|
|
})),
|
|
Ld[t])
|
|
)
|
|
return;
|
|
(r = function(n) {
|
|
for (
|
|
var r = n.target, i = e.editorManager.get(), a = i.length;
|
|
a--;
|
|
|
|
) {
|
|
var s = i[a].getBody();
|
|
(s === r || zd.isChildOf(r, s)) && o(i[a]) && i[a].fire(t, n);
|
|
}
|
|
}),
|
|
(Ld[t] = r),
|
|
zd.bind(n, t, r);
|
|
} else
|
|
(r = function(n) {
|
|
o(e) && e.fire(t, n);
|
|
}),
|
|
zd.bind(n, t, r),
|
|
(e.delegates[t] = r);
|
|
},
|
|
Hd = {
|
|
bindPendingEventDelegates: function() {
|
|
var e = this;
|
|
Ot.each(e._pendingNativeEvents, function(t) {
|
|
Vd(e, t);
|
|
});
|
|
},
|
|
toggleNativeEvent: function(e, t) {
|
|
var n = this;
|
|
"focus" !== e &&
|
|
"blur" !== e &&
|
|
(t
|
|
? n.initialized
|
|
? Vd(n, e)
|
|
: n._pendingNativeEvents
|
|
? n._pendingNativeEvents.push(e)
|
|
: (n._pendingNativeEvents = [e])
|
|
: n.initialized &&
|
|
(n.dom.unbind(Ud(n, e), e, n.delegates[e]),
|
|
delete n.delegates[e]));
|
|
},
|
|
unbindAllNativeEvents: function() {
|
|
var e,
|
|
t = this;
|
|
if (t.delegates) {
|
|
for (e in t.delegates) t.dom.unbind(Ud(t, e), e, t.delegates[e]);
|
|
delete t.delegates;
|
|
}
|
|
t.inline ||
|
|
((t.getBody().onload = null),
|
|
t.dom.unbind(t.getWin()),
|
|
t.dom.unbind(t.getDoc())),
|
|
t.dom.unbind(t.getBody()),
|
|
t.dom.unbind(t.getContainer());
|
|
}
|
|
},
|
|
qd = (Hd = Ot.extend({}, Fd, Hd)),
|
|
jd = function(e, t, n) {
|
|
try {
|
|
e.getDoc().execCommand(t, !1, n);
|
|
} catch (r) {}
|
|
},
|
|
$d = function(e, t) {
|
|
var n, r, o;
|
|
e._clickBlocker && (e._clickBlocker.unbind(), (e._clickBlocker = null)),
|
|
t
|
|
? ((e._clickBlocker = ((r = (n = e).getBody()),
|
|
(o = function(e) {
|
|
n.dom.getParents(e.target, "a").length > 0 && e.preventDefault();
|
|
}),
|
|
n.dom.bind(r, "click", o),
|
|
{
|
|
unbind: function() {
|
|
n.dom.unbind(r, "click", o);
|
|
}
|
|
})),
|
|
e.selection.controlSelection.hideResizeRect(),
|
|
(e.readonly = !0),
|
|
(e.getBody().contentEditable = !1))
|
|
: ((e.readonly = !1),
|
|
(e.getBody().contentEditable = !0),
|
|
jd(e, "StyleWithCSS", !1),
|
|
jd(e, "enableInlineTableEditing", !1),
|
|
jd(e, "enableObjectResizing", !1),
|
|
e.focus(),
|
|
e.nodeChanged());
|
|
},
|
|
Wd = function(e, t) {
|
|
var n = e.readonly ? "readonly" : "design";
|
|
t !== n &&
|
|
(e.initialized
|
|
? $d(e, "readonly" === t)
|
|
: e.on("init", function() {
|
|
$d(e, "readonly" === t);
|
|
}),
|
|
e.fire("SwitchMode", { mode: t }));
|
|
},
|
|
Kd = Ot.each,
|
|
Xd = Ot.explode,
|
|
Yd = { f9: 120, f10: 121, f11: 122 },
|
|
Gd = Ot.makeMap("alt,ctrl,shift,meta,access"),
|
|
Jd = function(e) {
|
|
var t = {},
|
|
n = [],
|
|
r = function(e) {
|
|
var t,
|
|
n,
|
|
r = {};
|
|
for (n in (Kd(Xd(e, "+"), function(e) {
|
|
e in Gd
|
|
? (r[e] = !0)
|
|
: /^[0-9]{2,}$/.test(e)
|
|
? (r.keyCode = parseInt(e, 10))
|
|
: ((r.charCode = e.charCodeAt(0)),
|
|
(r.keyCode = Yd[e] || e.toUpperCase().charCodeAt(0)));
|
|
}),
|
|
(t = [r.keyCode]),
|
|
Gd))
|
|
r[n] ? t.push(n) : (r[n] = !1);
|
|
return (
|
|
(r.id = t.join(",")),
|
|
r.access && ((r.alt = !0), me.mac ? (r.ctrl = !0) : (r.shift = !0)),
|
|
r.meta && (me.mac ? (r.meta = !0) : ((r.ctrl = !0), (r.meta = !1))),
|
|
r
|
|
);
|
|
},
|
|
o = function(t, n, o, i) {
|
|
var a;
|
|
return (
|
|
((a = Ot.map(Xd(t, ">"), r))[a.length - 1] = Ot.extend(
|
|
a[a.length - 1],
|
|
{ func: o, scope: i || e }
|
|
)),
|
|
Ot.extend(a[0], { desc: e.translate(n), subpatterns: a.slice(1) })
|
|
);
|
|
},
|
|
i = function(e, t) {
|
|
return (
|
|
!!t &&
|
|
t.ctrl === e.ctrlKey &&
|
|
t.meta === e.metaKey &&
|
|
t.alt === e.altKey &&
|
|
t.shift === e.shiftKey &&
|
|
!!(
|
|
e.keyCode === t.keyCode ||
|
|
(e.charCode && e.charCode === t.charCode)
|
|
) &&
|
|
(e.preventDefault(), !0)
|
|
);
|
|
},
|
|
a = function(e) {
|
|
return e.func ? e.func.call(e.scope) : null;
|
|
};
|
|
e.on("keyup keypress keydown", function(e) {
|
|
var r, o;
|
|
((o = e).altKey ||
|
|
o.ctrlKey ||
|
|
o.metaKey ||
|
|
("keydown" === (r = e).type &&
|
|
r.keyCode >= 112 &&
|
|
r.keyCode <= 123)) &&
|
|
!e.isDefaultPrevented() &&
|
|
(Kd(t, function(t) {
|
|
if (i(e, t))
|
|
return (
|
|
(n = t.subpatterns.slice(0)), "keydown" === e.type && a(t), !0
|
|
);
|
|
}),
|
|
i(e, n[0]) &&
|
|
(1 === n.length && "keydown" === e.type && a(n[0]), n.shift()));
|
|
}),
|
|
(this.add = function(n, r, i, a) {
|
|
var s;
|
|
return (
|
|
(s = i),
|
|
"string" == typeof i
|
|
? (i = function() {
|
|
e.execCommand(s, !1, null);
|
|
})
|
|
: Ot.isArray(s) &&
|
|
(i = function() {
|
|
e.execCommand(s[0], s[1], s[2]);
|
|
}),
|
|
Kd(Xd(Ot.trim(n.toLowerCase())), function(e) {
|
|
var n = o(e, r, i, a);
|
|
t[n.id] = n;
|
|
}),
|
|
!0
|
|
);
|
|
}),
|
|
(this.remove = function(e) {
|
|
var n = o(e);
|
|
return !!t[n.id] && (delete t[n.id], !0);
|
|
});
|
|
},
|
|
Qd = Ot.each,
|
|
Zd = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = 1;
|
|
for (
|
|
a = e.getShortEndedElements(),
|
|
(i = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex = r = n;
|
|
(o = i.exec(t));
|
|
|
|
) {
|
|
if (((r = i.lastIndex), "/" === o[1])) s--;
|
|
else if (!o[1]) {
|
|
if (o[2] in a) continue;
|
|
s++;
|
|
}
|
|
if (0 === s) break;
|
|
}
|
|
return r;
|
|
},
|
|
em = function(e, t) {
|
|
var n = this,
|
|
r = function() {};
|
|
(e = e || {}),
|
|
(n.schema = t = t || Fo()),
|
|
!1 !== e.fix_self_closing && (e.fix_self_closing = !0),
|
|
Qd("comment cdata text start end pi doctype".split(" "), function(t) {
|
|
t && (n[t] = e[t] || r);
|
|
}),
|
|
(n.parse = function(n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b,
|
|
C,
|
|
x,
|
|
w,
|
|
N,
|
|
E,
|
|
S,
|
|
k,
|
|
T,
|
|
A,
|
|
_,
|
|
B,
|
|
R,
|
|
D = this,
|
|
O = 0,
|
|
P = [],
|
|
I = 0,
|
|
L = Ao.decode,
|
|
M = Ot.makeMap("src,href,data,background,formaction,poster"),
|
|
F = /((java|vb)script|mhtml):/i,
|
|
z = /^data:/i,
|
|
U = function(e) {
|
|
var t, n;
|
|
for (t = P.length; t-- && P[t].name !== e; );
|
|
if (t >= 0) {
|
|
for (n = P.length - 1; n >= t; n--)
|
|
(e = P[n]).valid && D.end(e.name);
|
|
P.length = t;
|
|
}
|
|
},
|
|
V = function(t, n, r, o, i) {
|
|
var s, u, c;
|
|
if (
|
|
((r = (n = n.toLowerCase()) in m ? n : L(r || o || i || "")),
|
|
g &&
|
|
!l &&
|
|
0 ==
|
|
(0 === (c = n).indexOf("data-") ||
|
|
0 === c.indexOf("aria-")))
|
|
) {
|
|
if (!(s = C[n]) && x) {
|
|
for (u = x.length; u-- && !(s = x[u]).pattern.test(n); );
|
|
-1 === u && (s = null);
|
|
}
|
|
if (!s) return;
|
|
if (s.validValues && !(r in s.validValues)) return;
|
|
}
|
|
if (M[n] && !e.allow_script_urls) {
|
|
var f = r.replace(/[\s\u0000-\u001F]+/g, "");
|
|
try {
|
|
f = decodeURIComponent(f);
|
|
} catch (d) {
|
|
f = unescape(f);
|
|
}
|
|
if (F.test(f)) return;
|
|
if (
|
|
!e.allow_html_data_urls &&
|
|
z.test(f) &&
|
|
!/^data:image\//i.test(f)
|
|
)
|
|
return;
|
|
}
|
|
(l && (n in M || 0 === n.indexOf("on"))) ||
|
|
((a.map[n] = r), a.push({ name: n, value: r }));
|
|
};
|
|
for (
|
|
T = new RegExp(
|
|
"<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))",
|
|
"g"
|
|
),
|
|
A = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,
|
|
d = t.getShortEndedElements(),
|
|
k = e.self_closing_elements || t.getSelfClosingElements(),
|
|
m = t.getBoolAttrs(),
|
|
g = e.validate,
|
|
f = e.remove_internals,
|
|
R = e.fix_self_closing,
|
|
_ = t.getSpecialElements(),
|
|
S = n + ">";
|
|
(r = T.exec(S));
|
|
|
|
) {
|
|
if (
|
|
(O < r.index && D.text(L(n.substr(O, r.index - O))), (o = r[6]))
|
|
)
|
|
":" === (o = o.toLowerCase()).charAt(0) && (o = o.substr(1)),
|
|
U(o);
|
|
else if ((o = r[7])) {
|
|
if (r.index + r[0].length > n.length) {
|
|
D.text(L(n.substr(r.index))), (O = r.index + r[0].length);
|
|
continue;
|
|
}
|
|
if (
|
|
(":" === (o = o.toLowerCase()).charAt(0) && (o = o.substr(1)),
|
|
(p = o in d),
|
|
R && k[o] && P.length > 0 && P[P.length - 1].name === o && U(o),
|
|
!g || (h = t.getElementRule(o)))
|
|
) {
|
|
if (
|
|
((v = !0),
|
|
g && ((C = h.attributes), (x = h.attributePatterns)),
|
|
(b = r[8])
|
|
? ((l = -1 !== b.indexOf("data-mce-type")) && f && (v = !1),
|
|
((a = []).map = {}),
|
|
b.replace(A, V))
|
|
: ((a = []).map = {}),
|
|
g && !l)
|
|
) {
|
|
if (
|
|
((w = h.attributesRequired),
|
|
(N = h.attributesDefault),
|
|
(E = h.attributesForced),
|
|
h.removeEmptyAttrs && !a.length && (v = !1),
|
|
E)
|
|
)
|
|
for (s = E.length; s--; )
|
|
(c = (y = E[s]).name),
|
|
"{$uid}" === (B = y.value) && (B = "mce_" + I++),
|
|
(a.map[c] = B),
|
|
a.push({ name: c, value: B });
|
|
if (N)
|
|
for (s = N.length; s--; )
|
|
(c = (y = N[s]).name) in a.map ||
|
|
("{$uid}" === (B = y.value) && (B = "mce_" + I++),
|
|
(a.map[c] = B),
|
|
a.push({ name: c, value: B }));
|
|
if (w) {
|
|
for (s = w.length; s-- && !(w[s] in a.map); );
|
|
-1 === s && (v = !1);
|
|
}
|
|
if ((y = a.map["data-mce-bogus"])) {
|
|
if ("all" === y) {
|
|
(O = Zd(t, n, T.lastIndex)), (T.lastIndex = O);
|
|
continue;
|
|
}
|
|
v = !1;
|
|
}
|
|
}
|
|
v && D.start(o, a, p);
|
|
} else v = !1;
|
|
if ((i = _[o])) {
|
|
(i.lastIndex = O = r.index + r[0].length),
|
|
(r = i.exec(n))
|
|
? (v && (u = n.substr(O, r.index - O)),
|
|
(O = r.index + r[0].length))
|
|
: ((u = n.substr(O)), (O = n.length)),
|
|
v && (u.length > 0 && D.text(u, !0), D.end(o)),
|
|
(T.lastIndex = O);
|
|
continue;
|
|
}
|
|
p ||
|
|
(b && b.indexOf("/") === b.length - 1
|
|
? v && D.end(o)
|
|
: P.push({ name: o, valid: v }));
|
|
} else
|
|
(o = r[1])
|
|
? (">" === o.charAt(0) && (o = " " + o),
|
|
e.allow_conditional_comments ||
|
|
"[if" !== o.substr(0, 3).toLowerCase() ||
|
|
(o = " " + o),
|
|
D.comment(o))
|
|
: (o = r[2])
|
|
? D.cdata(o.replace(/<!--|-->/g, ""))
|
|
: (o = r[3])
|
|
? D.doctype(o)
|
|
: (o = r[4]) && D.pi(o, r[5]);
|
|
O = r.index + r[0].length;
|
|
}
|
|
for (
|
|
O < n.length && D.text(L(n.substr(O))), s = P.length - 1;
|
|
s >= 0;
|
|
s--
|
|
)
|
|
(o = P[s]).valid && D.end(o.name);
|
|
});
|
|
};
|
|
em.findEndTag = Zd;
|
|
var tm,
|
|
nm,
|
|
rm = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l = t,
|
|
f = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,
|
|
d = e.schema;
|
|
for (
|
|
s = e.getTempAttrs(),
|
|
u = l,
|
|
c = new RegExp(["\\s?(" + s.join("|") + ')="[^"]+"'].join("|"), "gi"),
|
|
l = u.replace(c, ""),
|
|
a = d.getShortEndedElements();
|
|
(i = f.exec(l));
|
|
|
|
)
|
|
(r = f.lastIndex),
|
|
(o = i[0].length),
|
|
(n = a[i[1]] ? r : em.findEndTag(d, l, r)),
|
|
(l = l.substring(0, r - o) + l.substring(n)),
|
|
(f.lastIndex = r - o);
|
|
return l;
|
|
},
|
|
om = function(e, t) {
|
|
return ii(rm(e, t));
|
|
},
|
|
im = rm,
|
|
am = function(e) {
|
|
var t = e !== undefined ? e.dom() : document;
|
|
return E.from(t.activeElement).map(Hn.fromDom);
|
|
},
|
|
sm = function(e) {
|
|
var t = Ur.owner(e).dom();
|
|
return e.dom() === t.activeElement;
|
|
},
|
|
um = function(e) {
|
|
return am(Ur.owner(e)).filter(function(t) {
|
|
return e.dom().contains(t.dom());
|
|
});
|
|
},
|
|
cm = function(e, t) {
|
|
return ((n = t),
|
|
n.collapsed
|
|
? E.from(zi(n.startContainer, n.startOffset)).map(Hn.fromDom)
|
|
: E.none()).bind(function(t) {
|
|
return io.isTableSection(t)
|
|
? E.some(t)
|
|
: !1 === Dr.contains(e, t)
|
|
? E.some(e)
|
|
: E.none();
|
|
});
|
|
var n;
|
|
},
|
|
lm = function(e, t) {
|
|
cm(Hn.fromDom(e.getBody()), t)
|
|
.bind(function(e) {
|
|
return Ws.firstPositionIn(e.dom());
|
|
})
|
|
.fold(
|
|
function() {
|
|
e.selection.normalize();
|
|
},
|
|
function(t) {
|
|
e.selection.setRng(t.toRange());
|
|
}
|
|
);
|
|
},
|
|
fm = function(e) {
|
|
if (e.setActive)
|
|
try {
|
|
e.setActive();
|
|
} catch (t) {
|
|
e.focus();
|
|
}
|
|
else e.focus();
|
|
},
|
|
dm = function(e) {
|
|
var t,
|
|
n = e.getBody();
|
|
return n && ((t = Hn.fromDom(n)), sm(t) || um(t).isSome());
|
|
},
|
|
mm = function(e) {
|
|
return e.inline
|
|
? dm(e)
|
|
: (t = e).iframeElement && sm(Hn.fromDom(t.iframeElement));
|
|
var t;
|
|
},
|
|
pm = function(e) {
|
|
e.editorManager.setActive(e);
|
|
},
|
|
gm = function(e, t) {
|
|
e.removed ||
|
|
(t
|
|
? pm(e)
|
|
: (function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o = e.selection,
|
|
i = e.settings.content_editable,
|
|
a = e.getBody(),
|
|
s = o.getRng();
|
|
if (
|
|
(e.quirks.refreshContentEditable(),
|
|
(n = e),
|
|
(r = o.getNode()),
|
|
(t = n.dom.getParent(r, function(e) {
|
|
return "true" === n.dom.getContentEditable(e);
|
|
})),
|
|
e.$.contains(a, t))
|
|
)
|
|
return fm(t), lm(e, s), void pm(e);
|
|
e.bookmark !== undefined &&
|
|
!1 === mm(e) &&
|
|
Td(e).each(function(t) {
|
|
e.selection.setRng(t), (s = t);
|
|
}),
|
|
i || (me.opera || fm(a), e.getWin().focus()),
|
|
(me.gecko || i) && (fm(a), lm(e, s)),
|
|
pm(e);
|
|
})(e));
|
|
},
|
|
hm = mm,
|
|
vm = function(e, t) {
|
|
return t.dom()[e];
|
|
},
|
|
ym = function(e, t) {
|
|
return parseInt(Cr(t, e), 10);
|
|
},
|
|
bm = y.curry(vm, "clientWidth"),
|
|
Cm = y.curry(vm, "clientHeight"),
|
|
xm = y.curry(ym, "margin-top"),
|
|
wm = y.curry(ym, "margin-left"),
|
|
Nm = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m = Hn.fromDom(e.getBody()),
|
|
p = e.inline ? m : Ur.documentElement(m),
|
|
g = ((r = e.inline),
|
|
(i = t),
|
|
(a = n),
|
|
(s = (o = p).dom().getBoundingClientRect()),
|
|
{
|
|
x: i - (r ? s.left + o.dom().clientLeft + wm(o) : 0),
|
|
y: a - (r ? s.top + o.dom().clientTop + xm(o) : 0)
|
|
});
|
|
return (
|
|
(c = g.x),
|
|
(l = g.y),
|
|
(f = bm((u = p))),
|
|
(d = Cm(u)),
|
|
c >= 0 && l >= 0 && c <= f && l <= d
|
|
);
|
|
},
|
|
Em = function(e) {
|
|
var t,
|
|
n = e.inline ? e.getBody() : e.getContentAreaContainer();
|
|
return ((t = n), E.from(t).map(Hn.fromDom))
|
|
.map(function(e) {
|
|
return Dr.contains(Ur.owner(e), e);
|
|
})
|
|
.getOr(!1);
|
|
},
|
|
Sm = function(e) {
|
|
var t,
|
|
n = [],
|
|
r = function() {
|
|
var t,
|
|
n = e.theme;
|
|
return n && n.getNotificationManagerImpl
|
|
? n.getNotificationManagerImpl()
|
|
: {
|
|
open: (t = function() {
|
|
throw new Error(
|
|
"Theme did not provide a NotificationManager implementation."
|
|
);
|
|
}),
|
|
close: t,
|
|
reposition: t,
|
|
getArgs: t
|
|
};
|
|
},
|
|
o = function() {
|
|
n.length > 0 && r().reposition(n);
|
|
},
|
|
i = function(e) {
|
|
M.findIndex(n, function(t) {
|
|
return t === e;
|
|
}).each(function(e) {
|
|
n.splice(e, 1);
|
|
});
|
|
},
|
|
a = function(t) {
|
|
if (!e.removed && Em(e))
|
|
return M.find(n, function(e) {
|
|
return (
|
|
(n = r().getArgs(e)),
|
|
(o = t),
|
|
!(
|
|
n.type !== o.type ||
|
|
n.text !== o.text ||
|
|
n.progressBar ||
|
|
n.timeout ||
|
|
o.progressBar ||
|
|
o.timeout
|
|
)
|
|
);
|
|
var n, o;
|
|
}).getOrThunk(function() {
|
|
e.editorManager.setActive(e);
|
|
var a,
|
|
s = r().open(t, function() {
|
|
i(s), o();
|
|
});
|
|
return (a = s), n.push(a), o(), s;
|
|
});
|
|
};
|
|
return (
|
|
(t = e).on("SkinLoaded", function() {
|
|
var e = t.settings.service_message;
|
|
e && a({ text: e, type: "warning", timeout: 0, icon: "" });
|
|
}),
|
|
t.on("ResizeEditor ResizeWindow", function() {
|
|
ye.requestAnimationFrame(o);
|
|
}),
|
|
t.on("remove", function() {
|
|
M.each(n, function(e) {
|
|
r().close(e);
|
|
});
|
|
}),
|
|
{
|
|
open: a,
|
|
close: function() {
|
|
E.from(n[0]).each(function(e) {
|
|
r().close(e), i(e), o();
|
|
});
|
|
},
|
|
getNotifications: function() {
|
|
return n;
|
|
}
|
|
}
|
|
);
|
|
},
|
|
km = function(e) {
|
|
var t = [],
|
|
n = function() {
|
|
var t,
|
|
n = e.theme;
|
|
return n && n.getWindowManagerImpl
|
|
? n.getWindowManagerImpl()
|
|
: {
|
|
open: (t = function() {
|
|
throw new Error(
|
|
"Theme did not provide a WindowManager implementation."
|
|
);
|
|
}),
|
|
alert: t,
|
|
confirm: t,
|
|
close: t,
|
|
getParams: t,
|
|
setParams: t
|
|
};
|
|
},
|
|
r = function(e, t) {
|
|
return function() {
|
|
return t ? t.apply(e, arguments) : undefined;
|
|
};
|
|
},
|
|
o = function(n) {
|
|
var r;
|
|
t.push(n), (r = n), e.fire("OpenWindow", { win: r });
|
|
},
|
|
i = function(n) {
|
|
M.findIndex(t, function(e) {
|
|
return e === n;
|
|
}).each(function(r) {
|
|
var o;
|
|
t.splice(r, 1),
|
|
(o = n),
|
|
e.fire("CloseWindow", { win: o }),
|
|
0 === t.length && e.focus();
|
|
});
|
|
},
|
|
a = function() {
|
|
return E.from(t[t.length - 1]);
|
|
};
|
|
return (
|
|
e.on("remove", function() {
|
|
M.each(t.slice(0), function(e) {
|
|
n().close(e);
|
|
});
|
|
}),
|
|
{
|
|
windows: t,
|
|
open: function(t, r) {
|
|
e.editorManager.setActive(e), Sd(e);
|
|
var a = n().open(t, r, i);
|
|
return o(a), a;
|
|
},
|
|
alert: function(e, t, a) {
|
|
var s = n().alert(e, r(a || this, t), i);
|
|
o(s);
|
|
},
|
|
confirm: function(e, t, a) {
|
|
var s = n().confirm(e, r(a || this, t), i);
|
|
o(s);
|
|
},
|
|
close: function() {
|
|
a().each(function(e) {
|
|
n().close(e), i(e);
|
|
});
|
|
},
|
|
getParams: function() {
|
|
return a()
|
|
.map(n().getParams)
|
|
.getOr(null);
|
|
},
|
|
setParams: function(e) {
|
|
a().each(function(t) {
|
|
n().setParams(t, e);
|
|
});
|
|
},
|
|
getWindows: function() {
|
|
return t;
|
|
}
|
|
}
|
|
);
|
|
},
|
|
Tm = ti.PluginManager,
|
|
Am = function(e, t) {
|
|
var n = (function(e, t) {
|
|
for (var n in Tm.urls)
|
|
if (Tm.urls[n] + "/plugin" + t + ".js" === e) return n;
|
|
return null;
|
|
})(t, e.suffix);
|
|
return n
|
|
? "Failed to load plugin: " + n + " from url " + t
|
|
: "Failed to load plugin url: " + t;
|
|
},
|
|
_m = function(e, t) {
|
|
e.notificationManager.open({ type: "error", text: t });
|
|
},
|
|
Bm = function(e, t) {
|
|
e._skinLoaded
|
|
? _m(e, t)
|
|
: e.on("SkinLoaded", function() {
|
|
_m(e, t);
|
|
});
|
|
},
|
|
Rm = function(e, t) {
|
|
Bm(e, Am(e, t));
|
|
},
|
|
Dm = function(e, t) {
|
|
Bm(e, "Failed to upload image: " + t);
|
|
},
|
|
Om = Bm,
|
|
Pm = function(e) {
|
|
for (var t = [], n = 1; n < arguments.length; n++)
|
|
t[n - 1] = arguments[n];
|
|
var r = window.console;
|
|
r && (r.error ? r.error.apply(r, arguments) : r.log.apply(r, arguments));
|
|
},
|
|
Im = ti.PluginManager,
|
|
Lm = ti.ThemeManager,
|
|
Mm = function() {
|
|
return new (V("XMLHttpRequest"))();
|
|
},
|
|
Fm = function(e, t) {
|
|
var n = {},
|
|
r = function(e, n, r, o) {
|
|
var i, a;
|
|
(i = new Mm()).open("POST", t.url),
|
|
(i.withCredentials = t.credentials),
|
|
(i.upload.onprogress = function(e) {
|
|
o((e.loaded / e.total) * 100);
|
|
}),
|
|
(i.onerror = function() {
|
|
r(
|
|
"Image upload failed due to a XHR Transport error. Code: " +
|
|
i.status
|
|
);
|
|
}),
|
|
(i.onload = function() {
|
|
var e, o, a;
|
|
i.status < 200 || i.status >= 300
|
|
? r("HTTP Error: " + i.status)
|
|
: (e = JSON.parse(i.responseText)) &&
|
|
"string" == typeof e.location
|
|
? n(
|
|
((o = t.basePath),
|
|
(a = e.location),
|
|
o ? o.replace(/\/$/, "") + "/" + a.replace(/^\//, "") : a)
|
|
)
|
|
: r("Invalid JSON: " + i.responseText);
|
|
}),
|
|
(a = new FormData()).append("file", e.blob(), e.filename()),
|
|
i.send(a);
|
|
},
|
|
o = function(e, t) {
|
|
return { url: t, blobInfo: e, status: !0 };
|
|
},
|
|
i = function(e, t) {
|
|
return { url: "", blobInfo: e, status: !1, error: t };
|
|
},
|
|
a = function(e, t) {
|
|
Ot.each(n[e], function(e) {
|
|
e(t);
|
|
}),
|
|
delete n[e];
|
|
},
|
|
s = function(r, s) {
|
|
return (
|
|
(r = Ot.grep(r, function(t) {
|
|
return !e.isUploaded(t.blobUri());
|
|
})),
|
|
pe.all(
|
|
Ot.map(r, function(r) {
|
|
return e.isPending(r.blobUri())
|
|
? ((f = r.blobUri()),
|
|
new pe(function(e) {
|
|
(n[f] = n[f] || []), n[f].push(e);
|
|
}))
|
|
: ((u = r),
|
|
(c = t.handler),
|
|
(l = s),
|
|
e.markPending(u.blobUri()),
|
|
new pe(function(t) {
|
|
var n;
|
|
try {
|
|
var r = function() {
|
|
n && n.close();
|
|
};
|
|
c(
|
|
u,
|
|
function(n) {
|
|
r(),
|
|
e.markUploaded(u.blobUri(), n),
|
|
a(u.blobUri(), o(u, n)),
|
|
t(o(u, n));
|
|
},
|
|
function(n) {
|
|
r(),
|
|
e.removeFailed(u.blobUri()),
|
|
a(u.blobUri(), i(u, n)),
|
|
t(i(u, n));
|
|
},
|
|
function(e) {
|
|
e < 0 ||
|
|
e > 100 ||
|
|
(n || (n = l()), n.progressBar.value(e));
|
|
}
|
|
);
|
|
} catch (s) {
|
|
t(i(u, s.message));
|
|
}
|
|
}));
|
|
var u, c, l, f;
|
|
})
|
|
)
|
|
);
|
|
};
|
|
return (
|
|
(t = Ot.extend({ credentials: !1, handler: r }, t)),
|
|
{
|
|
upload: function(e, n) {
|
|
return t.url || t.handler !== r
|
|
? s(e, n)
|
|
: new pe(function(e) {
|
|
e([]);
|
|
});
|
|
}
|
|
}
|
|
);
|
|
},
|
|
zm = function(e, t) {
|
|
return new (V("Blob"))(e, t);
|
|
},
|
|
Um = function(e) {
|
|
return V("atob")(e);
|
|
},
|
|
Vm = function(e) {
|
|
var t, n;
|
|
return (
|
|
(e = decodeURIComponent(e).split(",")),
|
|
(n = /data:([^;]+)/.exec(e[0])) && (t = n[1]),
|
|
{ type: t, data: e[1] }
|
|
);
|
|
},
|
|
Hm = function(e) {
|
|
return new pe(function(t) {
|
|
var n, r, o;
|
|
e = Vm(e);
|
|
try {
|
|
n = Um(e.data);
|
|
} catch (yC) {
|
|
return void t(new zm([]));
|
|
}
|
|
for (
|
|
r = new function(e) {
|
|
return new (V("Uint8Array"))(e);
|
|
}(n.length),
|
|
o = 0;
|
|
o < r.length;
|
|
o++
|
|
)
|
|
r[o] = n.charCodeAt(o);
|
|
t(new zm([r], { type: e.type }));
|
|
});
|
|
},
|
|
qm = function(e) {
|
|
return 0 === e.indexOf("blob:")
|
|
? ((t = e),
|
|
new pe(function(e, n) {
|
|
var r = function() {
|
|
n(
|
|
"Cannot convert " +
|
|
t +
|
|
" to Blob. Resource might not exist or is inaccessible."
|
|
);
|
|
};
|
|
try {
|
|
var o = new Mm();
|
|
o.open("GET", t, !0),
|
|
(o.responseType = "blob"),
|
|
(o.onload = function() {
|
|
200 === this.status ? e(this.response) : r();
|
|
}),
|
|
(o.onerror = r),
|
|
o.send();
|
|
} catch (i) {
|
|
r();
|
|
}
|
|
}))
|
|
: 0 === e.indexOf("data:")
|
|
? Hm(e)
|
|
: null;
|
|
var t;
|
|
},
|
|
jm = function(e) {
|
|
return new pe(function(t) {
|
|
var n = new function() {
|
|
return new (V("FileReader"))();
|
|
}();
|
|
(n.onloadend = function() {
|
|
t(n.result);
|
|
}),
|
|
n.readAsDataURL(e);
|
|
});
|
|
},
|
|
$m = Vm,
|
|
Wm = 0,
|
|
Km = function(e) {
|
|
return (e || "blobid") + Wm++;
|
|
},
|
|
Xm = function(e, t) {
|
|
var n = {};
|
|
return {
|
|
findAll: function(r, o) {
|
|
var i, a, s;
|
|
return (
|
|
o || (o = ji.constant(!0)),
|
|
(i = At.filter(
|
|
(s = r) ? s.getElementsByTagName("img") : [],
|
|
function(t) {
|
|
var n = t.src;
|
|
return (
|
|
!!me.fileApi &&
|
|
!t.hasAttribute("data-mce-bogus") &&
|
|
!t.hasAttribute("data-mce-placeholder") &&
|
|
!(!n || n === me.transparentSrc) &&
|
|
(0 === n.indexOf("blob:")
|
|
? !e.isUploaded(n)
|
|
: 0 === n.indexOf("data:") && o(t))
|
|
);
|
|
}
|
|
)),
|
|
(a = At.map(i, function(e) {
|
|
var r;
|
|
return n[e.src]
|
|
? new pe(function(t) {
|
|
n[e.src].then(function(n) {
|
|
if ("string" == typeof n) return n;
|
|
t({ image: e, blobInfo: n.blobInfo });
|
|
});
|
|
})
|
|
: ((r = new pe(function(n, r) {
|
|
var o, i, a, s, u, c;
|
|
(o = t),
|
|
(a = n),
|
|
(s = r),
|
|
0 !== (i = e).src.indexOf("blob:")
|
|
? ((u = $m(i.src).data),
|
|
(c = o.findFirst(function(e) {
|
|
return e.base64() === u;
|
|
}))
|
|
? a({ image: i, blobInfo: c })
|
|
: qm(i.src).then(
|
|
function(e) {
|
|
(c = o.create(Km(), e, u)),
|
|
o.add(c),
|
|
a({ image: i, blobInfo: c });
|
|
},
|
|
function(e) {
|
|
s(e);
|
|
}
|
|
))
|
|
: (c = o.getByUri(i.src))
|
|
? a({ image: i, blobInfo: c })
|
|
: qm(i.src).then(
|
|
function(e) {
|
|
jm(e).then(function(t) {
|
|
(u = $m(t).data),
|
|
(c = o.create(Km(), e, u)),
|
|
o.add(c),
|
|
a({ image: i, blobInfo: c });
|
|
});
|
|
},
|
|
function(e) {
|
|
s(e);
|
|
}
|
|
);
|
|
})
|
|
.then(function(e) {
|
|
return delete n[e.image.src], e;
|
|
})
|
|
["catch"](function(t) {
|
|
return delete n[e.src], t;
|
|
})),
|
|
(n[e.src] = r),
|
|
r);
|
|
})),
|
|
pe.all(a)
|
|
);
|
|
}
|
|
};
|
|
},
|
|
Ym = 0,
|
|
Gm = function(e) {
|
|
return (
|
|
e +
|
|
Ym++ +
|
|
((t = function() {
|
|
return Math.round(4294967295 * Math.random()).toString(36);
|
|
}),
|
|
"s" + new Date().getTime().toString(36) + t() + t() + t())
|
|
);
|
|
var t;
|
|
},
|
|
Jm = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f = ((t = []),
|
|
(n = ji.constant),
|
|
(r = function(e) {
|
|
var t, r, o;
|
|
if (!e.blob || !e.base64)
|
|
throw new Error(
|
|
"blob and base64 representations of the image are required for BlobInfo to be created"
|
|
);
|
|
return (
|
|
(t = e.id || Gm("blobid")),
|
|
(r = e.name || t),
|
|
{
|
|
id: n(t),
|
|
name: n(r),
|
|
filename: n(
|
|
r +
|
|
"." +
|
|
((o = e.blob.type),
|
|
{
|
|
"image/jpeg": "jpg",
|
|
"image/jpg": "jpg",
|
|
"image/gif": "gif",
|
|
"image/png": "png"
|
|
}[o.toLowerCase()] || "dat")
|
|
),
|
|
blob: n(e.blob),
|
|
base64: n(e.base64),
|
|
blobUri: n(e.blobUri || q(e.blob)),
|
|
uri: n(e.uri)
|
|
}
|
|
);
|
|
}),
|
|
{
|
|
create: function(e, t, n, o) {
|
|
return r(
|
|
"object" == typeof e ? e : { id: e, name: o, blob: t, base64: n }
|
|
);
|
|
},
|
|
add: function(e) {
|
|
o(e.id()) || t.push(e);
|
|
},
|
|
get: (o = function(e) {
|
|
return i(function(t) {
|
|
return t.id() === e;
|
|
});
|
|
}),
|
|
getByUri: function(e) {
|
|
return i(function(t) {
|
|
return t.blobUri() === e;
|
|
});
|
|
},
|
|
findFirst: (i = function(e) {
|
|
return At.filter(t, e)[0];
|
|
}),
|
|
removeByUri: function(e) {
|
|
t = At.filter(t, function(t) {
|
|
return t.blobUri() !== e || (j(t.blobUri()), !1);
|
|
});
|
|
},
|
|
destroy: function() {
|
|
At.each(t, function(e) {
|
|
j(e.blobUri());
|
|
}),
|
|
(t = []);
|
|
}
|
|
}),
|
|
d = e.settings,
|
|
m = ((u = {}),
|
|
(c = function(e, t) {
|
|
return { status: e, resultUri: t };
|
|
}),
|
|
{
|
|
hasBlobUri: (l = function(e) {
|
|
return e in u;
|
|
}),
|
|
getResultUri: function(e) {
|
|
var t = u[e];
|
|
return t ? t.resultUri : null;
|
|
},
|
|
isPending: function(e) {
|
|
return !!l(e) && 1 === u[e].status;
|
|
},
|
|
isUploaded: function(e) {
|
|
return !!l(e) && 2 === u[e].status;
|
|
},
|
|
markPending: function(e) {
|
|
u[e] = c(1, null);
|
|
},
|
|
markUploaded: function(e, t) {
|
|
u[e] = c(2, t);
|
|
},
|
|
removeFailed: function(e) {
|
|
delete u[e];
|
|
},
|
|
destroy: function() {
|
|
u = {};
|
|
}
|
|
}),
|
|
p = function(t) {
|
|
return function(n) {
|
|
return e.selection ? t(n) : [];
|
|
};
|
|
},
|
|
g = function(e, t, n) {
|
|
var r = 0;
|
|
do {
|
|
-1 !== (r = e.indexOf(t, r)) &&
|
|
((e = e.substring(0, r) + n + e.substr(r + t.length)),
|
|
(r += n.length - t.length + 1));
|
|
} while (-1 !== r);
|
|
return e;
|
|
},
|
|
h = function(e, t, n) {
|
|
return (
|
|
(e = g(e, 'src="' + t + '"', 'src="' + n + '"')),
|
|
(e = g(e, 'data-mce-src="' + t + '"', 'data-mce-src="' + n + '"'))
|
|
);
|
|
},
|
|
v = function(t, n) {
|
|
At.each(e.undoManager.data, function(e) {
|
|
"fragmented" === e.type
|
|
? (e.fragments = At.map(e.fragments, function(e) {
|
|
return h(e, t, n);
|
|
}))
|
|
: (e.content = h(e.content, t, n));
|
|
});
|
|
},
|
|
y = function() {
|
|
return e.notificationManager.open({
|
|
text: e.translate("Image uploading..."),
|
|
type: "info",
|
|
timeout: -1,
|
|
progressBar: !0
|
|
});
|
|
},
|
|
b = function(t, n) {
|
|
f.removeByUri(t.src),
|
|
v(t.src, n),
|
|
e
|
|
.$(t)
|
|
.attr({
|
|
src: d.images_reuse_filename
|
|
? n + "?" + new Date().getTime()
|
|
: n,
|
|
"data-mce-src": e.convertURL(n, "src")
|
|
});
|
|
},
|
|
C = function(t) {
|
|
return (
|
|
a ||
|
|
(a = Fm(m, {
|
|
url: d.images_upload_url,
|
|
basePath: d.images_upload_base_path,
|
|
credentials: d.images_upload_credentials,
|
|
handler: d.images_upload_handler
|
|
})),
|
|
N().then(
|
|
p(function(n) {
|
|
var r;
|
|
return (
|
|
(r = At.map(n, function(e) {
|
|
return e.blobInfo;
|
|
})),
|
|
a.upload(r, y).then(
|
|
p(function(r) {
|
|
var o = At.map(r, function(t, r) {
|
|
var o = n[r].image;
|
|
return (
|
|
t.status && !1 !== e.settings.images_replace_blob_uris
|
|
? b(o, t.url)
|
|
: t.error && Dm(e, t.error),
|
|
{ element: o, status: t.status }
|
|
);
|
|
});
|
|
return t && t(o), o;
|
|
})
|
|
)
|
|
);
|
|
})
|
|
)
|
|
);
|
|
},
|
|
x = function(e) {
|
|
if (!1 !== d.automatic_uploads) return C(e);
|
|
},
|
|
w = function(e) {
|
|
return !d.images_dataimg_filter || d.images_dataimg_filter(e);
|
|
},
|
|
N = function() {
|
|
return (
|
|
s || (s = Xm(m, f)),
|
|
s.findAll(e.getBody(), w).then(
|
|
p(function(t) {
|
|
return (
|
|
(t = At.filter(t, function(t) {
|
|
return "string" != typeof t || (Om(e, t), !1);
|
|
})),
|
|
At.each(t, function(e) {
|
|
v(e.image.src, e.blobInfo.blobUri()),
|
|
(e.image.src = e.blobInfo.blobUri()),
|
|
e.image.removeAttribute("data-mce-src");
|
|
}),
|
|
t
|
|
);
|
|
})
|
|
)
|
|
);
|
|
},
|
|
E = function(t) {
|
|
return t.replace(/src="(blob:[^"]+)"/g, function(t, n) {
|
|
var r = m.getResultUri(n);
|
|
if (r) return 'src="' + r + '"';
|
|
var o = f.getByUri(n);
|
|
return (
|
|
o ||
|
|
(o = At.reduce(
|
|
e.editorManager.get(),
|
|
function(e, t) {
|
|
return (
|
|
e ||
|
|
(t.editorUpload && t.editorUpload.blobCache.getByUri(n))
|
|
);
|
|
},
|
|
null
|
|
)),
|
|
o
|
|
? 'src="data:' + o.blob().type + ";base64," + o.base64() + '"'
|
|
: t
|
|
);
|
|
});
|
|
};
|
|
return (
|
|
e.on("setContent", function() {
|
|
!1 !== e.settings.automatic_uploads ? x() : N();
|
|
}),
|
|
e.on("RawSaveContent", function(e) {
|
|
e.content = E(e.content);
|
|
}),
|
|
e.on("getContent", function(e) {
|
|
e.source_view || "raw" === e.format || (e.content = E(e.content));
|
|
}),
|
|
e.on("PostRender", function() {
|
|
e.parser.addNodeFilter("img", function(e) {
|
|
At.each(e, function(e) {
|
|
var t = e.attr("src");
|
|
if (!f.getByUri(t)) {
|
|
var n = m.getResultUri(t);
|
|
n && e.attr("src", n);
|
|
}
|
|
});
|
|
});
|
|
}),
|
|
{
|
|
blobCache: f,
|
|
uploadImages: C,
|
|
uploadImagesAuto: x,
|
|
scanForImages: N,
|
|
destroy: function() {
|
|
f.destroy(), m.destroy(), (s = a = null);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
Qm = function(e, t) {
|
|
return e.hasOwnProperty(t.nodeName);
|
|
},
|
|
Zm = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = e.settings,
|
|
m = e.dom,
|
|
p = e.selection,
|
|
g = e.schema,
|
|
h = g.getBlockElements(),
|
|
v = p.getStart(),
|
|
y = e.getBody();
|
|
if (
|
|
((f = d.forced_root_block),
|
|
v &&
|
|
vo.isElement(v) &&
|
|
f &&
|
|
((l = y.nodeName.toLowerCase()),
|
|
g.isValidChild(l, f.toLowerCase()) &&
|
|
((b = h),
|
|
(C = y),
|
|
(x = v),
|
|
!M.exists(zu(Hn.fromDom(x), Hn.fromDom(C)), function(e) {
|
|
return Qm(b, e.dom());
|
|
}))))
|
|
) {
|
|
var b, C, x, w, N;
|
|
for (
|
|
n = (t = p.getRng()).startContainer,
|
|
r = t.startOffset,
|
|
o = t.endContainer,
|
|
i = t.endOffset,
|
|
c = hm(e),
|
|
v = y.firstChild;
|
|
v;
|
|
|
|
)
|
|
if (
|
|
((w = h),
|
|
(N = v),
|
|
vo.isText(N) ||
|
|
(vo.isElement(N) && !Qm(w, N) && !xs.isBookmarkNode(N)))
|
|
) {
|
|
if (vo.isText(v) && 0 === v.nodeValue.length) {
|
|
(s = v), (v = v.nextSibling), m.remove(s);
|
|
continue;
|
|
}
|
|
a ||
|
|
((a = m.create(f, e.settings.forced_root_block_attrs)),
|
|
v.parentNode.insertBefore(a, v),
|
|
(u = !0)),
|
|
(s = v),
|
|
(v = v.nextSibling),
|
|
a.appendChild(s);
|
|
} else (a = null), (v = v.nextSibling);
|
|
u &&
|
|
c &&
|
|
(t.setStart(n, r), t.setEnd(o, i), p.setRng(t), e.nodeChanged());
|
|
}
|
|
},
|
|
ep = function(e) {
|
|
e.settings.forced_root_block && e.on("NodeChange", y.curry(Zm, e));
|
|
},
|
|
tp = function(e) {
|
|
var t,
|
|
n = [];
|
|
"onselectionchange" in e.getDoc() ||
|
|
e.on("NodeChange Click MouseUp KeyUp Focus", function(n) {
|
|
var r, o;
|
|
(o = {
|
|
startContainer: (r = e.selection.getRng()).startContainer,
|
|
startOffset: r.startOffset,
|
|
endContainer: r.endContainer,
|
|
endOffset: r.endOffset
|
|
}),
|
|
("nodechange" !== n.type && qf(o, t)) || e.fire("SelectionChange"),
|
|
(t = o);
|
|
}),
|
|
e.on("contextmenu", function() {
|
|
e.fire("SelectionChange");
|
|
}),
|
|
e.on("SelectionChange", function() {
|
|
var t = e.selection.getStart(!0);
|
|
!t ||
|
|
(!me.range && e.selection.isCollapsed()) ||
|
|
(!(function(t) {
|
|
var r, o;
|
|
if (
|
|
(o = e
|
|
.$(t)
|
|
.parentsUntil(e.getBody())
|
|
.add(t)).length === n.length
|
|
) {
|
|
for (r = o.length; r >= 0 && o[r] === n[r]; r--);
|
|
if (-1 === r) return (n = o), !0;
|
|
}
|
|
return (n = o), !1;
|
|
})(t) &&
|
|
e.dom.isChildOf(t, e.getBody()) &&
|
|
e.nodeChanged({ selectionChange: !0 }));
|
|
}),
|
|
e.on("MouseUp", function(t) {
|
|
t.isDefaultPrevented() ||
|
|
("IMG" === e.selection.getNode().nodeName
|
|
? ye.setEditorTimeout(e, function() {
|
|
e.nodeChanged();
|
|
})
|
|
: e.nodeChanged());
|
|
}),
|
|
(this.nodeChanged = function(t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = e.selection;
|
|
e.initialized &&
|
|
i &&
|
|
!e.settings.disable_nodechange &&
|
|
!e.readonly &&
|
|
((o = e.getBody()),
|
|
((n = i.getStart(!0) || o).ownerDocument === e.getDoc() &&
|
|
e.dom.isChildOf(n, o)) ||
|
|
(n = o),
|
|
(r = []),
|
|
e.dom.getParent(n, function(e) {
|
|
if (e === o) return !0;
|
|
r.push(e);
|
|
}),
|
|
((t = t || {}).element = n),
|
|
(t.parents = r),
|
|
e.fire("NodeChange", t));
|
|
});
|
|
},
|
|
np = function(e) {
|
|
var t, n, r, o;
|
|
return (
|
|
(o = e.getBoundingClientRect()),
|
|
(n = (t = e.ownerDocument).documentElement),
|
|
(r = t.defaultView),
|
|
{
|
|
top: o.top + r.pageYOffset - n.clientTop,
|
|
left: o.left + r.pageXOffset - n.clientLeft
|
|
}
|
|
);
|
|
},
|
|
rp = function(e, t) {
|
|
return (
|
|
(n = (s = e).inline ? np(s.getBody()) : { left: 0, top: 0 }),
|
|
(a = (i = e).getBody()),
|
|
(r = i.inline
|
|
? { left: a.scrollLeft, top: a.scrollTop }
|
|
: { left: 0, top: 0 }),
|
|
{
|
|
pageX:
|
|
(o = (function(e, t) {
|
|
if (t.target.ownerDocument !== e.getDoc()) {
|
|
var n = np(e.getContentAreaContainer()),
|
|
r = ((i = (o = e).getBody()),
|
|
(a = o.getDoc().documentElement),
|
|
(s = { left: i.scrollLeft, top: i.scrollTop }),
|
|
(u = {
|
|
left: i.scrollLeft || a.scrollLeft,
|
|
top: i.scrollTop || a.scrollTop
|
|
}),
|
|
o.inline ? s : u);
|
|
return {
|
|
left: t.pageX - n.left + r.left,
|
|
top: t.pageY - n.top + r.top
|
|
};
|
|
}
|
|
var o, i, a, s, u;
|
|
return { left: t.pageX, top: t.pageY };
|
|
})(e, t)).left -
|
|
n.left +
|
|
r.left,
|
|
pageY: o.top - n.top + r.top
|
|
}
|
|
);
|
|
var n, r, o, i, a, s;
|
|
},
|
|
op = vo.isContentEditableFalse,
|
|
ip = vo.isContentEditableTrue,
|
|
ap = function(e) {
|
|
e && e.parentNode && e.parentNode.removeChild(e);
|
|
},
|
|
sp = function(e, t) {
|
|
return function(n) {
|
|
if (0 === n.button) {
|
|
var r = At.find(t.dom.getParents(n.target), ji.or(op, ip));
|
|
if (((s = t.getBody()), op((u = r)) && u !== s)) {
|
|
var o = t.dom.getPos(r),
|
|
i = t.getBody(),
|
|
a = t.getDoc().documentElement;
|
|
(e.element = r),
|
|
(e.screenX = n.screenX),
|
|
(e.screenY = n.screenY),
|
|
(e.maxX = (t.inline ? i.scrollWidth : a.offsetWidth) - 2),
|
|
(e.maxY = (t.inline ? i.scrollHeight : a.offsetHeight) - 2),
|
|
(e.relX = n.pageX - o.x),
|
|
(e.relY = n.pageY - o.y),
|
|
(e.width = r.offsetWidth),
|
|
(e.height = r.offsetHeight),
|
|
(e.ghost = (function(e, t, n, r) {
|
|
var o = t.cloneNode(!0);
|
|
e.dom.setStyles(o, { width: n, height: r }),
|
|
e.dom.setAttrib(o, "data-mce-selected", null);
|
|
var i = e.dom.create("div", {
|
|
class: "mce-drag-container",
|
|
"data-mce-bogus": "all",
|
|
unselectable: "on",
|
|
contenteditable: "false"
|
|
});
|
|
return (
|
|
e.dom.setStyles(i, {
|
|
position: "absolute",
|
|
opacity: 0.5,
|
|
overflow: "hidden",
|
|
border: 0,
|
|
padding: 0,
|
|
margin: 0,
|
|
width: n,
|
|
height: r
|
|
}),
|
|
e.dom.setStyles(o, { margin: 0, boxSizing: "border-box" }),
|
|
i.appendChild(o),
|
|
i
|
|
);
|
|
})(t, r, e.width, e.height));
|
|
}
|
|
}
|
|
var s, u;
|
|
};
|
|
},
|
|
up = function(e, t) {
|
|
return function(n) {
|
|
if (
|
|
e.dragging &&
|
|
((s = t),
|
|
(l = t.selection),
|
|
(f = l.getSel().getRangeAt(0).startContainer),
|
|
(u = 3 === f.nodeType ? f.parentNode : f),
|
|
(c = e.element),
|
|
u !== c && !s.dom.isChildOf(u, c) && !op(u))
|
|
) {
|
|
var r = ((i = e.element),
|
|
(a = i.cloneNode(!0)).removeAttribute("data-mce-selected"),
|
|
a),
|
|
o = t.fire("drop", {
|
|
targetClone: r,
|
|
clientX: n.clientX,
|
|
clientY: n.clientY
|
|
});
|
|
o.isDefaultPrevented() ||
|
|
((r = o.targetClone),
|
|
t.undoManager.transact(function() {
|
|
ap(e.element),
|
|
t.insertContent(t.dom.getOuterHTML(r)),
|
|
t._selectionOverrides.hideFakeCaret();
|
|
}));
|
|
}
|
|
var i, a, s, u, c, l, f;
|
|
cp(e);
|
|
};
|
|
},
|
|
cp = function(e) {
|
|
(e.dragging = !1), (e.element = null), ap(e.ghost);
|
|
},
|
|
lp = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = {};
|
|
(t = Xo.DOM),
|
|
(a = document),
|
|
(n = sp(d, e)),
|
|
(s = d),
|
|
(u = e),
|
|
(c = ye.throttle(function(e, t) {
|
|
u._selectionOverrides.hideFakeCaret(), u.selection.placeCaretAt(e, t);
|
|
}, 0)),
|
|
(r = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h = Math.max(
|
|
Math.abs(e.screenX - s.screenX),
|
|
Math.abs(e.screenY - s.screenY)
|
|
);
|
|
if (s.element && !s.dragging && h > 10) {
|
|
if (u.fire("dragstart", { target: s.element }).isDefaultPrevented())
|
|
return;
|
|
(s.dragging = !0), u.focus();
|
|
}
|
|
if (s.dragging) {
|
|
var v = ((p = s),
|
|
{ pageX: (g = rp(u, e)).pageX - p.relX, pageY: g.pageY + 5 });
|
|
(d = s.ghost),
|
|
(m = u.getBody()),
|
|
d.parentNode !== m && m.appendChild(d),
|
|
(t = s.ghost),
|
|
(n = v),
|
|
(r = s.width),
|
|
(o = s.height),
|
|
(i = s.maxX),
|
|
(a = s.maxY),
|
|
(l = 0),
|
|
(f = 0),
|
|
(t.style.left = n.pageX + "px"),
|
|
(t.style.top = n.pageY + "px"),
|
|
n.pageX + r > i && (l = n.pageX + r - i),
|
|
n.pageY + o > a && (f = n.pageY + o - a),
|
|
(t.style.width = r - l + "px"),
|
|
(t.style.height = o - f + "px"),
|
|
c(e.clientX, e.clientY);
|
|
}
|
|
}),
|
|
(o = up(d, e)),
|
|
(l = d),
|
|
(f = e),
|
|
(i = function() {
|
|
cp(l), l.dragging && f.fire("dragend");
|
|
}),
|
|
e.on("mousedown", n),
|
|
e.on("mousemove", r),
|
|
e.on("mouseup", o),
|
|
t.bind(a, "mousemove", r),
|
|
t.bind(a, "mouseup", i),
|
|
e.on("remove", function() {
|
|
t.unbind(a, "mousemove", r), t.unbind(a, "mouseup", i);
|
|
});
|
|
},
|
|
fp = function(e) {
|
|
var t;
|
|
lp(e),
|
|
(t = e).on("drop", function(e) {
|
|
var n =
|
|
"undefined" != typeof e.clientX
|
|
? t.getDoc().elementFromPoint(e.clientX, e.clientY)
|
|
: null;
|
|
(op(n) || op(t.dom.getContentEditableParent(n))) &&
|
|
e.preventDefault();
|
|
});
|
|
},
|
|
dp = vo.isContentEditableFalse,
|
|
mp = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = null,
|
|
i = function() {
|
|
!(function() {
|
|
var t, n, r, o, i;
|
|
for (
|
|
t = Qt("*[contentEditable=false]", e), o = 0;
|
|
o < t.length;
|
|
o++
|
|
)
|
|
(r = (n = t[o]).previousSibling),
|
|
mi.endsWithCaretContainer(r) &&
|
|
(1 === (i = r.data).length
|
|
? r.parentNode.removeChild(r)
|
|
: r.deleteData(i.length - 1, 1)),
|
|
(r = n.nextSibling),
|
|
mi.startsWithCaretContainer(r) &&
|
|
(1 === (i = r.data).length
|
|
? r.parentNode.removeChild(r)
|
|
: r.deleteData(0, 1));
|
|
})(),
|
|
r && (Oc.remove(r), (r = null)),
|
|
o && (o.remove(), (o = null)),
|
|
clearInterval(n);
|
|
},
|
|
a = function() {
|
|
n = ye.setInterval(function() {
|
|
e.ownerDocument.activeElement === e
|
|
? Qt("div.mce-visual-caret", e).toggleClass(
|
|
"mce-visual-caret-hidden"
|
|
)
|
|
: Qt("div.mce-visual-caret", e).addClass(
|
|
"mce-visual-caret-hidden"
|
|
);
|
|
}, 500);
|
|
};
|
|
return {
|
|
show: function(n, s) {
|
|
var u, c, l, f, d, m, p, g, h, v, y;
|
|
return (
|
|
i(),
|
|
(l = s) && /^(TD|TH)$/i.test(l.nodeName)
|
|
? null
|
|
: t(s)
|
|
? ((r = mi.insertBlock("p", s, n)),
|
|
(d = n),
|
|
(y = Oi((f = s).getBoundingClientRect(), d)),
|
|
"BODY" === e.tagName
|
|
? ((m = e.ownerDocument.documentElement),
|
|
(p = e.scrollLeft || m.scrollLeft),
|
|
(g = e.scrollTop || m.scrollTop))
|
|
: ((v = e.getBoundingClientRect()),
|
|
(p = e.scrollLeft - v.left),
|
|
(g = e.scrollTop - v.top)),
|
|
(y.left += p),
|
|
(y.right += p),
|
|
(y.top += g),
|
|
(y.bottom += g),
|
|
(y.width = 1),
|
|
(h = f.offsetWidth - f.clientWidth) > 0 &&
|
|
(d && (h *= -1), (y.left += h), (y.right += h)),
|
|
(u = y),
|
|
Qt(r).css("top", u.top),
|
|
(o = Qt(
|
|
'<div class="mce-visual-caret" data-mce-bogus="all"></div>'
|
|
)
|
|
.css(u)
|
|
.appendTo(e)),
|
|
n && o.addClass("mce-visual-caret-before"),
|
|
a(),
|
|
(c = s.ownerDocument.createRange()).setStart(r, 0),
|
|
c.setEnd(r, 0),
|
|
c)
|
|
: ((r = mi.insertInline(s, n)),
|
|
(c = s.ownerDocument.createRange()),
|
|
dp(r.nextSibling)
|
|
? (c.setStart(r, 0), c.setEnd(r, 0))
|
|
: (c.setStart(r, 1), c.setEnd(r, 1)),
|
|
c)
|
|
);
|
|
},
|
|
hide: i,
|
|
getCss: function() {
|
|
return ".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}";
|
|
},
|
|
destroy: function() {
|
|
ye.clearInterval(n);
|
|
}
|
|
};
|
|
},
|
|
pp = function(e) {
|
|
var t = function(t) {
|
|
return At.map(t, function(t) {
|
|
return ((t = Di(t)).node = e), t;
|
|
});
|
|
};
|
|
if (At.isArray(e))
|
|
return At.reduce(
|
|
e,
|
|
function(e, t) {
|
|
return e.concat(pp(t));
|
|
},
|
|
[]
|
|
);
|
|
if (vo.isElement(e)) return t(e.getClientRects());
|
|
if (vo.isText(e)) {
|
|
var n = e.ownerDocument.createRange();
|
|
return (
|
|
n.setStart(e, 0), n.setEnd(e, e.data.length), t(n.getClientRects())
|
|
);
|
|
}
|
|
},
|
|
gp = { getClientRects: pp },
|
|
hp = vo.isContentEditableFalse,
|
|
vp = _a.findNode,
|
|
yp = ji.curry,
|
|
bp = function(e, t) {
|
|
return Math.abs(e.left - t);
|
|
},
|
|
Cp = function(e, t) {
|
|
return Math.abs(e.right - t);
|
|
},
|
|
xp = function(e, t) {
|
|
var n = function(e, t) {
|
|
return e >= t.left && e <= t.right;
|
|
};
|
|
return At.reduce(e, function(e, r) {
|
|
var o, i;
|
|
return (
|
|
(o = Math.min(bp(e, t), Cp(e, t))),
|
|
(i = Math.min(bp(r, t), Cp(r, t))),
|
|
n(t, r) ? r : n(t, e) ? e : i === o && hp(r.node) ? r : i < o ? r : e
|
|
);
|
|
});
|
|
},
|
|
wp = function(e, t, n, r) {
|
|
for (; (r = vp(r, e, ki, t)); ) if (n(r)) return;
|
|
},
|
|
Np = function(e, t) {
|
|
var n = [],
|
|
r = function(e, r) {
|
|
var o;
|
|
return (
|
|
(o = At.filter(gp.getClientRects(r), function(n) {
|
|
return !e(n, t);
|
|
})),
|
|
(n = n.concat(o)),
|
|
0 === o.length
|
|
);
|
|
};
|
|
return (
|
|
n.push(t), wp(-1, e, yp(r, Ii), t.node), wp(1, e, yp(r, Li), t.node), n
|
|
);
|
|
},
|
|
Ep = xp,
|
|
Sp = function(e, t, n) {
|
|
var r, o, i, a, s;
|
|
return (
|
|
(r = gp.getClientRects(
|
|
((i = e), At.filter(At.toArray(i.getElementsByTagName("*")), hp))
|
|
)),
|
|
(r = At.filter(r, function(e) {
|
|
return n >= e.top && n <= e.bottom;
|
|
})),
|
|
(o = xp(r, t)) && (o = xp(Np(e, o), t)) && hp(o.node)
|
|
? ((s = t), { node: (a = o).node, before: bp(a, s) < Cp(a, s) })
|
|
: null
|
|
);
|
|
},
|
|
kp = function(e, t, n) {
|
|
return (
|
|
!n.collapsed &&
|
|
M.foldl(
|
|
n.getClientRects(),
|
|
function(n, r) {
|
|
return n || Mi(r, e, t);
|
|
},
|
|
!1
|
|
)
|
|
);
|
|
},
|
|
Tp = function(e, t) {
|
|
var n = null;
|
|
return {
|
|
cancel: function() {
|
|
null !== n && (clearTimeout(n), (n = null));
|
|
},
|
|
throttle: function() {
|
|
var r = arguments;
|
|
null === n &&
|
|
(n = setTimeout(function() {
|
|
e.apply(null, r), (n = null), (r = null);
|
|
}, t));
|
|
}
|
|
};
|
|
},
|
|
Ap = vo.isContentEditableTrue,
|
|
_p = vo.isContentEditableFalse,
|
|
Bp = function(e, t, n, r) {
|
|
return t._selectionOverrides.showCaret(e, n, r);
|
|
},
|
|
Rp = function(e, t) {
|
|
var n, r;
|
|
return (
|
|
(t = _a.normalizeRange(1, e.getBody(), t)),
|
|
(n = ia.fromRangeStart(t)),
|
|
_p(n.getNode())
|
|
? Bp(1, e, n.getNode(), !n.isAtEnd())
|
|
: _p(n.getNode(!0))
|
|
? Bp(1, e, n.getNode(!0), !1)
|
|
: ((r = e.dom.getParent(n.getNode(), ji.or(_p, Ap))),
|
|
_p(r) ? Bp(1, e, r, !1) : null)
|
|
);
|
|
},
|
|
Dp = Bp,
|
|
Op = function(e, t) {
|
|
var n, r;
|
|
return e.fire("BeforeObjectSelected", { target: t }).isDefaultPrevented()
|
|
? null
|
|
: ((r = (n = t).ownerDocument.createRange()).selectNode(n), r);
|
|
},
|
|
Pp = Rp,
|
|
Ip = function(e, t) {
|
|
return (t && t.collapsed && Rp(e, t)) || t;
|
|
},
|
|
Lp = function(e) {
|
|
var t = Tp(function() {
|
|
if (!e.removed) {
|
|
var t = Ip(e, e.selection.getRng());
|
|
e.selection.setRng(t);
|
|
}
|
|
}, 0);
|
|
e.on("focus", function() {
|
|
t.throttle();
|
|
}),
|
|
e.on("blur", function() {
|
|
t.cancel();
|
|
});
|
|
},
|
|
Mp = {
|
|
BACKSPACE: 8,
|
|
DELETE: 46,
|
|
DOWN: 40,
|
|
ENTER: 13,
|
|
LEFT: 37,
|
|
RIGHT: 39,
|
|
SPACEBAR: 32,
|
|
TAB: 9,
|
|
UP: 38,
|
|
modifierPressed: function(e) {
|
|
return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);
|
|
},
|
|
metaKeyPressed: function(e) {
|
|
return me.mac ? e.metaKey : e.ctrlKey && !e.altKey;
|
|
}
|
|
},
|
|
Fp = vo.isContentEditableTrue,
|
|
zp = vo.isContentEditableFalse,
|
|
Up = _a.isAfterContentEditableFalse,
|
|
Vp = _a.isBeforeContentEditableFalse,
|
|
Hp = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o = e.getBody(),
|
|
i = mp(e.getBody(), function(t) {
|
|
return e.dom.isBlock(t);
|
|
}),
|
|
a = "sel-" + e.dom.uniqueId(),
|
|
s = function(t) {
|
|
t && e.selection.setRng(t);
|
|
},
|
|
u = function() {
|
|
return e.selection.getRng();
|
|
},
|
|
c = function(t, n) {
|
|
e.selection.scrollIntoView(t, n);
|
|
},
|
|
l = function(t, n, r) {
|
|
return e
|
|
.fire("ShowCaret", { target: n, direction: t, before: r })
|
|
.isDefaultPrevented()
|
|
? null
|
|
: (c(n, -1 === t), i.show(r, n));
|
|
},
|
|
f = function(e, t) {
|
|
return (
|
|
(t = _a.normalizeRange(e, o, t)),
|
|
-1 === e ? ia.fromRangeStart(t) : ia.fromRangeEnd(t)
|
|
);
|
|
},
|
|
d = function(e) {
|
|
return (
|
|
mi.isCaretContainer(e) ||
|
|
mi.startsWithCaretContainer(e) ||
|
|
mi.endsWithCaretContainer(e)
|
|
);
|
|
},
|
|
m = function(e) {
|
|
return d(e.startContainer) || d(e.endContainer);
|
|
},
|
|
p = function(n, r) {
|
|
var o,
|
|
i,
|
|
s,
|
|
u,
|
|
c,
|
|
d,
|
|
p,
|
|
g,
|
|
v,
|
|
y,
|
|
b = e.$,
|
|
C = e.dom;
|
|
if (!n) return null;
|
|
if (n.collapsed) {
|
|
if (!m(n))
|
|
if (!1 === r) {
|
|
if (((g = f(-1, n)), zp(g.getNode(!0))))
|
|
return l(-1, g.getNode(!0), !1);
|
|
if (zp(g.getNode())) return l(-1, g.getNode(), !g.isAtEnd());
|
|
} else {
|
|
if (((g = f(1, n)), zp(g.getNode())))
|
|
return l(1, g.getNode(), !g.isAtEnd());
|
|
if (zp(g.getNode(!0))) return l(1, g.getNode(!0), !1);
|
|
}
|
|
return null;
|
|
}
|
|
return (
|
|
(u = n.startContainer),
|
|
(c = n.startOffset),
|
|
(d = n.endOffset),
|
|
3 === u.nodeType &&
|
|
0 === c &&
|
|
zp(u.parentNode) &&
|
|
((u = u.parentNode), (c = C.nodeIndex(u)), (u = u.parentNode)),
|
|
1 !== u.nodeType
|
|
? null
|
|
: (d === c + 1 && (o = u.childNodes[c]),
|
|
zp(o)
|
|
? ((v = y = o.cloneNode(!0)),
|
|
(p = e.fire("ObjectSelected", {
|
|
target: o,
|
|
targetClone: v
|
|
})).isDefaultPrevented()
|
|
? null
|
|
: ((i = Nu(Hn.fromDom(e.getBody()), "#" + a).fold(
|
|
function() {
|
|
return b([]);
|
|
},
|
|
function(e) {
|
|
return b([e.dom()]);
|
|
}
|
|
)),
|
|
(v = p.targetClone),
|
|
0 === i.length &&
|
|
(i = b(
|
|
'<div data-mce-bogus="all" class="mce-offscreen-selection"></div>'
|
|
).attr("id", a)).appendTo(e.getBody()),
|
|
(n = e.dom.createRng()),
|
|
v === y && me.ie
|
|
? (i
|
|
.empty()
|
|
.append(
|
|
'<p style="font-size: 0" data-mce-bogus="all">\xa0</p>'
|
|
)
|
|
.append(v),
|
|
n.setStartAfter(i[0].firstChild.firstChild),
|
|
n.setEndAfter(v))
|
|
: (i
|
|
.empty()
|
|
.append("\xa0")
|
|
.append(v)
|
|
.append("\xa0"),
|
|
n.setStart(i[0].firstChild, 1),
|
|
n.setEnd(i[0].lastChild, 0)),
|
|
i.css({ top: C.getPos(o, e.getBody()).y }),
|
|
i[0].focus(),
|
|
(s = e.selection.getSel()).removeAllRanges(),
|
|
s.addRange(n),
|
|
M.each(
|
|
Os(Hn.fromDom(e.getBody()), "*[data-mce-selected]"),
|
|
function(e) {
|
|
dr.remove(e, "data-mce-selected");
|
|
}
|
|
),
|
|
o.setAttribute("data-mce-selected", "1"),
|
|
(t = o),
|
|
h(),
|
|
n))
|
|
: null)
|
|
);
|
|
},
|
|
g = function() {
|
|
t &&
|
|
(t.removeAttribute("data-mce-selected"),
|
|
Nu(Hn.fromDom(e.getBody()), "#" + a).each(Bs.remove),
|
|
(t = null));
|
|
},
|
|
h = function() {
|
|
i.hide();
|
|
};
|
|
return (
|
|
me.ceFalse &&
|
|
((function() {
|
|
var n = function(t) {
|
|
for (var n = e.getBody(); t && t !== n; ) {
|
|
if (Fp(t) || zp(t)) return t;
|
|
t = t.parentNode;
|
|
}
|
|
return null;
|
|
};
|
|
e.on("mouseup", function(t) {
|
|
var n = u();
|
|
n.collapsed && Nm(e, t.clientX, t.clientY) && s(Pp(e, n));
|
|
}),
|
|
e.on("click", function(t) {
|
|
var r;
|
|
(r = n(t.target)) &&
|
|
(zp(r) && (t.preventDefault(), e.focus()),
|
|
Fp(r) && e.dom.isChildOf(r, e.selection.getNode()) && g());
|
|
}),
|
|
e.on("blur NewBlock", function() {
|
|
g();
|
|
});
|
|
var r,
|
|
i,
|
|
c = function(t, n) {
|
|
var r,
|
|
o,
|
|
i = e.dom.getParent(t, e.dom.isBlock),
|
|
a = e.dom.getParent(n, e.dom.isBlock);
|
|
return (
|
|
i &&
|
|
((r = i),
|
|
(o = a),
|
|
!(
|
|
e.dom.getParent(r, e.dom.isBlock) ===
|
|
e.dom.getParent(o, e.dom.isBlock)
|
|
)) &&
|
|
(function(e) {
|
|
var t = Ha(e);
|
|
if (!e.firstChild) return !1;
|
|
var n = ia.before(e.firstChild),
|
|
r = t.next(n);
|
|
return r && !Vp(r) && !Up(r);
|
|
})(i)
|
|
);
|
|
};
|
|
(i = !1),
|
|
(r = e).on("touchstart", function() {
|
|
i = !1;
|
|
}),
|
|
r.on("touchmove", function() {
|
|
i = !0;
|
|
}),
|
|
r.on("touchend", function(e) {
|
|
var t = n(e.target);
|
|
zp(t) && (i || (e.preventDefault(), p(Op(r, t))));
|
|
}),
|
|
e.on("mousedown", function(t) {
|
|
var r;
|
|
if (!1 !== Nm(e, t.clientX, t.clientY))
|
|
if ((r = n(t.target)))
|
|
zp(r)
|
|
? (t.preventDefault(), p(Op(e, r)))
|
|
: (g(),
|
|
(Fp(r) && t.shiftKey) ||
|
|
kp(t.clientX, t.clientY, e.selection.getRng()) ||
|
|
e.selection.placeCaretAt(t.clientX, t.clientY));
|
|
else {
|
|
g(), h();
|
|
var i = Sp(o, t.clientX, t.clientY);
|
|
i &&
|
|
(c(t.target, i.node) ||
|
|
(t.preventDefault(),
|
|
e.getBody().focus(),
|
|
s(l(1, i.node, i.before))));
|
|
}
|
|
}),
|
|
e.on("keypress", function(t) {
|
|
Mp.modifierPressed(t) ||
|
|
(t.keyCode, zp(e.selection.getNode()) && t.preventDefault());
|
|
}),
|
|
e.on("getSelectionRange", function(e) {
|
|
var n = e.range;
|
|
if (t) {
|
|
if (!t.parentNode) return void (t = null);
|
|
(n = n.cloneRange()).selectNode(t), (e.range = n);
|
|
}
|
|
}),
|
|
e.on("setSelectionRange", function(e) {
|
|
var t;
|
|
(t = p(e.range, e.forward)) && (e.range = t);
|
|
}),
|
|
e.on("AfterSetSelectionRange", function(t) {
|
|
var n,
|
|
r = t.range;
|
|
m(r) || h(),
|
|
(n = r.startContainer.parentNode),
|
|
e.dom.hasClass(n, "mce-offscreen-selection") || g();
|
|
}),
|
|
e.on("copy", function(t) {
|
|
var n,
|
|
r = t.clipboardData;
|
|
if (!t.isDefaultPrevented() && t.clipboardData && !me.ie) {
|
|
var o = (n = e.dom.get(a))
|
|
? n.getElementsByTagName("*")[0]
|
|
: n;
|
|
o &&
|
|
(t.preventDefault(),
|
|
r.clearData(),
|
|
r.setData("text/html", o.outerHTML),
|
|
r.setData("text/plain", o.outerText));
|
|
}
|
|
}),
|
|
fp(e),
|
|
Lp(e);
|
|
})(),
|
|
(n = e.contentStyles),
|
|
(r = ".mce-content-body"),
|
|
n.push(i.getCss()),
|
|
n.push(
|
|
r +
|
|
" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}" +
|
|
r +
|
|
" *[contentEditable=false] {cursor: default;}" +
|
|
r +
|
|
" *[contentEditable=true] {cursor: text;}"
|
|
)),
|
|
{
|
|
showCaret: l,
|
|
showBlockCaretContainer: function(e) {
|
|
e.hasAttribute("data-mce-caret") &&
|
|
(mi.showCaretContainerBlock(e), s(u()), c(e[0]));
|
|
},
|
|
hideFakeCaret: h,
|
|
destroy: function() {
|
|
i.destroy(), (t = null);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
qp = 0,
|
|
jp = 2,
|
|
$p = 1,
|
|
Wp = function(e, t) {
|
|
var n = e.length + t.length + 2,
|
|
r = new Array(n),
|
|
o = new Array(n),
|
|
i = function(n, r, o, a, u) {
|
|
var c = s(n, r, o, a);
|
|
if (
|
|
null === c ||
|
|
(c.start === r && c.diag === r - a) ||
|
|
(c.end === n && c.diag === n - o)
|
|
)
|
|
for (var l = n, f = o; l < r || f < a; )
|
|
l < r && f < a && e[l] === t[f]
|
|
? (u.push([0, e[l]]), ++l, ++f)
|
|
: r - n > a - o
|
|
? (u.push([2, e[l]]), ++l)
|
|
: (u.push([1, t[f]]), ++f);
|
|
else {
|
|
i(n, c.start, o, c.start - c.diag, u);
|
|
for (var d = c.start; d < c.end; ++d) u.push([0, e[d]]);
|
|
i(c.end, r, c.end - c.diag, a, u);
|
|
}
|
|
},
|
|
a = function(n, r, o, i) {
|
|
for (var a = n; a - r < i && a < o && e[a] === t[a - r]; ) ++a;
|
|
return { start: n, end: a, diag: r };
|
|
},
|
|
s = function(n, i, s, u) {
|
|
var c = i - n,
|
|
l = u - s;
|
|
if (0 === c || 0 === l) return null;
|
|
var f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h = c - l,
|
|
v = l + c,
|
|
y = (v % 2 == 0 ? v : v + 1) / 2;
|
|
for (r[1 + y] = n, o[1 + y] = i + 1, f = 0; f <= y; ++f) {
|
|
for (d = -f; d <= f; d += 2) {
|
|
for (
|
|
m = d + y,
|
|
d === -f || (d !== f && r[m - 1] < r[m + 1])
|
|
? (r[m] = r[m + 1])
|
|
: (r[m] = r[m - 1] + 1),
|
|
g = (p = r[m]) - n + s - d;
|
|
p < i && g < u && e[p] === t[g];
|
|
|
|
)
|
|
(r[m] = ++p), ++g;
|
|
if (h % 2 != 0 && h - f <= d && d <= h + f && o[m - h] <= r[m])
|
|
return a(o[m - h], d + n - s, i, u);
|
|
}
|
|
for (d = h - f; d <= h + f; d += 2) {
|
|
for (
|
|
m = d + y - h,
|
|
d === h - f || (d !== h + f && o[m + 1] <= o[m - 1])
|
|
? (o[m] = o[m + 1] - 1)
|
|
: (o[m] = o[m - 1]),
|
|
g = (p = o[m] - 1) - n + s - d;
|
|
p >= n && g >= s && e[p] === t[g];
|
|
|
|
)
|
|
(o[m] = p--), g--;
|
|
if (h % 2 == 0 && -f <= d && d <= f && o[m] <= r[m + h])
|
|
return a(o[m], d + n - s, i, u);
|
|
}
|
|
}
|
|
},
|
|
u = [];
|
|
return i(0, e.length, 0, t.length, u), u;
|
|
},
|
|
Kp = function(e) {
|
|
return 1 === e.nodeType
|
|
? e.outerHTML
|
|
: 3 === e.nodeType
|
|
? Ao.encodeRaw(e.data, !1)
|
|
: 8 === e.nodeType
|
|
? "\x3c!--" + e.data + "--\x3e"
|
|
: "";
|
|
},
|
|
Xp = function(e, t, n) {
|
|
var r = (function(e) {
|
|
var t, n, r;
|
|
for (
|
|
r = document.createElement("div"),
|
|
t = document.createDocumentFragment(),
|
|
e && (r.innerHTML = e);
|
|
(n = r.firstChild);
|
|
|
|
)
|
|
t.appendChild(n);
|
|
return t;
|
|
})(t);
|
|
if (e.hasChildNodes() && n < e.childNodes.length) {
|
|
var o = e.childNodes[n];
|
|
o.parentNode.insertBefore(r, o);
|
|
} else e.appendChild(r);
|
|
},
|
|
Yp = function(e) {
|
|
return At.filter(At.map(e.childNodes, Kp), function(e) {
|
|
return e.length > 0;
|
|
});
|
|
},
|
|
Gp = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = At.map(t.childNodes, Kp);
|
|
return (
|
|
(n = Wp(i, e)),
|
|
(r = t),
|
|
(o = 0),
|
|
At.each(n, function(e) {
|
|
e[0] === qp
|
|
? o++
|
|
: e[0] === $p
|
|
? (Xp(r, e[1], o), o++)
|
|
: e[0] === jp &&
|
|
(function(e, t) {
|
|
if (e.hasChildNodes() && t < e.childNodes.length) {
|
|
var n = e.childNodes[t];
|
|
n.parentNode.removeChild(n);
|
|
}
|
|
})(r, o);
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
Jp = function(e) {
|
|
return {
|
|
type: "fragmented",
|
|
fragments: e,
|
|
content: "",
|
|
bookmark: null,
|
|
beforeBookmark: null
|
|
};
|
|
},
|
|
Qp = function(e) {
|
|
return {
|
|
type: "complete",
|
|
fragments: null,
|
|
content: e,
|
|
bookmark: null,
|
|
beforeBookmark: null
|
|
};
|
|
},
|
|
Zp = function(e) {
|
|
return "fragmented" === e.type ? e.fragments.join("") : e.content;
|
|
},
|
|
eg = function(e) {
|
|
var t, n, r;
|
|
return (
|
|
(t = Yp(e.getBody())),
|
|
-1 !==
|
|
(n = (r = M.bind(t, function(t) {
|
|
var n = im(e.serializer, t);
|
|
return n.length > 0 ? [n] : [];
|
|
})).join("")).indexOf("</iframe>")
|
|
? Jp(r)
|
|
: Qp(n)
|
|
);
|
|
},
|
|
tg = function(e, t, n) {
|
|
"fragmented" === t.type
|
|
? Gp(t.fragments, e.getBody())
|
|
: e.setContent(t.content, { format: "raw" }),
|
|
e.selection.moveToBookmark(n ? t.beforeBookmark : t.bookmark);
|
|
},
|
|
ng = function(e, t) {
|
|
return !!e && !!t && Zp(e) === Zp(t);
|
|
},
|
|
rg = function(e) {
|
|
var t,
|
|
n,
|
|
r = this,
|
|
o = 0,
|
|
i = [],
|
|
a = 0,
|
|
s = function() {
|
|
return 0 === a;
|
|
},
|
|
u = function(e) {
|
|
s() && (r.typing = e);
|
|
},
|
|
c = function(t) {
|
|
e.setDirty(t);
|
|
},
|
|
l = function(e) {
|
|
u(!1), r.add({}, e);
|
|
},
|
|
f = function() {
|
|
r.typing && (u(!1), r.add());
|
|
};
|
|
return (
|
|
e.on("init", function() {
|
|
r.add();
|
|
}),
|
|
e.on("BeforeExecCommand", function(e) {
|
|
var t = e.command;
|
|
"Undo" !== t &&
|
|
"Redo" !== t &&
|
|
"mceRepaint" !== t &&
|
|
(f(), r.beforeChange());
|
|
}),
|
|
e.on("ExecCommand", function(e) {
|
|
var t = e.command;
|
|
"Undo" !== t && "Redo" !== t && "mceRepaint" !== t && l(e);
|
|
}),
|
|
e.on("ObjectResizeStart Cut", function() {
|
|
r.beforeChange();
|
|
}),
|
|
e.on("SaveContent ObjectResized blur", l),
|
|
e.on("DragEnd", l),
|
|
e.on("KeyUp", function(t) {
|
|
var o = t.keyCode;
|
|
t.isDefaultPrevented() ||
|
|
(((o >= 33 && o <= 36) ||
|
|
(o >= 37 && o <= 40) ||
|
|
45 === o ||
|
|
t.ctrlKey) &&
|
|
(l(), e.nodeChanged()),
|
|
(46 !== o && 8 !== o) || e.nodeChanged(),
|
|
n &&
|
|
r.typing &&
|
|
!1 === ng(eg(e), i[0]) &&
|
|
(!1 === e.isDirty() &&
|
|
(c(!0), e.fire("change", { level: i[0], lastLevel: null })),
|
|
e.fire("TypingUndo"),
|
|
(n = !1),
|
|
e.nodeChanged()));
|
|
}),
|
|
e.on("KeyDown", function(e) {
|
|
var t = e.keyCode;
|
|
if (!e.isDefaultPrevented())
|
|
if ((t >= 33 && t <= 36) || (t >= 37 && t <= 40) || 45 === t)
|
|
r.typing && l(e);
|
|
else {
|
|
var o = (e.ctrlKey && !e.altKey) || e.metaKey;
|
|
!(t < 16 || t > 20) ||
|
|
224 === t ||
|
|
91 === t ||
|
|
r.typing ||
|
|
o ||
|
|
(r.beforeChange(), u(!0), r.add({}, e), (n = !0));
|
|
}
|
|
}),
|
|
e.on("MouseDown", function(e) {
|
|
r.typing && l(e);
|
|
}),
|
|
e.addShortcut("meta+z", "", "Undo"),
|
|
e.addShortcut("meta+y,meta+shift+z", "", "Redo"),
|
|
e.on("AddUndo Undo Redo ClearUndos", function(t) {
|
|
t.isDefaultPrevented() || e.nodeChanged();
|
|
}),
|
|
(r = {
|
|
data: i,
|
|
typing: !1,
|
|
beforeChange: function() {
|
|
s() && (t = gs.getUndoBookmark(e.selection));
|
|
},
|
|
add: function(n, r) {
|
|
var a,
|
|
u,
|
|
l,
|
|
f = e.settings;
|
|
if (
|
|
((l = eg(e)),
|
|
(n = n || {}),
|
|
(n = Ot.extend(n, l)),
|
|
!1 === s() || e.removed)
|
|
)
|
|
return null;
|
|
if (
|
|
((u = i[o]),
|
|
e
|
|
.fire("BeforeAddUndo", {
|
|
level: n,
|
|
lastLevel: u,
|
|
originalEvent: r
|
|
})
|
|
.isDefaultPrevented())
|
|
)
|
|
return null;
|
|
if (u && ng(u, n)) return null;
|
|
if (
|
|
(i[o] && (i[o].beforeBookmark = t),
|
|
f.custom_undo_redo_levels && i.length > f.custom_undo_redo_levels)
|
|
) {
|
|
for (a = 0; a < i.length - 1; a++) i[a] = i[a + 1];
|
|
i.length--, (o = i.length);
|
|
}
|
|
(n.bookmark = gs.getUndoBookmark(e.selection)),
|
|
o < i.length - 1 && (i.length = o + 1),
|
|
i.push(n),
|
|
(o = i.length - 1);
|
|
var d = { level: n, lastLevel: u, originalEvent: r };
|
|
return (
|
|
e.fire("AddUndo", d), o > 0 && (c(!0), e.fire("change", d)), n
|
|
);
|
|
},
|
|
undo: function() {
|
|
var t;
|
|
return (
|
|
r.typing && (r.add(), (r.typing = !1), u(!1)),
|
|
o > 0 &&
|
|
((t = i[--o]),
|
|
tg(e, t, !0),
|
|
c(!0),
|
|
e.fire("undo", { level: t })),
|
|
t
|
|
);
|
|
},
|
|
redo: function() {
|
|
var t;
|
|
return (
|
|
o < i.length - 1 &&
|
|
((t = i[++o]),
|
|
tg(e, t, !1),
|
|
c(!0),
|
|
e.fire("redo", { level: t })),
|
|
t
|
|
);
|
|
},
|
|
clear: function() {
|
|
(i = []),
|
|
(o = 0),
|
|
(r.typing = !1),
|
|
(r.data = i),
|
|
e.fire("ClearUndos");
|
|
},
|
|
hasUndo: function() {
|
|
return o > 0 || (r.typing && i[0] && !ng(eg(e), i[0]));
|
|
},
|
|
hasRedo: function() {
|
|
return o < i.length - 1 && !r.typing;
|
|
},
|
|
transact: function(e) {
|
|
return f(), r.beforeChange(), r.ignore(e), r.add();
|
|
},
|
|
ignore: function(e) {
|
|
try {
|
|
a++, e();
|
|
} finally {
|
|
a--;
|
|
}
|
|
},
|
|
extra: function(t, n) {
|
|
var a, s;
|
|
r.transact(t) &&
|
|
((s = i[o].bookmark),
|
|
(a = i[o - 1]),
|
|
tg(e, a, !0),
|
|
r.transact(n) && (i[o - 1].beforeBookmark = s));
|
|
}
|
|
})
|
|
);
|
|
},
|
|
og = {},
|
|
ig = At.filter,
|
|
ag = At.each;
|
|
(nm = function(e) {
|
|
var t,
|
|
n,
|
|
r = e.selection.getRng();
|
|
(t = vo.matchNodeNames("pre")),
|
|
r.collapsed ||
|
|
((n = e.selection.getSelectedBlocks()),
|
|
ag(
|
|
ig(ig(n, t), function(e) {
|
|
return (
|
|
t(e.previousSibling) && -1 !== At.indexOf(n, e.previousSibling)
|
|
);
|
|
}),
|
|
function(e) {
|
|
var t, n;
|
|
(t = e.previousSibling),
|
|
Qt((n = e)).remove(),
|
|
Qt(t)
|
|
.append("<br><br>")
|
|
.append(n.childNodes);
|
|
}
|
|
));
|
|
}),
|
|
og[(tm = "pre")] || (og[tm] = []),
|
|
og[tm].push(nm);
|
|
var sg = function(e, t) {
|
|
ag(og[e], function(e) {
|
|
e(t);
|
|
});
|
|
},
|
|
ug = Ot.each,
|
|
cg = {
|
|
walk: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l = t.startContainer,
|
|
f = t.startOffset,
|
|
d = t.endContainer,
|
|
m = t.endOffset;
|
|
if (
|
|
(c = e.select("td[data-mce-selected],th[data-mce-selected]")).length >
|
|
0
|
|
)
|
|
ug(c, function(e) {
|
|
n([e]);
|
|
});
|
|
else {
|
|
var p,
|
|
g,
|
|
h,
|
|
v = function(e) {
|
|
var t;
|
|
return (
|
|
3 === (t = e[0]).nodeType &&
|
|
t === l &&
|
|
f >= t.nodeValue.length &&
|
|
e.splice(0, 1),
|
|
(t = e[e.length - 1]),
|
|
0 === m &&
|
|
e.length > 0 &&
|
|
t === d &&
|
|
3 === t.nodeType &&
|
|
e.splice(e.length - 1, 1),
|
|
e
|
|
);
|
|
},
|
|
y = function(e, t, n) {
|
|
for (var r = []; e && e !== n; e = e[t]) r.push(e);
|
|
return r;
|
|
},
|
|
b = function(e, t) {
|
|
do {
|
|
if (e.parentNode === t) return e;
|
|
e = e.parentNode;
|
|
} while (e);
|
|
},
|
|
C = function(e, t, r) {
|
|
var o = r ? "nextSibling" : "previousSibling";
|
|
for (s = (a = e).parentNode; a && a !== t; a = s)
|
|
(s = a.parentNode),
|
|
(u = y(a === e ? a : a[o], o)).length &&
|
|
(r || u.reverse(), n(v(u)));
|
|
};
|
|
if (
|
|
(1 === l.nodeType && l.hasChildNodes() && (l = l.childNodes[f]),
|
|
1 === d.nodeType &&
|
|
d.hasChildNodes() &&
|
|
((g = m),
|
|
(h = (p = d).childNodes),
|
|
--g > h.length - 1 ? (g = h.length - 1) : g < 0 && (g = 0),
|
|
(d = h[g] || p)),
|
|
l === d)
|
|
)
|
|
return n(v([l]));
|
|
for (r = e.findCommonAncestor(l, d), a = l; a; a = a.parentNode) {
|
|
if (a === d) return C(l, r, !0);
|
|
if (a === r) break;
|
|
}
|
|
for (a = d; a; a = a.parentNode) {
|
|
if (a === l) return C(d, r);
|
|
if (a === r) break;
|
|
}
|
|
(o = b(l, r) || l),
|
|
(i = b(d, r) || d),
|
|
C(l, o, !0),
|
|
(u = y(
|
|
o === l ? o : o.nextSibling,
|
|
"nextSibling",
|
|
i === d ? i.nextSibling : i
|
|
)).length && n(v(u)),
|
|
C(d, i);
|
|
}
|
|
}
|
|
},
|
|
lg = /^(src|href|style)$/,
|
|
fg = Ot.each,
|
|
dg = Uc.isEq,
|
|
mg = function(e) {
|
|
return /^(TH|TD)$/.test(e.nodeName);
|
|
},
|
|
pg = function(e, t, n) {
|
|
var r, o, i;
|
|
return (
|
|
(r = t[n ? "startContainer" : "endContainer"]),
|
|
(o = t[n ? "startOffset" : "endOffset"]),
|
|
vo.isElement(r) &&
|
|
((i = r.childNodes.length - 1),
|
|
!n && o && o--,
|
|
(r = r.childNodes[o > i ? i : o])),
|
|
vo.isText(r) &&
|
|
n &&
|
|
o >= r.nodeValue.length &&
|
|
(r = new to(r, e.getBody()).next() || r),
|
|
vo.isText(r) &&
|
|
!n &&
|
|
0 === o &&
|
|
(r = new to(r, e.getBody()).prev() || r),
|
|
r
|
|
);
|
|
},
|
|
gg = function(e, t, n, r) {
|
|
var o = e.create(n, r);
|
|
return t.parentNode.insertBefore(o, t), o.appendChild(t), o;
|
|
},
|
|
hg = function(e, t, n, r) {
|
|
return (
|
|
!(t = Uc.getNonWhiteSpaceSibling(t, n, r)) ||
|
|
"BR" === t.nodeName ||
|
|
e.isBlock(t)
|
|
);
|
|
},
|
|
vg = function(e, t, n, r, o) {
|
|
var i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b,
|
|
C = e.dom;
|
|
if (
|
|
((l = C),
|
|
!(
|
|
dg((f = r), (d = t).inline) ||
|
|
dg(f, d.block) ||
|
|
(d.selector ? vo.isElement(f) && l.is(f, d.selector) : void 0) ||
|
|
((u = r), (c = t), c.links && "A" === u.tagName)
|
|
))
|
|
)
|
|
return !1;
|
|
if ("all" !== t.remove)
|
|
for (
|
|
fg(t.styles, function(e, i) {
|
|
(e = Uc.normalizeStyleValue(C, Uc.replaceVars(e, n), i)),
|
|
"number" == typeof i && ((i = e), (o = 0)),
|
|
(t.remove_similar || !o || dg(Uc.getStyle(C, o, i), e)) &&
|
|
C.setStyle(r, i, ""),
|
|
(s = 1);
|
|
}),
|
|
s &&
|
|
"" === C.getAttrib(r, "style") &&
|
|
(r.removeAttribute("style"), r.removeAttribute("data-mce-style")),
|
|
fg(t.attributes, function(e, t) {
|
|
var i;
|
|
if (
|
|
((e = Uc.replaceVars(e, n)),
|
|
"number" == typeof t && ((t = e), (o = 0)),
|
|
!o || dg(C.getAttrib(o, t), e))
|
|
) {
|
|
if (
|
|
"class" === t &&
|
|
(e = C.getAttrib(r, t)) &&
|
|
((i = ""),
|
|
fg(e.split(/\s+/), function(e) {
|
|
/mce\-\w+/.test(e) && (i += (i ? " " : "") + e);
|
|
}),
|
|
i)
|
|
)
|
|
return void C.setAttrib(r, t, i);
|
|
"class" === t && r.removeAttribute("className"),
|
|
lg.test(t) && r.removeAttribute("data-mce-" + t),
|
|
r.removeAttribute(t);
|
|
}
|
|
}),
|
|
fg(t.classes, function(e) {
|
|
(e = Uc.replaceVars(e, n)),
|
|
(o && !C.hasClass(o, e)) || C.removeClass(r, e);
|
|
}),
|
|
a = C.getAttribs(r),
|
|
i = 0;
|
|
i < a.length;
|
|
i++
|
|
) {
|
|
var x = a[i].nodeName;
|
|
if (0 !== x.indexOf("_") && 0 !== x.indexOf("data-")) return !1;
|
|
}
|
|
return "none" !== t.remove
|
|
? ((m = e),
|
|
(g = t),
|
|
(v = (p = r).parentNode),
|
|
(y = m.dom),
|
|
(b = m.settings.forced_root_block),
|
|
g.block &&
|
|
(b
|
|
? v === y.getRoot() &&
|
|
((g.list_block && dg(p, g.list_block)) ||
|
|
fg(Ot.grep(p.childNodes), function(e) {
|
|
Uc.isValid(m, b, e.nodeName.toLowerCase())
|
|
? h
|
|
? h.appendChild(e)
|
|
: ((h = gg(y, e, b)),
|
|
y.setAttribs(h, m.settings.forced_root_block_attrs))
|
|
: (h = 0);
|
|
}))
|
|
: y.isBlock(p) &&
|
|
!y.isBlock(v) &&
|
|
(hg(y, p, !1) ||
|
|
hg(y, p.firstChild, !0, 1) ||
|
|
p.insertBefore(y.create("br"), p.firstChild),
|
|
hg(y, p, !0) ||
|
|
hg(y, p.lastChild, !1, 1) ||
|
|
p.appendChild(y.create("br")))),
|
|
(g.selector && g.inline && !dg(g.inline, p)) || y.remove(p, 1),
|
|
!0)
|
|
: void 0;
|
|
},
|
|
yg = vg,
|
|
bg = function(e, t, n, r, o) {
|
|
var i,
|
|
a,
|
|
s = e.formatter.get(t),
|
|
u = s[0],
|
|
c = !0,
|
|
l = e.dom,
|
|
f = e.selection,
|
|
d = function(r) {
|
|
var i,
|
|
a,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m = ((i = e),
|
|
(a = r),
|
|
(c = t),
|
|
(l = n),
|
|
(f = o),
|
|
fg(Uc.getParents(i.dom, a.parentNode).reverse(), function(e) {
|
|
var t;
|
|
d ||
|
|
"_start" === e.id ||
|
|
"_end" === e.id ||
|
|
((t = il.matchNode(i, e, c, l, f)) &&
|
|
!1 !== t.split &&
|
|
(d = e));
|
|
}),
|
|
d);
|
|
return (function(e, t, n, r, o, i, a, s) {
|
|
var u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p = e.dom;
|
|
if (n) {
|
|
for (
|
|
m = n.parentNode, u = r.parentNode;
|
|
u && u !== m;
|
|
u = u.parentNode
|
|
) {
|
|
for (c = p.clone(u, !1), d = 0; d < t.length; d++)
|
|
if (vg(e, t[d], s, c, c)) {
|
|
c = 0;
|
|
break;
|
|
}
|
|
c && (l && c.appendChild(l), f || (f = c), (l = c));
|
|
}
|
|
!i || (a.mixed && p.isBlock(n)) || (r = p.split(n, r)),
|
|
l && (o.parentNode.insertBefore(l, o), f.appendChild(o));
|
|
}
|
|
return r;
|
|
})(e, s, m, r, r, !0, u, n);
|
|
},
|
|
m = function(t) {
|
|
var r, o, i, a, f;
|
|
if (
|
|
(vo.isElement(t) &&
|
|
l.getContentEditable(t) &&
|
|
((a = c), (c = "true" === l.getContentEditable(t)), (f = !0)),
|
|
(r = Ot.grep(t.childNodes)),
|
|
c && !f)
|
|
)
|
|
for (o = 0, i = s.length; o < i && !vg(e, s[o], n, t, t); o++);
|
|
if (u.deep && r.length) {
|
|
for (o = 0, i = r.length; o < i; o++) m(r[o]);
|
|
f && (c = a);
|
|
}
|
|
},
|
|
p = function(e) {
|
|
var t = l.get(e ? "_start" : "_end"),
|
|
n = t[e ? "firstChild" : "lastChild"];
|
|
return (
|
|
xs.isBookmarkNode(n) && (n = n[e ? "firstChild" : "lastChild"]),
|
|
vo.isText(n) &&
|
|
0 === n.data.length &&
|
|
(n = e
|
|
? t.previousSibling || t.nextSibling
|
|
: t.nextSibling || t.previousSibling),
|
|
l.remove(t, !0),
|
|
n
|
|
);
|
|
},
|
|
g = function(t) {
|
|
var n,
|
|
r,
|
|
o = t.commonAncestorContainer;
|
|
if (((t = Qc(e, t, s, !0)), u.split)) {
|
|
if ((n = pg(e, t, !0)) !== (r = pg(e, t))) {
|
|
if (
|
|
(/^(TR|TH|TD)$/.test(n.nodeName) &&
|
|
n.firstChild &&
|
|
(n =
|
|
"TR" === n.nodeName
|
|
? n.firstChild.firstChild || n
|
|
: n.firstChild || n),
|
|
o &&
|
|
/^T(HEAD|BODY|FOOT|R)$/.test(o.nodeName) &&
|
|
mg(r) &&
|
|
r.firstChild &&
|
|
(r = r.firstChild || r),
|
|
l.isChildOf(n, r) &&
|
|
n !== r &&
|
|
!l.isBlock(r) &&
|
|
!mg(n) &&
|
|
!mg(r))
|
|
)
|
|
return (
|
|
(n = gg(l, n, "span", {
|
|
id: "_start",
|
|
"data-mce-type": "bookmark"
|
|
})),
|
|
d(n),
|
|
void (n = p(!0))
|
|
);
|
|
(n = gg(l, n, "span", {
|
|
id: "_start",
|
|
"data-mce-type": "bookmark"
|
|
})),
|
|
(r = gg(l, r, "span", {
|
|
id: "_end",
|
|
"data-mce-type": "bookmark"
|
|
})),
|
|
d(n),
|
|
d(r),
|
|
(n = p(!0)),
|
|
(r = p());
|
|
} else n = r = d(n);
|
|
(t.startContainer = n.parentNode ? n.parentNode : n),
|
|
(t.startOffset = l.nodeIndex(n)),
|
|
(t.endContainer = r.parentNode ? r.parentNode : r),
|
|
(t.endOffset = l.nodeIndex(r) + 1);
|
|
}
|
|
cg.walk(l, t, function(t) {
|
|
fg(t, function(t) {
|
|
m(t),
|
|
vo.isElement(t) &&
|
|
"underline" === e.dom.getStyle(t, "text-decoration") &&
|
|
t.parentNode &&
|
|
"underline" === Uc.getTextDecoration(l, t.parentNode) &&
|
|
vg(
|
|
e,
|
|
{
|
|
deep: !1,
|
|
exact: !0,
|
|
inline: "span",
|
|
styles: { textDecoration: "underline" }
|
|
},
|
|
null,
|
|
t
|
|
);
|
|
});
|
|
});
|
|
};
|
|
if (r)
|
|
r.nodeType
|
|
? ((a = l.createRng()).setStartBefore(r), a.setEndAfter(r), g(a))
|
|
: g(r);
|
|
else if ("false" !== l.getContentEditable(f.getNode()))
|
|
f.isCollapsed() &&
|
|
u.inline &&
|
|
!l.select("td[data-mce-selected],th[data-mce-selected]").length
|
|
? wl(e, t, n, o)
|
|
: ((i = f.getBookmark()),
|
|
g(f.getRng()),
|
|
f.moveToBookmark(i),
|
|
u.inline &&
|
|
il.match(e, t, n, f.getStart()) &&
|
|
Uc.moveStart(l, f, f.getRng()),
|
|
e.nodeChanged());
|
|
else {
|
|
r = f.getNode();
|
|
for (
|
|
var h = 0, v = s.length;
|
|
h < v && (!s[h].ceFalseOverride || !vg(e, s[h], n, r, r));
|
|
h++
|
|
);
|
|
}
|
|
},
|
|
Cg = Ot.each,
|
|
xg = function(e) {
|
|
return (
|
|
e &&
|
|
1 === e.nodeType &&
|
|
!xs.isBookmarkNode(e) &&
|
|
!Nl(e) &&
|
|
!vo.isBogus(e)
|
|
);
|
|
},
|
|
wg = function(e, t) {
|
|
var n;
|
|
for (n = e; n; n = n[t]) {
|
|
if (3 === n.nodeType && 0 !== n.nodeValue.length) return e;
|
|
if (1 === n.nodeType && !xs.isBookmarkNode(n)) return n;
|
|
}
|
|
return e;
|
|
},
|
|
Ng = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i = new Ns(e);
|
|
if (
|
|
t &&
|
|
n &&
|
|
((t = wg(t, "previousSibling")),
|
|
(n = wg(n, "nextSibling")),
|
|
i.compare(t, n))
|
|
) {
|
|
for (r = t.nextSibling; r && r !== n; )
|
|
(o = r), (r = r.nextSibling), t.appendChild(o);
|
|
return (
|
|
e.remove(n),
|
|
Ot.each(Ot.grep(n.childNodes), function(e) {
|
|
t.appendChild(e);
|
|
}),
|
|
t
|
|
);
|
|
}
|
|
return n;
|
|
},
|
|
Eg = function(e, t, n) {
|
|
Cg(e.childNodes, function(e) {
|
|
xg(e) && (t(e) && n(e), e.hasChildNodes() && Eg(e, t, n));
|
|
});
|
|
},
|
|
Sg = function(e, t) {
|
|
return y.curry(function(t, n) {
|
|
return !(!n || !Uc.getStyle(e, n, t));
|
|
}, t);
|
|
},
|
|
kg = function(e, t, n) {
|
|
return y.curry(
|
|
function(t, n, r) {
|
|
e.setStyle(r, t, n),
|
|
"" === r.getAttribute("style") && r.removeAttribute("style"),
|
|
Tg(e, r);
|
|
},
|
|
t,
|
|
n
|
|
);
|
|
},
|
|
Tg = function(e, t) {
|
|
"SPAN" === t.nodeName && 0 === e.getAttribs(t).length && e.remove(t, !0);
|
|
},
|
|
Ag = function(e, t) {
|
|
var n;
|
|
1 === t.nodeType &&
|
|
t.parentNode &&
|
|
1 === t.parentNode.nodeType &&
|
|
((n = Uc.getTextDecoration(e, t.parentNode)),
|
|
e.getStyle(t, "color") && n
|
|
? e.setStyle(t, "text-decoration", n)
|
|
: e.getStyle(t, "text-decoration") === n &&
|
|
e.setStyle(t, "text-decoration", null));
|
|
},
|
|
_g = function(e, t, n, r) {
|
|
Cg(t, function(t) {
|
|
Cg(e.dom.select(t.inline, r), function(r) {
|
|
xg(r) && yg(e, t, n, r, t.exact ? r : null);
|
|
}),
|
|
(function(e, t, n) {
|
|
if (t.clear_child_styles) {
|
|
var r = t.links ? "*:not(a)" : "*";
|
|
Cg(e.select(r, n), function(n) {
|
|
xg(n) &&
|
|
Cg(t.styles, function(t, r) {
|
|
e.setStyle(n, r, "");
|
|
});
|
|
});
|
|
}
|
|
})(e.dom, t, r);
|
|
});
|
|
},
|
|
Bg = function(e, t, n, r) {
|
|
(t.styles.color || t.styles.textDecoration) &&
|
|
(Ot.walk(r, y.curry(Ag, e), "childNodes"), Ag(e, r));
|
|
},
|
|
Rg = function(e, t, n, r) {
|
|
t.styles &&
|
|
t.styles.backgroundColor &&
|
|
Eg(
|
|
r,
|
|
Sg(e, "fontSize"),
|
|
kg(e, "backgroundColor", Uc.replaceVars(t.styles.backgroundColor, n))
|
|
);
|
|
},
|
|
Dg = function(e, t, n, r) {
|
|
("sub" !== t.inline && "sup" !== t.inline) ||
|
|
(Eg(r, Sg(e, "fontSize"), kg(e, "fontSize", "")),
|
|
e.remove(e.select("sup" === t.inline ? "sub" : "sup", r), !0));
|
|
},
|
|
Og = function(e, t, n, r) {
|
|
r &&
|
|
!1 !== t.merge_siblings &&
|
|
((r = Ng(e, Uc.getNonWhiteSpaceSibling(r), r)),
|
|
(r = Ng(e, r, Uc.getNonWhiteSpaceSibling(r, !0))));
|
|
},
|
|
Pg = function(e, t, n, r, o) {
|
|
(il.matchNode(e, o.parentNode, n, r) && yg(e, t, r, o)) ||
|
|
(t.merge_with_parents &&
|
|
e.dom.getParent(o.parentNode, function(i) {
|
|
if (il.matchNode(e, i, n, r)) return yg(e, t, r, o), !0;
|
|
}));
|
|
},
|
|
Ig = Ot.each,
|
|
Lg = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a = e.formatter.get(t),
|
|
s = a[0],
|
|
u = !r && e.selection.isCollapsed(),
|
|
c = e.dom,
|
|
l = e.selection,
|
|
f = function(e, t) {
|
|
if (((t = t || s), e)) {
|
|
if (
|
|
(t.onformat && t.onformat(e, t, n, r),
|
|
Ig(t.styles, function(t, r) {
|
|
c.setStyle(e, r, Uc.replaceVars(t, n));
|
|
}),
|
|
t.styles)
|
|
) {
|
|
var o = c.getAttrib(e, "style");
|
|
o && e.setAttribute("data-mce-style", o);
|
|
}
|
|
Ig(t.attributes, function(t, r) {
|
|
c.setAttrib(e, r, Uc.replaceVars(t, n));
|
|
}),
|
|
Ig(t.classes, function(t) {
|
|
(t = Uc.replaceVars(t, n)),
|
|
c.hasClass(e, t) || c.addClass(e, t);
|
|
});
|
|
}
|
|
},
|
|
d = function(e, t) {
|
|
var n = !1;
|
|
return (
|
|
!!s.selector &&
|
|
(Ig(e, function(e) {
|
|
if (!("collapsed" in e && e.collapsed !== u))
|
|
return c.is(t, e.selector) && !Nl(t)
|
|
? (f(t, e), (n = !0), !1)
|
|
: void 0;
|
|
}),
|
|
n)
|
|
);
|
|
},
|
|
m = function(r, o, i, u) {
|
|
var c,
|
|
l,
|
|
m = [],
|
|
p = !0;
|
|
(c = s.inline || s.block),
|
|
(l = r.create(c)),
|
|
f(l),
|
|
cg.walk(r, o, function(o) {
|
|
var i,
|
|
g = function(o) {
|
|
var h, v, y, b;
|
|
if (
|
|
((b = p),
|
|
(h = o.nodeName.toLowerCase()),
|
|
(v = o.parentNode.nodeName.toLowerCase()),
|
|
1 === o.nodeType &&
|
|
r.getContentEditable(o) &&
|
|
((b = p),
|
|
(p = "true" === r.getContentEditable(o)),
|
|
(y = !0)),
|
|
Uc.isEq(h, "br"))
|
|
)
|
|
return (i = 0), void (s.block && r.remove(o));
|
|
if (s.wrapper && il.matchNode(e, o, t, n)) i = 0;
|
|
else {
|
|
if (
|
|
p &&
|
|
!y &&
|
|
s.block &&
|
|
!s.wrapper &&
|
|
Uc.isTextBlock(e, h) &&
|
|
Uc.isValid(e, v, c)
|
|
)
|
|
return (
|
|
(o = r.rename(o, c)), f(o), m.push(o), void (i = 0)
|
|
);
|
|
if (s.selector) {
|
|
var C = d(a, o);
|
|
if (!s.inline || C) return void (i = 0);
|
|
}
|
|
!p ||
|
|
y ||
|
|
!Uc.isValid(e, c, h) ||
|
|
!Uc.isValid(e, v, c) ||
|
|
(!u &&
|
|
3 === o.nodeType &&
|
|
1 === o.nodeValue.length &&
|
|
65279 === o.nodeValue.charCodeAt(0)) ||
|
|
Nl(o) ||
|
|
(s.inline && r.isBlock(o))
|
|
? ((i = 0),
|
|
Ig(Ot.grep(o.childNodes), g),
|
|
y && (p = b),
|
|
(i = 0))
|
|
: (i ||
|
|
((i = r.clone(l, !1)),
|
|
o.parentNode.insertBefore(i, o),
|
|
m.push(i)),
|
|
i.appendChild(o));
|
|
}
|
|
};
|
|
Ig(o, g);
|
|
}),
|
|
!0 === s.links &&
|
|
Ig(m, function(e) {
|
|
var t = function(e) {
|
|
"A" === e.nodeName && f(e, s), Ig(Ot.grep(e.childNodes), t);
|
|
};
|
|
t(e);
|
|
}),
|
|
Ig(m, function(o) {
|
|
var i,
|
|
u,
|
|
c,
|
|
l,
|
|
d,
|
|
p = function(e) {
|
|
var t = !1;
|
|
return (
|
|
Ig(e.childNodes, function(e) {
|
|
if (
|
|
(n = e) &&
|
|
1 === n.nodeType &&
|
|
!xs.isBookmarkNode(n) &&
|
|
!Nl(n) &&
|
|
!vo.isBogus(n)
|
|
)
|
|
return (t = e), !1;
|
|
var n;
|
|
}),
|
|
t
|
|
);
|
|
};
|
|
(u = 0),
|
|
Ig(o.childNodes, function(e) {
|
|
Uc.isWhiteSpaceNode(e) || xs.isBookmarkNode(e) || u++;
|
|
}),
|
|
(i = u),
|
|
(!(m.length > 1) && r.isBlock(o)) || 0 !== i
|
|
? (s.inline || s.wrapper) &&
|
|
(s.exact ||
|
|
1 !== i ||
|
|
((l = p((c = o))) &&
|
|
!xs.isBookmarkNode(l) &&
|
|
il.matchName(r, l, s) &&
|
|
((d = r.clone(l, !1)),
|
|
f(d),
|
|
r.replace(d, c, !0),
|
|
r.remove(l, 1)),
|
|
(o = d || c)),
|
|
_g(e, a, n, o),
|
|
Pg(e, s, t, n, o),
|
|
Rg(r, s, n, o),
|
|
Dg(r, s, n, o),
|
|
Og(r, s, n, o))
|
|
: r.remove(o, 1);
|
|
});
|
|
};
|
|
if ("false" !== c.getContentEditable(l.getNode())) {
|
|
if (s) {
|
|
if (r)
|
|
r.nodeType
|
|
? d(a, r) ||
|
|
((i = c.createRng()).setStartBefore(r),
|
|
i.setEndAfter(r),
|
|
m(c, Qc(e, i, a), 0, !0))
|
|
: m(c, r, 0, !0);
|
|
else if (
|
|
u &&
|
|
s.inline &&
|
|
!c.select("td[data-mce-selected],th[data-mce-selected]").length
|
|
)
|
|
xl(e, t, n);
|
|
else {
|
|
var p = e.selection.getNode();
|
|
e.settings.forced_root_block ||
|
|
!a[0].defaultBlock ||
|
|
c.getParent(p, c.isBlock) ||
|
|
Lg(e, a[0].defaultBlock),
|
|
e.selection.setRng(Xs(e.selection.getRng())),
|
|
(o = l.getBookmark()),
|
|
m(c, Qc(e, l.getRng(), a)),
|
|
s.styles && Bg(c, s, n, p),
|
|
l.moveToBookmark(o),
|
|
Uc.moveStart(c, l, l.getRng()),
|
|
e.nodeChanged();
|
|
}
|
|
sg(t, e);
|
|
}
|
|
} else {
|
|
r = l.getNode();
|
|
for (var g = 0, h = a.length; g < h; g++)
|
|
if (a[g].ceFalseOverride && c.is(r, a[g].selector))
|
|
return void f(r, a[g]);
|
|
}
|
|
},
|
|
Mg = { applyFormat: Lg },
|
|
Fg = Ot.each,
|
|
zg = function(e, t, n, r, o) {
|
|
var i, a, s, u, c, l, f, d;
|
|
null === t.get() &&
|
|
((a = e),
|
|
(s = {}),
|
|
(i = t).set({}),
|
|
a.on("NodeChange", function(e) {
|
|
var t = Uc.getParents(a.dom, e.element),
|
|
n = {};
|
|
(t = Ot.grep(t, function(e) {
|
|
return 1 === e.nodeType && !e.getAttribute("data-mce-bogus");
|
|
})),
|
|
Fg(i.get(), function(e, r) {
|
|
Fg(t, function(o) {
|
|
return a.formatter.matchNode(o, r, {}, e.similar)
|
|
? (s[r] ||
|
|
(Fg(e, function(e) {
|
|
e(!0, { node: o, format: r, parents: t });
|
|
}),
|
|
(s[r] = e)),
|
|
(n[r] = e),
|
|
!1)
|
|
: !il.matchesUnInheritedFormatSelector(a, o, r) && void 0;
|
|
});
|
|
}),
|
|
Fg(s, function(r, o) {
|
|
n[o] ||
|
|
(delete s[o],
|
|
Fg(r, function(n) {
|
|
n(!1, { node: e.element, format: o, parents: t });
|
|
}));
|
|
});
|
|
})),
|
|
(c = n),
|
|
(l = r),
|
|
(f = o),
|
|
(d = (u = t).get()),
|
|
Fg(c.split(","), function(e) {
|
|
d[e] || ((d[e] = []), (d[e].similar = f)), d[e].push(l);
|
|
}),
|
|
u.set(d);
|
|
},
|
|
Ug = function(e) {
|
|
var t = {
|
|
valigntop: [{ selector: "td,th", styles: { verticalAlign: "top" } }],
|
|
valignmiddle: [
|
|
{ selector: "td,th", styles: { verticalAlign: "middle" } }
|
|
],
|
|
valignbottom: [
|
|
{ selector: "td,th", styles: { verticalAlign: "bottom" } }
|
|
],
|
|
alignleft: [
|
|
{
|
|
selector: "figure.image",
|
|
collapsed: !1,
|
|
classes: "align-left",
|
|
ceFalseOverride: !0,
|
|
preview: "font-family font-size"
|
|
},
|
|
{
|
|
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
|
|
styles: { textAlign: "left" },
|
|
inherit: !1,
|
|
preview: !1,
|
|
defaultBlock: "div"
|
|
},
|
|
{
|
|
selector: "img,table",
|
|
collapsed: !1,
|
|
styles: { float: "left" },
|
|
preview: "font-family font-size"
|
|
}
|
|
],
|
|
aligncenter: [
|
|
{
|
|
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
|
|
styles: { textAlign: "center" },
|
|
inherit: !1,
|
|
preview: "font-family font-size",
|
|
defaultBlock: "div"
|
|
},
|
|
{
|
|
selector: "figure.image",
|
|
collapsed: !1,
|
|
classes: "align-center",
|
|
ceFalseOverride: !0,
|
|
preview: "font-family font-size"
|
|
},
|
|
{
|
|
selector: "img",
|
|
collapsed: !1,
|
|
styles: {
|
|
display: "block",
|
|
marginLeft: "auto",
|
|
marginRight: "auto"
|
|
},
|
|
preview: !1
|
|
},
|
|
{
|
|
selector: "table",
|
|
collapsed: !1,
|
|
styles: { marginLeft: "auto", marginRight: "auto" },
|
|
preview: "font-family font-size"
|
|
}
|
|
],
|
|
alignright: [
|
|
{
|
|
selector: "figure.image",
|
|
collapsed: !1,
|
|
classes: "align-right",
|
|
ceFalseOverride: !0,
|
|
preview: "font-family font-size"
|
|
},
|
|
{
|
|
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
|
|
styles: { textAlign: "right" },
|
|
inherit: !1,
|
|
preview: "font-family font-size",
|
|
defaultBlock: "div"
|
|
},
|
|
{
|
|
selector: "img,table",
|
|
collapsed: !1,
|
|
styles: { float: "right" },
|
|
preview: "font-family font-size"
|
|
}
|
|
],
|
|
alignjustify: [
|
|
{
|
|
selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
|
|
styles: { textAlign: "justify" },
|
|
inherit: !1,
|
|
defaultBlock: "div",
|
|
preview: "font-family font-size"
|
|
}
|
|
],
|
|
bold: [
|
|
{ inline: "strong", remove: "all" },
|
|
{ inline: "span", styles: { fontWeight: "bold" } },
|
|
{ inline: "b", remove: "all" }
|
|
],
|
|
italic: [
|
|
{ inline: "em", remove: "all" },
|
|
{ inline: "span", styles: { fontStyle: "italic" } },
|
|
{ inline: "i", remove: "all" }
|
|
],
|
|
underline: [
|
|
{
|
|
inline: "span",
|
|
styles: { textDecoration: "underline" },
|
|
exact: !0
|
|
},
|
|
{ inline: "u", remove: "all" }
|
|
],
|
|
strikethrough: [
|
|
{
|
|
inline: "span",
|
|
styles: { textDecoration: "line-through" },
|
|
exact: !0
|
|
},
|
|
{ inline: "strike", remove: "all" }
|
|
],
|
|
forecolor: {
|
|
inline: "span",
|
|
styles: { color: "%value" },
|
|
links: !0,
|
|
remove_similar: !0,
|
|
clear_child_styles: !0
|
|
},
|
|
hilitecolor: {
|
|
inline: "span",
|
|
styles: { backgroundColor: "%value" },
|
|
links: !0,
|
|
remove_similar: !0,
|
|
clear_child_styles: !0
|
|
},
|
|
fontname: {
|
|
inline: "span",
|
|
styles: { fontFamily: "%value" },
|
|
clear_child_styles: !0
|
|
},
|
|
fontsize: {
|
|
inline: "span",
|
|
styles: { fontSize: "%value" },
|
|
clear_child_styles: !0
|
|
},
|
|
fontsize_class: { inline: "span", attributes: { class: "%value" } },
|
|
blockquote: { block: "blockquote", wrapper: 1, remove: "all" },
|
|
subscript: { inline: "sub" },
|
|
superscript: { inline: "sup" },
|
|
code: { inline: "code" },
|
|
link: {
|
|
inline: "a",
|
|
selector: "a",
|
|
remove: "all",
|
|
split: !0,
|
|
deep: !0,
|
|
onmatch: function() {
|
|
return !0;
|
|
},
|
|
onformat: function(t, n, r) {
|
|
Ot.each(r, function(n, r) {
|
|
e.setAttrib(t, r, n);
|
|
});
|
|
}
|
|
},
|
|
removeformat: [
|
|
{
|
|
selector:
|
|
"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",
|
|
remove: "all",
|
|
split: !0,
|
|
expand: !1,
|
|
block_expand: !0,
|
|
deep: !0
|
|
},
|
|
{
|
|
selector: "span",
|
|
attributes: ["style", "class"],
|
|
remove: "empty",
|
|
split: !0,
|
|
expand: !1,
|
|
deep: !0
|
|
},
|
|
{
|
|
selector: "*",
|
|
attributes: ["style", "class"],
|
|
split: !1,
|
|
expand: !1,
|
|
deep: !0
|
|
}
|
|
]
|
|
};
|
|
return (
|
|
Ot.each(
|
|
"p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),
|
|
function(e) {
|
|
t[e] = { block: e, remove: "all" };
|
|
}
|
|
),
|
|
t
|
|
);
|
|
},
|
|
Vg = Ot.each,
|
|
Hg = Xo.DOM,
|
|
qg = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = (t && t.schema) || Fo({}),
|
|
a = function(e) {
|
|
var t, n, o;
|
|
return (
|
|
(r =
|
|
"string" == typeof e ? { name: e, classes: [], attrs: {} } : e),
|
|
(t = Hg.create(r.name)),
|
|
(n = t),
|
|
(o = r).classes.length && Hg.addClass(n, o.classes.join(" ")),
|
|
Hg.setAttribs(n, o.attrs),
|
|
t
|
|
);
|
|
},
|
|
s = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p = t.length > 0 && t[0],
|
|
g = p && p.name;
|
|
if (
|
|
((l = g),
|
|
(f = "string" != typeof (c = e) ? c.nodeName.toLowerCase() : c),
|
|
(d = i.getElementRule(f)),
|
|
(u =
|
|
!(!(m = d && d.parentsRequired) || !m.length) &&
|
|
(l && -1 !== Ot.inArray(m, l) ? l : m[0])))
|
|
)
|
|
g === u ? ((o = t[0]), (t = t.slice(1))) : (o = u);
|
|
else if (p) (o = t[0]), (t = t.slice(1));
|
|
else if (!n) return e;
|
|
return (
|
|
o && (r = a(o)).appendChild(e),
|
|
n &&
|
|
(r || (r = Hg.create("div")).appendChild(e),
|
|
Ot.each(n, function(t) {
|
|
var n = a(t);
|
|
r.insertBefore(n, e);
|
|
})),
|
|
s(r, t, o && o.siblings)
|
|
);
|
|
};
|
|
return e && e.length
|
|
? ((r = e[0]),
|
|
(n = a(r)),
|
|
(o = Hg.create("div")).appendChild(s(n, e.slice(1), r.siblings)),
|
|
o)
|
|
: "";
|
|
},
|
|
jg = function(e) {
|
|
var t,
|
|
n = { classes: [], attrs: {} };
|
|
return (
|
|
"*" !== (e = n.selector = Ot.trim(e)) &&
|
|
(t = e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function(
|
|
e,
|
|
t,
|
|
r,
|
|
o,
|
|
i
|
|
) {
|
|
switch (t) {
|
|
case "#":
|
|
n.attrs.id = r;
|
|
break;
|
|
case ".":
|
|
n.classes.push(r);
|
|
break;
|
|
case ":":
|
|
-1 !==
|
|
Ot.inArray(
|
|
"checked disabled enabled read-only required".split(" "),
|
|
r
|
|
) && (n.attrs[r] = r);
|
|
}
|
|
if ("[" === o) {
|
|
var a = i.match(/([\w\-]+)(?:\=\"([^\"]+))?/);
|
|
a && (n.attrs[a[1]] = a[2]);
|
|
}
|
|
return "";
|
|
})),
|
|
(n.name = t || "div"),
|
|
n
|
|
);
|
|
},
|
|
$g = function(e) {
|
|
return e && "string" == typeof e
|
|
? ((e = (e = e.split(/\s*,\s*/)[0]).replace(
|
|
/\s*(~\+|~|\+|>)\s*/g,
|
|
"$1"
|
|
)),
|
|
Ot.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/), function(e) {
|
|
var t = Ot.map(e.split(/(?:~\+|~|\+)/), jg),
|
|
n = t.pop();
|
|
return t.length && (n.siblings = t), n;
|
|
}).reverse())
|
|
: [];
|
|
},
|
|
Wg = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = "";
|
|
if (!1 === (s = e.settings.preview_styles)) return "";
|
|
"string" != typeof s &&
|
|
(s =
|
|
"font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");
|
|
var c = function(e) {
|
|
return e.replace(/%(\w+)/g, "");
|
|
};
|
|
if ("string" == typeof t) {
|
|
if (!(t = e.formatter.get(t))) return;
|
|
t = t[0];
|
|
}
|
|
return "preview" in t && !1 === (s = t.preview)
|
|
? ""
|
|
: ((n = t.block || t.inline || "span"),
|
|
(i = $g(t.selector)).length
|
|
? (i[0].name || (i[0].name = n), (n = t.selector), (r = qg(i, e)))
|
|
: (r = qg([n], e)),
|
|
(o = Hg.select(n, r)[0] || r.firstChild),
|
|
Vg(t.styles, function(e, t) {
|
|
(e = c(e)) && Hg.setStyle(o, t, e);
|
|
}),
|
|
Vg(t.attributes, function(e, t) {
|
|
(e = c(e)) && Hg.setAttrib(o, t, e);
|
|
}),
|
|
Vg(t.classes, function(e) {
|
|
(e = c(e)), Hg.hasClass(o, e) || Hg.addClass(o, e);
|
|
}),
|
|
e.fire("PreviewFormats"),
|
|
Hg.setStyles(r, { position: "absolute", left: -65535 }),
|
|
e.getBody().appendChild(r),
|
|
(a = Hg.getStyle(e.getBody(), "fontSize", !0)),
|
|
(a = /px$/.test(a) ? parseInt(a, 10) : 0),
|
|
Vg(s.split(" "), function(t) {
|
|
var n = Hg.getStyle(o, t, !0);
|
|
if (
|
|
!(
|
|
("background-color" === t &&
|
|
/transparent|rgba\s*\([^)]+,\s*0\)/.test(n) &&
|
|
((n = Hg.getStyle(e.getBody(), t, !0)),
|
|
"#ffffff" === Hg.toHex(n).toLowerCase())) ||
|
|
("color" === t && "#000000" === Hg.toHex(n).toLowerCase())
|
|
)
|
|
) {
|
|
if ("font-size" === t && /em|%$/.test(n)) {
|
|
if (0 === a) return;
|
|
n = (n = parseFloat(n) / (/%$/.test(n) ? 100 : 1)) * a + "px";
|
|
}
|
|
"border" === t && n && (u += "padding:0 2px;"),
|
|
(u += t + ":" + n + ";");
|
|
}
|
|
}),
|
|
e.fire("AfterPreviewFormats"),
|
|
Hg.remove(r),
|
|
u);
|
|
},
|
|
Kg = function(e, t, n, r, o) {
|
|
var i = t.get(n);
|
|
!il.match(e, n, r, o) || ("toggle" in i[0] && !i[0].toggle)
|
|
? Mg.applyFormat(e, n, r, o)
|
|
: bg(e, n, r, o);
|
|
},
|
|
Xg = function(e) {
|
|
e.addShortcut("meta+b", "", "Bold"),
|
|
e.addShortcut("meta+i", "", "Italic"),
|
|
e.addShortcut("meta+u", "", "Underline");
|
|
for (var t = 1; t <= 6; t++)
|
|
e.addShortcut("access+" + t, "", ["FormatBlock", !1, "h" + t]);
|
|
e.addShortcut("access+7", "", ["FormatBlock", !1, "p"]),
|
|
e.addShortcut("access+8", "", ["FormatBlock", !1, "div"]),
|
|
e.addShortcut("access+9", "", ["FormatBlock", !1, "address"]);
|
|
},
|
|
Yg = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o = ((n = {}),
|
|
(r = function(e, t) {
|
|
e &&
|
|
("string" != typeof e
|
|
? Ot.each(e, function(e, t) {
|
|
r(t, e);
|
|
})
|
|
: ((t = t.length ? t : [t]),
|
|
Ot.each(t, function(e) {
|
|
"undefined" == typeof e.deep && (e.deep = !e.selector),
|
|
"undefined" == typeof e.split &&
|
|
(e.split = !e.selector || e.inline),
|
|
"undefined" == typeof e.remove &&
|
|
e.selector &&
|
|
!e.inline &&
|
|
(e.remove = "none"),
|
|
e.selector &&
|
|
e.inline &&
|
|
((e.mixed = !0), (e.block_expand = !0)),
|
|
"string" == typeof e.classes &&
|
|
(e.classes = e.classes.split(/\s+/));
|
|
}),
|
|
(n[e] = t)));
|
|
})(Ug((t = e).dom)),
|
|
r(t.settings.formats),
|
|
{
|
|
get: function(e) {
|
|
return e ? n[e] : n;
|
|
},
|
|
register: r,
|
|
unregister: function(e) {
|
|
return e && n[e] && delete n[e], n;
|
|
}
|
|
}),
|
|
i = Yl(null);
|
|
return (
|
|
Xg(e),
|
|
Cl(e),
|
|
{
|
|
get: o.get,
|
|
register: o.register,
|
|
unregister: o.unregister,
|
|
apply: y.curry(Mg.applyFormat, e),
|
|
remove: y.curry(bg, e),
|
|
toggle: y.curry(Kg, e, o),
|
|
match: y.curry(il.match, e),
|
|
matchAll: y.curry(il.matchAll, e),
|
|
matchNode: y.curry(il.matchNode, e),
|
|
canApply: y.curry(il.canApply, e),
|
|
formatChanged: y.curry(zg, e, i),
|
|
getCssText: y.curry(Wg, e)
|
|
}
|
|
);
|
|
},
|
|
Gg = function(e) {
|
|
return function() {
|
|
for (var t = new Array(arguments.length), n = 0; n < t.length; n++)
|
|
t[n] = arguments[n];
|
|
if (0 === t.length) throw new Error("Can't merge zero objects");
|
|
for (var r = {}, o = 0; o < t.length; o++) {
|
|
var i = t[o];
|
|
for (var a in i) i.hasOwnProperty(a) && (r[a] = e(r[a], i[a]));
|
|
}
|
|
return r;
|
|
};
|
|
},
|
|
Jg = Gg(function(e, t) {
|
|
return tr.isObject(e) && tr.isObject(t) ? Jg(e, t) : t;
|
|
}),
|
|
Qg = Gg(function(e, t) {
|
|
return t;
|
|
}),
|
|
Zg = { deepMerge: Jg, merge: Qg },
|
|
eh = function(e, t) {
|
|
return e.fire("PreProcess", t);
|
|
},
|
|
th = function(e, t) {
|
|
return e.fire("PostProcess", t);
|
|
},
|
|
nh = function(e, t, n) {
|
|
e.addAttributeFilter("data-mce-tabindex", function(e, t) {
|
|
for (var n, r = e.length; r--; )
|
|
(n = e[r]).attr("tabindex", n.attributes.map["data-mce-tabindex"]),
|
|
n.attr(t, null);
|
|
}),
|
|
e.addAttributeFilter("src,href,style", function(e, r) {
|
|
for (
|
|
var o,
|
|
i,
|
|
a = e.length,
|
|
s = "data-mce-" + r,
|
|
u = t.url_converter,
|
|
c = t.url_converter_scope;
|
|
a--;
|
|
|
|
)
|
|
(i = (o = e[a]).attributes.map[s]) !== undefined
|
|
? (o.attr(r, i.length > 0 ? i : null), o.attr(s, null))
|
|
: ((i = o.attributes.map[r]),
|
|
"style" === r
|
|
? (i = n.serializeStyle(n.parseStyle(i), o.name))
|
|
: u && (i = u.call(c, i, r, o.name)),
|
|
o.attr(r, i.length > 0 ? i : null));
|
|
}),
|
|
e.addAttributeFilter("class", function(e) {
|
|
for (var t, n, r = e.length; r--; )
|
|
(n = (t = e[r]).attr("class")) &&
|
|
((n = t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g, "")),
|
|
t.attr("class", n.length > 0 ? n : null));
|
|
}),
|
|
e.addAttributeFilter("data-mce-type", function(e, t, n) {
|
|
for (var r, o = e.length; o--; )
|
|
"bookmark" !== (r = e[o]).attributes.map["data-mce-type"] ||
|
|
n.cleanup ||
|
|
r.remove();
|
|
}),
|
|
e.addNodeFilter("noscript", function(e) {
|
|
for (var t, n = e.length; n--; )
|
|
(t = e[n].firstChild) && (t.value = Ao.decode(t.value));
|
|
}),
|
|
e.addNodeFilter("script,style", function(e, n) {
|
|
for (
|
|
var r,
|
|
o,
|
|
i,
|
|
a = e.length,
|
|
s = function(e) {
|
|
return e
|
|
.replace(/(<!--\[CDATA\[|\]\]-->)/g, "\n")
|
|
.replace(/^[\r\n]*|[\r\n]*$/g, "")
|
|
.replace(
|
|
/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,
|
|
""
|
|
)
|
|
.replace(
|
|
/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,
|
|
""
|
|
);
|
|
};
|
|
a--;
|
|
|
|
)
|
|
(o = (r = e[a]).firstChild ? r.firstChild.value : ""),
|
|
"script" === n
|
|
? ((i = r.attr("type")) &&
|
|
r.attr(
|
|
"type",
|
|
"mce-no/type" === i ? null : i.replace(/^mce\-/, "")
|
|
),
|
|
"xhtml" === t.element_format &&
|
|
o.length > 0 &&
|
|
(r.firstChild.value = "// <![CDATA[\n" + s(o) + "\n// ]]>"))
|
|
: "xhtml" === t.element_format &&
|
|
o.length > 0 &&
|
|
(r.firstChild.value = "\x3c!--\n" + s(o) + "\n--\x3e");
|
|
}),
|
|
e.addNodeFilter("#comment", function(e) {
|
|
for (var t, n = e.length; n--; )
|
|
0 === (t = e[n]).value.indexOf("[CDATA[")
|
|
? ((t.name = "#cdata"),
|
|
(t.type = 4),
|
|
(t.value = t.value.replace(/^\[CDATA\[|\]\]$/g, "")))
|
|
: 0 === t.value.indexOf("mce:protected ") &&
|
|
((t.name = "#text"),
|
|
(t.type = 3),
|
|
(t.raw = !0),
|
|
(t.value = unescape(t.value).substr(14)));
|
|
}),
|
|
e.addNodeFilter("xml:namespace,input", function(e, t) {
|
|
for (var n, r = e.length; r--; )
|
|
7 === (n = e[r]).type
|
|
? n.remove()
|
|
: 1 === n.type &&
|
|
("input" !== t ||
|
|
"type" in n.attributes.map ||
|
|
n.attr("type", "text"));
|
|
}),
|
|
e.addAttributeFilter("data-mce-type", function(t) {
|
|
M.each(t, function(t) {
|
|
"format-caret" === t.attr("data-mce-type") &&
|
|
(t.isEmpty(e.schema.getNonEmptyElements())
|
|
? t.remove()
|
|
: t.unwrap());
|
|
});
|
|
}),
|
|
e.addAttributeFilter(
|
|
"data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",
|
|
function(e, t) {
|
|
for (var n = e.length; n--; ) e[n].attr(t, null);
|
|
}
|
|
);
|
|
},
|
|
rh = function(e) {
|
|
var t,
|
|
n,
|
|
r = function(e) {
|
|
return e && "br" === e.name;
|
|
};
|
|
r((t = e.lastChild)) && r((n = t.prev)) && (t.remove(), n.remove());
|
|
},
|
|
oh = function(e, t, n) {
|
|
return (
|
|
(f = n),
|
|
(l = e) && l.hasEventListeners("PreProcess") && !f.no_events
|
|
? ((o = t),
|
|
(i = n),
|
|
(c = (r = e).dom),
|
|
(o = o.cloneNode(!0)),
|
|
(a = document.implementation).createHTMLDocument &&
|
|
((s = a.createHTMLDocument("")),
|
|
Ot.each("BODY" === o.nodeName ? o.childNodes : [o], function(e) {
|
|
s.body.appendChild(s.importNode(e, !0));
|
|
}),
|
|
(o = "BODY" !== o.nodeName ? s.body.firstChild : s.body),
|
|
(u = c.doc),
|
|
(c.doc = s)),
|
|
eh(r, Zg.merge(i, { node: o })),
|
|
u && (c.doc = u),
|
|
o)
|
|
: t
|
|
);
|
|
var r, o, i, a, s, u, c, l, f;
|
|
},
|
|
ih = function(e, t, n) {
|
|
e.addNodeFilter("font", function(e) {
|
|
M.each(e, function(e) {
|
|
var r,
|
|
o,
|
|
i = t.parse(e.attr("style")),
|
|
a = e.attr("color"),
|
|
s = e.attr("face"),
|
|
u = e.attr("size");
|
|
a && (i.color = a),
|
|
s && (i["font-family"] = s),
|
|
u && (i["font-size"] = n[parseInt(e.attr("size"), 10) - 1]),
|
|
(e.name = "span"),
|
|
e.attr("style", t.serialize(i)),
|
|
(r = e),
|
|
(o = ["color", "face", "size"]),
|
|
M.each(o, function(e) {
|
|
r.attr(e, null);
|
|
});
|
|
});
|
|
});
|
|
},
|
|
ah = function(e, t) {
|
|
var n,
|
|
r = zo();
|
|
t.convert_fonts_to_spans &&
|
|
ih(e, r, Ot.explode(t.font_size_legacy_values)),
|
|
(n = r),
|
|
e.addNodeFilter("strike", function(e) {
|
|
M.each(e, function(e) {
|
|
var t = n.parse(e.attr("style"));
|
|
(t["text-decoration"] = "line-through"),
|
|
(e.name = "span"),
|
|
e.attr("style", n.serialize(t));
|
|
});
|
|
});
|
|
},
|
|
sh = function(e, t) {
|
|
t.inline_styles && ah(e, t);
|
|
},
|
|
uh = /^[ \t\r\n]*$/,
|
|
ch = {
|
|
"#text": 3,
|
|
"#comment": 8,
|
|
"#cdata": 4,
|
|
"#pi": 7,
|
|
"#doctype": 10,
|
|
"#document-fragment": 11
|
|
},
|
|
lh = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i = n ? "lastChild" : "firstChild",
|
|
a = n ? "prev" : "next";
|
|
if (e[i]) return e[i];
|
|
if (e !== t) {
|
|
if ((r = e[a])) return r;
|
|
for (o = e.parent; o && o !== t; o = o.parent) if ((r = o[a])) return r;
|
|
}
|
|
},
|
|
fh = function(e, t) {
|
|
(this.name = e),
|
|
(this.type = t),
|
|
1 === t && ((this.attributes = []), (this.attributes.map = {}));
|
|
};
|
|
(fh.prototype = {
|
|
replace: function(e) {
|
|
return e.parent && e.remove(), this.insert(e, this), this.remove(), this;
|
|
},
|
|
attr: function(e, t) {
|
|
var n, r;
|
|
if ("string" != typeof e) {
|
|
for (r in e) this.attr(r, e[r]);
|
|
return this;
|
|
}
|
|
if ((n = this.attributes)) {
|
|
if (t !== undefined) {
|
|
if (null === t) {
|
|
if (e in n.map)
|
|
for (delete n.map[e], r = n.length; r--; )
|
|
if (n[r].name === e) return (n = n.splice(r, 1)), this;
|
|
return this;
|
|
}
|
|
if (e in n.map) {
|
|
for (r = n.length; r--; )
|
|
if (n[r].name === e) {
|
|
n[r].value = t;
|
|
break;
|
|
}
|
|
} else n.push({ name: e, value: t });
|
|
return (n.map[e] = t), this;
|
|
}
|
|
return n.map[e];
|
|
}
|
|
},
|
|
clone: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
r,
|
|
o,
|
|
i = new fh(this.name, this.type);
|
|
if ((n = this.attributes)) {
|
|
for ((o = []).map = {}, e = 0, t = n.length; e < t; e++)
|
|
"id" !== (r = n[e]).name &&
|
|
((o[o.length] = { name: r.name, value: r.value }),
|
|
(o.map[r.name] = r.value));
|
|
i.attributes = o;
|
|
}
|
|
return (i.value = this.value), (i.shortEnded = this.shortEnded), i;
|
|
},
|
|
wrap: function(e) {
|
|
return this.parent.insert(e, this), e.append(this), this;
|
|
},
|
|
unwrap: function() {
|
|
var e, t;
|
|
for (e = this.firstChild; e; )
|
|
(t = e.next), this.insert(e, this, !0), (e = t);
|
|
this.remove();
|
|
},
|
|
remove: function() {
|
|
var e = this.parent,
|
|
t = this.next,
|
|
n = this.prev;
|
|
return (
|
|
e &&
|
|
(e.firstChild === this
|
|
? ((e.firstChild = t), t && (t.prev = null))
|
|
: (n.next = t),
|
|
e.lastChild === this
|
|
? ((e.lastChild = n), n && (n.next = null))
|
|
: (t.prev = n),
|
|
(this.parent = this.next = this.prev = null)),
|
|
this
|
|
);
|
|
},
|
|
append: function(e) {
|
|
var t;
|
|
return (
|
|
e.parent && e.remove(),
|
|
(t = this.lastChild)
|
|
? ((t.next = e), (e.prev = t), (this.lastChild = e))
|
|
: (this.lastChild = this.firstChild = e),
|
|
(e.parent = this),
|
|
e
|
|
);
|
|
},
|
|
insert: function(e, t, n) {
|
|
var r;
|
|
return (
|
|
e.parent && e.remove(),
|
|
(r = t.parent || this),
|
|
n
|
|
? (t === r.firstChild ? (r.firstChild = e) : (t.prev.next = e),
|
|
(e.prev = t.prev),
|
|
(e.next = t),
|
|
(t.prev = e))
|
|
: (t === r.lastChild ? (r.lastChild = e) : (t.next.prev = e),
|
|
(e.next = t.next),
|
|
(e.prev = t),
|
|
(t.next = e)),
|
|
(e.parent = r),
|
|
e
|
|
);
|
|
},
|
|
getAll: function(e) {
|
|
var t,
|
|
n = [];
|
|
for (t = this.firstChild; t; t = lh(t, this)) t.name === e && n.push(t);
|
|
return n;
|
|
},
|
|
empty: function() {
|
|
var e, t, n;
|
|
if (this.firstChild) {
|
|
for (e = [], n = this.firstChild; n; n = lh(n, this)) e.push(n);
|
|
for (t = e.length; t--; )
|
|
(n =
|
|
e[t]).parent = n.firstChild = n.lastChild = n.next = n.prev = null;
|
|
}
|
|
return (this.firstChild = this.lastChild = null), this;
|
|
},
|
|
isEmpty: function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i = this.firstChild;
|
|
if (((t = t || {}), i))
|
|
do {
|
|
if (1 === i.type) {
|
|
if (i.attributes.map["data-mce-bogus"]) continue;
|
|
if (e[i.name]) return !1;
|
|
for (r = i.attributes.length; r--; )
|
|
if (
|
|
"name" === (o = i.attributes[r].name) ||
|
|
0 === o.indexOf("data-mce-bookmark")
|
|
)
|
|
return !1;
|
|
}
|
|
if (8 === i.type) return !1;
|
|
if (3 === i.type && !uh.test(i.value)) return !1;
|
|
if (3 === i.type && i.parent && t[i.parent.name] && uh.test(i.value))
|
|
return !1;
|
|
if (n && n(i)) return !1;
|
|
} while ((i = lh(i, this)));
|
|
return !0;
|
|
},
|
|
walk: function(e) {
|
|
return lh(this, null, e);
|
|
}
|
|
}),
|
|
(fh.create = function(e, t) {
|
|
var n, r;
|
|
if (((n = new fh(e, ch[e] || 1)), t)) for (r in t) n.attr(r, t[r]);
|
|
return n;
|
|
});
|
|
var dh = Ot.makeMap,
|
|
mh = Ot.each,
|
|
ph = Ot.explode,
|
|
gh = Ot.extend,
|
|
hh = function(e, t, n, r) {
|
|
(e.padd_empty_with_br || t.insert) && n[r.name]
|
|
? (r.empty().append(new fh("br", "1")).shortEnded = !0)
|
|
: (r.empty().append(new fh("#text", "3")).value = "\xa0");
|
|
},
|
|
vh = function(e, t) {
|
|
return (
|
|
e &&
|
|
e.firstChild &&
|
|
e.firstChild === e.lastChild &&
|
|
e.firstChild.name === t
|
|
);
|
|
},
|
|
yh = function(e, t, n, r) {
|
|
return r.isEmpty(t, n, function(t) {
|
|
return (n = t), (r = e.getElementRule(n.name)) && r.paddEmpty;
|
|
var n, r;
|
|
});
|
|
},
|
|
bh = function(e, t) {
|
|
var n = {},
|
|
r = {},
|
|
o = [],
|
|
i = {},
|
|
a = {};
|
|
return (
|
|
((e = e || {}).validate = !("validate" in e) || e.validate),
|
|
(e.root_name = e.root_name || "body"),
|
|
(n.schema = t = t || Fo()),
|
|
(n.filterNode = function(e) {
|
|
var t, n, s;
|
|
n in r && ((s = i[n]) ? s.push(e) : (i[n] = [e])), (t = o.length);
|
|
for (; t--; )
|
|
(n = o[t].name) in e.attributes.map &&
|
|
((s = a[n]) ? s.push(e) : (a[n] = [e]));
|
|
return e;
|
|
}),
|
|
(n.addNodeFilter = function(e, t) {
|
|
mh(ph(e), function(e) {
|
|
var n = r[e];
|
|
n || (r[e] = n = []), n.push(t);
|
|
});
|
|
}),
|
|
(n.addAttributeFilter = function(e, t) {
|
|
mh(ph(e), function(e) {
|
|
var n;
|
|
for (n = 0; n < o.length; n++)
|
|
if (o[n].name === e) return void o[n].callbacks.push(t);
|
|
o.push({ name: e, callbacks: [t] });
|
|
});
|
|
}),
|
|
(n.parse = function(s, u) {
|
|
var c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b,
|
|
C,
|
|
x,
|
|
w,
|
|
N,
|
|
E,
|
|
S,
|
|
k,
|
|
T,
|
|
A,
|
|
_,
|
|
B = [];
|
|
(u = u || {}),
|
|
(i = {}),
|
|
(a = {}),
|
|
(C = gh(
|
|
dh("script,style,head,html,body,title,meta,param"),
|
|
t.getBlockElements()
|
|
)),
|
|
(A = t.getNonEmptyElements()),
|
|
(T = t.children),
|
|
(b = e.validate),
|
|
(_ =
|
|
"forced_root_block" in u
|
|
? u.forced_root_block
|
|
: e.forced_root_block),
|
|
(k = t.getWhiteSpaceElements()),
|
|
(x = /^[ \t\r\n]+/),
|
|
(N = /[ \t\r\n]+$/),
|
|
(E = /[ \t\r\n]+/g),
|
|
(S = /^[ \t\r\n]+$/);
|
|
var R = function(e, t) {
|
|
var n,
|
|
o = new fh(e, t);
|
|
return e in r && ((n = i[e]) ? n.push(o) : (i[e] = [o])), o;
|
|
},
|
|
D = function(e) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a = t.getBlockElements();
|
|
for (n = e.prev; n && 3 === n.type; ) {
|
|
if ((o = n.value.replace(N, "")).length > 0)
|
|
return void (n.value = o);
|
|
if ((r = n.next)) {
|
|
if (3 === r.type && r.value.length) {
|
|
n = n.prev;
|
|
continue;
|
|
}
|
|
if (!a[r.name] && "script" !== r.name && "style" !== r.name) {
|
|
n = n.prev;
|
|
continue;
|
|
}
|
|
}
|
|
(i = n.prev), n.remove(), (n = i);
|
|
}
|
|
};
|
|
if (
|
|
((c = new em(
|
|
{
|
|
validate: b,
|
|
allow_script_urls: e.allow_script_urls,
|
|
allow_conditional_comments: e.allow_conditional_comments,
|
|
self_closing_elements: (function(e) {
|
|
var t,
|
|
n = {};
|
|
for (t in e) "li" !== t && "p" !== t && (n[t] = e[t]);
|
|
return n;
|
|
})(t.getSelfClosingElements()),
|
|
cdata: function(e) {
|
|
f.append(R("#cdata", 4)).value = e;
|
|
},
|
|
text: function(e, t) {
|
|
var n;
|
|
w ||
|
|
((e = e.replace(E, " ")),
|
|
f.lastChild &&
|
|
C[f.lastChild.name] &&
|
|
(e = e.replace(x, ""))),
|
|
0 !== e.length &&
|
|
(((n = R("#text", 3)).raw = !!t),
|
|
(f.append(n).value = e));
|
|
},
|
|
comment: function(e) {
|
|
f.append(R("#comment", 8)).value = e;
|
|
},
|
|
pi: function(e, t) {
|
|
(f.append(R(e, 7)).value = t), D(f);
|
|
},
|
|
doctype: function(e) {
|
|
(f.append(R("#doctype", 10)).value = e), D(f);
|
|
},
|
|
start: function(e, n, r) {
|
|
var i, s, u, c, l;
|
|
if ((u = b ? t.getElementRule(e) : {})) {
|
|
for (
|
|
(i = R(u.outputName || e, 1)).attributes = n,
|
|
i.shortEnded = r,
|
|
f.append(i),
|
|
(l = T[f.name]) && T[i.name] && !l[i.name] && B.push(i),
|
|
s = o.length;
|
|
s--;
|
|
|
|
)
|
|
(c = o[s].name) in n.map &&
|
|
((v = a[c]) ? v.push(i) : (a[c] = [i]));
|
|
C[e] && D(i), r || (f = i), !w && k[e] && (w = !0);
|
|
}
|
|
},
|
|
end: function(n) {
|
|
var r, o, i, a, s, c;
|
|
if ((o = b ? t.getElementRule(n) : {})) {
|
|
if (C[n] && !w) {
|
|
if ((r = f.firstChild) && 3 === r.type)
|
|
if ((i = r.value.replace(x, "")).length > 0)
|
|
(r.value = i), (r = r.next);
|
|
else
|
|
for (
|
|
a = r.next, r.remove(), r = a;
|
|
r && 3 === r.type;
|
|
|
|
)
|
|
(i = r.value),
|
|
(a = r.next),
|
|
(0 === i.length || S.test(i)) &&
|
|
(r.remove(), (r = a)),
|
|
(r = a);
|
|
if ((r = f.lastChild) && 3 === r.type)
|
|
if ((i = r.value.replace(N, "")).length > 0)
|
|
(r.value = i), (r = r.prev);
|
|
else
|
|
for (
|
|
a = r.prev, r.remove(), r = a;
|
|
r && 3 === r.type;
|
|
|
|
)
|
|
(i = r.value),
|
|
(a = r.prev),
|
|
(0 === i.length || S.test(i)) &&
|
|
(r.remove(), (r = a)),
|
|
(r = a);
|
|
}
|
|
if (
|
|
(w && k[n] && (w = !1),
|
|
o.removeEmpty &&
|
|
yh(t, A, k, f) &&
|
|
!f.attributes.map.name &&
|
|
!f.attributes.map.id)
|
|
)
|
|
return (
|
|
(s = f.parent),
|
|
C[f.name] ? f.empty().remove() : f.unwrap(),
|
|
void (f = s)
|
|
);
|
|
o.paddEmpty &&
|
|
((vh((c = f), "#text") &&
|
|
"\xa0" === c.firstChild.value) ||
|
|
yh(t, A, k, f)) &&
|
|
hh(e, u, C, f),
|
|
(f = f.parent);
|
|
}
|
|
}
|
|
},
|
|
t
|
|
)),
|
|
(l = f = new fh(u.context || e.root_name, 11)),
|
|
c.parse(s),
|
|
b &&
|
|
B.length &&
|
|
(u.context
|
|
? (u.invalid = !0)
|
|
: (function(e) {
|
|
var r, o, i, a, s, u, c, l, f, d, m, p, g, h, v, y;
|
|
for (
|
|
p = dh("tr,td,th,tbody,thead,tfoot,table"),
|
|
d = t.getNonEmptyElements(),
|
|
m = t.getWhiteSpaceElements(),
|
|
g = t.getTextBlockElements(),
|
|
h = t.getSpecialElements(),
|
|
r = 0;
|
|
r < e.length;
|
|
r++
|
|
)
|
|
if ((o = e[r]).parent && !o.fixed)
|
|
if (g[o.name] && "li" === o.parent.name) {
|
|
for (v = o.next; v && g[v.name]; )
|
|
(v.name = "li"),
|
|
(v.fixed = !0),
|
|
o.parent.insert(v, o.parent),
|
|
(v = v.next);
|
|
o.unwrap(o);
|
|
} else {
|
|
for (
|
|
a = [o], i = o.parent;
|
|
i && !t.isValidChild(i.name, o.name) && !p[i.name];
|
|
i = i.parent
|
|
)
|
|
a.push(i);
|
|
if (i && a.length > 1) {
|
|
for (
|
|
a.reverse(),
|
|
s = u = n.filterNode(a[0].clone()),
|
|
f = 0;
|
|
f < a.length - 1;
|
|
f++
|
|
) {
|
|
for (
|
|
t.isValidChild(u.name, a[f].name)
|
|
? ((c = n.filterNode(a[f].clone())),
|
|
u.append(c))
|
|
: (c = u),
|
|
l = a[f].firstChild;
|
|
l && l !== a[f + 1];
|
|
|
|
)
|
|
(y = l.next), c.append(l), (l = y);
|
|
u = c;
|
|
}
|
|
yh(t, d, m, s)
|
|
? i.insert(o, a[0], !0)
|
|
: (i.insert(s, a[0], !0), i.insert(o, s)),
|
|
(i = a[0]),
|
|
(yh(t, d, m, i) || vh(i, "br")) &&
|
|
i.empty().remove();
|
|
} else if (o.parent) {
|
|
if ("li" === o.name) {
|
|
if (
|
|
(v = o.prev) &&
|
|
("ul" === v.name || "ul" === v.name)
|
|
) {
|
|
v.append(o);
|
|
continue;
|
|
}
|
|
if (
|
|
(v = o.next) &&
|
|
("ul" === v.name || "ul" === v.name)
|
|
) {
|
|
v.insert(o, v.firstChild, !0);
|
|
continue;
|
|
}
|
|
o.wrap(n.filterNode(new fh("ul", 1)));
|
|
continue;
|
|
}
|
|
t.isValidChild(o.parent.name, "div") &&
|
|
t.isValidChild("div", o.name)
|
|
? o.wrap(n.filterNode(new fh("div", 1)))
|
|
: h[o.name]
|
|
? o.empty().remove()
|
|
: o.unwrap();
|
|
}
|
|
}
|
|
})(B)),
|
|
_ &&
|
|
("body" === l.name || u.isRootContent) &&
|
|
(function() {
|
|
var n,
|
|
r,
|
|
o = l.firstChild,
|
|
i = function(e) {
|
|
e &&
|
|
((o = e.firstChild) &&
|
|
3 === o.type &&
|
|
(o.value = o.value.replace(x, "")),
|
|
(o = e.lastChild) &&
|
|
3 === o.type &&
|
|
(o.value = o.value.replace(N, "")));
|
|
};
|
|
if (t.isValidChild(l.name, _.toLowerCase())) {
|
|
for (; o; )
|
|
(n = o.next),
|
|
3 === o.type ||
|
|
(1 === o.type &&
|
|
"p" !== o.name &&
|
|
!C[o.name] &&
|
|
!o.attr("data-mce-type"))
|
|
? r
|
|
? r.append(o)
|
|
: ((r = R(_, 1)).attr(e.forced_root_block_attrs),
|
|
l.insert(r, o),
|
|
r.append(o))
|
|
: (i(r), (r = null)),
|
|
(o = n);
|
|
i(r);
|
|
}
|
|
})(),
|
|
!u.invalid)
|
|
) {
|
|
for (y in i) {
|
|
for (v = r[y], g = (d = i[y]).length; g--; )
|
|
d[g].parent || d.splice(g, 1);
|
|
for (m = 0, p = v.length; m < p; m++) v[m](d, y, u);
|
|
}
|
|
for (m = 0, p = o.length; m < p; m++)
|
|
if ((v = o[m]).name in a) {
|
|
for (g = (d = a[v.name]).length; g--; )
|
|
d[g].parent || d.splice(g, 1);
|
|
for (g = 0, h = v.callbacks.length; g < h; g++)
|
|
v.callbacks[g](d, v.name, u);
|
|
}
|
|
}
|
|
return l;
|
|
}),
|
|
e.remove_trailing_brs &&
|
|
n.addNodeFilter("br", function(n, r, o) {
|
|
var i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m = n.length,
|
|
p = gh({}, t.getBlockElements()),
|
|
g = t.getNonEmptyElements(),
|
|
h = t.getNonEmptyElements();
|
|
for (p.body = 1, i = 0; i < m; i++)
|
|
if (
|
|
((s = (a = n[i]).parent), p[a.parent.name] && a === s.lastChild)
|
|
) {
|
|
for (c = a.prev; c; ) {
|
|
if (
|
|
"span" !== (l = c.name) ||
|
|
"bookmark" !== c.attr("data-mce-type")
|
|
) {
|
|
if ("br" !== l) break;
|
|
if ("br" === l) {
|
|
a = null;
|
|
break;
|
|
}
|
|
}
|
|
c = c.prev;
|
|
}
|
|
a &&
|
|
(a.remove(),
|
|
yh(t, g, h, s) &&
|
|
(f = t.getElementRule(s.name)) &&
|
|
(f.removeEmpty
|
|
? s.remove()
|
|
: f.paddEmpty && hh(e, o, p, s)));
|
|
} else {
|
|
for (
|
|
u = a;
|
|
s &&
|
|
s.firstChild === u &&
|
|
s.lastChild === u &&
|
|
((u = s), !p[s.name]);
|
|
|
|
)
|
|
s = s.parent;
|
|
u === s &&
|
|
!0 !== e.padd_empty_with_br &&
|
|
(((d = new fh("#text", 3)).value = "\xa0"), a.replace(d));
|
|
}
|
|
}),
|
|
n.addAttributeFilter("href", function(t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = t.length;
|
|
if (!e.allow_unsafe_link_target)
|
|
for (; i--; )
|
|
"a" === (n = t[i]).name &&
|
|
"_blank" === n.attr("target") &&
|
|
n.attr(
|
|
"rel",
|
|
((r = n.attr("rel")),
|
|
(o = r ? Ot.trim(r) : ""),
|
|
/\b(noopener)\b/g.test(o)
|
|
? o
|
|
: o
|
|
.split(" ")
|
|
.filter(function(e) {
|
|
return e.length > 0;
|
|
})
|
|
.concat(["noopener"])
|
|
.sort()
|
|
.join(" "))
|
|
);
|
|
}),
|
|
e.allow_html_in_named_anchor ||
|
|
n.addAttributeFilter("id,name", function(e) {
|
|
for (var t, n, r, o, i = e.length; i--; )
|
|
if ("a" === (o = e[i]).name && o.firstChild && !o.attr("href")) {
|
|
(r = o.parent), (t = o.lastChild);
|
|
do {
|
|
(n = t.prev), r.insert(t, o), (t = n);
|
|
} while (t);
|
|
}
|
|
}),
|
|
e.fix_list_elements &&
|
|
n.addNodeFilter("ul,ol", function(e) {
|
|
for (var t, n, r = e.length; r--; )
|
|
if ("ul" === (n = (t = e[r]).parent).name || "ol" === n.name)
|
|
if (t.prev && "li" === t.prev.name) t.prev.append(t);
|
|
else {
|
|
var o = new fh("li", 1);
|
|
o.attr("style", "list-style-type: none"), t.wrap(o);
|
|
}
|
|
}),
|
|
e.validate &&
|
|
t.getValidClasses() &&
|
|
n.addAttributeFilter("class", function(e) {
|
|
for (
|
|
var n, r, o, i, a, s, u, c = e.length, l = t.getValidClasses();
|
|
c--;
|
|
|
|
) {
|
|
for (
|
|
r = (n = e[c]).attr("class").split(" "), a = "", o = 0;
|
|
o < r.length;
|
|
o++
|
|
)
|
|
(i = r[o]),
|
|
(u = !1),
|
|
(s = l["*"]) && s[i] && (u = !0),
|
|
(s = l[n.name]),
|
|
!u && s && s[i] && (u = !0),
|
|
u && (a && (a += " "), (a += i));
|
|
a.length || (a = null), n.attr("class", a);
|
|
}
|
|
}),
|
|
sh(n, e),
|
|
n
|
|
);
|
|
},
|
|
Ch = function(e, t, n) {
|
|
-1 === Ot.inArray(t, n) &&
|
|
(e.addAttributeFilter(n, function(e, t) {
|
|
for (var n = e.length; n--; ) e[n].attr(t, null);
|
|
}),
|
|
t.push(n));
|
|
},
|
|
xh = function(e, t, n, r, o) {
|
|
var i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = ((i = r), zs(t, n).serialize(i));
|
|
return (
|
|
(a = e),
|
|
(u = c),
|
|
!(s = o).no_events && a ? th(a, Zg.merge(s, { content: u })).content : u
|
|
);
|
|
},
|
|
wh = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = ["data-mce-selected"];
|
|
return (
|
|
(n = t && t.dom ? t.dom : Xo.DOM),
|
|
(r = t && t.schema ? t.schema : Fo(e)),
|
|
(e.entity_encoding = e.entity_encoding || "named"),
|
|
(e.remove_trailing_brs =
|
|
!("remove_trailing_brs" in e) || e.remove_trailing_brs),
|
|
(o = bh(e, r)),
|
|
nh(o, e, n),
|
|
{
|
|
schema: r,
|
|
addNodeFilter: o.addNodeFilter,
|
|
addAttributeFilter: o.addAttributeFilter,
|
|
serialize: function(i, a) {
|
|
var s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h = Zg.merge({ format: "html" }, a || {}),
|
|
v = oh(t, i, h),
|
|
y = ((s = n),
|
|
(u = v),
|
|
(l = ii((c = h).getInner ? u.innerHTML : s.getOuterHTML(u))),
|
|
c.selection ? l : Ot.trim(l)),
|
|
b = ((f = o),
|
|
(d = y),
|
|
(p = (m = h).selection
|
|
? Zg.merge({ forced_root_block: !1 }, m)
|
|
: m),
|
|
(g = f.parse(d, p)),
|
|
rh(g),
|
|
g);
|
|
return "tree" === h.format ? b : xh(t, e, r, b, h);
|
|
},
|
|
addRules: function(e) {
|
|
r.addValidElements(e);
|
|
},
|
|
setRules: function(e) {
|
|
r.setValidElements(e);
|
|
},
|
|
addTempAttr: y.curry(Ch, o, i),
|
|
getTempAttrs: function() {
|
|
return i;
|
|
}
|
|
}
|
|
);
|
|
},
|
|
Nh = function(e, t) {
|
|
var n = wh(e, t);
|
|
return {
|
|
schema: n.schema,
|
|
addNodeFilter: n.addNodeFilter,
|
|
addAttributeFilter: n.addAttributeFilter,
|
|
serialize: n.serialize,
|
|
addRules: n.addRules,
|
|
setRules: n.setRules,
|
|
addTempAttr: n.addTempAttr,
|
|
getTempAttrs: n.getTempAttrs
|
|
};
|
|
},
|
|
Eh = function(e, t) {
|
|
var n;
|
|
t.hasAttribute("data-mce-caret") &&
|
|
(mi.showCaretContainerBlock(t),
|
|
(n = e).selection.setRng(n.selection.getRng()),
|
|
e.selection.scrollIntoView(t));
|
|
},
|
|
Sh = function(e, t) {
|
|
var n,
|
|
r = ((n = e),
|
|
Nu(Hn.fromDom(n.getBody()), "*[data-mce-caret]").fold(
|
|
y.constant(null),
|
|
function(e) {
|
|
return e.dom();
|
|
}
|
|
));
|
|
if (r)
|
|
return "compositionstart" === t.type
|
|
? (t.preventDefault(), t.stopPropagation(), void Eh(e, r))
|
|
: void (mi.hasContent(r) && Eh(e, r));
|
|
},
|
|
kh = function(e) {
|
|
e.on("keyup compositionstart", y.curry(Sh, e));
|
|
};
|
|
function Th(e) {
|
|
return {
|
|
getBookmark: y.curry(xs.getBookmark, e),
|
|
moveToBookmark: y.curry(xs.moveToBookmark, e)
|
|
};
|
|
}
|
|
(Th || (Th = {})).isBookmarkNode = xs.isBookmarkNode;
|
|
var Ah = Th,
|
|
_h = vo.isContentEditableFalse,
|
|
Bh = vo.isContentEditableTrue,
|
|
Rh = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b = t.dom,
|
|
C = Ot.each,
|
|
x = t.getDoc(),
|
|
w = document,
|
|
N = Math.abs,
|
|
E = Math.round,
|
|
S = t.getBody();
|
|
i = {
|
|
nw: [0, 0, -1, -1],
|
|
ne: [1, 0, 1, -1],
|
|
se: [1, 1, 1, 1],
|
|
sw: [0, 1, -1, 1]
|
|
};
|
|
var k = ".mce-content-body";
|
|
t.contentStyles.push(
|
|
k +
|
|
" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}" +
|
|
k +
|
|
" .mce-resizehandle:hover {background: #000}" +
|
|
k +
|
|
" img[data-mce-selected]," +
|
|
k +
|
|
" hr[data-mce-selected] {outline: 1px solid black;resize: none}" +
|
|
k +
|
|
" .mce-clonedresizable {position: absolute;" +
|
|
(me.gecko ? "" : "outline: 1px dashed black;") +
|
|
"opacity: .5;filter: alpha(opacity=50);z-index: 10000}" +
|
|
k +
|
|
" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"
|
|
);
|
|
var T = function(e) {
|
|
return e && ("IMG" === e.nodeName || t.dom.is(e, "figure.image"));
|
|
},
|
|
A = function(e) {
|
|
var n,
|
|
r,
|
|
o = e.target;
|
|
(n = e),
|
|
(r = t.selection.getRng()),
|
|
!T(n.target) ||
|
|
kp(n.clientX, n.clientY, r) ||
|
|
e.isDefaultPrevented() ||
|
|
(e.preventDefault(), t.selection.select(o));
|
|
},
|
|
_ = function(e) {
|
|
return t.dom.is(e, "figure.image") ? e.querySelector("img") : e;
|
|
},
|
|
B = function(e) {
|
|
var n = t.settings.object_resizing;
|
|
return (
|
|
!1 !== n &&
|
|
!me.iOS &&
|
|
("string" != typeof n && (n = "table,img,figure.image,div"),
|
|
"false" !== e.getAttribute("data-mce-resize") &&
|
|
e !== t.getBody() &&
|
|
_r.is(Hn.fromDom(e), n))
|
|
);
|
|
},
|
|
R = function(e) {
|
|
var i, C, x, w;
|
|
(i = e.screenX - s),
|
|
(C = e.screenY - u),
|
|
(g = i * a[2] + f),
|
|
(h = C * a[3] + d),
|
|
(g = g < 5 ? 5 : g),
|
|
(h = h < 5 ? 5 : h),
|
|
(T(n) && !1 !== t.settings.resize_img_proportional
|
|
? !Mp.modifierPressed(e)
|
|
: Mp.modifierPressed(e) || (T(n) && a[2] * a[3] != 0)) &&
|
|
(N(i) > N(C)
|
|
? ((h = E(g * m)), (g = E(h / m)))
|
|
: ((g = E(h / m)), (h = E(g * m)))),
|
|
b.setStyles(_(r), { width: g, height: h }),
|
|
(x = a.startPos.x + i),
|
|
(w = a.startPos.y + C),
|
|
(x = x > 0 ? x : 0),
|
|
(w = w > 0 ? w : 0),
|
|
b.setStyles(o, { left: x, top: w, display: "block" }),
|
|
(o.innerHTML = g + " × " + h),
|
|
a[2] < 0 &&
|
|
r.clientWidth <= g &&
|
|
b.setStyle(r, "left", c + (f - g)),
|
|
a[3] < 0 &&
|
|
r.clientHeight <= h &&
|
|
b.setStyle(r, "top", l + (d - h)),
|
|
(i = S.scrollWidth - v) + (C = S.scrollHeight - y) != 0 &&
|
|
b.setStyles(o, { left: x - i, top: w - C }),
|
|
p ||
|
|
(t.fire("ObjectResizeStart", { target: n, width: f, height: d }),
|
|
(p = !0));
|
|
},
|
|
D = function() {
|
|
p = !1;
|
|
var e = function(e, r) {
|
|
r &&
|
|
(n.style[e] || !t.schema.isValid(n.nodeName.toLowerCase(), e)
|
|
? b.setStyle(_(n), e, r)
|
|
: b.setAttrib(_(n), e, r));
|
|
};
|
|
e("width", g),
|
|
e("height", h),
|
|
b.unbind(x, "mousemove", R),
|
|
b.unbind(x, "mouseup", D),
|
|
w !== x && (b.unbind(w, "mousemove", R), b.unbind(w, "mouseup", D)),
|
|
b.remove(r),
|
|
b.remove(o),
|
|
O(n),
|
|
t.fire("ObjectResized", { target: n, width: g, height: h }),
|
|
b.setAttrib(n, "style", b.getAttrib(n, "style")),
|
|
t.nodeChanged();
|
|
},
|
|
O = function(e) {
|
|
var p, N, E, k, T;
|
|
P(),
|
|
M(),
|
|
(p = b.getPos(e, S)),
|
|
(c = p.x),
|
|
(l = p.y),
|
|
(T = e.getBoundingClientRect()),
|
|
(N = T.width || T.right - T.left),
|
|
(E = T.height || T.bottom - T.top),
|
|
n !== e && ((n = e), (g = h = 0)),
|
|
(k = t.fire("ObjectSelected", { target: e })),
|
|
B(e) && !k.isDefaultPrevented()
|
|
? C(i, function(e, t) {
|
|
var i;
|
|
(i = b.get("mceResizeHandle" + t)) && b.remove(i),
|
|
(i = b.add(S, "div", {
|
|
id: "mceResizeHandle" + t,
|
|
"data-mce-bogus": "all",
|
|
class: "mce-resizehandle",
|
|
unselectable: !0,
|
|
style: "cursor:" + t + "-resize; margin:0; padding:0"
|
|
})),
|
|
me.ie && (i.contentEditable = !1),
|
|
b.bind(i, "mousedown", function(t) {
|
|
var i;
|
|
t.stopImmediatePropagation(),
|
|
t.preventDefault(),
|
|
(s = (i = t).screenX),
|
|
(u = i.screenY),
|
|
(f = _(n).clientWidth),
|
|
(d = _(n).clientHeight),
|
|
(m = d / f),
|
|
(a = e),
|
|
(e.startPos = { x: N * e[0] + c, y: E * e[1] + l }),
|
|
(v = S.scrollWidth),
|
|
(y = S.scrollHeight),
|
|
(r = n.cloneNode(!0)),
|
|
b.addClass(r, "mce-clonedresizable"),
|
|
b.setAttrib(r, "data-mce-bogus", "all"),
|
|
(r.contentEditable = !1),
|
|
(r.unSelectabe = !0),
|
|
b.setStyles(r, { left: c, top: l, margin: 0 }),
|
|
r.removeAttribute("data-mce-selected"),
|
|
S.appendChild(r),
|
|
b.bind(x, "mousemove", R),
|
|
b.bind(x, "mouseup", D),
|
|
w !== x &&
|
|
(b.bind(w, "mousemove", R), b.bind(w, "mouseup", D)),
|
|
(o = b.add(
|
|
S,
|
|
"div",
|
|
{
|
|
class: "mce-resize-helper",
|
|
"data-mce-bogus": "all"
|
|
},
|
|
f + " × " + d
|
|
));
|
|
}),
|
|
(e.elm = i),
|
|
b.setStyles(i, {
|
|
left: N * e[0] + c - i.offsetWidth / 2,
|
|
top: E * e[1] + l - i.offsetHeight / 2
|
|
});
|
|
})
|
|
: P(),
|
|
n.setAttribute("data-mce-selected", "1");
|
|
},
|
|
P = function() {
|
|
var e, t;
|
|
for (e in (M(), n && n.removeAttribute("data-mce-selected"), i))
|
|
(t = b.get("mceResizeHandle" + e)) && (b.unbind(t), b.remove(t));
|
|
},
|
|
I = function(n) {
|
|
var r,
|
|
o = function(e, t) {
|
|
if (e)
|
|
do {
|
|
if (e === t) return !0;
|
|
} while ((e = e.parentNode));
|
|
};
|
|
p ||
|
|
t.removed ||
|
|
(C(
|
|
b.select("img[data-mce-selected],hr[data-mce-selected]"),
|
|
function(e) {
|
|
e.removeAttribute("data-mce-selected");
|
|
}
|
|
),
|
|
(r = "mousedown" === n.type ? n.target : e.getNode()),
|
|
o((r = b.$(r).closest("table,img,figure.image,hr")[0]), S) &&
|
|
(F(), o(e.getStart(!0), r) && o(e.getEnd(!0), r))
|
|
? O(r)
|
|
: P());
|
|
},
|
|
L = function(e) {
|
|
return _h(
|
|
(function(e, t) {
|
|
for (; t && t !== e; ) {
|
|
if (Bh(t) || _h(t)) return t;
|
|
t = t.parentNode;
|
|
}
|
|
return null;
|
|
})(t.getBody(), e)
|
|
);
|
|
},
|
|
M = function() {
|
|
for (var e in i) {
|
|
var t = i[e];
|
|
t.elm && (b.unbind(t.elm), delete t.elm);
|
|
}
|
|
},
|
|
F = function() {
|
|
try {
|
|
t.getDoc().execCommand("enableObjectResizing", !1, !1);
|
|
} catch (e) {}
|
|
};
|
|
return (
|
|
t.on("init", function() {
|
|
F(),
|
|
me.ie &&
|
|
me.ie >= 11 &&
|
|
(t.on("mousedown click", function(e) {
|
|
var n = e.target,
|
|
r = n.nodeName;
|
|
p ||
|
|
!/^(TABLE|IMG|HR)$/.test(r) ||
|
|
L(n) ||
|
|
(2 !== e.button && t.selection.select(n, "TABLE" === r),
|
|
"mousedown" === e.type && t.nodeChanged());
|
|
}),
|
|
t.dom.bind(S, "mscontrolselect", function(e) {
|
|
var n = function(e) {
|
|
ye.setEditorTimeout(t, function() {
|
|
t.selection.select(e);
|
|
});
|
|
};
|
|
if (L(e.target)) return e.preventDefault(), void n(e.target);
|
|
/^(TABLE|IMG|HR)$/.test(e.target.nodeName) &&
|
|
(e.preventDefault(),
|
|
"IMG" === e.target.tagName && n(e.target));
|
|
}));
|
|
var e = ye.throttle(function(e) {
|
|
t.composing || I(e);
|
|
});
|
|
t.on("nodechange ResizeEditor ResizeWindow drop", e),
|
|
t.on("keyup compositionend", function(t) {
|
|
n && "TABLE" === n.nodeName && e(t);
|
|
}),
|
|
t.on("hide blur", P),
|
|
t.on("contextmenu", A);
|
|
}),
|
|
t.on("remove", M),
|
|
{
|
|
isResizable: B,
|
|
showResizeRect: O,
|
|
hideResizeRect: P,
|
|
updateResizeRect: I,
|
|
destroy: function() {
|
|
n = r = null;
|
|
}
|
|
}
|
|
);
|
|
},
|
|
Dh = function(e) {
|
|
for (var t = 0, n = 0, r = e; r && r.nodeType; )
|
|
(t += r.offsetLeft || 0), (n += r.offsetTop || 0), (r = r.offsetParent);
|
|
return { x: t, y: n };
|
|
},
|
|
Oh = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = e.dom,
|
|
c = u.getRoot(),
|
|
l = 0;
|
|
if (
|
|
((s = { elm: t, alignToTop: n }),
|
|
e.fire("scrollIntoView", s),
|
|
!s.isDefaultPrevented() && vo.isElement(t))
|
|
) {
|
|
if ((!1 === n && (l = t.offsetHeight), "BODY" !== c.nodeName)) {
|
|
var f = e.selection.getScrollContainer();
|
|
if (f)
|
|
return (
|
|
(r = Dh(t).y - Dh(f).y + l),
|
|
(a = f.clientHeight),
|
|
void (
|
|
(r < (i = f.scrollTop) || r + 25 > i + a) &&
|
|
(f.scrollTop = r < i ? r : r - a + 25)
|
|
)
|
|
);
|
|
}
|
|
(o = u.getViewPort(e.getWin())),
|
|
(r = u.getPos(t).y + l),
|
|
(i = o.y),
|
|
(a = o.h),
|
|
(r < o.y || r + 25 > i + a) &&
|
|
e.getWin().scrollTo(0, r < i ? r : r - a + 25);
|
|
}
|
|
},
|
|
Ph = function(e) {
|
|
return vo.isContentEditableTrue(e) || vo.isContentEditableFalse(e);
|
|
},
|
|
Ih = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u = n;
|
|
if (u.caretPositionFromPoint)
|
|
(o = u.caretPositionFromPoint(e, t)) &&
|
|
((r = n.createRange()).setStart(o.offsetNode, o.offset),
|
|
r.collapse(!0));
|
|
else if (n.caretRangeFromPoint) r = n.caretRangeFromPoint(e, t);
|
|
else if (u.body.createTextRange) {
|
|
r = u.body.createTextRange();
|
|
try {
|
|
r.moveToPoint(e, t), r.collapse(!0);
|
|
} catch (c) {
|
|
r = (function(e, t, n) {
|
|
var r, o, i;
|
|
if (
|
|
((r = n.elementFromPoint(e, t)),
|
|
(o = n.body.createTextRange()),
|
|
(r && "HTML" !== r.tagName) || (r = n.body),
|
|
o.moveToElementText(r),
|
|
(i = (i = Ot.toArray(o.getClientRects())).sort(function(e, n) {
|
|
return (
|
|
(e = Math.abs(Math.max(e.top - t, e.bottom - t))) -
|
|
(n = Math.abs(Math.max(n.top - t, n.bottom - t)))
|
|
);
|
|
})).length > 0)
|
|
) {
|
|
t = (i[0].bottom + i[0].top) / 2;
|
|
try {
|
|
return o.moveToPoint(e, t), o.collapse(!0), o;
|
|
} catch (a) {}
|
|
}
|
|
return null;
|
|
})(e, t, n);
|
|
}
|
|
return (
|
|
(i = r),
|
|
(a = n.body),
|
|
(s = i && i.parentElement ? i.parentElement() : null),
|
|
vo.isContentEditableFalse(
|
|
(function(e, t, n) {
|
|
for (; e && e !== t; ) {
|
|
if (n(e)) return e;
|
|
e = e.parentNode;
|
|
}
|
|
return null;
|
|
})(s, a, Ph)
|
|
)
|
|
? null
|
|
: i
|
|
);
|
|
}
|
|
return r;
|
|
},
|
|
Lh = function(e, t) {
|
|
return M.map(t, function(t) {
|
|
var n = e.fire("GetSelectionRange", { range: t });
|
|
return n.range !== t ? n.range : t;
|
|
});
|
|
},
|
|
Mh = function(e, t) {
|
|
return Hn.fromDom(e.dom().cloneNode(t));
|
|
},
|
|
Fh = function(e) {
|
|
return Mh(e, !0);
|
|
},
|
|
zh = function(e) {
|
|
return Mh(e, !1);
|
|
},
|
|
Uh = Fh,
|
|
Vh = function(e, t) {
|
|
var n = (t || document).createDocumentFragment();
|
|
return (
|
|
M.each(e, function(e) {
|
|
n.appendChild(e.dom());
|
|
}),
|
|
Hn.fromDom(n)
|
|
);
|
|
},
|
|
Hh = function(e) {
|
|
return Ur.firstChild(e).fold(y.constant([e]), function(t) {
|
|
return [e].concat(Hh(t));
|
|
});
|
|
},
|
|
qh = function(e) {
|
|
return Ur.lastChild(e).fold(y.constant([e]), function(t) {
|
|
return "br" === Zn.name(t)
|
|
? Ur.prevSibling(t)
|
|
.map(function(t) {
|
|
return [e].concat(qh(t));
|
|
})
|
|
.getOr([])
|
|
: [e].concat(qh(t));
|
|
});
|
|
},
|
|
jh = function(e, t) {
|
|
return hs(
|
|
[
|
|
((i = t),
|
|
(a = i.startContainer),
|
|
(s = i.startOffset),
|
|
vo.isText(a)
|
|
? 0 === s
|
|
? E.some(Hn.fromDom(a))
|
|
: E.none()
|
|
: E.from(a.childNodes[s]).map(Hn.fromDom)),
|
|
((n = t),
|
|
(r = n.endContainer),
|
|
(o = n.endOffset),
|
|
vo.isText(r)
|
|
? o === r.data.length
|
|
? E.some(Hn.fromDom(r))
|
|
: E.none()
|
|
: E.from(r.childNodes[o - 1]).map(Hn.fromDom))
|
|
],
|
|
function(t, n) {
|
|
var r = M.find(Hh(e), y.curry(Dr.eq, t)),
|
|
o = M.find(qh(e), y.curry(Dr.eq, n));
|
|
return r.isSome() && o.isSome();
|
|
}
|
|
).getOr(!1);
|
|
var n, r, o, i, a, s;
|
|
},
|
|
$h = function(e, t, n, r) {
|
|
var o = n,
|
|
i = new to(n, o),
|
|
a = e.schema.getNonEmptyElements();
|
|
do {
|
|
if (3 === n.nodeType && 0 !== Ot.trim(n.nodeValue).length)
|
|
return void (r ? t.setStart(n, 0) : t.setEnd(n, n.nodeValue.length));
|
|
if (a[n.nodeName] && !/^(TD|TH)$/.test(n.nodeName))
|
|
return void (r
|
|
? t.setStartBefore(n)
|
|
: "BR" === n.nodeName
|
|
? t.setEndBefore(n)
|
|
: t.setEndAfter(n));
|
|
if (me.ie && me.ie < 11 && e.isBlock(n) && e.isEmpty(n))
|
|
return void (r ? t.setStart(n, 0) : t.setEnd(n, 0));
|
|
} while ((n = r ? i.next() : i.prev()));
|
|
"BODY" === o.nodeName &&
|
|
(r ? t.setStart(o, 0) : t.setEnd(o, o.childNodes.length));
|
|
},
|
|
Wh = xr("element", "width", "rows"),
|
|
Kh = xr("element", "cells"),
|
|
Xh = xr("x", "y"),
|
|
Yh = function(e, t) {
|
|
var n = parseInt(dr.get(e, t), 10);
|
|
return isNaN(n) ? 1 : n;
|
|
},
|
|
Gh = function(e) {
|
|
return M.foldl(
|
|
e,
|
|
function(e, t) {
|
|
return t.cells().length > e ? t.cells().length : e;
|
|
},
|
|
0
|
|
);
|
|
},
|
|
Jh = function(e, t) {
|
|
for (var n = e.rows(), r = 0; r < n.length; r++)
|
|
for (var o = n[r].cells(), i = 0; i < o.length; i++)
|
|
if (Dr.eq(o[i], t)) return E.some(Xh(i, r));
|
|
return E.none();
|
|
},
|
|
Qh = function(e, t, n, r, o) {
|
|
for (var i = [], a = e.rows(), s = n; s <= o; s++) {
|
|
var u = a[s].cells(),
|
|
c = t < r ? u.slice(t, r + 1) : u.slice(r, t + 1);
|
|
i.push(Kh(a[s].element(), c));
|
|
}
|
|
return i;
|
|
},
|
|
Zh = function(e) {
|
|
var t = Wh(zh(e), 0, []);
|
|
return (
|
|
M.each(Os(e, "tr"), function(e, n) {
|
|
M.each(Os(e, "td,th"), function(r, o) {
|
|
!(function(e, t, n, r, o) {
|
|
for (
|
|
var i = Yh(o, "rowspan"),
|
|
a = Yh(o, "colspan"),
|
|
s = e.rows(),
|
|
u = n;
|
|
u < n + i;
|
|
u++
|
|
) {
|
|
s[u] || (s[u] = Kh(Uh(r), []));
|
|
for (var c = t; c < t + a; c++)
|
|
s[u].cells()[c] = u === n && c === t ? o : zh(o);
|
|
}
|
|
})(
|
|
t,
|
|
(function(e, t, n) {
|
|
for (
|
|
;
|
|
(r = t),
|
|
(o = n),
|
|
(i = void 0),
|
|
((i = e.rows())[o] ? i[o].cells() : [])[r];
|
|
|
|
)
|
|
t++;
|
|
var r, o, i;
|
|
return t;
|
|
})(t, o, n),
|
|
n,
|
|
e,
|
|
r
|
|
);
|
|
});
|
|
}),
|
|
Wh(t.element(), Gh(t.rows()), t.rows())
|
|
);
|
|
},
|
|
ev = function(e) {
|
|
return (
|
|
(t = e),
|
|
(i = e),
|
|
(n = M.map(i.rows(), function(e) {
|
|
var t = M.map(e.cells(), function(e) {
|
|
var t = Uh(e);
|
|
return dr.remove(t, "colspan"), dr.remove(t, "rowspan"), t;
|
|
}),
|
|
n = zh(e.element());
|
|
return As(n, t), n;
|
|
})),
|
|
(r = zh(t.element())),
|
|
(o = Hn.fromTag("tbody")),
|
|
As(o, n),
|
|
ks.append(r, o),
|
|
r
|
|
);
|
|
var t, n, r, o, i;
|
|
},
|
|
tv = function(e, t, n) {
|
|
return Jh(e, t).bind(function(t) {
|
|
return Jh(e, n).map(function(n) {
|
|
return (
|
|
(r = e),
|
|
(i = n),
|
|
(a = (o = t).x()),
|
|
(s = o.y()),
|
|
(u = i.x()),
|
|
(c = i.y()),
|
|
(l = s < c ? Qh(r, a, s, u, c) : Qh(r, a, c, u, s)),
|
|
Wh(r.element(), Gh(l), l)
|
|
);
|
|
var r, o, i, a, s, u, c, l;
|
|
});
|
|
});
|
|
},
|
|
nv = function(e, t) {
|
|
return M.find(e, function(e) {
|
|
return "li" === Zn.name(e) && jh(e, t);
|
|
}).fold(y.constant([]), function(t) {
|
|
return ((n = e),
|
|
M.find(n, function(e) {
|
|
return "ul" === Zn.name(e) || "ol" === Zn.name(e);
|
|
}))
|
|
.map(function(e) {
|
|
return [Hn.fromTag("li"), Hn.fromTag(Zn.name(e))];
|
|
})
|
|
.getOr([]);
|
|
var n;
|
|
});
|
|
},
|
|
rv = function(e, t) {
|
|
var n,
|
|
r = Hn.fromDom(t.commonAncestorContainer),
|
|
o = Uu(r, e),
|
|
i = M.filter(o, function(e) {
|
|
return io.isInline(e) || io.isHeading(e);
|
|
}),
|
|
a = nv(o, t),
|
|
s = i.concat(
|
|
a.length
|
|
? a
|
|
: ((n = r),
|
|
io.isListItem(n)
|
|
? Ur.parent(n)
|
|
.filter(io.isList)
|
|
.fold(y.constant([]), function(e) {
|
|
return [n, e];
|
|
})
|
|
: io.isList(n)
|
|
? [n]
|
|
: [])
|
|
);
|
|
return M.map(s, zh);
|
|
},
|
|
ov = function() {
|
|
return Vh([]);
|
|
},
|
|
iv = function(e, t) {
|
|
return (
|
|
(n = Hn.fromDom(t.cloneContents())),
|
|
(r = rv(e, t)),
|
|
(o = M.foldl(
|
|
r,
|
|
function(e, t) {
|
|
return ks.append(t, e), t;
|
|
},
|
|
n
|
|
)),
|
|
r.length > 0 ? Vh([o]) : o
|
|
);
|
|
var n, r, o;
|
|
},
|
|
av = function(e, t) {
|
|
return ((n = e), (r = t[0]), wu(r, "table", y.curry(Dr.eq, n)))
|
|
.bind(function(e) {
|
|
var n = t[0],
|
|
r = t[t.length - 1],
|
|
o = Zh(e);
|
|
return tv(o, n, r).map(function(e) {
|
|
return Vh([ev(e)]);
|
|
});
|
|
})
|
|
.getOrThunk(ov);
|
|
var n, r;
|
|
},
|
|
sv = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = Af(t, e);
|
|
return o.length > 0
|
|
? av(e, o)
|
|
: ((n = e), (r = t).length > 0 && r[0].collapsed ? ov() : iv(n, r[0]));
|
|
},
|
|
uv = function(e, t) {
|
|
var n,
|
|
r = e.selection.getRng(),
|
|
o = e.dom.create("body"),
|
|
i = e.selection.getSel(),
|
|
a = Lh(e, wf(i));
|
|
if (
|
|
(((t = t || {}).get = !0),
|
|
(t.format = t.format || "html"),
|
|
(t.selection = !0),
|
|
(t = e.fire("BeforeGetContent", t)).isDefaultPrevented())
|
|
)
|
|
return e.fire("GetContent", t), t.content;
|
|
if ("text" === t.format)
|
|
return e.selection.isCollapsed()
|
|
? ""
|
|
: ii(r.text || (i.toString ? i.toString() : ""));
|
|
r.cloneContents
|
|
? (n = t.contextual
|
|
? sv(Hn.fromDom(e.getBody()), a).dom()
|
|
: r.cloneContents()) && o.appendChild(n)
|
|
: r.item !== undefined || r.htmlText !== undefined
|
|
? ((o.innerHTML = "<br>" + (r.item ? r.item(0).outerHTML : r.htmlText)),
|
|
o.removeChild(o.firstChild))
|
|
: (o.innerHTML = r.toString()),
|
|
(t.getInner = !0);
|
|
var s = e.selection.serializer.serialize(o, t);
|
|
return "tree" === t.format
|
|
? s
|
|
: ((t.content = e.selection.isCollapsed() ? "" : s),
|
|
e.fire("GetContent", t),
|
|
t.content);
|
|
},
|
|
cv = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a = e.selection.getRng(),
|
|
s = e.getDoc();
|
|
if (
|
|
(((n = n || { format: "html" }).set = !0),
|
|
(n.selection = !0),
|
|
(n.content = t),
|
|
n.no_events ||
|
|
!(n = e.fire("BeforeSetContent", n)).isDefaultPrevented())
|
|
) {
|
|
if (((t = n.content), a.insertNode)) {
|
|
(t += '<span id="__caret">_</span>'),
|
|
a.startContainer === s && a.endContainer === s
|
|
? (s.body.innerHTML = t)
|
|
: (a.deleteContents(),
|
|
0 === s.body.childNodes.length
|
|
? (s.body.innerHTML = t)
|
|
: a.createContextualFragment
|
|
? a.insertNode(a.createContextualFragment(t))
|
|
: ((o = s.createDocumentFragment()),
|
|
(i = s.createElement("div")),
|
|
o.appendChild(i),
|
|
(i.outerHTML = t),
|
|
a.insertNode(o))),
|
|
(r = e.dom.get("__caret")),
|
|
(a = s.createRange()).setStartBefore(r),
|
|
a.setEndBefore(r),
|
|
e.selection.setRng(a),
|
|
e.dom.remove("__caret");
|
|
try {
|
|
e.selection.setRng(a);
|
|
} catch (u) {}
|
|
} else
|
|
a.item && (s.execCommand("Delete", !1, null), (a = e.getRng())),
|
|
/^\s+/.test(t)
|
|
? (a.pasteHTML('<span id="__mce_tmp">_</span>' + t),
|
|
e.dom.remove("__mce_tmp"))
|
|
: a.pasteHTML(t);
|
|
n.no_events || e.fire("SetContent", n);
|
|
} else e.fire("SetContent", n);
|
|
},
|
|
lv = function(e, t, n, r, o) {
|
|
var i = n ? t.startContainer : t.endContainer,
|
|
a = n ? t.startOffset : t.endOffset;
|
|
return E.from(i)
|
|
.map(Hn.fromDom)
|
|
.map(function(e) {
|
|
return r && t.collapsed ? e : Ur.child(e, o(e, a)).getOr(e);
|
|
})
|
|
.bind(function(e) {
|
|
return Zn.isElement(e) ? E.some(e) : Ur.parent(e);
|
|
})
|
|
.map(function(e) {
|
|
return e.dom();
|
|
})
|
|
.getOr(e);
|
|
},
|
|
fv = function(e, t, n) {
|
|
return lv(e, t, !0, n, function(e, t) {
|
|
return Math.min(Ur.childNodesCount(e), t);
|
|
});
|
|
},
|
|
dv = function(e, t, n) {
|
|
return lv(e, t, !1, n, function(e, t) {
|
|
return t > 0 ? t - 1 : t;
|
|
});
|
|
},
|
|
mv = function(e, t) {
|
|
for (var n = e; e && vo.isText(e) && 0 === e.length; )
|
|
e = t ? e.nextSibling : e.previousSibling;
|
|
return e || n;
|
|
},
|
|
pv = Ot.each,
|
|
gv = function(e) {
|
|
return !!e.select;
|
|
},
|
|
hv = function(e) {
|
|
return (
|
|
!(!e || !e.ownerDocument) &&
|
|
Dr.contains(Hn.fromDom(e.ownerDocument), Hn.fromDom(e))
|
|
);
|
|
},
|
|
vv = function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = function(e, t) {
|
|
return cv(r, e, t);
|
|
},
|
|
l = function(e) {
|
|
var t = d();
|
|
t.collapse(!!e), m(t);
|
|
},
|
|
f = function() {
|
|
return t.getSelection ? t.getSelection() : t.document.selection;
|
|
},
|
|
d = function() {
|
|
var n,
|
|
o,
|
|
i,
|
|
u,
|
|
c = function(e, t, n) {
|
|
try {
|
|
return t.compareBoundaryPoints(e, n);
|
|
} catch (r) {
|
|
return -1;
|
|
}
|
|
};
|
|
if (!t) return null;
|
|
if (void 0 === (u = t.document) || null === u) return null;
|
|
if (r.bookmark !== undefined && !1 === hm(r)) {
|
|
var l = Td(r);
|
|
if (l.isSome())
|
|
return l
|
|
.map(function(e) {
|
|
return Lh(r, [e])[0];
|
|
})
|
|
.getOr(u.createRange());
|
|
}
|
|
try {
|
|
(n = f()) &&
|
|
(o =
|
|
n.rangeCount > 0
|
|
? n.getRangeAt(0)
|
|
: n.createRange
|
|
? n.createRange()
|
|
: u.createRange());
|
|
} catch (d) {}
|
|
return (
|
|
(o = Lh(r, [o])[0]) ||
|
|
(o = u.createRange ? u.createRange() : u.body.createTextRange()),
|
|
o.setStart &&
|
|
9 === o.startContainer.nodeType &&
|
|
o.collapsed &&
|
|
((i = e.getRoot()), o.setStart(i, 0), o.setEnd(i, 0)),
|
|
a &&
|
|
s &&
|
|
(0 === c(o.START_TO_START, o, a) && 0 === c(o.END_TO_END, o, a)
|
|
? (o = s)
|
|
: ((a = null), (s = null))),
|
|
o
|
|
);
|
|
},
|
|
m = function(e, t) {
|
|
var n, o;
|
|
if (
|
|
(i = e) &&
|
|
(gv(i) || (hv(i.startContainer) && hv(i.endContainer)))
|
|
) {
|
|
var i,
|
|
u = gv(e) ? e : null;
|
|
if (u) {
|
|
s = null;
|
|
try {
|
|
u.select();
|
|
} catch (c) {}
|
|
} else {
|
|
if (
|
|
((n = f()),
|
|
(e = r.fire("SetSelectionRange", { range: e, forward: t })
|
|
.range),
|
|
n)
|
|
) {
|
|
s = e;
|
|
try {
|
|
n.removeAllRanges(), n.addRange(e);
|
|
} catch (c) {}
|
|
!1 === t &&
|
|
n.extend &&
|
|
(n.collapse(e.endContainer, e.endOffset),
|
|
n.extend(e.startContainer, e.startOffset)),
|
|
(a = n.rangeCount > 0 ? n.getRangeAt(0) : null);
|
|
}
|
|
e.collapsed ||
|
|
e.startContainer !== e.endContainer ||
|
|
!n.setBaseAndExtent ||
|
|
me.ie ||
|
|
(e.endOffset - e.startOffset < 2 &&
|
|
e.startContainer.hasChildNodes() &&
|
|
(o = e.startContainer.childNodes[e.startOffset]) &&
|
|
"IMG" === o.tagName &&
|
|
(n.setBaseAndExtent(
|
|
e.startContainer,
|
|
e.startOffset,
|
|
e.endContainer,
|
|
e.endOffset
|
|
),
|
|
(n.anchorNode === e.startContainer &&
|
|
n.focusNode === e.endContainer) ||
|
|
n.setBaseAndExtent(o, 0, o, 1))),
|
|
r.fire("AfterSetSelectionRange", { range: e, forward: t });
|
|
}
|
|
}
|
|
},
|
|
p = function() {
|
|
var t,
|
|
n,
|
|
r = f();
|
|
return (
|
|
!(r && r.anchorNode && r.focusNode) ||
|
|
((t = e.createRng()).setStart(r.anchorNode, r.anchorOffset),
|
|
t.collapse(!0),
|
|
(n = e.createRng()).setStart(r.focusNode, r.focusOffset),
|
|
n.collapse(!0),
|
|
t.compareBoundaryPoints(t.START_TO_START, n) <= 0)
|
|
);
|
|
},
|
|
g = {
|
|
bookmarkManager: null,
|
|
controlSelection: null,
|
|
dom: e,
|
|
win: t,
|
|
serializer: n,
|
|
editor: r,
|
|
collapse: l,
|
|
setCursorLocation: function(t, n) {
|
|
var o = e.createRng();
|
|
t
|
|
? (o.setStart(t, n), o.setEnd(t, n), m(o), l(!1))
|
|
: ($h(e, o, r.getBody(), !0), m(o));
|
|
},
|
|
getContent: function(e) {
|
|
return uv(r, e);
|
|
},
|
|
setContent: c,
|
|
getBookmark: function(e, t) {
|
|
return o.getBookmark(e, t);
|
|
},
|
|
moveToBookmark: function(e) {
|
|
return o.moveToBookmark(e);
|
|
},
|
|
select: function(t, n) {
|
|
var r, o, i;
|
|
return (
|
|
((r = e),
|
|
(o = t),
|
|
(i = n),
|
|
E.from(o).map(function(e) {
|
|
var t = r.nodeIndex(e),
|
|
n = r.createRng();
|
|
return (
|
|
n.setStart(e.parentNode, t),
|
|
n.setEnd(e.parentNode, t + 1),
|
|
i && ($h(r, n, e, !0), $h(r, n, e, !1)),
|
|
n
|
|
);
|
|
})).each(m),
|
|
t
|
|
);
|
|
},
|
|
isCollapsed: function() {
|
|
var e = d(),
|
|
t = f();
|
|
return (
|
|
!(!e || e.item) &&
|
|
(e.compareEndPoints
|
|
? 0 === e.compareEndPoints("StartToEnd", e)
|
|
: !t || e.collapsed)
|
|
);
|
|
},
|
|
isForward: p,
|
|
setNode: function(t) {
|
|
return c(e.getOuterHTML(t)), t;
|
|
},
|
|
getNode: function() {
|
|
return (
|
|
(e = r.getBody()),
|
|
(t = d())
|
|
? ((o = t.startContainer),
|
|
(i = t.endContainer),
|
|
(a = t.startOffset),
|
|
(s = t.endOffset),
|
|
(n = t.commonAncestorContainer),
|
|
!t.collapsed &&
|
|
(o === i &&
|
|
s - a < 2 &&
|
|
o.hasChildNodes() &&
|
|
(n = o.childNodes[a]),
|
|
3 === o.nodeType &&
|
|
3 === i.nodeType &&
|
|
((o =
|
|
o.length === a ? mv(o.nextSibling, !0) : o.parentNode),
|
|
(i = 0 === s ? mv(i.previousSibling, !1) : i.parentNode),
|
|
o && o === i))
|
|
? o
|
|
: n && 3 === n.nodeType
|
|
? n.parentNode
|
|
: n)
|
|
: e
|
|
);
|
|
var e, t, n, o, i, a, s;
|
|
},
|
|
getSel: f,
|
|
setRng: m,
|
|
getRng: d,
|
|
getStart: function(e) {
|
|
return fv(r.getBody(), d(), e);
|
|
},
|
|
getEnd: function(e) {
|
|
return dv(r.getBody(), d(), e);
|
|
},
|
|
getSelectedBlocks: function(t, n) {
|
|
return (function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a = [];
|
|
if (
|
|
((i = e.getRoot()),
|
|
(n = e.getParent(n || fv(i, t, !1), e.isBlock)),
|
|
(r = e.getParent(r || dv(i, t, !1), e.isBlock)),
|
|
n && n !== i && a.push(n),
|
|
n && r && n !== r)
|
|
) {
|
|
o = n;
|
|
for (var s = new to(n, i); (o = s.next()) && o !== r; )
|
|
e.isBlock(o) && a.push(o);
|
|
}
|
|
return r && n !== r && r !== i && a.push(r), a;
|
|
})(e, d(), t, n);
|
|
},
|
|
normalize: function() {
|
|
var t = d();
|
|
if (!Ef(f())) {
|
|
var n = Jf.normalize(e, t);
|
|
return (
|
|
n.each(function(e) {
|
|
m(e, p());
|
|
}),
|
|
n.getOr(t)
|
|
);
|
|
}
|
|
return t;
|
|
},
|
|
selectorChanged: function(t, n) {
|
|
var o;
|
|
return (
|
|
u ||
|
|
((u = {}),
|
|
(o = {}),
|
|
r.on("NodeChange", function(t) {
|
|
var n = t.element,
|
|
r = e.getParents(n, null, e.getRoot()),
|
|
i = {};
|
|
pv(u, function(t, n) {
|
|
pv(r, function(a) {
|
|
if (e.is(a, n))
|
|
return (
|
|
o[n] ||
|
|
(pv(t, function(e) {
|
|
e(!0, { node: a, selector: n, parents: r });
|
|
}),
|
|
(o[n] = t)),
|
|
(i[n] = t),
|
|
!1
|
|
);
|
|
});
|
|
}),
|
|
pv(o, function(e, t) {
|
|
i[t] ||
|
|
(delete o[t],
|
|
pv(e, function(e) {
|
|
e(!1, { node: n, selector: t, parents: r });
|
|
}));
|
|
});
|
|
})),
|
|
u[t] || (u[t] = []),
|
|
u[t].push(n),
|
|
g
|
|
);
|
|
},
|
|
getScrollContainer: function() {
|
|
for (var t, n = e.getRoot(); n && "BODY" !== n.nodeName; ) {
|
|
if (n.scrollHeight > n.clientHeight) {
|
|
t = n;
|
|
break;
|
|
}
|
|
n = n.parentNode;
|
|
}
|
|
return t;
|
|
},
|
|
scrollIntoView: function(e, t) {
|
|
return Oh(r, e, t);
|
|
},
|
|
placeCaretAt: function(e, t) {
|
|
return m(Ih(e, t, r.getDoc()));
|
|
},
|
|
getBoundingClientRect: function() {
|
|
var e = d();
|
|
return e.collapsed
|
|
? ia.fromRangeStart(e).getClientRects()[0]
|
|
: e.getBoundingClientRect();
|
|
},
|
|
destroy: function() {
|
|
(t = null), i.destroy();
|
|
}
|
|
};
|
|
return (
|
|
(o = Ah(g)),
|
|
(i = Rh(g, r)),
|
|
(g.bookmarkManager = o),
|
|
(g.controlSelection = i),
|
|
g
|
|
);
|
|
},
|
|
yv = ji.curry,
|
|
bv = function(e, t, n, r, o, i) {
|
|
var a,
|
|
s,
|
|
u = 0,
|
|
c = [],
|
|
l = function(r) {
|
|
var i, a, l;
|
|
for (
|
|
l = gp.getClientRects(r), -1 === e && (l = l.reverse()), i = 0;
|
|
i < l.length;
|
|
i++
|
|
)
|
|
if (((a = l[i]), !n(a, s))) {
|
|
if ((c.length > 0 && t(a, At.last(c)) && u++, (a.line = u), o(a)))
|
|
return !0;
|
|
c.push(a);
|
|
}
|
|
};
|
|
return (s = At.last(i.getClientRects()))
|
|
? (l((a = i.getNode())),
|
|
(function(e, t, n, r) {
|
|
for (; (r = _a.findNode(r, e, ki, t)); ) if (n(r)) return;
|
|
})(e, r, l, a),
|
|
c)
|
|
: c;
|
|
},
|
|
Cv = {
|
|
upUntil: yv(bv, -1, Ii, Li),
|
|
downUntil: yv(bv, 1, Li, Ii),
|
|
positionsUntil: function(e, t, n, r) {
|
|
var o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l = Ha(t),
|
|
f = [],
|
|
d = 0,
|
|
m = function(e) {
|
|
return At.last(e.getClientRects());
|
|
};
|
|
1 === e
|
|
? ((o = l.next), (i = Li), (a = Ii), (s = ia.after(r)))
|
|
: ((o = l.prev), (i = Ii), (a = Li), (s = ia.before(r))),
|
|
(c = m(s));
|
|
do {
|
|
if (s.isVisible() && !a((u = m(s)), c)) {
|
|
if (
|
|
(f.length > 0 && i(u, At.last(f)) && d++,
|
|
((u = Di(u)).position = s),
|
|
(u.line = d),
|
|
n(u))
|
|
)
|
|
return f;
|
|
f.push(u);
|
|
}
|
|
} while ((s = o(s)));
|
|
return f;
|
|
},
|
|
isAboveLine: yv(function(e, t) {
|
|
return t.line > e;
|
|
}),
|
|
isLine: yv(function(e, t) {
|
|
return t.line === e;
|
|
})
|
|
},
|
|
xv = vo.isContentEditableFalse,
|
|
wv = Fi,
|
|
Nv = _a.isAfterContentEditableFalse,
|
|
Ev = _a.isBeforeContentEditableFalse,
|
|
Sv = function(e, t) {
|
|
for (; (t = e(t)); ) if (t.isVisible()) return t;
|
|
return t;
|
|
},
|
|
kv = function(e, t, n) {
|
|
return (
|
|
(n = _a.normalizeRange(e, t, n)),
|
|
-1 === e ? ia.fromRangeStart(n) : ia.fromRangeEnd(n)
|
|
);
|
|
},
|
|
Tv = function(e, t, n, r, o) {
|
|
var i, a, s, u, c, l, f, d;
|
|
return !o.collapsed && ((i = wv(o)), xv(i))
|
|
? Dp(e, t, i, -1 === e)
|
|
: ((c = o),
|
|
(u = mi.isCaretContainerBlock(c.startContainer)),
|
|
r((a = kv(e, t.getBody(), o)))
|
|
? Op(t, a.getNode(-1 === e))
|
|
: (a = n(a))
|
|
? r(a)
|
|
? Dp(e, t, a.getNode(-1 === e), 1 === e)
|
|
: r((s = n(a))) &&
|
|
((l = a),
|
|
(f = s),
|
|
(!(d = _a.isInSameBlock(l, f)) && vo.isBr(l.getNode())) || d)
|
|
? Dp(e, t, s.getNode(-1 === e), 1 === e)
|
|
: u
|
|
? Ip(t, a.toRange())
|
|
: null
|
|
: u
|
|
? o
|
|
: null);
|
|
},
|
|
Av = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = Ha(e.getBody()),
|
|
u = ji.curry(Sv, s.next),
|
|
c = ji.curry(Sv, s.prev);
|
|
if (n.collapsed && e.settings.forced_root_block) {
|
|
if (!(r = e.dom.getParent(n.startContainer, "PRE"))) return;
|
|
(1 === t ? u(ia.fromRangeStart(n)) : c(ia.fromRangeStart(n))) ||
|
|
((a = (i = e).dom.create(i.settings.forced_root_block)),
|
|
(!me.ie || me.ie >= 11) && (a.innerHTML = '<br data-mce-bogus="1">'),
|
|
(o = a),
|
|
1 === t ? e.$(r).after(o) : e.$(r).before(o),
|
|
e.selection.select(o, !0),
|
|
e.selection.collapse());
|
|
}
|
|
},
|
|
_v = function(e, t) {
|
|
var n,
|
|
r = t ? 1 : -1,
|
|
o = t ? Cv.downUntil : Cv.upUntil,
|
|
i = e.selection.getRng();
|
|
return (n = (function(e, t, n, r) {
|
|
var o, i, a, s, u, c, l, f, d;
|
|
if (
|
|
((d = wv(r)),
|
|
(o = kv(e, t.getBody(), r)),
|
|
(i = n(t.getBody(), Cv.isAboveLine(1), o)),
|
|
(a = At.filter(i, Cv.isLine(1))),
|
|
(u = At.last(o.getClientRects())),
|
|
Ev(o) && (d = o.getNode()),
|
|
Nv(o) && (d = o.getNode(!0)),
|
|
!u)
|
|
)
|
|
return null;
|
|
if (((c = u.left), (s = Ep(a, c)) && xv(s.node)))
|
|
return (
|
|
(l = Math.abs(c - s.left)),
|
|
(f = Math.abs(c - s.right)),
|
|
Dp(e, t, s.node, l < f)
|
|
);
|
|
if (d) {
|
|
var m = Cv.positionsUntil(e, t.getBody(), Cv.isAboveLine(1), d);
|
|
if ((s = Ep(At.filter(m, Cv.isLine(1)), c)))
|
|
return Ip(t, s.position.toRange());
|
|
if ((s = At.last(At.filter(m, Cv.isLine(0)))))
|
|
return Ip(t, s.position.toRange());
|
|
}
|
|
})(r, e, o, i))
|
|
? n
|
|
: (n = Av(e, r, i)) || null;
|
|
},
|
|
Bv = function(e, t) {
|
|
return function() {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = ((r = t),
|
|
(i = Ha((n = e).getBody())),
|
|
(a = ji.curry(Sv, i.next)),
|
|
(s = ji.curry(Sv, i.prev)),
|
|
(u = r ? 1 : -1),
|
|
(c = r ? a : s),
|
|
(l = r ? Ev : Nv),
|
|
(f = n.selection.getRng()),
|
|
(o = Tv(u, n, c, l, f)) ? o : (o = Av(n, u, f)) || null);
|
|
return !!d && (e.selection.setRng(d), !0);
|
|
};
|
|
},
|
|
Rv = function(e, t) {
|
|
return function() {
|
|
var n = _v(e, t);
|
|
return !!n && (e.selection.setRng(n), !0);
|
|
};
|
|
},
|
|
Dv = function(e, t) {
|
|
return M.bind(
|
|
((n = e),
|
|
M.map(n, function(e) {
|
|
return Zg.merge(
|
|
{
|
|
shiftKey: !1,
|
|
altKey: !1,
|
|
ctrlKey: !1,
|
|
metaKey: !1,
|
|
keyCode: 0,
|
|
action: y.noop
|
|
},
|
|
e
|
|
);
|
|
})),
|
|
function(e) {
|
|
return (
|
|
(n = e),
|
|
(r = t).keyCode === n.keyCode &&
|
|
r.shiftKey === n.shiftKey &&
|
|
r.altKey === n.altKey &&
|
|
r.ctrlKey === n.ctrlKey &&
|
|
r.metaKey === n.metaKey
|
|
? [e]
|
|
: []
|
|
);
|
|
var n, r;
|
|
}
|
|
);
|
|
var n;
|
|
},
|
|
Ov = function(e) {
|
|
for (var t = [], n = 1; n < arguments.length; n++)
|
|
t[n - 1] = arguments[n];
|
|
var r = Array.prototype.slice.call(arguments, 1);
|
|
return function() {
|
|
return e.apply(null, r);
|
|
};
|
|
},
|
|
Pv = function(e, t) {
|
|
return M.find(Dv(e, t), function(e) {
|
|
return e.action();
|
|
});
|
|
},
|
|
Iv = function(e, t) {
|
|
e.on("keydown", function(n) {
|
|
var r, o, i, a;
|
|
!1 === n.isDefaultPrevented() &&
|
|
((r = e),
|
|
(o = t),
|
|
(i = n),
|
|
(a = Un.detect().os),
|
|
Pv(
|
|
[
|
|
{ keyCode: Mp.RIGHT, action: Bv(r, !0) },
|
|
{ keyCode: Mp.LEFT, action: Bv(r, !1) },
|
|
{ keyCode: Mp.UP, action: Rv(r, !1) },
|
|
{ keyCode: Mp.DOWN, action: Rv(r, !0) },
|
|
{ keyCode: Mp.RIGHT, action: of.move(r, o, !0) },
|
|
{ keyCode: Mp.LEFT, action: of.move(r, o, !1) },
|
|
{
|
|
keyCode: Mp.RIGHT,
|
|
ctrlKey: !a.isOSX(),
|
|
altKey: a.isOSX(),
|
|
action: of.moveNextWord(r, o)
|
|
},
|
|
{
|
|
keyCode: Mp.LEFT,
|
|
ctrlKey: !a.isOSX(),
|
|
altKey: a.isOSX(),
|
|
action: of.movePrevWord(r, o)
|
|
}
|
|
],
|
|
i
|
|
).each(function(e) {
|
|
i.preventDefault();
|
|
}));
|
|
});
|
|
},
|
|
Lv = function(e) {
|
|
return 1 === Ur.children(e).length;
|
|
},
|
|
Mv = function(e, t) {
|
|
var n,
|
|
r = Hn.fromDom(e.getBody()),
|
|
o = Hn.fromDom(e.selection.getStart()),
|
|
i = M.filter(
|
|
((n = Uu(o, r)),
|
|
M.findIndex(n, io.isBlock).fold(y.constant(n), function(e) {
|
|
return n.slice(0, e);
|
|
})),
|
|
Lv
|
|
);
|
|
return M.last(i)
|
|
.map(function(n) {
|
|
var r = ia.fromRangeStart(e.selection.getRng());
|
|
return (
|
|
!!Cu(t, r, n.dom()) &&
|
|
((function(e, t, n, r) {
|
|
var o = y.curry(kl, t),
|
|
i = M.map(M.filter(r, o), function(e) {
|
|
return e.dom();
|
|
});
|
|
if (0 === i.length) mc(t, e, n);
|
|
else {
|
|
var a = Sl(n.dom(), i);
|
|
t.selection.setRng(a.toRange());
|
|
}
|
|
})(t, e, n, i),
|
|
!0)
|
|
);
|
|
})
|
|
.getOr(!1);
|
|
},
|
|
Fv = function(e, t) {
|
|
return !!e.selection.isCollapsed() && Mv(e, t);
|
|
},
|
|
zv = function(e, t) {
|
|
e.on("keydown", function(n) {
|
|
var r, o, i;
|
|
!1 === n.isDefaultPrevented() &&
|
|
((r = e),
|
|
(o = t),
|
|
(i = n),
|
|
Pv(
|
|
[
|
|
{ keyCode: Mp.BACKSPACE, action: Ov(hc, r, !1) },
|
|
{ keyCode: Mp.DELETE, action: Ov(hc, r, !0) },
|
|
{ keyCode: Mp.BACKSPACE, action: Ov(cf, r, o, !1) },
|
|
{ keyCode: Mp.DELETE, action: Ov(cf, r, o, !0) },
|
|
{ keyCode: Mp.BACKSPACE, action: Ov(Ju, r, !1) },
|
|
{ keyCode: Mp.DELETE, action: Ov(Ju, r, !0) },
|
|
{ keyCode: Mp.BACKSPACE, action: Ov(Ku, r, !1) },
|
|
{ keyCode: Mp.DELETE, action: Ov(Ku, r, !0) },
|
|
{ keyCode: Mp.BACKSPACE, action: Ov(zf, r, !1) },
|
|
{ keyCode: Mp.DELETE, action: Ov(zf, r, !0) },
|
|
{ keyCode: Mp.BACKSPACE, action: Ov(Fv, r, !1) },
|
|
{ keyCode: Mp.DELETE, action: Ov(Fv, r, !0) }
|
|
],
|
|
i
|
|
).each(function(e) {
|
|
i.preventDefault();
|
|
}));
|
|
}),
|
|
e.on("keyup", function(t) {
|
|
var n, r;
|
|
!1 === t.isDefaultPrevented() &&
|
|
((n = e),
|
|
(r = t),
|
|
Pv(
|
|
[
|
|
{ keyCode: Mp.BACKSPACE, action: Ov(vc, n) },
|
|
{ keyCode: Mp.DELETE, action: Ov(vc, n) }
|
|
],
|
|
r
|
|
));
|
|
});
|
|
},
|
|
Uv = function(e, t, n) {
|
|
var r = e.getParam(t, n);
|
|
if (-1 !== r.indexOf("=")) {
|
|
var o = e.getParam(t, "", "hash");
|
|
return o.hasOwnProperty(e.id) ? o[e.id] : n;
|
|
}
|
|
return r;
|
|
},
|
|
Vv = function(e) {
|
|
return e.getParam("iframe_attrs", {});
|
|
},
|
|
Hv = function(e) {
|
|
return e.getParam("doctype", "<!DOCTYPE html>");
|
|
},
|
|
qv = function(e) {
|
|
return e.getParam("document_base_url", "");
|
|
},
|
|
jv = function(e) {
|
|
return Uv(e, "body_id", "tinymce");
|
|
},
|
|
$v = function(e) {
|
|
return Uv(e, "body_class", "");
|
|
},
|
|
Wv = function(e) {
|
|
return e.getParam("content_security_policy", "");
|
|
},
|
|
Kv = function(e) {
|
|
return e.getParam("br_in_pre", !0);
|
|
},
|
|
Xv = function(e) {
|
|
if (e.getParam("force_p_newlines", !1)) return "p";
|
|
var t = e.getParam("forced_root_block", "p");
|
|
return !1 === t ? "" : t;
|
|
},
|
|
Yv = function(e) {
|
|
return e.getParam("forced_root_block_attrs", {});
|
|
},
|
|
Gv = function(e) {
|
|
return e.getParam(
|
|
"br_newline_selector",
|
|
".mce-toc h2,figcaption,caption"
|
|
);
|
|
},
|
|
Jv = function(e) {
|
|
return e.getParam("no_newline_selector", "");
|
|
},
|
|
Qv = function(e) {
|
|
return e.getParam("keep_styles", !0);
|
|
},
|
|
Zv = function(e) {
|
|
return e.getParam("end_container_on_empty_block", !1);
|
|
},
|
|
ey = function(e) {
|
|
return E.from(e.dom.getParent(e.selection.getStart(!0), e.dom.isBlock));
|
|
},
|
|
ty = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = t,
|
|
a = e.dom,
|
|
s = e.schema.getMoveCaretBeforeOnEnterElements();
|
|
if (t) {
|
|
if (/^(LI|DT|DD)$/.test(t.nodeName)) {
|
|
var u = (function(e) {
|
|
for (; e; ) {
|
|
if (
|
|
1 === e.nodeType ||
|
|
(3 === e.nodeType && e.data && /[\r\n\s]/.test(e.data))
|
|
)
|
|
return e;
|
|
e = e.nextSibling;
|
|
}
|
|
})(t.firstChild);
|
|
u &&
|
|
/^(UL|OL|DL)$/.test(u.nodeName) &&
|
|
t.insertBefore(a.doc.createTextNode("\xa0"), t.firstChild);
|
|
}
|
|
if (((o = a.createRng()), t.normalize(), t.hasChildNodes())) {
|
|
for (n = new to(t, t); (r = n.current()); ) {
|
|
if (vo.isText(r)) {
|
|
o.setStart(r, 0), o.setEnd(r, 0);
|
|
break;
|
|
}
|
|
if (s[r.nodeName.toLowerCase()]) {
|
|
o.setStartBefore(r), o.setEndBefore(r);
|
|
break;
|
|
}
|
|
(i = r), (r = n.next());
|
|
}
|
|
r || (o.setStart(i, 0), o.setEnd(i, 0));
|
|
} else
|
|
vo.isBr(t)
|
|
? t.nextSibling && a.isBlock(t.nextSibling)
|
|
? (o.setStartBefore(t), o.setEndBefore(t))
|
|
: (o.setStartAfter(t), o.setEndAfter(t))
|
|
: (o.setStart(t, 0), o.setEnd(t, 0));
|
|
e.selection.setRng(o), a.remove(void 0), e.selection.scrollIntoView(t);
|
|
}
|
|
},
|
|
ny = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = e.getRoot();
|
|
for (n = t; n !== o && "false" !== e.getContentEditable(n); )
|
|
"true" === e.getContentEditable(n) && (r = n), (n = n.parentNode);
|
|
return n !== o ? r : o;
|
|
},
|
|
ry = ey,
|
|
oy = function(e) {
|
|
return ey(e).fold(y.constant(""), function(e) {
|
|
return e.nodeName.toUpperCase();
|
|
});
|
|
},
|
|
iy = function(e) {
|
|
return ey(e)
|
|
.filter(function(e) {
|
|
return io.isListItem(Hn.fromDom(e));
|
|
})
|
|
.isSome();
|
|
},
|
|
ay = function(e, t) {
|
|
return e && e.parentNode && e.parentNode.nodeName === t;
|
|
},
|
|
sy = function(e) {
|
|
return e && /^(OL|UL|LI)$/.test(e.nodeName);
|
|
},
|
|
uy = function(e) {
|
|
var t = e.parentNode;
|
|
return /^(LI|DT|DD)$/.test(t.nodeName) ? t : e;
|
|
},
|
|
cy = function(e, t, n) {
|
|
for (var r = e[n ? "firstChild" : "lastChild"]; r && !vo.isElement(r); )
|
|
r = r[n ? "nextSibling" : "previousSibling"];
|
|
return r === t;
|
|
},
|
|
ly = function(e, t, n, r, o) {
|
|
var i = e.dom,
|
|
a = e.selection.getRng();
|
|
if (n !== e.getBody()) {
|
|
var s;
|
|
sy((s = n)) && sy(s.parentNode) && (o = "LI");
|
|
var u,
|
|
c,
|
|
l = o ? t(o) : i.create("BR");
|
|
if (cy(n, r, !0) && cy(n, r, !1))
|
|
ay(n, "LI") ? i.insertAfter(l, uy(n)) : i.replace(l, n);
|
|
else if (cy(n, r, !0))
|
|
ay(n, "LI")
|
|
? (i.insertAfter(l, uy(n)),
|
|
l.appendChild(i.doc.createTextNode(" ")),
|
|
l.appendChild(n))
|
|
: n.parentNode.insertBefore(l, n);
|
|
else if (cy(n, r, !1)) i.insertAfter(l, uy(n));
|
|
else {
|
|
n = uy(n);
|
|
var f = a.cloneRange();
|
|
f.setStartAfter(r), f.setEndAfter(n);
|
|
var d = f.extractContents();
|
|
"LI" === o &&
|
|
((c = "LI"), (u = d).firstChild && u.firstChild.nodeName === c)
|
|
? ((l = d.firstChild), i.insertAfter(d, n))
|
|
: (i.insertAfter(d, n), i.insertAfter(l, n));
|
|
}
|
|
i.remove(r), ty(e, l);
|
|
}
|
|
},
|
|
fy = function(e) {
|
|
e.innerHTML = '<br data-mce-bogus="1">';
|
|
},
|
|
dy = function(e, t) {
|
|
return (
|
|
e.nodeName === t ||
|
|
(e.previousSibling && e.previousSibling.nodeName === t)
|
|
);
|
|
},
|
|
my = function(e, t) {
|
|
return (
|
|
t &&
|
|
e.isBlock(t) &&
|
|
!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName) &&
|
|
!/^(fixed|absolute)/i.test(t.style.position) &&
|
|
"true" !== e.getContentEditable(t)
|
|
);
|
|
},
|
|
py = function(e, t, n) {
|
|
return !1 === vo.isText(t)
|
|
? n
|
|
: e
|
|
? 1 === n && t.data.charAt(n - 1) === oi
|
|
? 0
|
|
: n
|
|
: n === t.data.length - 1 && t.data.charAt(n) === oi
|
|
? t.data.length
|
|
: n;
|
|
},
|
|
gy = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = e.getRoot();
|
|
for (n = t; n !== o && "false" !== e.getContentEditable(n); )
|
|
"true" === e.getContentEditable(n) && (r = n), (n = n.parentNode);
|
|
return n !== o ? r : o;
|
|
},
|
|
hy = function(e, t) {
|
|
var n = Xv(e);
|
|
n &&
|
|
n.toLowerCase() === t.tagName.toLowerCase() &&
|
|
e.dom.setAttribs(t, Yv(e));
|
|
},
|
|
vy = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
g,
|
|
h,
|
|
v,
|
|
y,
|
|
b,
|
|
C = e.dom,
|
|
x = e.schema,
|
|
w = x.getNonEmptyElements(),
|
|
N = e.selection.getRng(),
|
|
E = function(t) {
|
|
var n,
|
|
i,
|
|
s,
|
|
u = o,
|
|
c = x.getTextInlineElements();
|
|
if (
|
|
(t || "TABLE" === f || "HR" === f
|
|
? ((n = C.create(t || m)), hy(e, n))
|
|
: (n = a.cloneNode(!1)),
|
|
(s = n),
|
|
!1 === Qv(e))
|
|
)
|
|
C.setAttrib(n, "style", null), C.setAttrib(n, "class", null);
|
|
else
|
|
do {
|
|
if (c[u.nodeName]) {
|
|
if (Nl(u)) continue;
|
|
(i = u.cloneNode(!1)),
|
|
C.setAttrib(i, "id", ""),
|
|
n.hasChildNodes()
|
|
? (i.appendChild(n.firstChild), n.appendChild(i))
|
|
: ((s = i), n.appendChild(i));
|
|
}
|
|
} while ((u = u.parentNode) && u !== r);
|
|
return fy(s), n;
|
|
},
|
|
S = function(e) {
|
|
var t, n, r, s;
|
|
if (
|
|
((s = py(e, o, i)),
|
|
vo.isText(o) && (e ? s > 0 : s < o.nodeValue.length))
|
|
)
|
|
return !1;
|
|
if (o.parentNode === a && p && !e) return !0;
|
|
if (e && vo.isElement(o) && o === a.firstChild) return !0;
|
|
if (dy(o, "TABLE") || dy(o, "HR")) return (p && !e) || (!p && e);
|
|
for (
|
|
t = new to(o, a),
|
|
vo.isText(o) &&
|
|
(e && 0 === s
|
|
? t.prev()
|
|
: e || s !== o.nodeValue.length || t.next());
|
|
(n = t.current());
|
|
|
|
) {
|
|
if (vo.isElement(n)) {
|
|
if (
|
|
!n.getAttribute("data-mce-bogus") &&
|
|
((r = n.nodeName.toLowerCase()), w[r] && "br" !== r)
|
|
)
|
|
return !1;
|
|
} else if (vo.isText(n) && !/^[ \t\r\n]*$/.test(n.nodeValue))
|
|
return !1;
|
|
e ? t.prev() : t.next();
|
|
}
|
|
return !0;
|
|
},
|
|
k = function() {
|
|
(u = /^(H[1-6]|PRE|FIGURE)$/.test(f) && "HGROUP" !== d ? E(m) : E()),
|
|
Zv(e) && my(C, l) && C.isEmpty(a)
|
|
? (u = C.split(l, a))
|
|
: C.insertAfter(u, a),
|
|
ty(e, u);
|
|
};
|
|
Jf.normalize(C, N).each(function(e) {
|
|
N.setStart(e.startContainer, e.startOffset),
|
|
N.setEnd(e.endContainer, e.endOffset);
|
|
}),
|
|
(o = N.startContainer),
|
|
(i = N.startOffset),
|
|
(m = Xv(e)),
|
|
(s = t.shiftKey),
|
|
vo.isElement(o) &&
|
|
o.hasChildNodes() &&
|
|
((p = i > o.childNodes.length - 1),
|
|
(o = o.childNodes[Math.min(i, o.childNodes.length - 1)] || o),
|
|
(i = p && vo.isText(o) ? o.nodeValue.length : 0)),
|
|
(r = gy(C, o)) &&
|
|
(((m && !s) || (!m && s)) &&
|
|
(o = (function(e, t, n, r, o) {
|
|
var i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = t || "P",
|
|
m = e.dom,
|
|
p = gy(m, r);
|
|
if (!(a = m.getParent(r, m.isBlock)) || !my(m, a)) {
|
|
if (
|
|
((l =
|
|
(a = a || p) === e.getBody() ||
|
|
((f = a) && /^(TD|TH|CAPTION)$/.test(f.nodeName))
|
|
? a.nodeName.toLowerCase()
|
|
: a.parentNode.nodeName.toLowerCase()),
|
|
!a.hasChildNodes())
|
|
)
|
|
return (
|
|
(i = m.create(d)),
|
|
hy(e, i),
|
|
a.appendChild(i),
|
|
n.setStart(i, 0),
|
|
n.setEnd(i, 0),
|
|
i
|
|
);
|
|
for (u = r; u.parentNode !== a; ) u = u.parentNode;
|
|
for (; u && !m.isBlock(u); ) (s = u), (u = u.previousSibling);
|
|
if (s && e.schema.isValidChild(l, d.toLowerCase())) {
|
|
for (
|
|
i = m.create(d),
|
|
hy(e, i),
|
|
s.parentNode.insertBefore(i, s),
|
|
u = s;
|
|
u && !m.isBlock(u);
|
|
|
|
)
|
|
(c = u.nextSibling), i.appendChild(u), (u = c);
|
|
n.setStart(r, o), n.setEnd(r, o);
|
|
}
|
|
}
|
|
return r;
|
|
})(e, m, N, o, i)),
|
|
(a = C.getParent(o, C.isBlock)),
|
|
(l = a ? C.getParent(a.parentNode, C.isBlock) : null),
|
|
(f = a ? a.nodeName.toUpperCase() : ""),
|
|
"LI" !== (d = l ? l.nodeName.toUpperCase() : "") ||
|
|
t.ctrlKey ||
|
|
((a = l), (l = l.parentNode), (f = d)),
|
|
/^(LI|DT|DD)$/.test(f) && C.isEmpty(a)
|
|
? ly(e, E, l, a, m)
|
|
: (m && a === e.getBody()) ||
|
|
((m = m || "P"),
|
|
mi.isCaretContainerBlock(a)
|
|
? ((u = mi.showCaretContainerBlock(a)),
|
|
C.isEmpty(a) && fy(a),
|
|
ty(e, u))
|
|
: S()
|
|
? k()
|
|
: S(!0)
|
|
? ((u = a.parentNode.insertBefore(E(), a)),
|
|
ty(e, dy(a, "HR") ? u : a))
|
|
: ((n = ((y = N),
|
|
(b = y.cloneRange()),
|
|
b.setStart(
|
|
y.startContainer,
|
|
py(!0, y.startContainer, y.startOffset)
|
|
),
|
|
b.setEnd(y.endContainer, py(!1, y.endContainer, y.endOffset)),
|
|
b).cloneRange()).setEndAfter(a),
|
|
(function(e) {
|
|
do {
|
|
vo.isText(e) &&
|
|
(e.nodeValue = e.nodeValue.replace(/^[\r\n]+/, "")),
|
|
(e = e.firstChild);
|
|
} while (e);
|
|
})((c = n.extractContents())),
|
|
(u = c.firstChild),
|
|
C.insertAfter(c, a),
|
|
(function(e, t, n) {
|
|
var r,
|
|
o = n,
|
|
i = [];
|
|
if (o) {
|
|
for (; (o = o.firstChild); ) {
|
|
if (e.isBlock(o)) return;
|
|
vo.isElement(o) &&
|
|
!t[o.nodeName.toLowerCase()] &&
|
|
i.push(o);
|
|
}
|
|
for (r = i.length; r--; )
|
|
!(o = i[r]).hasChildNodes() ||
|
|
(o.firstChild === o.lastChild &&
|
|
"" === o.firstChild.nodeValue)
|
|
? e.remove(o)
|
|
: (a = o) &&
|
|
"A" === a.nodeName &&
|
|
0 ===
|
|
Ot.trim(ii(a.innerText || a.textContent))
|
|
.length &&
|
|
e.remove(o);
|
|
var a;
|
|
}
|
|
})(C, w, u),
|
|
(g = C),
|
|
(h = a).normalize(),
|
|
((v = h.lastChild) &&
|
|
!/^(left|right)$/gi.test(g.getStyle(v, "float", !0))) ||
|
|
g.add(h, "br"),
|
|
C.isEmpty(a) && fy(a),
|
|
u.normalize(),
|
|
C.isEmpty(u) ? (C.remove(u), k()) : ty(e, u)),
|
|
C.setAttrib(u, "id", ""),
|
|
e.fire("NewBlock", { newBlock: u })));
|
|
},
|
|
yy = function(e, t) {
|
|
return ry(e)
|
|
.filter(function(e) {
|
|
return t.length > 0 && _r.is(Hn.fromDom(e), t);
|
|
})
|
|
.isSome();
|
|
},
|
|
by = function(e) {
|
|
return yy(e, Gv(e));
|
|
},
|
|
Cy = function(e) {
|
|
return yy(e, Jv(e));
|
|
},
|
|
xy = Qu([{ br: [] }, { block: [] }, { none: [] }]),
|
|
wy = function(e, t) {
|
|
return Cy(e);
|
|
},
|
|
Ny = function(e) {
|
|
return function(t, n) {
|
|
return ("" === Xv(t)) === e;
|
|
};
|
|
},
|
|
Ey = function(e) {
|
|
return function(t, n) {
|
|
return iy(t) === e;
|
|
};
|
|
},
|
|
Sy = function(e) {
|
|
return function(t, n) {
|
|
return ("PRE" === oy(t)) === e;
|
|
};
|
|
},
|
|
ky = function(e) {
|
|
return function(t, n) {
|
|
return Kv(t) === e;
|
|
};
|
|
},
|
|
Ty = function(e, t) {
|
|
return by(e);
|
|
},
|
|
Ay = function(e, t) {
|
|
return t;
|
|
},
|
|
_y = function(e) {
|
|
var t = Xv(e),
|
|
n = ny(e.dom, e.selection.getStart());
|
|
return n && e.schema.isValidChild(n.nodeName, t || "P");
|
|
},
|
|
By = function(e, t) {
|
|
return function(n, r) {
|
|
return M.foldl(
|
|
e,
|
|
function(e, t) {
|
|
return e && t(n, r);
|
|
},
|
|
!0
|
|
)
|
|
? E.some(t)
|
|
: E.none();
|
|
};
|
|
},
|
|
Ry = function(e, t) {
|
|
return Tl(
|
|
[
|
|
By([wy], xy.none()),
|
|
By([Sy(!0), ky(!1), Ay], xy.br()),
|
|
By([Sy(!0), ky(!1)], xy.block()),
|
|
By([Sy(!0), ky(!0), Ay], xy.block()),
|
|
By([Sy(!0), ky(!0)], xy.br()),
|
|
By([Ey(!0), Ay], xy.br()),
|
|
By([Ey(!0)], xy.block()),
|
|
By([Ny(!0), Ay, _y], xy.block()),
|
|
By([Ny(!0)], xy.br()),
|
|
By([Ty], xy.br()),
|
|
By([Ny(!1), Ay], xy.br()),
|
|
By([_y], xy.block())
|
|
],
|
|
[e, t.shiftKey]
|
|
).getOr(xy.none());
|
|
},
|
|
Dy = function(e, t) {
|
|
Ry(e, t).fold(
|
|
function() {
|
|
sd(e, t);
|
|
},
|
|
function() {
|
|
vy(e, t);
|
|
},
|
|
y.noop
|
|
);
|
|
},
|
|
Oy = function(e) {
|
|
e.on("keydown", function(t) {
|
|
var n, r, o;
|
|
t.keyCode === Mp.ENTER &&
|
|
((n = e),
|
|
(r = t).isDefaultPrevented() ||
|
|
(r.preventDefault(),
|
|
(o = n.undoManager).typing && ((o.typing = !1), o.add()),
|
|
n.undoManager.transact(function() {
|
|
!1 === n.selection.isCollapsed() && n.execCommand("Delete"),
|
|
Dy(n, r);
|
|
})));
|
|
});
|
|
},
|
|
Py = function(e, t, n) {
|
|
return (
|
|
(s = t),
|
|
!(
|
|
!Iy(n) ||
|
|
!vo.isText(s.container()) ||
|
|
((r = e),
|
|
(i = (o = t).container()),
|
|
(a = o.offset()),
|
|
i.insertData(a, "\xa0"),
|
|
r.selection.setCursorLocation(i, a + 1),
|
|
0)
|
|
)
|
|
);
|
|
var r, o, i, a, s;
|
|
},
|
|
Iy = function(e) {
|
|
return e.fold(
|
|
y.constant(!1),
|
|
y.constant(!0),
|
|
y.constant(!0),
|
|
y.constant(!1)
|
|
);
|
|
},
|
|
Ly = function(e) {
|
|
return (
|
|
!!e.selection.isCollapsed() &&
|
|
((t = e),
|
|
(n = y.curry(vu.isInlineTarget, t)),
|
|
(r = ia.fromRangeStart(t.selection.getRng())),
|
|
$l(n, t.getBody(), r)
|
|
.map(y.curry(Py, t, r))
|
|
.getOr(!1))
|
|
);
|
|
var t, n, r;
|
|
},
|
|
My = function(e) {
|
|
e.on("keydown", function(t) {
|
|
var n, r;
|
|
!1 === t.isDefaultPrevented() &&
|
|
((n = e),
|
|
(r = t),
|
|
Pv([{ keyCode: Mp.SPACEBAR, action: Ov(Ly, n) }], r).each(function(
|
|
e
|
|
) {
|
|
r.preventDefault();
|
|
}));
|
|
});
|
|
},
|
|
Fy = function(e) {
|
|
var t = of.setupSelectedState(e);
|
|
Iv(e, t), zv(e, t), Oy(e), My(e);
|
|
},
|
|
zy = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o = Ot.each,
|
|
i = Mp.BACKSPACE,
|
|
a = Mp.DELETE,
|
|
s = e.dom,
|
|
u = e.selection,
|
|
c = e.settings,
|
|
l = e.parser,
|
|
f = me.gecko,
|
|
d = me.ie,
|
|
m = me.webkit,
|
|
p = "data:text/mce-internal,",
|
|
g = d ? "Text" : "URL",
|
|
h = function(t, n) {
|
|
try {
|
|
e.getDoc().execCommand(t, !1, n);
|
|
} catch (r) {}
|
|
},
|
|
v = function(e) {
|
|
return e.isDefaultPrevented();
|
|
},
|
|
y = function() {
|
|
e.shortcuts.add("meta+a", null, "SelectAll");
|
|
},
|
|
b = function() {
|
|
e.on("keydown", function(e) {
|
|
if (
|
|
!v(e) &&
|
|
e.keyCode === i &&
|
|
u.isCollapsed() &&
|
|
0 === u.getRng().startOffset
|
|
) {
|
|
var t = u.getNode().previousSibling;
|
|
if (t && t.nodeName && "table" === t.nodeName.toLowerCase())
|
|
return e.preventDefault(), !1;
|
|
}
|
|
});
|
|
},
|
|
C = function() {
|
|
e.inline ||
|
|
(e.contentStyles.push("body {min-height: 150px}"),
|
|
e.on("click", function(t) {
|
|
var n;
|
|
if ("HTML" === t.target.nodeName) {
|
|
if (me.ie > 11) return void e.getBody().focus();
|
|
(n = e.selection.getRng()),
|
|
e.getBody().focus(),
|
|
e.selection.setRng(n),
|
|
e.selection.normalize(),
|
|
e.nodeChanged();
|
|
}
|
|
}));
|
|
};
|
|
return (
|
|
e.on("keydown", function(t) {
|
|
var n, r, o, i, a;
|
|
if (
|
|
!v(t) &&
|
|
t.keyCode === Mp.BACKSPACE &&
|
|
((r = (n = u.getRng()).startContainer),
|
|
(o = n.startOffset),
|
|
(i = s.getRoot()),
|
|
(a = r),
|
|
n.collapsed && 0 === o)
|
|
) {
|
|
for (
|
|
;
|
|
a &&
|
|
a.parentNode &&
|
|
a.parentNode.firstChild === a &&
|
|
a.parentNode !== i;
|
|
|
|
)
|
|
a = a.parentNode;
|
|
"BLOCKQUOTE" === a.tagName &&
|
|
(e.formatter.toggle("blockquote", null, a),
|
|
(n = s.createRng()).setStart(r, 0),
|
|
n.setEnd(r, 0),
|
|
u.setRng(n));
|
|
}
|
|
}),
|
|
(t = function(e) {
|
|
var t = s.create("body"),
|
|
n = e.cloneContents();
|
|
return (
|
|
t.appendChild(n), u.serializer.serialize(t, { format: "html" })
|
|
);
|
|
}),
|
|
e.on("keydown", function(n) {
|
|
var r,
|
|
o,
|
|
u,
|
|
c,
|
|
l,
|
|
f = n.keyCode;
|
|
if (!v(n) && (f === a || f === i)) {
|
|
if (
|
|
((r = e.selection.isCollapsed()),
|
|
(o = e.getBody()),
|
|
r && !s.isEmpty(o))
|
|
)
|
|
return;
|
|
if (
|
|
!r &&
|
|
((u = e.selection.getRng()),
|
|
(c = t(u)),
|
|
(l = s.createRng()).selectNode(e.getBody()),
|
|
c !== t(l))
|
|
)
|
|
return;
|
|
n.preventDefault(),
|
|
e.setContent(""),
|
|
o.firstChild && s.isBlock(o.firstChild)
|
|
? e.selection.setCursorLocation(o.firstChild, 0)
|
|
: e.selection.setCursorLocation(o, 0),
|
|
e.nodeChanged();
|
|
}
|
|
}),
|
|
me.windowsPhone ||
|
|
e.on(
|
|
"keyup focusin mouseup",
|
|
function(e) {
|
|
Mp.modifierPressed(e) || u.normalize();
|
|
},
|
|
!0
|
|
),
|
|
m &&
|
|
(e.settings.content_editable ||
|
|
s.bind(e.getDoc(), "mousedown mouseup", function(t) {
|
|
var n;
|
|
if (t.target === e.getDoc().documentElement)
|
|
if (
|
|
((n = u.getRng()),
|
|
e.getBody().focus(),
|
|
"mousedown" === t.type)
|
|
) {
|
|
if (mi.isCaretContainer(n.startContainer)) return;
|
|
u.placeCaretAt(t.clientX, t.clientY);
|
|
} else u.setRng(n);
|
|
}),
|
|
e.on("click", function(t) {
|
|
var n = t.target;
|
|
/^(IMG|HR)$/.test(n.nodeName) &&
|
|
"false" !== s.getContentEditableParent(n) &&
|
|
(t.preventDefault(), e.selection.select(n), e.nodeChanged()),
|
|
"A" === n.nodeName &&
|
|
s.hasClass(n, "mce-item-anchor") &&
|
|
(t.preventDefault(), u.select(n));
|
|
}),
|
|
c.forced_root_block &&
|
|
e.on("init", function() {
|
|
h("DefaultParagraphSeparator", c.forced_root_block);
|
|
}),
|
|
e.on("init", function() {
|
|
e.dom.bind(e.getBody(), "submit", function(e) {
|
|
e.preventDefault();
|
|
});
|
|
}),
|
|
b(),
|
|
l.addNodeFilter("br", function(e) {
|
|
for (var t = e.length; t--; )
|
|
"Apple-interchange-newline" === e[t].attr("class") &&
|
|
e[t].remove();
|
|
}),
|
|
me.iOS
|
|
? (e.inline ||
|
|
e.on("keydown", function() {
|
|
document.activeElement === document.body &&
|
|
e.getWin().focus();
|
|
}),
|
|
C(),
|
|
e.on("click", function(e) {
|
|
var t = e.target;
|
|
do {
|
|
if ("A" === t.tagName) return void e.preventDefault();
|
|
} while ((t = t.parentNode));
|
|
}),
|
|
e.contentStyles.push(
|
|
".mce-content-body {-webkit-touch-callout: none}"
|
|
))
|
|
: y()),
|
|
me.ie >= 11 && (C(), b()),
|
|
me.ie &&
|
|
(y(),
|
|
h("AutoUrlDetect", !1),
|
|
e.on("dragstart", function(t) {
|
|
var n, r, o;
|
|
(n = t).dataTransfer &&
|
|
(e.selection.isCollapsed() &&
|
|
"IMG" === n.target.tagName &&
|
|
u.select(n.target),
|
|
(r = e.selection.getContent()).length > 0 &&
|
|
((o = p + escape(e.id) + "," + escape(r)),
|
|
n.dataTransfer.setData(g, o)));
|
|
}),
|
|
e.on("drop", function(t) {
|
|
if (!v(t)) {
|
|
var n =
|
|
(a = t).dataTransfer &&
|
|
(s = a.dataTransfer.getData(g)) &&
|
|
s.indexOf(p) >= 0
|
|
? ((s = s.substr(p.length).split(",")),
|
|
{ id: unescape(s[0]), html: unescape(s[1]) })
|
|
: null;
|
|
if (n && n.id !== e.id) {
|
|
t.preventDefault();
|
|
var r = Ih(t.x, t.y, e.getDoc());
|
|
u.setRng(r),
|
|
(o = n.html),
|
|
(i = !0),
|
|
e.queryCommandSupported("mceInsertClipboardContent")
|
|
? e.execCommand("mceInsertClipboardContent", !1, {
|
|
content: o,
|
|
internal: i
|
|
})
|
|
: e.execCommand("mceInsertContent", !1, o);
|
|
}
|
|
}
|
|
var o, i, a, s;
|
|
})),
|
|
f &&
|
|
(e.on("keydown", function(t) {
|
|
if (!v(t) && t.keyCode === i) {
|
|
if (!e.getBody().getElementsByTagName("hr").length) return;
|
|
if (u.isCollapsed() && 0 === u.getRng().startOffset) {
|
|
var n = u.getNode(),
|
|
r = n.previousSibling;
|
|
if ("HR" === n.nodeName)
|
|
return s.remove(n), void t.preventDefault();
|
|
r &&
|
|
r.nodeName &&
|
|
"hr" === r.nodeName.toLowerCase() &&
|
|
(s.remove(r), t.preventDefault());
|
|
}
|
|
}
|
|
}),
|
|
Range.prototype.getClientRects ||
|
|
e.on("mousedown", function(t) {
|
|
if (!v(t) && "HTML" === t.target.nodeName) {
|
|
var n = e.getBody();
|
|
n.blur(),
|
|
ye.setEditorTimeout(e, function() {
|
|
n.focus();
|
|
});
|
|
}
|
|
}),
|
|
(n = function() {
|
|
var t = s.getAttribs(u.getStart().cloneNode(!1));
|
|
return function() {
|
|
var n = u.getStart();
|
|
n !== e.getBody() &&
|
|
(s.setAttrib(n, "style", null),
|
|
o(t, function(e) {
|
|
n.setAttributeNode(e.cloneNode(!0));
|
|
}));
|
|
};
|
|
}),
|
|
(r = function() {
|
|
return (
|
|
!u.isCollapsed() &&
|
|
s.getParent(u.getStart(), s.isBlock) !==
|
|
s.getParent(u.getEnd(), s.isBlock)
|
|
);
|
|
}),
|
|
e.on("keypress", function(t) {
|
|
var o;
|
|
if (!v(t) && (8 === t.keyCode || 46 === t.keyCode) && r())
|
|
return (
|
|
(o = n()),
|
|
e.getDoc().execCommand("delete", !1, null),
|
|
o(),
|
|
t.preventDefault(),
|
|
!1
|
|
);
|
|
}),
|
|
s.bind(e.getDoc(), "cut", function(t) {
|
|
var o;
|
|
!v(t) &&
|
|
r() &&
|
|
((o = n()),
|
|
ye.setEditorTimeout(e, function() {
|
|
o();
|
|
}));
|
|
}),
|
|
c.readonly ||
|
|
e.on("BeforeExecCommand MouseDown", function() {
|
|
h("StyleWithCSS", !1),
|
|
h("enableInlineTableEditing", !1),
|
|
c.object_resizing || h("enableObjectResizing", !1);
|
|
}),
|
|
e.on("SetContent ExecCommand", function(e) {
|
|
("setcontent" !== e.type && "mceInsertLink" !== e.command) ||
|
|
o(s.select("a"), function(e) {
|
|
var t = e.parentNode,
|
|
n = s.getRoot();
|
|
if (t.lastChild === e) {
|
|
for (; t && !s.isBlock(t); ) {
|
|
if (t.parentNode.lastChild !== t || t === n) return;
|
|
t = t.parentNode;
|
|
}
|
|
s.add(t, "br", { "data-mce-bogus": 1 });
|
|
}
|
|
});
|
|
}),
|
|
e.contentStyles.push(
|
|
"img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"
|
|
),
|
|
me.mac &&
|
|
e.on("keydown", function(t) {
|
|
!Mp.metaKeyPressed(t) ||
|
|
t.shiftKey ||
|
|
(37 !== t.keyCode && 39 !== t.keyCode) ||
|
|
(t.preventDefault(),
|
|
e.selection
|
|
.getSel()
|
|
.modify(
|
|
"move",
|
|
37 === t.keyCode ? "backward" : "forward",
|
|
"lineboundary"
|
|
));
|
|
}),
|
|
b()),
|
|
{
|
|
refreshContentEditable: function() {},
|
|
isHidden: function() {
|
|
var t;
|
|
return !f || e.removed
|
|
? 0
|
|
: !(t = e.selection.getSel()) ||
|
|
!t.rangeCount ||
|
|
0 === t.rangeCount;
|
|
}
|
|
}
|
|
);
|
|
},
|
|
Uy = Xo.DOM,
|
|
Vy = function(e) {
|
|
var t;
|
|
e.bindPendingEventDelegates(),
|
|
(e.initialized = !0),
|
|
e.fire("init"),
|
|
e.focus(!0),
|
|
e.nodeChanged({ initial: !0 }),
|
|
e.execCallback("init_instance_callback", e),
|
|
(t = e).settings.auto_focus &&
|
|
ye.setEditorTimeout(
|
|
t,
|
|
function() {
|
|
var e;
|
|
(e =
|
|
!0 === t.settings.auto_focus
|
|
? t
|
|
: t.editorManager.get(t.settings.auto_focus)).destroyed ||
|
|
e.focus();
|
|
},
|
|
100
|
|
);
|
|
},
|
|
Hy = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f = e.settings,
|
|
d = e.getElement(),
|
|
m = e.getDoc();
|
|
f.inline || (e.getElement().style.visibility = e.orgVisibility),
|
|
t || f.content_editable || (m.open(), m.write(e.iframeHTML), m.close()),
|
|
f.content_editable &&
|
|
(e.on("remove", function() {
|
|
var e = this.getBody();
|
|
Uy.removeClass(e, "mce-content-body"),
|
|
Uy.removeClass(e, "mce-edit-focus"),
|
|
Uy.setAttrib(e, "contentEditable", null);
|
|
}),
|
|
Uy.addClass(d, "mce-content-body"),
|
|
(e.contentDocument = m = f.content_document || document),
|
|
(e.contentWindow = f.content_window || window),
|
|
(e.bodyElement = d),
|
|
(f.content_document = f.content_window = null),
|
|
(f.root_name = d.nodeName.toLowerCase())),
|
|
((n = e.getBody()).disabled = !0),
|
|
(e.readonly = f.readonly),
|
|
e.readonly ||
|
|
(e.inline &&
|
|
"static" === Uy.getStyle(n, "position", !0) &&
|
|
(n.style.position = "relative"),
|
|
(n.contentEditable = e.getParam("content_editable_state", !0))),
|
|
(n.disabled = !1),
|
|
(e.editorUpload = Jm(e)),
|
|
(e.schema = Fo(f)),
|
|
(e.dom = new Xo(m, {
|
|
keep_values: !0,
|
|
url_converter: e.convertURL,
|
|
url_converter_scope: e,
|
|
hex_colors: f.force_hex_style_colors,
|
|
class_filter: f.class_filter,
|
|
update_styles: !0,
|
|
root_element: e.inline ? e.getBody() : null,
|
|
collect: f.content_editable,
|
|
schema: e.schema,
|
|
onSetAttrib: function(t) {
|
|
e.fire("SetAttrib", t);
|
|
}
|
|
})),
|
|
(e.parser = ((i = bh((o = e).settings, o.schema)).addAttributeFilter(
|
|
"src,href,style,tabindex",
|
|
function(e, t) {
|
|
for (var n, r, i, a = e.length, s = o.dom; a--; )
|
|
if (
|
|
((r = (n = e[a]).attr(t)),
|
|
(i = "data-mce-" + t),
|
|
!n.attributes.map[i])
|
|
) {
|
|
if (0 === r.indexOf("data:") || 0 === r.indexOf("blob:"))
|
|
continue;
|
|
"style" === t
|
|
? ((r = s.serializeStyle(s.parseStyle(r), n.name)).length ||
|
|
(r = null),
|
|
n.attr(i, r),
|
|
n.attr(t, r))
|
|
: "tabindex" === t
|
|
? (n.attr(i, r), n.attr(t, null))
|
|
: n.attr(i, o.convertURL(r, t, n.name));
|
|
}
|
|
}
|
|
),
|
|
i.addNodeFilter("script", function(e) {
|
|
for (var t, n, r = e.length; r--; )
|
|
0 !== (n = (t = e[r]).attr("type") || "no/type").indexOf("mce-") &&
|
|
t.attr("type", "mce-" + n);
|
|
}),
|
|
i.addNodeFilter("#cdata", function(e) {
|
|
for (var t, n = e.length; n--; )
|
|
((t = e[n]).type = 8),
|
|
(t.name = "#comment"),
|
|
(t.value = "[CDATA[" + t.value + "]]");
|
|
}),
|
|
i.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div", function(e) {
|
|
for (var t, n = e.length, r = o.schema.getNonEmptyElements(); n--; )
|
|
(t = e[n]).isEmpty(r) &&
|
|
0 === t.getAll("br").length &&
|
|
(t.append(new fh("br", 1)).shortEnded = !0);
|
|
}),
|
|
i)),
|
|
(e.serializer = Nh(f, e)),
|
|
(e.selection = vv(e.dom, e.getWin(), e.serializer, e)),
|
|
(e.formatter = Yg(e)),
|
|
(e.undoManager = rg(e)),
|
|
(e._nodeChangeDispatcher = new tp(e)),
|
|
(e._selectionOverrides = Hp(e)),
|
|
kh(e),
|
|
Fy(e),
|
|
ep(e),
|
|
e.fire("PreInit"),
|
|
f.browser_spellcheck ||
|
|
f.gecko_spellcheck ||
|
|
((m.body.spellcheck = !1), Uy.setAttrib(n, "spellcheck", "false")),
|
|
(e.quirks = zy(e)),
|
|
e.fire("PostRender"),
|
|
f.directionality && (n.dir = f.directionality),
|
|
f.nowrap && (n.style.whiteSpace = "nowrap"),
|
|
f.protect &&
|
|
e.on("BeforeSetContent", function(e) {
|
|
Ot.each(f.protect, function(t) {
|
|
e.content = e.content.replace(t, function(e) {
|
|
return "\x3c!--mce:protected " + escape(e) + "--\x3e";
|
|
});
|
|
});
|
|
}),
|
|
e.on("SetContent", function() {
|
|
e.addVisual(e.getBody());
|
|
}),
|
|
f.padd_empty_editor &&
|
|
e.on("PostProcess", function(e) {
|
|
e.content = e.content.replace(
|
|
/^(<p[^>]*>( | |\s|\u00a0|<br \/>|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,
|
|
""
|
|
);
|
|
}),
|
|
e.load({ initial: !0, format: "html" }),
|
|
(e.startContent = e.getContent({ format: "raw" })),
|
|
e.on("compositionstart compositionend", function(t) {
|
|
e.composing = "compositionstart" === t.type;
|
|
}),
|
|
e.contentStyles.length > 0 &&
|
|
((r = ""),
|
|
Ot.each(e.contentStyles, function(e) {
|
|
r += e + "\r\n";
|
|
}),
|
|
e.dom.addStyle(r)),
|
|
((a = e),
|
|
a.inline ? Uy.styleSheetLoader : a.dom.styleSheetLoader).loadAll(
|
|
e.contentCSS,
|
|
function(t) {
|
|
Vy(e);
|
|
},
|
|
function(t) {
|
|
Vy(e);
|
|
}
|
|
),
|
|
f.content_style &&
|
|
((s = e),
|
|
(u = f.content_style),
|
|
(c = Hn.fromDom(s.getDoc().head)),
|
|
(l = Hn.fromTag("style")),
|
|
dr.set(l, "type", "text/css"),
|
|
ks.append(l, Hn.fromText(u)),
|
|
ks.append(c, l));
|
|
},
|
|
qy = Xo.DOM,
|
|
jy = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c = e.editorManager.translate(
|
|
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"
|
|
),
|
|
l = ((n = e.id),
|
|
(r = c),
|
|
(o = t.height),
|
|
(i = Vv(e)),
|
|
(u = Hn.fromTag("iframe")),
|
|
dr.setAll(u, i),
|
|
dr.setAll(u, {
|
|
id: n + "_ifr",
|
|
frameBorder: "0",
|
|
allowTransparency: "true",
|
|
title: r
|
|
}),
|
|
br(u, {
|
|
width: "100%",
|
|
height: ((a = o), (s = "number" == typeof a ? a + "px" : a), s || ""),
|
|
display: "block"
|
|
}),
|
|
u).dom();
|
|
l.onload = function() {
|
|
(l.onload = null), e.fire("load");
|
|
};
|
|
var f,
|
|
d,
|
|
m,
|
|
p,
|
|
g = (function(e, t) {
|
|
if (
|
|
document.domain !== window.location.hostname &&
|
|
me.ie &&
|
|
me.ie < 12
|
|
) {
|
|
var n = Gm("mce");
|
|
e[n] = function() {
|
|
Hy(e);
|
|
};
|
|
var r =
|
|
'javascript:(function(){document.open();document.domain="' +
|
|
document.domain +
|
|
'";var ed = window.parent.tinymce.get("' +
|
|
e.id +
|
|
'");document.write(ed.iframeHTML);document.close();ed.' +
|
|
n +
|
|
"(true);})()";
|
|
return qy.setAttrib(t, "src", r), !0;
|
|
}
|
|
return !1;
|
|
})(e, l);
|
|
return (
|
|
(e.contentAreaContainer = t.iframeContainer),
|
|
(e.iframeElement = l),
|
|
(e.iframeHTML = ((p = Hv((f = e)) + "<html><head>"),
|
|
qv(f) !== f.documentBaseUrl &&
|
|
(p += '<base href="' + f.documentBaseURI.getURI() + '" />'),
|
|
(p +=
|
|
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'),
|
|
(d = jv(f)),
|
|
(m = $v(f)),
|
|
Wv(f) &&
|
|
(p +=
|
|
'<meta http-equiv="Content-Security-Policy" content="' +
|
|
Wv(f) +
|
|
'" />'),
|
|
(p +=
|
|
'</head><body id="' +
|
|
d +
|
|
'" class="mce-content-body ' +
|
|
m +
|
|
'" data-id="' +
|
|
f.id +
|
|
'"><br></body></html>'))),
|
|
qy.add(t.iframeContainer, l),
|
|
g
|
|
);
|
|
},
|
|
$y = function(e, t) {
|
|
var n = jy(e, t);
|
|
t.editorContainer &&
|
|
((qy.get(t.editorContainer).style.display = e.orgDisplay),
|
|
(e.hidden = qy.isHidden(t.editorContainer))),
|
|
(e.getElement().style.display = "none"),
|
|
qy.setAttrib(e.id, "aria-hidden", !0),
|
|
n || Hy(e);
|
|
},
|
|
Wy = Xo.DOM,
|
|
Ky = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i = Im.get(n);
|
|
if (
|
|
((r = Im.urls[n] || e.documentBaseUrl.replace(/\/$/, "")),
|
|
(n = Ot.trim(n)),
|
|
i && -1 === Ot.inArray(t, n))
|
|
) {
|
|
if (
|
|
(Ot.each(Im.dependencies(n), function(n) {
|
|
Ky(e, t, n);
|
|
}),
|
|
e.plugins[n])
|
|
)
|
|
return;
|
|
(o = new i(e, r, e.$)),
|
|
(e.plugins[n] = o),
|
|
o.init && (o.init(e, r), t.push(n));
|
|
}
|
|
},
|
|
Xy = function(e) {
|
|
return e.replace(/^\-/, "");
|
|
},
|
|
Yy = function(e) {
|
|
return { editorContainer: e, iframeContainer: e };
|
|
},
|
|
Gy = function(e) {
|
|
var t,
|
|
n,
|
|
r = e.getElement();
|
|
return e.inline
|
|
? Yy(null)
|
|
: ((t = r), (n = Wy.create("div")), Wy.insertAfter(n, t), Yy(n));
|
|
},
|
|
Jy = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = e.settings,
|
|
m = e.getElement();
|
|
return (
|
|
(e.orgDisplay = m.style.display),
|
|
tr.isString(d.theme)
|
|
? ((l = (o = e).settings),
|
|
(f = o.getElement()),
|
|
(i = l.width || Wy.getStyle(f, "width") || "100%"),
|
|
(a = l.height || Wy.getStyle(f, "height") || f.offsetHeight),
|
|
(s = l.min_height || 100),
|
|
(u = /^[0-9\.]+(|px)$/i).test("" + i) &&
|
|
(i = Math.max(parseInt(i, 10), 100)),
|
|
u.test("" + a) && (a = Math.max(parseInt(a, 10), s)),
|
|
(c = o.theme.renderUI({
|
|
targetNode: f,
|
|
width: i,
|
|
height: a,
|
|
deltaWidth: l.delta_width,
|
|
deltaHeight: l.delta_height
|
|
})),
|
|
l.content_editable ||
|
|
((a =
|
|
(c.iframeHeight || a) +
|
|
("number" == typeof a ? c.deltaHeight || 0 : "")) < s &&
|
|
(a = s)),
|
|
(c.height = a),
|
|
c)
|
|
: tr.isFunction(d.theme)
|
|
? ((r = (t = e).getElement()),
|
|
(n = t.settings.theme(t, r)).editorContainer.nodeType &&
|
|
(n.editorContainer.id = n.editorContainer.id || t.id + "_parent"),
|
|
n.iframeContainer &&
|
|
n.iframeContainer.nodeType &&
|
|
(n.iframeContainer.id =
|
|
n.iframeContainer.id || t.id + "_iframecontainer"),
|
|
(n.height = n.iframeHeight ? n.iframeHeight : r.offsetHeight),
|
|
n)
|
|
: Gy(e)
|
|
);
|
|
},
|
|
Qy = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
i,
|
|
a,
|
|
s = e.settings,
|
|
u = e.getElement();
|
|
return (
|
|
(e.rtl = s.rtl_ui || e.editorManager.i18n.rtl),
|
|
e.editorManager.i18n.setCode(s.language),
|
|
(s.aria_label =
|
|
s.aria_label ||
|
|
Wy.getAttrib(u, "aria-label", e.getLang("aria.rich_text_area"))),
|
|
e.fire("ScriptsLoaded"),
|
|
(o = (n = e).settings.theme),
|
|
tr.isString(o)
|
|
? ((n.settings.theme = Xy(o)),
|
|
(r = Lm.get(o)),
|
|
(n.theme = new r(n, Lm.urls[o])),
|
|
n.theme.init &&
|
|
n.theme.init(
|
|
n,
|
|
Lm.urls[o] || n.documentBaseUrl.replace(/\/$/, ""),
|
|
n.$
|
|
))
|
|
: (n.theme = {}),
|
|
(i = e),
|
|
(a = []),
|
|
Ot.each(i.settings.plugins.split(/[ ,]/), function(e) {
|
|
Ky(i, a, Xy(e));
|
|
}),
|
|
(t = Jy(e)),
|
|
(e.editorContainer = t.editorContainer ? t.editorContainer : null),
|
|
s.content_css &&
|
|
Ot.each(Ot.explode(s.content_css), function(t) {
|
|
e.contentCSS.push(e.documentBaseURI.toAbsolute(t));
|
|
}),
|
|
s.content_editable ? Hy(e) : $y(e, t)
|
|
);
|
|
},
|
|
Zy = Xo.DOM,
|
|
eb = function(e) {
|
|
return "-" === e.charAt(0);
|
|
},
|
|
tb = function(e, t) {
|
|
var n = Zo.ScriptLoader;
|
|
!(function(e, t, n, r) {
|
|
var o = t.settings,
|
|
i = o.theme;
|
|
if (tr.isString(i)) {
|
|
if (!eb(i) && !Lm.urls.hasOwnProperty(i)) {
|
|
var a = o.theme_url;
|
|
a
|
|
? Lm.load(i, t.documentBaseURI.toAbsolute(a))
|
|
: Lm.load(i, "themes/" + i + "/theme" + n + ".js");
|
|
}
|
|
e.loadQueue(function() {
|
|
Lm.waitFor(i, r);
|
|
});
|
|
} else r();
|
|
})(n, e, t, function() {
|
|
var r, o, i, a, s;
|
|
(r = n),
|
|
(i = (o = e).settings).language &&
|
|
"en" !== i.language &&
|
|
!i.language_url &&
|
|
(i.language_url =
|
|
o.editorManager.baseURL + "/langs/" + i.language + ".js"),
|
|
i.language_url &&
|
|
!o.editorManager.i18n.data[i.language] &&
|
|
r.add(i.language_url),
|
|
(a = e.settings),
|
|
(s = t),
|
|
Ot.isArray(a.plugins) && (a.plugins = a.plugins.join(" ")),
|
|
Ot.each(a.external_plugins, function(e, t) {
|
|
Im.load(t, e), (a.plugins += " " + t);
|
|
}),
|
|
Ot.each(a.plugins.split(/[ ,]/), function(e) {
|
|
if ((e = Ot.trim(e)) && !Im.urls[e])
|
|
if (eb(e)) {
|
|
e = e.substr(1, e.length);
|
|
var t = Im.dependencies(e);
|
|
Ot.each(t, function(e) {
|
|
var t = {
|
|
prefix: "plugins/",
|
|
resource: e,
|
|
suffix: "/plugin" + s + ".js"
|
|
};
|
|
(e = Im.createUrl(t, e)), Im.load(e.resource, e);
|
|
});
|
|
} else
|
|
Im.load(e, {
|
|
prefix: "plugins/",
|
|
resource: e,
|
|
suffix: "/plugin" + s + ".js"
|
|
});
|
|
}),
|
|
n.loadQueue(
|
|
function() {
|
|
e.removed || Qy(e);
|
|
},
|
|
e,
|
|
function(t) {
|
|
Rm(e, t[0]), e.removed || Qy(e);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
nb = function(e) {
|
|
var t = e.settings,
|
|
n = e.id,
|
|
r = function() {
|
|
Zy.unbind(window, "ready", r), e.render();
|
|
};
|
|
if (Te.Event.domLoaded) {
|
|
if (e.getElement() && me.contentEditable) {
|
|
t.inline
|
|
? (e.inline = !0)
|
|
: ((e.orgVisibility = e.getElement().style.visibility),
|
|
(e.getElement().style.visibility = "hidden"));
|
|
var o = e.getElement().form || Zy.getParent(n, "form");
|
|
o &&
|
|
((e.formElement = o),
|
|
t.hidden_input &&
|
|
!/TEXTAREA|INPUT/i.test(e.getElement().nodeName) &&
|
|
(Zy.insertAfter(
|
|
Zy.create("input", { type: "hidden", name: n }),
|
|
n
|
|
),
|
|
(e.hasHiddenInput = !0)),
|
|
(e.formEventDelegate = function(t) {
|
|
e.fire(t.type, t);
|
|
}),
|
|
Zy.bind(o, "submit reset", e.formEventDelegate),
|
|
e.on("reset", function() {
|
|
e.setContent(e.startContent, { format: "raw" });
|
|
}),
|
|
!t.submit_patch ||
|
|
o.submit.nodeType ||
|
|
o.submit.length ||
|
|
o._mceOldSubmit ||
|
|
((o._mceOldSubmit = o.submit),
|
|
(o.submit = function() {
|
|
return (
|
|
e.editorManager.triggerSave(),
|
|
e.setDirty(!1),
|
|
o._mceOldSubmit(o)
|
|
);
|
|
}))),
|
|
(e.windowManager = km(e)),
|
|
(e.notificationManager = Sm(e)),
|
|
"xml" === t.encoding &&
|
|
e.on("GetContent", function(e) {
|
|
e.save && (e.content = Zy.encode(e.content));
|
|
}),
|
|
t.add_form_submit_trigger &&
|
|
e.on("submit", function() {
|
|
e.initialized && e.save();
|
|
}),
|
|
t.add_unload_trigger &&
|
|
((e._beforeUnload = function() {
|
|
!e.initialized ||
|
|
e.destroyed ||
|
|
e.isHidden() ||
|
|
e.save({ format: "raw", no_events: !0, set_dirty: !1 });
|
|
}),
|
|
e.editorManager.on("BeforeUnload", e._beforeUnload)),
|
|
e.editorManager.add(e),
|
|
tb(e, e.suffix);
|
|
}
|
|
} else Zy.bind(window, "ready", r);
|
|
},
|
|
rb = function(e, t, n) {
|
|
var r = e.sidebars ? e.sidebars : [];
|
|
r.push({ name: t, settings: n }), (e.sidebars = r);
|
|
},
|
|
ob = Ot.each,
|
|
ib = Ot.trim,
|
|
ab = "source protocol authority userInfo user password host port relative path directory file query anchor".split(
|
|
" "
|
|
),
|
|
sb = { ftp: 21, http: 80, https: 443, mailto: 25 },
|
|
ub = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = this;
|
|
if (
|
|
((e = ib(e)),
|
|
(n = (t = o.settings = t || {}).base_uri),
|
|
/^([\w\-]+):([^\/]{2})/i.test(e) || /^\s*#/.test(e))
|
|
)
|
|
o.source = e;
|
|
else {
|
|
var i = 0 === e.indexOf("//");
|
|
0 !== e.indexOf("/") ||
|
|
i ||
|
|
(e = ((n && n.protocol) || "http") + "://mce_host" + e),
|
|
/^[\w\-]*:?\/\//.test(e) ||
|
|
((r = t.base_uri
|
|
? t.base_uri.path
|
|
: new ub(document.location.href).directory),
|
|
"" == t.base_uri.protocol
|
|
? (e = "//mce_host" + o.toAbsPath(r, e))
|
|
: ((e = /([^#?]*)([#?]?.*)/.exec(e)),
|
|
(e =
|
|
((n && n.protocol) || "http") +
|
|
"://mce_host" +
|
|
o.toAbsPath(r, e[1]) +
|
|
e[2]))),
|
|
(e = e.replace(/@@/g, "(mce_at)")),
|
|
(e = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(
|
|
e
|
|
)),
|
|
ob(ab, function(t, n) {
|
|
var r = e[n];
|
|
r && (r = r.replace(/\(mce_at\)/g, "@@")), (o[t] = r);
|
|
}),
|
|
n &&
|
|
(o.protocol || (o.protocol = n.protocol),
|
|
o.userInfo || (o.userInfo = n.userInfo),
|
|
o.port || "mce_host" !== o.host || (o.port = n.port),
|
|
(o.host && "mce_host" !== o.host) || (o.host = n.host),
|
|
(o.source = "")),
|
|
i && (o.protocol = "");
|
|
}
|
|
};
|
|
(ub.prototype = {
|
|
setPath: function(e) {
|
|
(e = /^(.*?)\/?(\w+)?$/.exec(e)),
|
|
(this.path = e[0]),
|
|
(this.directory = e[1]),
|
|
(this.file = e[2]),
|
|
(this.source = ""),
|
|
this.getURI();
|
|
},
|
|
toRelative: function(e) {
|
|
var t;
|
|
if ("./" === e) return e;
|
|
if (
|
|
("mce_host" !== (e = new ub(e, { base_uri: this })).host &&
|
|
this.host !== e.host &&
|
|
e.host) ||
|
|
this.port !== e.port ||
|
|
(this.protocol !== e.protocol && "" !== e.protocol)
|
|
)
|
|
return e.getURI();
|
|
var n = this.getURI(),
|
|
r = e.getURI();
|
|
return n === r ||
|
|
("/" === n.charAt(n.length - 1) && n.substr(0, n.length - 1) === r)
|
|
? n
|
|
: ((t = this.toRelPath(this.path, e.path)),
|
|
e.query && (t += "?" + e.query),
|
|
e.anchor && (t += "#" + e.anchor),
|
|
t);
|
|
},
|
|
toAbsolute: function(e, t) {
|
|
return (e = new ub(e, { base_uri: this })).getURI(
|
|
t && this.isSameOrigin(e)
|
|
);
|
|
},
|
|
isSameOrigin: function(e) {
|
|
if (this.host == e.host && this.protocol == e.protocol) {
|
|
if (this.port == e.port) return !0;
|
|
var t = sb[this.protocol];
|
|
if (t && (this.port || t) == (e.port || t)) return !0;
|
|
}
|
|
return !1;
|
|
},
|
|
toRelPath: function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = 0,
|
|
a = "";
|
|
if (
|
|
((e = (e = e.substring(0, e.lastIndexOf("/"))).split("/")),
|
|
(n = t.split("/")),
|
|
e.length >= n.length)
|
|
)
|
|
for (r = 0, o = e.length; r < o; r++)
|
|
if (r >= n.length || e[r] !== n[r]) {
|
|
i = r + 1;
|
|
break;
|
|
}
|
|
if (e.length < n.length)
|
|
for (r = 0, o = n.length; r < o; r++)
|
|
if (r >= e.length || e[r] !== n[r]) {
|
|
i = r + 1;
|
|
break;
|
|
}
|
|
if (1 === i) return t;
|
|
for (r = 0, o = e.length - (i - 1); r < o; r++) a += "../";
|
|
for (r = i - 1, o = n.length; r < o; r++)
|
|
a += r !== i - 1 ? "/" + n[r] : n[r];
|
|
return a;
|
|
},
|
|
toAbsPath: function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = 0,
|
|
a = [];
|
|
for (
|
|
r = /\/$/.test(t) ? "/" : "",
|
|
e = e.split("/"),
|
|
t = t.split("/"),
|
|
ob(e, function(e) {
|
|
e && a.push(e);
|
|
}),
|
|
e = a,
|
|
n = t.length - 1,
|
|
a = [];
|
|
n >= 0;
|
|
n--
|
|
)
|
|
0 !== t[n].length &&
|
|
"." !== t[n] &&
|
|
(".." !== t[n] ? (i > 0 ? i-- : a.push(t[n])) : i++);
|
|
return (
|
|
0 !==
|
|
(o =
|
|
(n = e.length - i) <= 0
|
|
? a.reverse().join("/")
|
|
: e.slice(0, n).join("/") + "/" + a.reverse().join("/")).indexOf(
|
|
"/"
|
|
) && (o = "/" + o),
|
|
r && o.lastIndexOf("/") !== o.length - 1 && (o += r),
|
|
o
|
|
);
|
|
},
|
|
getURI: function(e) {
|
|
var t,
|
|
n = this;
|
|
return (
|
|
(n.source && !e) ||
|
|
((t = ""),
|
|
e ||
|
|
(n.protocol ? (t += n.protocol + "://") : (t += "//"),
|
|
n.userInfo && (t += n.userInfo + "@"),
|
|
n.host && (t += n.host),
|
|
n.port && (t += ":" + n.port)),
|
|
n.path && (t += n.path),
|
|
n.query && (t += "?" + n.query),
|
|
n.anchor && (t += "#" + n.anchor),
|
|
(n.source = t)),
|
|
n.source
|
|
);
|
|
}
|
|
}),
|
|
(ub.parseDataUri = function(e) {
|
|
var t, n;
|
|
return (
|
|
(e = decodeURIComponent(e).split(",")),
|
|
(n = /data:([^;]+)/.exec(e[0])) && (t = n[1]),
|
|
{ type: t, data: e[1] }
|
|
);
|
|
}),
|
|
(ub.getDocumentBaseUrl = function(e) {
|
|
var t;
|
|
return (
|
|
(t =
|
|
0 !== e.protocol.indexOf("http") && "file:" !== e.protocol
|
|
? e.href
|
|
: e.protocol + "//" + e.host + e.pathname),
|
|
/^[^:]+:\/\/\/?[^\/]+\//.test(t) &&
|
|
((t = t.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, "")),
|
|
/[\/\\]$/.test(t) || (t += "/")),
|
|
t
|
|
);
|
|
});
|
|
var cb = Xo.DOM,
|
|
lb = Ot.extend,
|
|
fb = Ot.each,
|
|
db = Ot.trim,
|
|
mb = Ot.resolve,
|
|
pb = me.ie,
|
|
gb = function(e, t, n) {
|
|
var r,
|
|
o,
|
|
i,
|
|
a,
|
|
s,
|
|
u,
|
|
c,
|
|
l,
|
|
f,
|
|
d = this;
|
|
(r = d.documentBaseUrl = n.documentBaseURL),
|
|
(o = n.baseURI),
|
|
(i = d),
|
|
(a = e),
|
|
(s = r),
|
|
(u = n.defaultSettings),
|
|
(c = t),
|
|
(f = {
|
|
id: a,
|
|
theme: "modern",
|
|
delta_width: 0,
|
|
delta_height: 0,
|
|
popup_css: "",
|
|
plugins: "",
|
|
document_base_url: s,
|
|
add_form_submit_trigger: !0,
|
|
submit_patch: !0,
|
|
add_unload_trigger: !0,
|
|
convert_urls: !0,
|
|
relative_urls: !0,
|
|
remove_script_host: !0,
|
|
object_resizing: !0,
|
|
doctype: "<!DOCTYPE html>",
|
|
visual: !0,
|
|
font_size_style_values:
|
|
"xx-small,x-small,small,medium,large,x-large,xx-large",
|
|
font_size_legacy_values:
|
|
"xx-small,small,medium,large,x-large,xx-large,300%",
|
|
forced_root_block: "p",
|
|
hidden_input: !0,
|
|
padd_empty_editor: !0,
|
|
render_ui: !0,
|
|
indentation: "30px",
|
|
inline_styles: !0,
|
|
convert_fonts_to_spans: !0,
|
|
indent: "simple",
|
|
indent_before:
|
|
"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",
|
|
indent_after:
|
|
"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",
|
|
entity_encoding: "named",
|
|
url_converter: (l = i).convertURL,
|
|
url_converter_scope: l,
|
|
ie7_compat: !0
|
|
}),
|
|
(t = lu(ou, f, u, c)),
|
|
(d.settings = t),
|
|
(ti.language = t.language || "en"),
|
|
(ti.languageLoad = t.language_load),
|
|
(ti.baseURL = n.baseURL),
|
|
(d.id = e),
|
|
d.setDirty(!1),
|
|
(d.plugins = {}),
|
|
(d.documentBaseURI = new ub(t.document_base_url, { base_uri: o })),
|
|
(d.baseURI = o),
|
|
(d.contentCSS = []),
|
|
(d.contentStyles = []),
|
|
(d.shortcuts = new Jd(d)),
|
|
(d.loadedCSS = {}),
|
|
(d.editorCommands = new Od(d)),
|
|
(d.suffix = n.suffix),
|
|
(d.editorManager = n),
|
|
(d.inline = t.inline),
|
|
(d.buttons = {}),
|
|
(d.menuItems = {}),
|
|
t.cache_suffix &&
|
|
(me.cacheSuffix = t.cache_suffix.replace(/^[\?\&]+/, "")),
|
|
!1 === t.override_viewport && (me.overrideViewPort = !1),
|
|
n.fire("SetupEditor", d),
|
|
d.execCallback("setup", d),
|
|
(d.$ = Qt.overrideDefaults(function() {
|
|
return {
|
|
context: d.inline ? d.getBody() : d.getDoc(),
|
|
element: d.getBody()
|
|
};
|
|
}));
|
|
};
|
|
lb(
|
|
(gb.prototype = {
|
|
render: function() {
|
|
nb(this);
|
|
},
|
|
focus: function(e) {
|
|
gm(this, e);
|
|
},
|
|
execCallback: function(e) {
|
|
var t,
|
|
n = this.settings[e];
|
|
if (n)
|
|
return (
|
|
this.callbackLookup &&
|
|
(t = this.callbackLookup[e]) &&
|
|
((n = t.func), (t = t.scope)),
|
|
"string" == typeof n &&
|
|
((t = (t = n.replace(/\.\w+$/, "")) ? mb(t) : 0),
|
|
(n = mb(n)),
|
|
(this.callbackLookup = this.callbackLookup || {}),
|
|
(this.callbackLookup[e] = { func: n, scope: t })),
|
|
n.apply(t || this, Array.prototype.slice.call(arguments, 1))
|
|
);
|
|
},
|
|
translate: function(e) {
|
|
if (e && Ot.is(e, "string")) {
|
|
var t = this.settings.language || "en",
|
|
n = this.editorManager.i18n;
|
|
e =
|
|
n.data[t + "." + e] ||
|
|
e.replace(/\{\#([^\}]+)\}/g, function(e, r) {
|
|
return n.data[t + "." + r] || "{#" + r + "}";
|
|
});
|
|
}
|
|
return this.editorManager.translate(e);
|
|
},
|
|
getLang: function(e, t) {
|
|
return (
|
|
this.editorManager.i18n.data[
|
|
(this.settings.language || "en") + "." + e
|
|
] || (t !== undefined ? t : "{#" + e + "}")
|
|
);
|
|
},
|
|
getParam: function(e, t, n) {
|
|
return mu(this, e, t, n);
|
|
},
|
|
nodeChanged: function(e) {
|
|
this._nodeChangeDispatcher.nodeChanged(e);
|
|
},
|
|
addButton: function(e, t) {
|
|
var n = this;
|
|
t.cmd &&
|
|
(t.onclick = function() {
|
|
n.execCommand(t.cmd);
|
|
}),
|
|
t.stateSelector && "undefined" == typeof t.active && (t.active = !1),
|
|
t.text || t.icon || (t.icon = e),
|
|
(n.buttons = n.buttons),
|
|
(t.tooltip = t.tooltip || t.title),
|
|
(n.buttons[e] = t);
|
|
},
|
|
addSidebar: function(e, t) {
|
|
return rb(this, e, t);
|
|
},
|
|
addMenuItem: function(e, t) {
|
|
var n = this;
|
|
t.cmd &&
|
|
(t.onclick = function() {
|
|
n.execCommand(t.cmd);
|
|
}),
|
|
(n.menuItems = n.menuItems),
|
|
(n.menuItems[e] = t);
|
|
},
|
|
addContextToolbar: function(e, t) {
|
|
var n,
|
|
r = this;
|
|
(r.contextToolbars = r.contextToolbars || []),
|
|
"string" == typeof e &&
|
|
((n = e),
|
|
(e = function(e) {
|
|
return r.dom.is(e, n);
|
|
})),
|
|
r.contextToolbars.push({ id: Gm("mcet"), predicate: e, items: t });
|
|
},
|
|
addCommand: function(e, t, n) {
|
|
this.editorCommands.addCommand(e, t, n);
|
|
},
|
|
addQueryStateHandler: function(e, t, n) {
|
|
this.editorCommands.addQueryStateHandler(e, t, n);
|
|
},
|
|
addQueryValueHandler: function(e, t, n) {
|
|
this.editorCommands.addQueryValueHandler(e, t, n);
|
|
},
|
|
addShortcut: function(e, t, n, r) {
|
|
this.shortcuts.add(e, t, n, r);
|
|
},
|
|
execCommand: function(e, t, n, r) {
|
|
return this.editorCommands.execCommand(e, t, n, r);
|
|
},
|
|
queryCommandState: function(e) {
|
|
return this.editorCommands.queryCommandState(e);
|
|
},
|
|
queryCommandValue: function(e) {
|
|
return this.editorCommands.queryCommandValue(e);
|
|
},
|
|
queryCommandSupported: function(e) {
|
|
return this.editorCommands.queryCommandSupported(e);
|
|
},
|
|
show: function() {
|
|
this.hidden &&
|
|
((this.hidden = !1),
|
|
this.inline
|
|
? (this.getBody().contentEditable = !0)
|
|
: (cb.show(this.getContainer()), cb.hide(this.id)),
|
|
this.load(),
|
|
this.fire("show"));
|
|
},
|
|
hide: function() {
|
|
var e = this,
|
|
t = e.getDoc();
|
|
e.hidden ||
|
|
(pb && t && !e.inline && t.execCommand("SelectAll"),
|
|
e.save(),
|
|
e.inline
|
|
? ((e.getBody().contentEditable = !1),
|
|
e === e.editorManager.focusedEditor &&
|
|
(e.editorManager.focusedEditor = null))
|
|
: (cb.hide(e.getContainer()),
|
|
cb.setStyle(e.id, "display", e.orgDisplay)),
|
|
(e.hidden = !0),
|
|
e.fire("hide"));
|
|
},
|
|
isHidden: function() {
|
|
return !!this.hidden;
|
|
},
|
|
setProgressState: function(e, t) {
|
|
this.fire("ProgressState", { state: e, time: t });
|
|
},
|
|
load: function(e) {
|
|
var t,
|
|
n = this.getElement();
|
|
return this.removed
|
|
? ""
|
|
: n
|
|
? (((e = e || {}).load = !0),
|
|
(t = this.setContent(
|
|
n.value !== undefined ? n.value : n.innerHTML,
|
|
e
|
|
)),
|
|
(e.element = n),
|
|
e.no_events || this.fire("LoadContent", e),
|
|
(e.element = n = null),
|
|
t)
|
|
: void 0;
|
|
},
|
|
save: function(e) {
|
|
var t,
|
|
n,
|
|
r = this,
|
|
o = r.getElement();
|
|
if (o && r.initialized && !r.removed)
|
|
return (
|
|
((e = e || {}).save = !0),
|
|
(e.element = o),
|
|
(e.content = r.getContent(e)),
|
|
e.no_events || r.fire("SaveContent", e),
|
|
"raw" === e.format && r.fire("RawSaveContent", e),
|
|
(t = e.content),
|
|
/TEXTAREA|INPUT/i.test(o.nodeName)
|
|
? (o.value = t)
|
|
: (r.inline || (o.innerHTML = t),
|
|
(n = cb.getParent(r.id, "form")) &&
|
|
fb(n.elements, function(e) {
|
|
if (e.name === r.id) return (e.value = t), !1;
|
|
})),
|
|
(e.element = o = null),
|
|
!1 !== e.set_dirty && r.setDirty(!1),
|
|
t
|
|
);
|
|
},
|
|
setContent: function(e, t) {
|
|
var n,
|
|
r,
|
|
o = this,
|
|
i = o.getBody();
|
|
return (
|
|
((t = t || {}).format = t.format || "html"),
|
|
(t.set = !0),
|
|
(t.content = e),
|
|
t.no_events || o.fire("BeforeSetContent", t),
|
|
0 === (e = t.content).length || /^\s+$/.test(e)
|
|
? ((r = pb && pb < 11 ? "" : '<br data-mce-bogus="1">'),
|
|
"TABLE" === i.nodeName
|
|
? (e = "<tr><td>" + r + "</td></tr>")
|
|
: /^(UL|OL)$/.test(i.nodeName) && (e = "<li>" + r + "</li>"),
|
|
(n = o.settings.forced_root_block) &&
|
|
o.schema.isValidChild(i.nodeName.toLowerCase(), n.toLowerCase())
|
|
? ((e = r),
|
|
(e = o.dom.createHTML(
|
|
n,
|
|
o.settings.forced_root_block_attrs,
|
|
e
|
|
)))
|
|
: pb || e || (e = '<br data-mce-bogus="1">'),
|
|
o.dom.setHTML(i, e),
|
|
o.fire("SetContent", t))
|
|
: ("raw" !== t.format &&
|
|
(e = zs({ validate: o.validate }, o.schema).serialize(
|
|
o.parser.parse(e, { isRootContent: !0, insert: !0 })
|
|
)),
|
|
(t.content = db(e)),
|
|
o.dom.setHTML(i, t.content),
|
|
t.no_events || o.fire("SetContent", t)),
|
|
t.content
|
|
);
|
|
},
|
|
getContent: function(e) {
|
|
var t,
|
|
n = this.getBody();
|
|
if (this.removed) return "";
|
|
if (
|
|
(((e = e || {}).format = e.format || "html"),
|
|
(e.get = !0),
|
|
(e.getInner = !0),
|
|
e.no_events || this.fire("BeforeGetContent", e),
|
|
"raw" === e.format)
|
|
)
|
|
t = Ot.trim(om(this.serializer, n.innerHTML));
|
|
else if ("text" === e.format) t = n.innerText || n.textContent;
|
|
else {
|
|
if ("tree" === e.format) return this.serializer.serialize(n, e);
|
|
t = this.serializer.serialize(n, e);
|
|
}
|
|
return (
|
|
"text" !== e.format ? (e.content = db(t)) : (e.content = t),
|
|
e.no_events || this.fire("GetContent", e),
|
|
e.content
|
|
);
|
|
},
|
|
insertContent: function(e, t) {
|
|
t && (e = lb({ content: e }, t)),
|
|
this.execCommand("mceInsertContent", !1, e);
|
|
},
|
|
isDirty: function() {
|
|
return !this.isNotDirty;
|
|
},
|
|
setDirty: function(e) {
|
|
var t = !this.isNotDirty;
|
|
(this.isNotDirty = !e), e && e !== t && this.fire("dirty");
|
|
},
|
|
setMode: function(e) {
|
|
Wd(this, e);
|
|
},
|
|
getContainer: function() {
|
|
return (
|
|
this.container ||
|
|
(this.container = cb.get(
|
|
this.editorContainer || this.id + "_parent"
|
|
)),
|
|
this.container
|
|
);
|
|
},
|
|
getContentAreaContainer: function() {
|
|
return this.contentAreaContainer;
|
|
},
|
|
getElement: function() {
|
|
return (
|
|
this.targetElm || (this.targetElm = cb.get(this.id)), this.targetElm
|
|
);
|
|
},
|
|
getWin: function() {
|
|
var e;
|
|
return (
|
|
this.contentWindow ||
|
|
((e = this.iframeElement) &&
|
|
(this.contentWindow = e.contentWindow)),
|
|
this.contentWindow
|
|
);
|
|
},
|
|
getDoc: function() {
|
|
var e;
|
|
return (
|
|
this.contentDocument ||
|
|
((e = this.getWin()) && (this.contentDocument = e.document)),
|
|
this.contentDocument
|
|
);
|
|
},
|
|
getBody: function() {
|
|
var e = this.getDoc();
|
|
return this.bodyElement || (e ? e.body : null);
|
|
},
|
|
convertURL: function(e, t, n) {
|
|
var r = this.settings;
|
|
return r.urlconverter_callback
|
|
? this.execCallback("urlconverter_callback", e, n, !0, t)
|
|
: !r.convert_urls ||
|
|
(n && "LINK" === n.nodeName) ||
|
|
0 === e.indexOf("file:") ||
|
|
0 === e.length
|
|
? e
|
|
: r.relative_urls
|
|
? this.documentBaseURI.toRelative(e)
|
|
: (e = this.documentBaseURI.toAbsolute(e, r.remove_script_host));
|
|
},
|
|
addVisual: function(e) {
|
|
var t,
|
|
n = this,
|
|
r = n.settings,
|
|
o = n.dom;
|
|
(e = e || n.getBody()),
|
|
n.hasVisual === undefined && (n.hasVisual = r.visual),
|
|
fb(o.select("table,a", e), function(e) {
|
|
var i;
|
|
switch (e.nodeName) {
|
|
case "TABLE":
|
|
return (
|
|
(t = r.visual_table_class || "mce-item-table"),
|
|
void (((i = o.getAttrib(e, "border")) && "0" !== i) ||
|
|
!n.hasVisual
|
|
? o.removeClass(e, t)
|
|
: o.addClass(e, t))
|
|
);
|
|
case "A":
|
|
return void (
|
|
o.getAttrib(e, "href", !1) ||
|
|
((i = o.getAttrib(e, "name") || e.id),
|
|
(t = r.visual_anchor_class || "mce-item-anchor"),
|
|
i && n.hasVisual ? o.addClass(e, t) : o.removeClass(e, t))
|
|
);
|
|
}
|
|
}),
|
|
n.fire("VisualAid", { element: e, hasVisual: n.hasVisual });
|
|
},
|
|
remove: function() {
|
|
var e = this;
|
|
e.removed ||
|
|
(e.save(),
|
|
(e.removed = 1),
|
|
e.unbindAllNativeEvents(),
|
|
e.hasHiddenInput && cb.remove(e.getElement().nextSibling),
|
|
e.inline ||
|
|
(pb && pb < 10 && e.getDoc().execCommand("SelectAll", !1, null),
|
|
cb.setStyle(e.id, "display", e.orgDisplay),
|
|
(e.getBody().onload = null)),
|
|
e.fire("remove"),
|
|
e.editorManager.remove(e),
|
|
cb.remove(e.getContainer()),
|
|
e._selectionOverrides.destroy(),
|
|
e.editorUpload.destroy(),
|
|
e.destroy());
|
|
},
|
|
destroy: function(e) {
|
|
var t,
|
|
n = this;
|
|
n.destroyed ||
|
|
(e || n.removed
|
|
? (e ||
|
|
(n.editorManager.off("beforeunload", n._beforeUnload),
|
|
n.theme && n.theme.destroy && n.theme.destroy(),
|
|
n.selection.destroy(),
|
|
n.dom.destroy()),
|
|
(t = n.formElement) &&
|
|
(t._mceOldSubmit &&
|
|
((t.submit = t._mceOldSubmit), (t._mceOldSubmit = null)),
|
|
cb.unbind(t, "submit reset", n.formEventDelegate)),
|
|
(n.contentAreaContainer = n.formElement = n.container = n.editorContainer = null),
|
|
(n.bodyElement = n.contentDocument = n.contentWindow = null),
|
|
(n.iframeElement = n.targetElm = null),
|
|
n.selection &&
|
|
(n.selection = n.selection.win = n.selection.dom = n.selection.dom.doc = null),
|
|
(n.destroyed = 1))
|
|
: n.remove());
|
|
},
|
|
uploadImages: function(e) {
|
|
return this.editorUpload.uploadImages(e);
|
|
},
|
|
_scanForImages: function() {
|
|
return this.editorUpload.scanForImages();
|
|
}
|
|
}),
|
|
qd
|
|
);
|
|
var hb,
|
|
vb,
|
|
yb,
|
|
bb = {
|
|
isEditorUIElement: function(e) {
|
|
return -1 !== e.className.toString().indexOf("mce-");
|
|
}
|
|
},
|
|
Cb = function(e, t) {
|
|
var n,
|
|
r,
|
|
o = Un.detect().browser;
|
|
o.isIE() || o.isEdge()
|
|
? (r = e).on("focusout", function() {
|
|
Sd(r);
|
|
})
|
|
: ((n = t),
|
|
e.on("mouseup touchend", function(e) {
|
|
n.throttle();
|
|
})),
|
|
e.on("keyup nodechange", function(t) {
|
|
var n;
|
|
("nodechange" === (n = t).type && n.selectionChange) || Sd(e);
|
|
});
|
|
},
|
|
xb = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o = Tp(function() {
|
|
Sd(e);
|
|
}, 0);
|
|
e.inline &&
|
|
((t = e),
|
|
(n = o),
|
|
(r = function() {
|
|
n.throttle();
|
|
}),
|
|
Xo.DOM.bind(document, "mouseup", r),
|
|
t.on("remove", function() {
|
|
Xo.DOM.unbind(document, "mouseup", r);
|
|
})),
|
|
e.on("init", function() {
|
|
Cb(e, o);
|
|
}),
|
|
e.on("remove", function() {
|
|
o.cancel();
|
|
});
|
|
},
|
|
wb = Xo.DOM,
|
|
Nb = function(e) {
|
|
return bb.isEditorUIElement(e);
|
|
},
|
|
Eb = function(e, t) {
|
|
var n = e ? e.settings.custom_ui_selector : "";
|
|
return (
|
|
null !==
|
|
wb.getParent(t, function(t) {
|
|
return Nb(t) || (!!n && e.dom.is(t, n));
|
|
})
|
|
);
|
|
},
|
|
Sb = function(e, t) {
|
|
var n = t.editor;
|
|
xb(n),
|
|
n.on("focusin", function() {
|
|
var t = e.focusedEditor;
|
|
t !== this &&
|
|
(t && t.fire("blur", { focusedEditor: this }),
|
|
e.setActive(this),
|
|
(e.focusedEditor = this),
|
|
this.fire("focus", { blurredEditor: t }),
|
|
this.focus(!0));
|
|
}),
|
|
n.on("focusout", function() {
|
|
var t = this;
|
|
ye.setEditorTimeout(t, function() {
|
|
var n = e.focusedEditor;
|
|
Eb(
|
|
t,
|
|
(function() {
|
|
try {
|
|
return document.activeElement;
|
|
} catch (e) {
|
|
return document.body;
|
|
}
|
|
})()
|
|
) ||
|
|
n !== t ||
|
|
(t.fire("blur", { focusedEditor: null }),
|
|
(e.focusedEditor = null));
|
|
});
|
|
}),
|
|
hb ||
|
|
((hb = function(t) {
|
|
var n,
|
|
r = e.activeEditor;
|
|
(n = t.target),
|
|
r &&
|
|
n.ownerDocument === document &&
|
|
(n === document.body ||
|
|
Eb(r, n) ||
|
|
e.focusedEditor !== r ||
|
|
(r.fire("blur", { focusedEditor: null }),
|
|
(e.focusedEditor = null)));
|
|
}),
|
|
wb.bind(document, "focusin", hb));
|
|
},
|
|
kb = function(e, t) {
|
|
e.focusedEditor === t.editor && (e.focusedEditor = null),
|
|
e.activeEditor || (wb.unbind(document, "focusin", hb), (hb = null));
|
|
},
|
|
Tb = function(e) {
|
|
e.on("AddEditor", y.curry(Sb, e)), e.on("RemoveEditor", y.curry(kb, e));
|
|
},
|
|
Ab = {},
|
|
_b = "en",
|
|
Bb = {
|
|
setCode: function(e) {
|
|
e &&
|
|
((_b = e),
|
|
(this.rtl = !!this.data[e] && "rtl" === this.data[e]._dir));
|
|
},
|
|
getCode: function() {
|
|
return _b;
|
|
},
|
|
rtl: !1,
|
|
add: function(e, t) {
|
|
var n = Ab[e];
|
|
for (var r in (n || (Ab[e] = n = {}), t)) n[r] = t[r];
|
|
this.setCode(e);
|
|
},
|
|
translate: function(e) {
|
|
var t = Ab[_b] || {},
|
|
n = function(e) {
|
|
return Ot.is(e, "function")
|
|
? Object.prototype.toString.call(e)
|
|
: r(e)
|
|
? ""
|
|
: "" + e;
|
|
},
|
|
r = function(e) {
|
|
return "" === e || null === e || Ot.is(e, "undefined");
|
|
},
|
|
o = function(e) {
|
|
return (e = n(e)), Ot.hasOwn(t, e) ? n(t[e]) : e;
|
|
};
|
|
if (r(e)) return "";
|
|
if (Ot.is(e, "object") && Ot.hasOwn(e, "raw")) return n(e.raw);
|
|
if (Ot.is(e, "array")) {
|
|
var i = e.slice(1);
|
|
e = o(e[0]).replace(/\{([0-9]+)\}/g, function(e, t) {
|
|
return Ot.hasOwn(i, t) ? n(i[t]) : e;
|
|
});
|
|
}
|
|
return o(e).replace(/{context:\w+}$/, "");
|
|
},
|
|
data: Ab
|
|
},
|
|
Rb = Xo.DOM,
|
|
Db = Ot.explode,
|
|
Ob = Ot.each,
|
|
Pb = Ot.extend,
|
|
Ib = 0,
|
|
Lb = !1,
|
|
Mb = [],
|
|
Fb = [],
|
|
zb = function(e) {
|
|
Ob(yb.get(), function(t) {
|
|
"scroll" === e.type
|
|
? t.fire("ScrollWindow", e)
|
|
: t.fire("ResizeWindow", e);
|
|
});
|
|
},
|
|
Ub = function(e) {
|
|
e !== Lb &&
|
|
(e
|
|
? Qt(window).on("resize scroll", zb)
|
|
: Qt(window).off("resize scroll", zb),
|
|
(Lb = e));
|
|
},
|
|
Vb = function(e) {
|
|
var t = Fb;
|
|
delete Mb[e.id];
|
|
for (var n = 0; n < Mb.length; n++)
|
|
if (Mb[n] === e) {
|
|
Mb.splice(n, 1);
|
|
break;
|
|
}
|
|
return (
|
|
(Fb = M.filter(Fb, function(t) {
|
|
return e !== t;
|
|
})),
|
|
yb.activeEditor === e &&
|
|
(yb.activeEditor = Fb.length > 0 ? Fb[0] : null),
|
|
yb.focusedEditor === e && (yb.focusedEditor = null),
|
|
t.length !== Fb.length
|
|
);
|
|
};
|
|
Pb(
|
|
(yb = {
|
|
defaultSettings: {},
|
|
$: Qt,
|
|
majorVersion: "4",
|
|
minorVersion: "7.5",
|
|
releaseDate: "2018-01-22",
|
|
editors: Mb,
|
|
i18n: Bb,
|
|
activeEditor: null,
|
|
settings: {},
|
|
setup: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
r,
|
|
o = "";
|
|
if (
|
|
((t = ub.getDocumentBaseUrl(document.location)),
|
|
/^[^:]+:\/\/\/?[^\/]+\//.test(t) &&
|
|
((t = t.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, "")),
|
|
/[\/\\]$/.test(t) || (t += "/")),
|
|
(n = window.tinymce || window.tinyMCEPreInit))
|
|
)
|
|
(e = n.base || n.baseURL), (o = n.suffix);
|
|
else {
|
|
for (
|
|
var i = document.getElementsByTagName("script"), a = 0;
|
|
a < i.length;
|
|
a++
|
|
) {
|
|
var s = (r = i[a].src).substring(r.lastIndexOf("/"));
|
|
if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)) {
|
|
-1 !== s.indexOf(".min") && (o = ".min"),
|
|
(e = r.substring(0, r.lastIndexOf("/")));
|
|
break;
|
|
}
|
|
}
|
|
!e &&
|
|
document.currentScript &&
|
|
(-1 !== (r = document.currentScript.src).indexOf(".min") &&
|
|
(o = ".min"),
|
|
(e = r.substring(0, r.lastIndexOf("/"))));
|
|
}
|
|
(this.baseURL = new ub(t).toAbsolute(e)),
|
|
(this.documentBaseURL = t),
|
|
(this.baseURI = new ub(this.baseURL)),
|
|
(this.suffix = o),
|
|
Tb(this);
|
|
},
|
|
overrideDefaults: function(e) {
|
|
var t, n;
|
|
(t = e.base_url) &&
|
|
((this.baseURL = new ub(this.documentBaseURL).toAbsolute(
|
|
t.replace(/\/+$/, "")
|
|
)),
|
|
(this.baseURI = new ub(this.baseURL))),
|
|
(n = e.suffix),
|
|
e.suffix && (this.suffix = n),
|
|
(this.defaultSettings = e);
|
|
var r = e.plugin_base_urls;
|
|
for (var o in r) ti.PluginManager.urls[o] = r[o];
|
|
},
|
|
init: function(e) {
|
|
var t,
|
|
n,
|
|
r = this;
|
|
n = Ot.makeMap(
|
|
"area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu",
|
|
" "
|
|
);
|
|
var o = function(e) {
|
|
var t = e.id;
|
|
return (
|
|
t ||
|
|
((t = (t = e.name) && !Rb.get(t) ? e.name : Rb.uniqueId()),
|
|
e.setAttribute("id", t)),
|
|
t
|
|
);
|
|
},
|
|
i = function(e, t) {
|
|
return t.constructor === RegExp
|
|
? t.test(e.className)
|
|
: Rb.hasClass(e, t);
|
|
},
|
|
a = function(e) {
|
|
t = e;
|
|
},
|
|
s = function() {
|
|
var t,
|
|
u = 0,
|
|
c = [],
|
|
l = function(e, n, o) {
|
|
var i = new gb(e, n, r);
|
|
c.push(i),
|
|
i.on("init", function() {
|
|
++u === t.length && a(c);
|
|
}),
|
|
(i.targetElm = i.targetElm || o),
|
|
i.render();
|
|
};
|
|
Rb.unbind(window, "ready", s),
|
|
(function(t) {
|
|
var n = e[t];
|
|
n && n.apply(r, Array.prototype.slice.call(arguments, 2));
|
|
})("onpageload"),
|
|
(t = Qt.unique(
|
|
(function(e) {
|
|
var t,
|
|
n = [];
|
|
if (me.ie && me.ie < 11)
|
|
return (
|
|
Pm(
|
|
"TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"
|
|
),
|
|
[]
|
|
);
|
|
if (e.types)
|
|
return (
|
|
Ob(e.types, function(e) {
|
|
n = n.concat(Rb.select(e.selector));
|
|
}),
|
|
n
|
|
);
|
|
if (e.selector) return Rb.select(e.selector);
|
|
if (e.target) return [e.target];
|
|
switch (e.mode) {
|
|
case "exact":
|
|
(t = e.elements || "").length > 0 &&
|
|
Ob(Db(t), function(e) {
|
|
var t;
|
|
(t = Rb.get(e))
|
|
? n.push(t)
|
|
: Ob(document.forms, function(t) {
|
|
Ob(t.elements, function(t) {
|
|
t.name === e &&
|
|
((e = "mce_editor_" + Ib++),
|
|
Rb.setAttrib(t, "id", e),
|
|
n.push(t));
|
|
});
|
|
});
|
|
});
|
|
break;
|
|
case "textareas":
|
|
case "specific_textareas":
|
|
Ob(Rb.select("textarea"), function(t) {
|
|
(e.editor_deselector && i(t, e.editor_deselector)) ||
|
|
(e.editor_selector && !i(t, e.editor_selector)) ||
|
|
n.push(t);
|
|
});
|
|
}
|
|
return n;
|
|
})(e)
|
|
)),
|
|
e.types
|
|
? Ob(e.types, function(n) {
|
|
Ot.each(t, function(t) {
|
|
return (
|
|
!Rb.is(t, n.selector) || (l(o(t), Pb({}, e, n), t), !1)
|
|
);
|
|
});
|
|
})
|
|
: (Ot.each(t, function(e) {
|
|
var t;
|
|
(t = r.get(e.id)) &&
|
|
t.initialized &&
|
|
!(t.getContainer() || t.getBody()).parentNode &&
|
|
(Vb(t),
|
|
t.unbindAllNativeEvents(),
|
|
t.destroy(!0),
|
|
(t.removed = !0),
|
|
(t = null));
|
|
}),
|
|
0 ===
|
|
(t = Ot.grep(t, function(e) {
|
|
return !r.get(e.id);
|
|
})).length
|
|
? a([])
|
|
: Ob(t, function(t) {
|
|
var r;
|
|
(r = t),
|
|
e.inline && r.tagName.toLowerCase() in n
|
|
? Pm(
|
|
"Could not initialize inline editor on invalid inline target element",
|
|
t
|
|
)
|
|
: l(o(t), e, t);
|
|
}));
|
|
};
|
|
return (
|
|
(r.settings = e),
|
|
Rb.bind(window, "ready", s),
|
|
new pe(function(e) {
|
|
t
|
|
? e(t)
|
|
: (a = function(t) {
|
|
e(t);
|
|
});
|
|
})
|
|
);
|
|
},
|
|
get: function(e) {
|
|
return 0 === arguments.length
|
|
? Fb.slice(0)
|
|
: tr.isString(e)
|
|
? M.find(Fb, function(t) {
|
|
return t.id === e;
|
|
}).getOr(null)
|
|
: tr.isNumber(e) && Fb[e]
|
|
? Fb[e]
|
|
: null;
|
|
},
|
|
add: function(e) {
|
|
var t = this;
|
|
return Mb[e.id] === e
|
|
? e
|
|
: (null === t.get(e.id) &&
|
|
("length" !== e.id && (Mb[e.id] = e), Mb.push(e), Fb.push(e)),
|
|
Ub(!0),
|
|
(t.activeEditor = e),
|
|
t.fire("AddEditor", { editor: e }),
|
|
vb ||
|
|
((vb = function() {
|
|
t.fire("BeforeUnload");
|
|
}),
|
|
Rb.bind(window, "beforeunload", vb)),
|
|
e);
|
|
},
|
|
createEditor: function(e, t) {
|
|
return this.add(new gb(e, t, this));
|
|
},
|
|
remove: function(e) {
|
|
var t,
|
|
n,
|
|
r = this;
|
|
if (e)
|
|
return tr.isString(e)
|
|
? ((e = e.selector || e),
|
|
void Ob(Rb.select(e), function(e) {
|
|
(n = r.get(e.id)) && r.remove(n);
|
|
}))
|
|
: ((n = e),
|
|
tr.isNull(r.get(n.id))
|
|
? null
|
|
: (Vb(n) && r.fire("RemoveEditor", { editor: n }),
|
|
0 === Fb.length && Rb.unbind(window, "beforeunload", vb),
|
|
n.remove(),
|
|
Ub(Fb.length > 0),
|
|
n));
|
|
for (t = Fb.length - 1; t >= 0; t--) r.remove(Fb[t]);
|
|
},
|
|
execCommand: function(e, t, n) {
|
|
var r = this.get(n);
|
|
switch (e) {
|
|
case "mceAddEditor":
|
|
return this.get(n) || new gb(n, this.settings, this).render(), !0;
|
|
case "mceRemoveEditor":
|
|
return r && r.remove(), !0;
|
|
case "mceToggleEditor":
|
|
return r
|
|
? (r.isHidden() ? r.show() : r.hide(), !0)
|
|
: (this.execCommand("mceAddEditor", 0, n), !0);
|
|
}
|
|
return !!this.activeEditor && this.activeEditor.execCommand(e, t, n);
|
|
},
|
|
triggerSave: function() {
|
|
Ob(Fb, function(e) {
|
|
e.save();
|
|
});
|
|
},
|
|
addI18n: function(e, t) {
|
|
Bb.add(e, t);
|
|
},
|
|
translate: function(e) {
|
|
return Bb.translate(e);
|
|
},
|
|
setActive: function(e) {
|
|
var t = this.activeEditor;
|
|
this.activeEditor !== e &&
|
|
(t && t.fire("deactivate", { relatedTarget: e }),
|
|
e.fire("activate", { relatedTarget: t })),
|
|
(this.activeEditor = e);
|
|
}
|
|
}),
|
|
Fd
|
|
),
|
|
yb.setup();
|
|
var Hb,
|
|
qb = yb;
|
|
function jb(e) {
|
|
return {
|
|
walk: function(t, n) {
|
|
return cg.walk(e, t, n);
|
|
},
|
|
split: sl.split,
|
|
normalize: function(t) {
|
|
return Jf.normalize(e, t).fold(y.constant(!1), function(e) {
|
|
return (
|
|
t.setStart(e.startContainer, e.startOffset),
|
|
t.setEnd(e.endContainer, e.endOffset),
|
|
!0
|
|
);
|
|
});
|
|
}
|
|
};
|
|
}
|
|
((Hb = jb || (jb = {})).compareRanges = qf),
|
|
(Hb.getCaretRangeFromPoint = Ih),
|
|
(Hb.getSelectedNode = Fi),
|
|
(Hb.getNode = zi);
|
|
var $b,
|
|
Wb,
|
|
Kb = jb,
|
|
Xb = Math.min,
|
|
Yb = Math.max,
|
|
Gb = Math.round,
|
|
Jb = function(e, t, n) {
|
|
var r, o, i, a, s, u;
|
|
return (
|
|
(r = t.x),
|
|
(o = t.y),
|
|
(i = e.w),
|
|
(a = e.h),
|
|
(s = t.w),
|
|
(u = t.h),
|
|
"b" === (n = (n || "").split(""))[0] && (o += u),
|
|
"r" === n[1] && (r += s),
|
|
"c" === n[0] && (o += Gb(u / 2)),
|
|
"c" === n[1] && (r += Gb(s / 2)),
|
|
"b" === n[3] && (o -= a),
|
|
"r" === n[4] && (r -= i),
|
|
"c" === n[3] && (o -= Gb(a / 2)),
|
|
"c" === n[4] && (r -= Gb(i / 2)),
|
|
Qb(r, o, i, a)
|
|
);
|
|
},
|
|
Qb = function(e, t, n, r) {
|
|
return { x: e, y: t, w: n, h: r };
|
|
},
|
|
Zb = {
|
|
inflate: function(e, t, n) {
|
|
return Qb(e.x - t, e.y - n, e.w + 2 * t, e.h + 2 * n);
|
|
},
|
|
relativePosition: Jb,
|
|
findBestRelativePosition: function(e, t, n, r) {
|
|
var o, i;
|
|
for (i = 0; i < r.length; i++)
|
|
if (
|
|
(o = Jb(e, t, r[i])).x >= n.x &&
|
|
o.x + o.w <= n.w + n.x &&
|
|
o.y >= n.y &&
|
|
o.y + o.h <= n.h + n.y
|
|
)
|
|
return r[i];
|
|
return null;
|
|
},
|
|
intersect: function(e, t) {
|
|
var n, r, o, i;
|
|
return (
|
|
(n = Yb(e.x, t.x)),
|
|
(r = Yb(e.y, t.y)),
|
|
(o = Xb(e.x + e.w, t.x + t.w)),
|
|
(i = Xb(e.y + e.h, t.y + t.h)),
|
|
o - n < 0 || i - r < 0 ? null : Qb(n, r, o - n, i - r)
|
|
);
|
|
},
|
|
clamp: function(e, t, n) {
|
|
var r, o, i, a, s, u, c, l, f, d;
|
|
return (
|
|
(s = e.x),
|
|
(u = e.y),
|
|
(c = e.x + e.w),
|
|
(l = e.y + e.h),
|
|
(f = t.x + t.w),
|
|
(d = t.y + t.h),
|
|
(r = Yb(0, t.x - s)),
|
|
(o = Yb(0, t.y - u)),
|
|
(i = Yb(0, c - f)),
|
|
(a = Yb(0, l - d)),
|
|
(s += r),
|
|
(u += o),
|
|
n && ((c += r), (l += o), (s -= i), (u -= a)),
|
|
Qb(s, u, (c -= i) - s, (l -= a) - u)
|
|
);
|
|
},
|
|
create: Qb,
|
|
fromClientRect: function(e) {
|
|
return Qb(e.left, e.top, e.width, e.height);
|
|
}
|
|
},
|
|
eC = {},
|
|
tC = {
|
|
add: function(e, t) {
|
|
eC[e.toLowerCase()] = t;
|
|
},
|
|
has: function(e) {
|
|
return !!eC[e.toLowerCase()];
|
|
},
|
|
get: function(e) {
|
|
var t = e.toLowerCase(),
|
|
n = eC.hasOwnProperty(t) ? eC[t] : null;
|
|
if (null === n) throw new Error("Could not find module for type: " + e);
|
|
return n;
|
|
},
|
|
create: function(e, t) {
|
|
var n;
|
|
if (
|
|
("string" == typeof e ? ((t = t || {}).type = e) : (e = (t = e).type),
|
|
(e = e.toLowerCase()),
|
|
!(n = eC[e]))
|
|
)
|
|
throw new Error("Could not find control by type: " + e);
|
|
return ((n = new n(t)).type = e), n;
|
|
}
|
|
},
|
|
nC = Ot.each,
|
|
rC = Ot.extend,
|
|
oC = function() {};
|
|
oC.extend = $b = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o = this.prototype,
|
|
i = function() {
|
|
var e, t, n;
|
|
if (
|
|
!Wb &&
|
|
(this.init && this.init.apply(this, arguments), (t = this.Mixins))
|
|
)
|
|
for (e = t.length; e--; )
|
|
(n = t[e]).init && n.init.apply(this, arguments);
|
|
},
|
|
a = function() {
|
|
return this;
|
|
},
|
|
s = function(e, t) {
|
|
return function() {
|
|
var n,
|
|
r = this._super;
|
|
return (
|
|
(this._super = o[e]),
|
|
(n = t.apply(this, arguments)),
|
|
(this._super = r),
|
|
n
|
|
);
|
|
};
|
|
};
|
|
for (n in ((Wb = !0),
|
|
(t = new this()),
|
|
(Wb = !1),
|
|
e.Mixins &&
|
|
(nC(e.Mixins, function(t) {
|
|
for (var n in t) "init" !== n && (e[n] = t[n]);
|
|
}),
|
|
o.Mixins && (e.Mixins = o.Mixins.concat(e.Mixins))),
|
|
e.Methods &&
|
|
nC(e.Methods.split(","), function(t) {
|
|
e[t] = a;
|
|
}),
|
|
e.Properties &&
|
|
nC(e.Properties.split(","), function(t) {
|
|
var n = "_" + t;
|
|
e[t] = function(e) {
|
|
return e !== undefined ? ((this[n] = e), this) : this[n];
|
|
};
|
|
}),
|
|
e.Statics &&
|
|
nC(e.Statics, function(e, t) {
|
|
i[t] = e;
|
|
}),
|
|
e.Defaults && o.Defaults && (e.Defaults = rC({}, o.Defaults, e.Defaults)),
|
|
e))
|
|
"function" == typeof (r = e[n]) && o[n] ? (t[n] = s(n, r)) : (t[n] = r);
|
|
return (i.prototype = t), (i.constructor = i), (i.extend = $b), i;
|
|
};
|
|
var iC = Math.min,
|
|
aC = Math.max,
|
|
sC = Math.round,
|
|
uC = function(e, t) {
|
|
var n, r, o, i;
|
|
if (((t = t || '"'), null === e)) return "null";
|
|
if ("string" == (o = typeof e))
|
|
return (
|
|
(r = "\bb\tt\nn\ff\rr\"\"''\\\\"),
|
|
t +
|
|
e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(e, o) {
|
|
return '"' === t && "'" === e
|
|
? e
|
|
: (n = r.indexOf(o)) + 1
|
|
? "\\" + r.charAt(n + 1)
|
|
: ((e = o.charCodeAt().toString(16)),
|
|
"\\u" + "0000".substring(e.length) + e);
|
|
}) +
|
|
t
|
|
);
|
|
if ("object" === o) {
|
|
if (
|
|
e.hasOwnProperty &&
|
|
"[object Array]" === Object.prototype.toString.call(e)
|
|
) {
|
|
for (n = 0, r = "["; n < e.length; n++)
|
|
r += (n > 0 ? "," : "") + uC(e[n], t);
|
|
return r + "]";
|
|
}
|
|
for (i in ((r = "{"), e))
|
|
e.hasOwnProperty(i) &&
|
|
(r +=
|
|
"function" != typeof e[i]
|
|
? (r.length > 1 ? "," + t : t) + i + t + ":" + uC(e[i], t)
|
|
: "");
|
|
return r + "}";
|
|
}
|
|
return "" + e;
|
|
},
|
|
cC = {
|
|
serialize: uC,
|
|
parse: function(e) {
|
|
try {
|
|
return window[String.fromCharCode(101) + "val"]("(" + e + ")");
|
|
} catch (t) {}
|
|
}
|
|
},
|
|
lC = {
|
|
callbacks: {},
|
|
count: 0,
|
|
send: function(e) {
|
|
var t = this,
|
|
n = Xo.DOM,
|
|
r = e.count !== undefined ? e.count : t.count,
|
|
o = "tinymce_jsonp_" + r;
|
|
(t.callbacks[r] = function(i) {
|
|
n.remove(o), delete t.callbacks[r], e.callback(i);
|
|
}),
|
|
n.add(n.doc.body, "script", {
|
|
id: o,
|
|
src: e.url,
|
|
type: "text/javascript"
|
|
}),
|
|
t.count++;
|
|
}
|
|
},
|
|
fC = {
|
|
send: function(e) {
|
|
var t,
|
|
n = 0,
|
|
r = function() {
|
|
!e.async || 4 === t.readyState || n++ > 1e4
|
|
? (e.success && n < 1e4 && 200 === t.status
|
|
? e.success.call(e.success_scope, "" + t.responseText, t, e)
|
|
: e.error &&
|
|
e.error.call(
|
|
e.error_scope,
|
|
n > 1e4 ? "TIMED_OUT" : "GENERAL",
|
|
t,
|
|
e
|
|
),
|
|
(t = null))
|
|
: setTimeout(r, 10);
|
|
};
|
|
if (
|
|
((e.scope = e.scope || this),
|
|
(e.success_scope = e.success_scope || e.scope),
|
|
(e.error_scope = e.error_scope || e.scope),
|
|
(e.async = !1 !== e.async),
|
|
(e.data = e.data || ""),
|
|
fC.fire("beforeInitialize", { settings: e }),
|
|
(t = new Mm()))
|
|
) {
|
|
if (
|
|
(t.overrideMimeType && t.overrideMimeType(e.content_type),
|
|
t.open(e.type || (e.data ? "POST" : "GET"), e.url, e.async),
|
|
e.crossDomain && (t.withCredentials = !0),
|
|
e.content_type &&
|
|
t.setRequestHeader("Content-Type", e.content_type),
|
|
e.requestheaders &&
|
|
Ot.each(e.requestheaders, function(e) {
|
|
t.setRequestHeader(e.key, e.value);
|
|
}),
|
|
t.setRequestHeader("X-Requested-With", "XMLHttpRequest"),
|
|
(t = fC.fire("beforeSend", { xhr: t, settings: e }).xhr).send(
|
|
e.data
|
|
),
|
|
!e.async)
|
|
)
|
|
return r();
|
|
setTimeout(r, 10);
|
|
}
|
|
}
|
|
};
|
|
Ot.extend(fC, Fd);
|
|
var dC = Ot.extend,
|
|
mC = function(e) {
|
|
(this.settings = dC({}, e)), (this.count = 0);
|
|
};
|
|
(mC.sendRPC = function(e) {
|
|
return new mC().send(e);
|
|
}),
|
|
(mC.prototype = {
|
|
send: function(e) {
|
|
var t = e.error,
|
|
n = e.success;
|
|
((e = dC(this.settings, e)).success = function(r, o) {
|
|
void 0 === (r = cC.parse(r)) && (r = { error: "JSON Parse error." }),
|
|
r.error
|
|
? t.call(e.error_scope || e.scope, r.error, o)
|
|
: n.call(e.success_scope || e.scope, r.result);
|
|
}),
|
|
(e.error = function(n, r) {
|
|
t && t.call(e.error_scope || e.scope, n, r);
|
|
}),
|
|
(e.data = cC.serialize({
|
|
id: e.id || "c" + this.count++,
|
|
method: e.method,
|
|
params: e.params
|
|
})),
|
|
(e.content_type = "application/json"),
|
|
fC.send(e);
|
|
}
|
|
});
|
|
var pC,
|
|
gC = window.localStorage,
|
|
hC = qb,
|
|
vC = {
|
|
geom: { Rect: Zb },
|
|
util: {
|
|
Promise: pe,
|
|
Delay: ye,
|
|
Tools: Ot,
|
|
VK: Mp,
|
|
URI: ub,
|
|
Class: oC,
|
|
EventDispatcher: Id,
|
|
Observable: Fd,
|
|
I18n: Bb,
|
|
XHR: fC,
|
|
JSON: cC,
|
|
JSONRequest: mC,
|
|
JSONP: lC,
|
|
LocalStorage: gC,
|
|
Color: function(e) {
|
|
var t = {},
|
|
n = 0,
|
|
r = 0,
|
|
o = 0,
|
|
i = function(e) {
|
|
var i;
|
|
return (
|
|
"object" == typeof e
|
|
? "r" in e
|
|
? ((n = e.r), (r = e.g), (o = e.b))
|
|
: "v" in e &&
|
|
(function(e, t, i) {
|
|
var a, s, u, c;
|
|
if (
|
|
((e = (parseInt(e, 10) || 0) % 360),
|
|
(t = parseInt(t, 10) / 100),
|
|
(i = parseInt(i, 10) / 100),
|
|
(t = aC(0, iC(t, 1))),
|
|
(i = aC(0, iC(i, 1))),
|
|
0 !== t)
|
|
) {
|
|
switch (
|
|
((a = e / 60),
|
|
(u = (s = i * t) * (1 - Math.abs((a % 2) - 1))),
|
|
(c = i - s),
|
|
Math.floor(a))
|
|
) {
|
|
case 0:
|
|
(n = s), (r = u), (o = 0);
|
|
break;
|
|
case 1:
|
|
(n = u), (r = s), (o = 0);
|
|
break;
|
|
case 2:
|
|
(n = 0), (r = s), (o = u);
|
|
break;
|
|
case 3:
|
|
(n = 0), (r = u), (o = s);
|
|
break;
|
|
case 4:
|
|
(n = u), (r = 0), (o = s);
|
|
break;
|
|
case 5:
|
|
(n = s), (r = 0), (o = u);
|
|
break;
|
|
default:
|
|
n = r = o = 0;
|
|
}
|
|
(n = sC(255 * (n + c))),
|
|
(r = sC(255 * (r + c))),
|
|
(o = sC(255 * (o + c)));
|
|
} else n = r = o = sC(255 * i);
|
|
})(e.h, e.s, e.v)
|
|
: (i = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(
|
|
e
|
|
))
|
|
? ((n = parseInt(i[1], 10)),
|
|
(r = parseInt(i[2], 10)),
|
|
(o = parseInt(i[3], 10)))
|
|
: (i = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))
|
|
? ((n = parseInt(i[1], 16)),
|
|
(r = parseInt(i[2], 16)),
|
|
(o = parseInt(i[3], 16)))
|
|
: (i = /#([0-F])([0-F])([0-F])/gi.exec(e)) &&
|
|
((n = parseInt(i[1] + i[1], 16)),
|
|
(r = parseInt(i[2] + i[2], 16)),
|
|
(o = parseInt(i[3] + i[3], 16))),
|
|
(n = n < 0 ? 0 : n > 255 ? 255 : n),
|
|
(r = r < 0 ? 0 : r > 255 ? 255 : r),
|
|
(o = o < 0 ? 0 : o > 255 ? 255 : o),
|
|
t
|
|
);
|
|
};
|
|
return (
|
|
e && i(e),
|
|
(t.toRgb = function() {
|
|
return { r: n, g: r, b: o };
|
|
}),
|
|
(t.toHsv = function() {
|
|
return (
|
|
(e = n),
|
|
(t = r),
|
|
(i = o),
|
|
(s = 0),
|
|
(u = iC((e /= 255), iC((t /= 255), (i /= 255)))) ===
|
|
(c = aC(e, aC(t, i)))
|
|
? { h: 0, s: 0, v: 100 * (s = u) }
|
|
: ((a = (c - u) / c),
|
|
(s = c),
|
|
{
|
|
h: sC(
|
|
60 *
|
|
((e === u ? 3 : i === u ? 1 : 5) -
|
|
(e === u ? t - i : i === u ? e - t : i - e) /
|
|
(c - u))
|
|
),
|
|
s: sC(100 * a),
|
|
v: sC(100 * s)
|
|
})
|
|
);
|
|
var e, t, i, a, s, u, c;
|
|
}),
|
|
(t.toHex = function() {
|
|
var e = function(e) {
|
|
return (e = parseInt(e, 10).toString(16)).length > 1
|
|
? e
|
|
: "0" + e;
|
|
};
|
|
return "#" + e(n) + e(r) + e(o);
|
|
}),
|
|
(t.parse = i),
|
|
t
|
|
);
|
|
}
|
|
},
|
|
dom: {
|
|
EventUtils: Te,
|
|
Sizzle: lt,
|
|
DomQuery: Qt,
|
|
TreeWalker: to,
|
|
DOMUtils: Xo,
|
|
ScriptLoader: Zo,
|
|
RangeUtils: Kb,
|
|
Serializer: Nh,
|
|
ControlSelection: Rh,
|
|
BookmarkManager: Ah,
|
|
Selection: vv,
|
|
Event: Te.Event
|
|
},
|
|
html: {
|
|
Styles: zo,
|
|
Entities: Ao,
|
|
Node: fh,
|
|
Schema: Fo,
|
|
SaxParser: em,
|
|
DomParser: bh,
|
|
Writer: Fs,
|
|
Serializer: zs
|
|
},
|
|
ui: { Factory: tC },
|
|
Env: me,
|
|
AddOnManager: ti,
|
|
Formatter: Yg,
|
|
UndoManager: rg,
|
|
EditorCommands: Od,
|
|
WindowManager: km,
|
|
NotificationManager: Sm,
|
|
EditorObservable: qd,
|
|
Shortcuts: Jd,
|
|
Editor: gb,
|
|
FocusManager: bb,
|
|
EditorManager: qb,
|
|
DOM: Xo.DOM,
|
|
ScriptLoader: Zo.ScriptLoader,
|
|
PluginManager: ti.PluginManager,
|
|
ThemeManager: ti.ThemeManager,
|
|
trim: Ot.trim,
|
|
isArray: Ot.isArray,
|
|
is: Ot.is,
|
|
toArray: Ot.toArray,
|
|
makeMap: Ot.makeMap,
|
|
each: Ot.each,
|
|
map: Ot.map,
|
|
grep: Ot.grep,
|
|
inArray: Ot.inArray,
|
|
extend: Ot.extend,
|
|
create: Ot.create,
|
|
walk: Ot.walk,
|
|
createNS: Ot.createNS,
|
|
resolve: Ot.resolve,
|
|
explode: Ot.explode,
|
|
_addCacheSuffix: Ot._addCacheSuffix,
|
|
isOpera: me.opera,
|
|
isWebKit: me.webkit,
|
|
isIE: me.ie,
|
|
isGecko: me.gecko,
|
|
isMac: me.mac
|
|
};
|
|
(hC = Ot.extend(hC, vC)),
|
|
(pC = hC),
|
|
(window.tinymce = pC),
|
|
(window.tinyMCE = pC);
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = "[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",
|
|
t = "[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",
|
|
r =
|
|
"[+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",
|
|
E =
|
|
"[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",
|
|
T = "\\r",
|
|
u = "\\n",
|
|
i = "[\x0B\f\x85\u2028\u2029]",
|
|
o =
|
|
"[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",
|
|
c =
|
|
"[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",
|
|
a =
|
|
"[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",
|
|
R = "[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]",
|
|
f =
|
|
"[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]",
|
|
A = {
|
|
characterIndices: {
|
|
ALETTER: 0,
|
|
MIDNUMLET: 1,
|
|
MIDLETTER: 2,
|
|
MIDNUM: 3,
|
|
NUMERIC: 4,
|
|
CR: 5,
|
|
LF: 6,
|
|
NEWLINE: 7,
|
|
EXTEND: 8,
|
|
FORMAT: 9,
|
|
KATAKANA: 10,
|
|
EXTENDNUMLET: 11,
|
|
AT: 12,
|
|
OTHER: 13
|
|
},
|
|
SETS: [
|
|
new RegExp(
|
|
"[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"
|
|
),
|
|
new RegExp(n),
|
|
new RegExp(t),
|
|
new RegExp(r),
|
|
new RegExp(E),
|
|
new RegExp(T),
|
|
new RegExp(u),
|
|
new RegExp(i),
|
|
new RegExp(o),
|
|
new RegExp(c),
|
|
new RegExp(a),
|
|
new RegExp(R),
|
|
new RegExp("@")
|
|
],
|
|
EMPTY_STRING: "",
|
|
PUNCTUATION: new RegExp("^" + f + "$"),
|
|
WHITESPACE: /^\s+$/
|
|
},
|
|
N = function(e, n, t) {
|
|
var r, E;
|
|
if (!e) return 0;
|
|
if (((t = t || e), e.length !== undefined)) {
|
|
for (r = 0, E = e.length; r < E; r++)
|
|
if (!1 === n.call(t, e[r], r, e)) return 0;
|
|
} else
|
|
for (r in e)
|
|
if (e.hasOwnProperty(r) && !1 === n.call(t, e[r], r, e)) return 0;
|
|
return 1;
|
|
},
|
|
s = function(e, n) {
|
|
var t = [];
|
|
return (
|
|
N(e, function(r, E) {
|
|
t.push(n(r, E, e));
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
l = A.SETS,
|
|
M = A.characterIndices.OTHER,
|
|
d = function(e) {
|
|
var n,
|
|
t,
|
|
r = M,
|
|
E = l.length;
|
|
for (n = 0; n < E; ++n)
|
|
if ((t = l[n]) && t.test(e)) {
|
|
r = n;
|
|
break;
|
|
}
|
|
return r;
|
|
},
|
|
I = function(e) {
|
|
var n,
|
|
t,
|
|
r = ((n = d),
|
|
(t = {}),
|
|
function(e) {
|
|
if (t[e]) return t[e];
|
|
var r = n(e);
|
|
return (t[e] = r), r;
|
|
});
|
|
return s(e.split(""), r);
|
|
},
|
|
L = A.characterIndices,
|
|
g = function(e, n) {
|
|
var t,
|
|
r,
|
|
E = e[n],
|
|
T = e[n + 1];
|
|
return !(
|
|
n < 0 ||
|
|
(n > e.length - 1 && 0 !== n) ||
|
|
(E === L.ALETTER && T === L.ALETTER) ||
|
|
((r = e[n + 2]),
|
|
(E === L.ALETTER &&
|
|
(T === L.MIDLETTER || T === L.MIDNUMLET || T === L.AT) &&
|
|
r === L.ALETTER) ||
|
|
((t = e[n - 1]),
|
|
((E === L.MIDLETTER || E === L.MIDNUMLET || T === L.AT) &&
|
|
T === L.ALETTER &&
|
|
t === L.ALETTER) ||
|
|
!(
|
|
(E !== L.NUMERIC && E !== L.ALETTER) ||
|
|
(T !== L.NUMERIC && T !== L.ALETTER)
|
|
) ||
|
|
((E === L.MIDNUM || E === L.MIDNUMLET) &&
|
|
T === L.NUMERIC &&
|
|
t === L.NUMERIC) ||
|
|
(E === L.NUMERIC &&
|
|
(T === L.MIDNUM || T === L.MIDNUMLET) &&
|
|
r === L.NUMERIC) ||
|
|
E === L.EXTEND ||
|
|
E === L.FORMAT ||
|
|
t === L.EXTEND ||
|
|
t === L.FORMAT ||
|
|
T === L.EXTEND ||
|
|
T === L.FORMAT ||
|
|
(E === L.CR && T === L.LF) ||
|
|
(E !== L.NEWLINE &&
|
|
E !== L.CR &&
|
|
E !== L.LF &&
|
|
T !== L.NEWLINE &&
|
|
T !== L.CR &&
|
|
T !== L.LF &&
|
|
((E === L.KATAKANA && T === L.KATAKANA) ||
|
|
(T === L.EXTENDNUMLET &&
|
|
(E === L.ALETTER ||
|
|
E === L.NUMERIC ||
|
|
E === L.KATAKANA ||
|
|
E === L.EXTENDNUMLET)) ||
|
|
(E === L.EXTENDNUMLET &&
|
|
(T === L.ALETTER || T === L.NUMERIC || T === L.KATAKANA)) ||
|
|
E === L.AT))))
|
|
);
|
|
},
|
|
p = A.EMPTY_STRING,
|
|
U = A.WHITESPACE,
|
|
w = A.PUNCTUATION,
|
|
h = function(e, n, t) {
|
|
var r = (function(e, n) {
|
|
var t;
|
|
for (t = n; t < e.length; ++t) {
|
|
var r = e.charAt(t);
|
|
if (U.test(r)) break;
|
|
}
|
|
return t;
|
|
})(n, t + 1),
|
|
E = n.substring(t + 1, r);
|
|
return "://" === E.substr(0, 3)
|
|
? { word: e + E, index: r }
|
|
: { word: e, index: t };
|
|
},
|
|
v = function(e, n) {
|
|
return (function(e, n) {
|
|
var t,
|
|
r,
|
|
E,
|
|
T,
|
|
u = 0,
|
|
i = I(e),
|
|
o = i.length,
|
|
c = [],
|
|
a = [];
|
|
for (
|
|
n || (n = {}),
|
|
n.ignoreCase && (e = e.toLowerCase()),
|
|
r = n.includePunctuation,
|
|
E = n.includeWhitespace;
|
|
u < o;
|
|
++u
|
|
)
|
|
if (((t = e.charAt(u)), c.push(t), g(i, u))) {
|
|
if ((c = c.join(p)) && (E || !U.test(c)) && (r || !w.test(c)))
|
|
if ("http" === (T = c) || "https" === T) {
|
|
var R = h(c, e, u);
|
|
a.push(R.word), (u = R.index);
|
|
} else a.push(c);
|
|
c = [];
|
|
}
|
|
return a;
|
|
})(e.replace(/\ufeff/g, ""), n);
|
|
},
|
|
x = function(e) {
|
|
return v(((n = e), n.removed ? "" : n.getBody().innerText)).length;
|
|
var n;
|
|
},
|
|
C = function(e) {
|
|
return {
|
|
getCount: function() {
|
|
return x(e);
|
|
}
|
|
};
|
|
},
|
|
D = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
m = tinymce.util.Tools.resolve("tinymce.util.I18n"),
|
|
y = function(e) {
|
|
var n = function(e) {
|
|
return m.translate(["{0} words", x(e)]);
|
|
},
|
|
t = function() {
|
|
e.theme.panel.find("#wordcount").text(n(e));
|
|
};
|
|
e.on("init", function() {
|
|
var r = e.theme.panel && e.theme.panel.find("#statusbar")[0],
|
|
E = D.debounce(t, 300);
|
|
r &&
|
|
D.setEditorTimeout(
|
|
e,
|
|
function() {
|
|
r.insert(
|
|
{
|
|
type: "label",
|
|
name: "wordcount",
|
|
text: n(e),
|
|
classes: "wordcount",
|
|
disabled: e.settings.readonly
|
|
},
|
|
0
|
|
),
|
|
e.on("setcontent beforeaddundo undo redo keyup", E);
|
|
},
|
|
0
|
|
);
|
|
});
|
|
};
|
|
e.add("wordcount", function(e) {
|
|
return y(e), C(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var n,
|
|
e,
|
|
t,
|
|
r,
|
|
o = function(n) {
|
|
var e = n,
|
|
t = function() {
|
|
return e;
|
|
};
|
|
return {
|
|
get: t,
|
|
set: function(n) {
|
|
e = n;
|
|
},
|
|
clone: function() {
|
|
return o(t());
|
|
}
|
|
};
|
|
},
|
|
u = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
i = function(n) {
|
|
return {
|
|
isEnabled: function() {
|
|
return n.get();
|
|
}
|
|
};
|
|
},
|
|
c = function(n, e) {
|
|
return n.fire("VisualChars", { state: e });
|
|
},
|
|
a = { "\xa0": "nbsp", "\xad": "shy" },
|
|
f = function(n, e) {
|
|
var t,
|
|
r = "";
|
|
for (t in n) r += t;
|
|
return new RegExp("[" + r + "]", e ? "g" : "");
|
|
},
|
|
l = function(n) {
|
|
var e,
|
|
t = "";
|
|
for (e in n) t && (t += ","), (t += "span.mce-" + n[e]);
|
|
return t;
|
|
},
|
|
s = {
|
|
charMap: a,
|
|
regExp: f(a),
|
|
regExpGlobal: f(a, !0),
|
|
selector: l(a),
|
|
charMapToRegExp: f,
|
|
charMapToSelector: l
|
|
},
|
|
d = function(n) {
|
|
return function() {
|
|
return n;
|
|
};
|
|
},
|
|
m = {
|
|
noop: function() {},
|
|
noarg: function(n) {
|
|
return function() {
|
|
return n();
|
|
};
|
|
},
|
|
compose: function(n, e) {
|
|
return function() {
|
|
return n(e.apply(null, arguments));
|
|
};
|
|
},
|
|
constant: d,
|
|
identity: function(n) {
|
|
return n;
|
|
},
|
|
tripleEquals: function(n, e) {
|
|
return n === e;
|
|
},
|
|
curry: function(n) {
|
|
for (
|
|
var e = new Array(arguments.length - 1), t = 1;
|
|
t < arguments.length;
|
|
t++
|
|
)
|
|
e[t - 1] = arguments[t];
|
|
return function() {
|
|
for (var t = new Array(arguments.length), r = 0; r < t.length; r++)
|
|
t[r] = arguments[r];
|
|
var o = e.concat(t);
|
|
return n.apply(null, o);
|
|
};
|
|
},
|
|
not: function(n) {
|
|
return function() {
|
|
return !n.apply(null, arguments);
|
|
};
|
|
},
|
|
die: function(n) {
|
|
return function() {
|
|
throw new Error(n);
|
|
};
|
|
},
|
|
apply: function(n) {
|
|
return n();
|
|
},
|
|
call: function(n) {
|
|
n();
|
|
},
|
|
never: d(!1),
|
|
always: d(!0)
|
|
},
|
|
p = m.never,
|
|
h = m.always,
|
|
v = function() {
|
|
return g;
|
|
},
|
|
g = ((r = {
|
|
fold: function(n, e) {
|
|
return n();
|
|
},
|
|
is: p,
|
|
isSome: p,
|
|
isNone: h,
|
|
getOr: (t = function(n) {
|
|
return n;
|
|
}),
|
|
getOrThunk: (e = function(n) {
|
|
return n();
|
|
}),
|
|
getOrDie: function(n) {
|
|
throw new Error(n || "error: getOrDie called on none.");
|
|
},
|
|
or: t,
|
|
orThunk: e,
|
|
map: v,
|
|
ap: v,
|
|
each: function() {},
|
|
bind: v,
|
|
flatten: v,
|
|
exists: p,
|
|
forall: h,
|
|
filter: v,
|
|
equals: (n = function(n) {
|
|
return n.isNone();
|
|
}),
|
|
equals_: n,
|
|
toArray: function() {
|
|
return [];
|
|
},
|
|
toString: m.constant("none()")
|
|
}),
|
|
Object.freeze && Object.freeze(r),
|
|
r),
|
|
y = function(n) {
|
|
var e = function() {
|
|
return n;
|
|
},
|
|
t = function() {
|
|
return o;
|
|
},
|
|
r = function(e) {
|
|
return e(n);
|
|
},
|
|
o = {
|
|
fold: function(e, t) {
|
|
return t(n);
|
|
},
|
|
is: function(e) {
|
|
return n === e;
|
|
},
|
|
isSome: h,
|
|
isNone: p,
|
|
getOr: e,
|
|
getOrThunk: e,
|
|
getOrDie: e,
|
|
or: t,
|
|
orThunk: t,
|
|
map: function(e) {
|
|
return y(e(n));
|
|
},
|
|
ap: function(e) {
|
|
return e.fold(v, function(e) {
|
|
return y(e(n));
|
|
});
|
|
},
|
|
each: function(e) {
|
|
e(n);
|
|
},
|
|
bind: r,
|
|
flatten: e,
|
|
exists: r,
|
|
forall: r,
|
|
filter: function(e) {
|
|
return e(n) ? o : g;
|
|
},
|
|
equals: function(e) {
|
|
return e.is(n);
|
|
},
|
|
equals_: function(e, t) {
|
|
return e.fold(p, function(e) {
|
|
return t(n, e);
|
|
});
|
|
},
|
|
toArray: function() {
|
|
return [n];
|
|
},
|
|
toString: function() {
|
|
return "some(" + n + ")";
|
|
}
|
|
};
|
|
return o;
|
|
},
|
|
T = {
|
|
some: y,
|
|
none: v,
|
|
from: function(n) {
|
|
return null === n || n === undefined ? g : y(n);
|
|
}
|
|
},
|
|
w = (Array.prototype.indexOf,
|
|
undefined,
|
|
function(n, e) {
|
|
for (var t = n.length, r = new Array(t), o = 0; o < t; o++) {
|
|
var u = n[o];
|
|
r[o] = e(u, o, n);
|
|
}
|
|
return r;
|
|
}),
|
|
x = function(n, e) {
|
|
for (var t = 0, r = n.length; t < r; t++) e(n[t], t, n);
|
|
},
|
|
E = (Array.prototype.push, Array.prototype.slice, w),
|
|
b = x,
|
|
k = function(n) {
|
|
if (null === n || n === undefined)
|
|
throw new Error("Node cannot be null or undefined");
|
|
return { dom: m.constant(n) };
|
|
},
|
|
N = {
|
|
fromHtml: function(n, e) {
|
|
var t = (e || document).createElement("div");
|
|
if (((t.innerHTML = n), !t.hasChildNodes() || t.childNodes.length > 1))
|
|
throw (console.error("HTML does not have a single root node", n),
|
|
"HTML must have a single root node");
|
|
return k(t.childNodes[0]);
|
|
},
|
|
fromTag: function(n, e) {
|
|
var t = (e || document).createElement(n);
|
|
return k(t);
|
|
},
|
|
fromText: function(n, e) {
|
|
var t = (e || document).createTextNode(n);
|
|
return k(t);
|
|
},
|
|
fromDom: k,
|
|
fromPoint: function(n, e, t) {
|
|
return T.from(n.dom().elementFromPoint(e, t)).map(k);
|
|
}
|
|
},
|
|
C = 8,
|
|
M = 9,
|
|
D = 3,
|
|
O = function(n) {
|
|
return n.dom().nodeName.toLowerCase();
|
|
},
|
|
A = function(n) {
|
|
return n.dom().nodeType;
|
|
},
|
|
S = function(n) {
|
|
return function(e) {
|
|
return A(e) === n;
|
|
};
|
|
},
|
|
B = S(1),
|
|
P = S(D),
|
|
V = S(M),
|
|
q = {
|
|
name: O,
|
|
type: A,
|
|
value: function(n) {
|
|
return n.dom().nodeValue;
|
|
},
|
|
isElement: B,
|
|
isText: P,
|
|
isDocument: V,
|
|
isComment: function(n) {
|
|
return A(n) === C || "#comment" === O(n);
|
|
}
|
|
},
|
|
H = function(n) {
|
|
return (
|
|
'<span data-mce-bogus="1" class="mce-' +
|
|
s.charMap[n] +
|
|
'">' +
|
|
n +
|
|
"</span>"
|
|
);
|
|
},
|
|
L = function(n, e) {
|
|
var t = [],
|
|
r = n.dom(),
|
|
o = E(r.childNodes, N.fromDom);
|
|
return (
|
|
b(o, function(n) {
|
|
e(n) && (t = t.concat([n])), (t = t.concat(L(n, e)));
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
R = {
|
|
isMatch: function(n) {
|
|
return (
|
|
q.isText(n) && q.value(n) !== undefined && s.regExp.test(q.value(n))
|
|
);
|
|
},
|
|
filterDescendants: L,
|
|
findParentElm: function(n, e) {
|
|
for (; n.parentNode; ) {
|
|
if (n.parentNode === e) return n;
|
|
n = n.parentNode;
|
|
}
|
|
},
|
|
replaceWithSpans: function(n) {
|
|
return n.replace(s.regExpGlobal, H);
|
|
}
|
|
},
|
|
_ = function(n, e) {
|
|
var t,
|
|
r,
|
|
o = R.filterDescendants(N.fromDom(e), R.isMatch);
|
|
b(o, function(e) {
|
|
var o = R.replaceWithSpans(q.value(e));
|
|
for (r = n.dom.create("div", null, o); (t = r.lastChild); )
|
|
n.dom.insertAfter(t, e.dom());
|
|
n.dom.remove(e.dom());
|
|
});
|
|
},
|
|
j = function(n, e) {
|
|
var t = n.dom.select(s.selector, e);
|
|
b(t, function(e) {
|
|
n.dom.remove(e, 1);
|
|
});
|
|
},
|
|
z = _,
|
|
G = j,
|
|
W = function(n) {
|
|
var e = n.getBody(),
|
|
t = n.selection.getBookmark(),
|
|
r = R.findParentElm(n.selection.getNode(), e);
|
|
(r = r !== undefined ? r : e),
|
|
j(n, r),
|
|
_(n, r),
|
|
n.selection.moveToBookmark(t);
|
|
},
|
|
F = function(n, e) {
|
|
var t,
|
|
r = n.getBody(),
|
|
o = n.selection;
|
|
e.set(!e.get()),
|
|
c(n, e.get()),
|
|
(t = o.getBookmark()),
|
|
!0 === e.get() ? z(n, r) : G(n, r),
|
|
o.moveToBookmark(t);
|
|
},
|
|
I = function(n, e) {
|
|
n.addCommand("mceVisualChars", function() {
|
|
F(n, e);
|
|
});
|
|
},
|
|
J = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
K = function(n, e) {
|
|
var t = J.debounce(function() {
|
|
W(n);
|
|
}, 300);
|
|
!1 !== n.settings.forced_root_block &&
|
|
n.on("keydown", function(r) {
|
|
!0 === e.get() && (13 === r.keyCode ? W(n) : t());
|
|
});
|
|
},
|
|
Q = function(n) {
|
|
return function(e) {
|
|
var t = e.control;
|
|
n.on("VisualChars", function(n) {
|
|
t.active(n.state);
|
|
});
|
|
};
|
|
};
|
|
u.add("visualchars", function(n) {
|
|
var e,
|
|
t = o(!1);
|
|
return (
|
|
I(n, t),
|
|
(e = n).addButton("visualchars", {
|
|
active: !1,
|
|
title: "Show invisible characters",
|
|
cmd: "mceVisualChars",
|
|
onPostRender: Q(e)
|
|
}),
|
|
e.addMenuItem("visualchars", {
|
|
text: "Show invisible characters",
|
|
cmd: "mceVisualChars",
|
|
onPostRender: Q(e),
|
|
selectable: !0,
|
|
context: "view",
|
|
prependToContext: !0
|
|
}),
|
|
K(n, t),
|
|
i(t)
|
|
);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var n = t,
|
|
o = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: o,
|
|
set: function(e) {
|
|
n = e;
|
|
},
|
|
clone: function() {
|
|
return e(o());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = function(e, t) {
|
|
e.fire("VisualBlocks", { state: t });
|
|
},
|
|
o = function(e) {
|
|
return e.getParam("visualblocks_default_state", !1);
|
|
},
|
|
s = function(e) {
|
|
return e.settings.visualblocks_content_css;
|
|
},
|
|
i = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
c = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
l = i.DOM.uniqueId(),
|
|
u = function(e, t) {
|
|
var n = c.toArray(e.getElementsByTagName("link"));
|
|
if (
|
|
0 ===
|
|
c.grep(n, function(e) {
|
|
return e.id === l;
|
|
}).length
|
|
) {
|
|
var o = i.DOM.create("link", { id: l, rel: "stylesheet", href: t });
|
|
e.getElementsByTagName("head")[0].appendChild(o);
|
|
}
|
|
},
|
|
a = function(e, t, o) {
|
|
var i = e.dom,
|
|
c = s(e);
|
|
u(e.getDoc(), c || t + "/css/visualblocks.css"),
|
|
i.toggleClass(e.getBody(), "mce-visualblocks"),
|
|
o.set(!o.get()),
|
|
n(e, o.get());
|
|
},
|
|
r = function(e, t, n) {
|
|
e.addCommand("mceVisualBlocks", function() {
|
|
a(e, t, n);
|
|
});
|
|
},
|
|
m = function(e, t, n) {
|
|
e.on("PreviewFormats AfterPreviewFormats", function(t) {
|
|
n.get() &&
|
|
e.dom.toggleClass(
|
|
e.getBody(),
|
|
"mce-visualblocks",
|
|
"afterpreviewformats" === t.type
|
|
);
|
|
}),
|
|
e.on("init", function() {
|
|
o(e) && a(e, t, n);
|
|
}),
|
|
e.on("remove", function() {
|
|
e.dom.removeClass(e.getBody(), "mce-visualblocks");
|
|
});
|
|
},
|
|
f = function(e, t) {
|
|
return function(n) {
|
|
var o = n.control;
|
|
o.active(t.get()),
|
|
e.on("VisualBlocks", function(e) {
|
|
o.active(e.state);
|
|
});
|
|
};
|
|
},
|
|
d = function(e, t) {
|
|
e.addButton("visualblocks", {
|
|
active: !1,
|
|
title: "Show blocks",
|
|
cmd: "mceVisualBlocks",
|
|
onPostRender: f(e, t)
|
|
}),
|
|
e.addMenuItem("visualblocks", {
|
|
text: "Show blocks",
|
|
cmd: "mceVisualBlocks",
|
|
onPostRender: f(e, t),
|
|
selectable: !0,
|
|
context: "view",
|
|
prependToContext: !0
|
|
});
|
|
};
|
|
t.add("visualblocks", function(t, n) {
|
|
var o = e(!1);
|
|
r(t, n, o), d(t, o), m(t, n, o);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = function(e) {
|
|
var n = e,
|
|
r = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: r,
|
|
set: function(t) {
|
|
n = t;
|
|
},
|
|
clone: function() {
|
|
return t(r());
|
|
}
|
|
};
|
|
},
|
|
e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = function(t) {
|
|
return {
|
|
setPatterns: function(e) {
|
|
t.set(e);
|
|
},
|
|
getPatterns: function() {
|
|
return t.get();
|
|
}
|
|
};
|
|
},
|
|
r = [
|
|
{ start: "*", end: "*", format: "italic" },
|
|
{ start: "**", end: "**", format: "bold" },
|
|
{ start: "***", end: "***", format: ["bold", "italic"] },
|
|
{ start: "#", format: "h1" },
|
|
{ start: "##", format: "h2" },
|
|
{ start: "###", format: "h3" },
|
|
{ start: "####", format: "h4" },
|
|
{ start: "#####", format: "h5" },
|
|
{ start: "######", format: "h6" },
|
|
{ start: "1. ", cmd: "InsertOrderedList" },
|
|
{ start: "* ", cmd: "InsertUnorderedList" },
|
|
{ start: "- ", cmd: "InsertUnorderedList" }
|
|
],
|
|
a = function(t) {
|
|
return t.textpattern_patterns !== undefined ? t.textpattern_patterns : r;
|
|
},
|
|
o = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
i = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
s = tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),
|
|
l = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
d = function(t, e) {
|
|
for (var n = 0; n < t.length; n++)
|
|
if (
|
|
0 === e.indexOf(t[n].start) &&
|
|
(!t[n].end || e.lastIndexOf(t[n].end) === e.length - t[n].end.length)
|
|
)
|
|
return t[n];
|
|
},
|
|
f = function(t, e, n, r) {
|
|
var a,
|
|
o,
|
|
i,
|
|
s,
|
|
l,
|
|
d,
|
|
f = t.sort(function(t, e) {
|
|
return t.start.length > e.start.length
|
|
? -1
|
|
: t.start.length < e.start.length
|
|
? 1
|
|
: 0;
|
|
});
|
|
for (o = 0; o < f.length; o++)
|
|
if (
|
|
(a = f[o]).end !== undefined &&
|
|
((s = a),
|
|
(l = n),
|
|
(d = r),
|
|
e.substr(l - s.end.length - d, s.end.length) === s.end) &&
|
|
n - r - (i = a).end.length - i.start.length > 0
|
|
)
|
|
return a;
|
|
},
|
|
c = function(t, e, n) {
|
|
if (!1 !== e.collapsed) {
|
|
var r = e.startContainer,
|
|
a = r.data,
|
|
o = !0 === n ? 1 : 0;
|
|
if (3 === r.nodeType) {
|
|
var i = f(t, a, e.startOffset, o);
|
|
if (i !== undefined) {
|
|
var s = a.lastIndexOf(i.end, e.startOffset - o),
|
|
l = a.lastIndexOf(i.start, s - i.end.length);
|
|
if (((s = a.indexOf(i.end, l + i.start.length)), -1 !== l)) {
|
|
var c = document.createRange();
|
|
c.setStart(r, l), c.setEnd(r, s + i.end.length);
|
|
var u = d(t, c.toString());
|
|
if (
|
|
!(
|
|
i === undefined ||
|
|
u !== i ||
|
|
r.data.length <= i.start.length + i.end.length
|
|
)
|
|
)
|
|
return { pattern: i, startOffset: l, endOffset: s };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
u = function(t, e, n) {
|
|
var r = t.selection.getRng(!0),
|
|
a = c(e, r, n);
|
|
if (a)
|
|
return (function(t, e, n, r) {
|
|
var a = l.isArray(n.pattern.format)
|
|
? n.pattern.format
|
|
: [n.pattern.format];
|
|
if (
|
|
0 !==
|
|
l.grep(a, function(e) {
|
|
var n = t.formatter.get(e);
|
|
return n && n[0].inline;
|
|
}).length
|
|
)
|
|
return (
|
|
t.undoManager.transact(function() {
|
|
var r, o, i, s;
|
|
(r = e),
|
|
(o = n.pattern),
|
|
(i = n.endOffset),
|
|
(s = n.startOffset),
|
|
(r = s > 0 ? r.splitText(s) : r).splitText(
|
|
i - s + o.end.length
|
|
),
|
|
r.deleteData(0, o.start.length),
|
|
r.deleteData(r.data.length - o.end.length, o.end.length),
|
|
(e = r),
|
|
a.forEach(function(n) {
|
|
t.formatter.apply(n, {}, e);
|
|
});
|
|
}),
|
|
e
|
|
);
|
|
})(t, r.startContainer, a);
|
|
},
|
|
g = {
|
|
patternFromRng: c,
|
|
applyInlineFormatSpace: function(t, e) {
|
|
return u(t, e, !0);
|
|
},
|
|
applyInlineFormatEnter: function(t, e) {
|
|
return u(t, e, !1);
|
|
},
|
|
applyBlockFormat: function(t, e) {
|
|
var n, r, a, o, i, f, c, u, g, h, m;
|
|
if (
|
|
((n = t.selection),
|
|
(r = t.dom),
|
|
n.isCollapsed() && (c = r.getParent(n.getStart(), "p")))
|
|
) {
|
|
for (g = new s(c, c); (i = g.next()); )
|
|
if (3 === i.nodeType) {
|
|
o = i;
|
|
break;
|
|
}
|
|
if (o) {
|
|
if (!(u = d(e, o.data))) return;
|
|
if (
|
|
((a = (h = n.getRng(!0)).startContainer),
|
|
(m = h.startOffset),
|
|
o === a && (m = Math.max(0, m - u.start.length)),
|
|
l.trim(o.data).length === u.start.length)
|
|
)
|
|
return;
|
|
u.format &&
|
|
(f = t.formatter.get(u.format)) &&
|
|
f[0].block &&
|
|
(o.deleteData(0, u.start.length),
|
|
t.formatter.apply(u.format, {}, o),
|
|
h.setStart(a, m),
|
|
h.collapse(!0),
|
|
n.setRng(h)),
|
|
u.cmd &&
|
|
t.undoManager.transact(function() {
|
|
o.deleteData(0, u.start.length), t.execCommand(u.cmd);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
},
|
|
h = function(t, e, n) {
|
|
for (var r = 0; r < t.length; r++) if (n(t[r], e)) return !0;
|
|
},
|
|
m = {
|
|
handleEnter: function(t, e) {
|
|
var n, r;
|
|
(n = g.applyInlineFormatEnter(t, e)) &&
|
|
((r = t.dom.createRng()).setStart(n, n.data.length),
|
|
r.setEnd(n, n.data.length),
|
|
t.selection.setRng(r)),
|
|
g.applyBlockFormat(t, e);
|
|
},
|
|
handleInlineKey: function(t, e) {
|
|
var n, r, a, o, i;
|
|
(n = g.applyInlineFormatSpace(t, e)) &&
|
|
((i = t.dom),
|
|
(r = n.data.slice(-1)),
|
|
/[\u00a0 ]/.test(r) &&
|
|
(n.deleteData(n.data.length - 1, 1),
|
|
(a = i.doc.createTextNode(r)),
|
|
i.insertAfter(a, n.parentNode),
|
|
(o = i.createRng()).setStart(a, 1),
|
|
o.setEnd(a, 1),
|
|
t.selection.setRng(o)));
|
|
},
|
|
checkCharCode: function(t, e) {
|
|
return h(t, e, function(t, e) {
|
|
return t.charCodeAt(0) === e.charCode;
|
|
});
|
|
},
|
|
checkKeyCode: function(t, e) {
|
|
return h(t, e, function(t, e) {
|
|
return t === e.keyCode && !1 === i.modifierPressed(e);
|
|
});
|
|
}
|
|
},
|
|
p = function(t, e) {
|
|
var n = [",", ".", ";", ":", "!", "?"],
|
|
r = [32];
|
|
t.on(
|
|
"keydown",
|
|
function(n) {
|
|
13 !== n.keyCode || i.modifierPressed(n) || m.handleEnter(t, e.get());
|
|
},
|
|
!0
|
|
),
|
|
t.on("keyup", function(n) {
|
|
m.checkKeyCode(r, n) && m.handleInlineKey(t, e.get());
|
|
}),
|
|
t.on("keypress", function(r) {
|
|
m.checkCharCode(n, r) &&
|
|
o.setEditorTimeout(t, function() {
|
|
m.handleInlineKey(t, e.get());
|
|
});
|
|
});
|
|
};
|
|
e.add("textpattern", function(e) {
|
|
var r = t(a(e.settings));
|
|
return p(e, r), n(r);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = function(t, e) {
|
|
var o;
|
|
return (
|
|
t.dom.getParents(t.selection.getStart(), function(t) {
|
|
var r;
|
|
(r = t.style["forecolor" === e ? "color" : "background-color"]) &&
|
|
(o = r);
|
|
}),
|
|
o
|
|
);
|
|
},
|
|
o = function(t) {
|
|
var e,
|
|
o = [];
|
|
for (e = 0; e < t.length; e += 2)
|
|
o.push({ text: t[e + 1], color: "#" + t[e] });
|
|
return o;
|
|
},
|
|
r = function(t, e, o) {
|
|
t.undoManager.transact(function() {
|
|
t.focus(), t.formatter.apply(e, { value: o }), t.nodeChanged();
|
|
});
|
|
},
|
|
n = function(t, e) {
|
|
t.undoManager.transact(function() {
|
|
t.focus(),
|
|
t.formatter.remove(e, { value: null }, null, !0),
|
|
t.nodeChanged();
|
|
});
|
|
},
|
|
a = function(t) {
|
|
t.addCommand("mceApplyTextcolor", function(e, o) {
|
|
r(t, e, o);
|
|
}),
|
|
t.addCommand("mceRemoveTextcolor", function(e) {
|
|
n(t, e);
|
|
});
|
|
},
|
|
l = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
c = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
i = [
|
|
"000000",
|
|
"Black",
|
|
"993300",
|
|
"Burnt orange",
|
|
"333300",
|
|
"Dark olive",
|
|
"003300",
|
|
"Dark green",
|
|
"003366",
|
|
"Dark azure",
|
|
"000080",
|
|
"Navy Blue",
|
|
"333399",
|
|
"Indigo",
|
|
"333333",
|
|
"Very dark gray",
|
|
"800000",
|
|
"Maroon",
|
|
"FF6600",
|
|
"Orange",
|
|
"808000",
|
|
"Olive",
|
|
"008000",
|
|
"Green",
|
|
"008080",
|
|
"Teal",
|
|
"0000FF",
|
|
"Blue",
|
|
"666699",
|
|
"Grayish blue",
|
|
"808080",
|
|
"Gray",
|
|
"FF0000",
|
|
"Red",
|
|
"FF9900",
|
|
"Amber",
|
|
"99CC00",
|
|
"Yellow green",
|
|
"339966",
|
|
"Sea green",
|
|
"33CCCC",
|
|
"Turquoise",
|
|
"3366FF",
|
|
"Royal blue",
|
|
"800080",
|
|
"Purple",
|
|
"999999",
|
|
"Medium gray",
|
|
"FF00FF",
|
|
"Magenta",
|
|
"FFCC00",
|
|
"Gold",
|
|
"FFFF00",
|
|
"Yellow",
|
|
"00FF00",
|
|
"Lime",
|
|
"00FFFF",
|
|
"Aqua",
|
|
"00CCFF",
|
|
"Sky blue",
|
|
"993366",
|
|
"Red violet",
|
|
"FFFFFF",
|
|
"White",
|
|
"FF99CC",
|
|
"Pink",
|
|
"FFCC99",
|
|
"Peach",
|
|
"FFFF99",
|
|
"Light yellow",
|
|
"CCFFCC",
|
|
"Pale green",
|
|
"CCFFFF",
|
|
"Pale cyan",
|
|
"99CCFF",
|
|
"Light sky blue",
|
|
"CC99FF",
|
|
"Plum"
|
|
],
|
|
u = function(t) {
|
|
return t.getParam("textcolor_map", i);
|
|
},
|
|
m = function(t) {
|
|
return t.getParam("textcolor_rows", 5);
|
|
},
|
|
s = function(t) {
|
|
return t.getParam("textcolor_cols", 8);
|
|
},
|
|
d = function(t) {
|
|
return t.getParam("color_picker_callback", null);
|
|
},
|
|
f = function(t) {
|
|
return t.getParam("forecolor_map", u(t));
|
|
},
|
|
g = function(t) {
|
|
return t.getParam("backcolor_map", u(t));
|
|
},
|
|
F = function(t) {
|
|
return t.getParam("forecolor_rows", m(t));
|
|
},
|
|
b = function(t) {
|
|
return t.getParam("backcolor_rows", m(t));
|
|
},
|
|
p = function(t) {
|
|
return t.getParam("forecolor_cols", s(t));
|
|
},
|
|
C = function(t) {
|
|
return t.getParam("backcolor_cols", s(t));
|
|
},
|
|
y = d,
|
|
v = function(t) {
|
|
return "function" == typeof d(t);
|
|
},
|
|
h = tinymce.util.Tools.resolve("tinymce.util.I18n"),
|
|
P = function(t, e, r, n) {
|
|
var a,
|
|
c,
|
|
i,
|
|
u,
|
|
m,
|
|
s,
|
|
d,
|
|
f = 0,
|
|
g = l.DOM.uniqueId("mcearia"),
|
|
F = function(t, e) {
|
|
var o = "transparent" === t;
|
|
return (
|
|
'<td class="mce-grid-cell' +
|
|
(o ? " mce-colorbtn-trans" : "") +
|
|
'"><div id="' +
|
|
g +
|
|
"-" +
|
|
f++ +
|
|
'" data-mce-color="' +
|
|
(t || "") +
|
|
'" role="option" tabIndex="-1" style="' +
|
|
(t ? "background-color: " + t : "") +
|
|
'" title="' +
|
|
h.translate(e) +
|
|
'">' +
|
|
(o ? "×" : "") +
|
|
"</div></td>"
|
|
);
|
|
};
|
|
for (
|
|
(a = o(r)).push({
|
|
text: h.translate("No color"),
|
|
color: "transparent"
|
|
}),
|
|
i =
|
|
'<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',
|
|
u = a.length - 1,
|
|
s = 0;
|
|
s < e;
|
|
s++
|
|
) {
|
|
for (i += "<tr>", m = 0; m < t; m++)
|
|
i += (d = s * t + m) > u ? "<td></td>" : F((c = a[d]).color, c.text);
|
|
i += "</tr>";
|
|
}
|
|
if (n) {
|
|
for (
|
|
i +=
|
|
'<tr><td colspan="' +
|
|
t +
|
|
'" class="mce-custom-color-btn"><div id="' +
|
|
g +
|
|
'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="' +
|
|
g +
|
|
'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">' +
|
|
h.translate("Custom...") +
|
|
"</button></div></td></tr>",
|
|
i += "<tr>",
|
|
m = 0;
|
|
m < t;
|
|
m++
|
|
)
|
|
i += F("", "Custom color");
|
|
i += "</tr>";
|
|
}
|
|
return (i += "</tbody></table>");
|
|
},
|
|
k = function(t, e) {
|
|
(t.style.background = e), t.setAttribute("data-mce-color", e);
|
|
},
|
|
x = function(t) {
|
|
return function(e) {
|
|
var o = e.control;
|
|
o._color
|
|
? t.execCommand("mceApplyTextcolor", o.settings.format, o._color)
|
|
: t.execCommand("mceRemoveTextcolor", o.settings.format);
|
|
};
|
|
},
|
|
T = function(t, o) {
|
|
return function(r) {
|
|
var n,
|
|
a = this.parent(),
|
|
i = e(t, a.settings.format),
|
|
u = function(e) {
|
|
a.hidePanel(),
|
|
a.color(e),
|
|
t.execCommand("mceApplyTextcolor", a.settings.format, e);
|
|
};
|
|
l.DOM.getParent(r.target, ".mce-custom-color-btn") &&
|
|
(a.hidePanel(),
|
|
y(t).call(
|
|
t,
|
|
function(t) {
|
|
var e,
|
|
r,
|
|
n,
|
|
l = a.panel.getEl().getElementsByTagName("table")[0];
|
|
for (
|
|
e = c.map(l.rows[l.rows.length - 1].childNodes, function(t) {
|
|
return t.firstChild;
|
|
}),
|
|
n = 0;
|
|
n < e.length && (r = e[n]).getAttribute("data-mce-color");
|
|
n++
|
|
);
|
|
if (n === o)
|
|
for (n = 0; n < o - 1; n++)
|
|
k(e[n], e[n + 1].getAttribute("data-mce-color"));
|
|
k(r, t), u(t);
|
|
},
|
|
i
|
|
)),
|
|
(n = r.target.getAttribute("data-mce-color"))
|
|
? (this.lastId &&
|
|
l.DOM.get(this.lastId).setAttribute("aria-selected", !1),
|
|
r.target.setAttribute("aria-selected", !0),
|
|
(this.lastId = r.target.id),
|
|
"transparent" === n
|
|
? (a.hidePanel(),
|
|
a.resetColor(),
|
|
t.execCommand("mceRemoveTextcolor", a.settings.format))
|
|
: u(n))
|
|
: null !== n && a.hidePanel();
|
|
};
|
|
},
|
|
_ = function(t, e) {
|
|
return function() {
|
|
var o = e ? p(t) : C(t),
|
|
r = e ? F(t) : b(t),
|
|
n = e ? f(t) : g(t),
|
|
a = v(t);
|
|
return P(o, r, n, a);
|
|
};
|
|
},
|
|
A = function(t) {
|
|
t.addButton("forecolor", {
|
|
type: "colorbutton",
|
|
tooltip: "Text color",
|
|
format: "forecolor",
|
|
panel: {
|
|
role: "application",
|
|
ariaRemember: !0,
|
|
html: _(t, !0),
|
|
onclick: T(t, p(t))
|
|
},
|
|
onclick: x(t)
|
|
}),
|
|
t.addButton("backcolor", {
|
|
type: "colorbutton",
|
|
tooltip: "Background color",
|
|
format: "hilitecolor",
|
|
panel: {
|
|
role: "application",
|
|
ariaRemember: !0,
|
|
html: _(t, !1),
|
|
onclick: T(t, C(t))
|
|
},
|
|
onclick: x(t)
|
|
});
|
|
};
|
|
t.add("textcolor", function(t) {
|
|
a(t), A(t);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = function(e) {
|
|
return function() {
|
|
return e;
|
|
};
|
|
},
|
|
n = function(e) {
|
|
for (
|
|
var t = new Array(arguments.length - 1), n = 1;
|
|
n < arguments.length;
|
|
n++
|
|
)
|
|
t[n - 1] = arguments[n];
|
|
return function() {
|
|
for (var n = new Array(arguments.length), a = 0; a < n.length; a++)
|
|
n[a] = arguments[a];
|
|
var r = t.concat(n);
|
|
return e.apply(null, r);
|
|
};
|
|
},
|
|
a = (t(!1), t(!0), tinymce.util.Tools.resolve("tinymce.util.Tools")),
|
|
r = tinymce.util.Tools.resolve("tinymce.util.XHR"),
|
|
l = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
c = function(e) {
|
|
return e.getParam("template_cdate_classes", "cdate");
|
|
},
|
|
o = function(e) {
|
|
return e.getParam("template_mdate_classes", "mdate");
|
|
},
|
|
i = function(e) {
|
|
return e.getParam("template_selected_content_classes", "selcontent");
|
|
},
|
|
s = function(e) {
|
|
return e.getParam("template_preview_replace_values");
|
|
},
|
|
u = function(e) {
|
|
return e.getParam("template_replace_values");
|
|
},
|
|
p = function(e) {
|
|
return e.templates;
|
|
},
|
|
m = function(e) {
|
|
return e.getParam(
|
|
"template_cdate_format",
|
|
e.getLang("template.cdate_format")
|
|
);
|
|
},
|
|
d = function(e) {
|
|
return e.getParam(
|
|
"template_mdate_format",
|
|
e.getLang("template.mdate_format")
|
|
);
|
|
},
|
|
f = function(e) {
|
|
return e.getParam("template_popup_width", 600);
|
|
},
|
|
g = function(e) {
|
|
return Math.min(
|
|
l.DOM.getViewPort().h,
|
|
e.getParam("template_popup_height", 500)
|
|
);
|
|
},
|
|
h = function(e, t) {
|
|
if ((e = "" + e).length < t)
|
|
for (var n = 0; n < t - e.length; n++) e = "0" + e;
|
|
return e;
|
|
},
|
|
y = function(e, t, n) {
|
|
var a = "Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),
|
|
r = "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(
|
|
" "
|
|
),
|
|
l = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
|
|
c = "January February March April May June July August September October November December".split(
|
|
" "
|
|
);
|
|
return (
|
|
(n = n || new Date()),
|
|
(t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = t.replace(
|
|
"%D",
|
|
"%m/%d/%Y"
|
|
)).replace("%r", "%I:%M:%S %p")).replace(
|
|
"%Y",
|
|
"" + n.getFullYear()
|
|
)).replace("%y", "" + n.getYear())).replace(
|
|
"%m",
|
|
h(n.getMonth() + 1, 2)
|
|
)).replace("%d", h(n.getDate(), 2))).replace(
|
|
"%H",
|
|
"" + h(n.getHours(), 2)
|
|
)).replace("%M", "" + h(n.getMinutes(), 2))).replace(
|
|
"%S",
|
|
"" + h(n.getSeconds(), 2)
|
|
)).replace("%I", "" + (((n.getHours() + 11) % 12) + 1))).replace(
|
|
"%p",
|
|
n.getHours() < 12 ? "AM" : "PM"
|
|
)).replace("%B", "" + e.translate(c[n.getMonth()]))).replace(
|
|
"%b",
|
|
"" + e.translate(l[n.getMonth()])
|
|
)).replace("%A", "" + e.translate(r[n.getDay()]))).replace(
|
|
"%a",
|
|
"" + e.translate(a[n.getDay()])
|
|
)).replace("%%", "%"))
|
|
);
|
|
},
|
|
v = function(e, t, n) {
|
|
return (
|
|
a.each(n, function(e, n) {
|
|
"function" == typeof e && (e = e(n)),
|
|
(t = t.replace(new RegExp("\\{\\$" + n + "\\}", "g"), e));
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
M = function(e, t) {
|
|
var n = e.dom,
|
|
r = u(e);
|
|
a.each(n.select("*", t), function(e) {
|
|
a.each(r, function(t, a) {
|
|
n.hasClass(e, a) && "function" == typeof r[a] && r[a](e);
|
|
});
|
|
});
|
|
},
|
|
_ = function(e, t) {
|
|
return new RegExp("\\b" + t + "\\b", "g").test(e.className);
|
|
},
|
|
b = function(e, t) {
|
|
return function() {
|
|
var n = p(e);
|
|
"function" != typeof n
|
|
? "string" == typeof n
|
|
? r.send({
|
|
url: n,
|
|
success: function(e) {
|
|
t(JSON.parse(e));
|
|
}
|
|
})
|
|
: t(n)
|
|
: n(t);
|
|
};
|
|
},
|
|
T = v,
|
|
x = M,
|
|
P = function(e, t, n) {
|
|
var r,
|
|
l,
|
|
s = e.dom,
|
|
p = e.selection.getContent();
|
|
(n = v(0, n, u(e))),
|
|
(r = s.create("div", null, n)),
|
|
(l = s.select(".mceTmpl", r)) &&
|
|
l.length > 0 &&
|
|
(r = s.create("div", null)).appendChild(l[0].cloneNode(!0)),
|
|
a.each(s.select("*", r), function(t) {
|
|
_(t, c(e).replace(/\s+/g, "|")) && (t.innerHTML = y(e, m(e))),
|
|
_(t, o(e).replace(/\s+/g, "|")) && (t.innerHTML = y(e, d(e))),
|
|
_(t, i(e).replace(/\s+/g, "|")) && (t.innerHTML = p);
|
|
}),
|
|
M(e, r),
|
|
e.execCommand("mceInsertContent", !1, r.innerHTML),
|
|
e.addVisual();
|
|
},
|
|
S = function(e) {
|
|
e.addCommand("mceInsertTemplate", n(P, e));
|
|
},
|
|
w = function(e) {
|
|
e.on("PreProcess", function(t) {
|
|
var n = e.dom,
|
|
r = d(e);
|
|
a.each(n.select("div", t.node), function(t) {
|
|
n.hasClass(t, "mceTmpl") &&
|
|
(a.each(n.select("*", t), function(t) {
|
|
n.hasClass(
|
|
t,
|
|
e
|
|
.getParam("template_mdate_classes", "mdate")
|
|
.replace(/\s+/g, "|")
|
|
) && (t.innerHTML = y(e, r));
|
|
}),
|
|
x(e, t));
|
|
});
|
|
});
|
|
},
|
|
D = function(e, t, n) {
|
|
if (-1 === n.indexOf("<html>")) {
|
|
var r = "";
|
|
a.each(e.contentCSS, function(t) {
|
|
r +=
|
|
'<link type="text/css" rel="stylesheet" href="' +
|
|
e.documentBaseURI.toAbsolute(t) +
|
|
'">';
|
|
});
|
|
var l = e.settings.body_class || "";
|
|
-1 !== l.indexOf("=") &&
|
|
(l = (l = e.getParam("body_class", "", "hash"))[e.id] || ""),
|
|
(n =
|
|
"<!DOCTYPE html><html><head>" +
|
|
r +
|
|
'</head><body class="' +
|
|
l +
|
|
'">' +
|
|
n +
|
|
"</body></html>");
|
|
}
|
|
n = T(e, n, s(e));
|
|
var c = t.find("iframe")[0].getEl().contentWindow.document;
|
|
c.open(), c.write(n), c.close();
|
|
},
|
|
H = function(e, t) {
|
|
var n,
|
|
l,
|
|
c = [];
|
|
if (t && 0 !== t.length)
|
|
a.each(t, function(e) {
|
|
c.push({
|
|
selected: !c.length,
|
|
text: e.title,
|
|
value: {
|
|
url: e.url,
|
|
content: e.content,
|
|
description: e.description
|
|
}
|
|
});
|
|
}),
|
|
(n = e.windowManager.open({
|
|
title: "Insert template",
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "stretch",
|
|
padding: 15,
|
|
spacing: 10,
|
|
items: [
|
|
{
|
|
type: "form",
|
|
flex: 0,
|
|
padding: 0,
|
|
items: [
|
|
{
|
|
type: "container",
|
|
label: "Templates",
|
|
items: {
|
|
type: "listbox",
|
|
label: "Templates",
|
|
name: "template",
|
|
values: c,
|
|
onselect: function(t) {
|
|
var a = t.control.value();
|
|
a.url
|
|
? r.send({
|
|
url: a.url,
|
|
success: function(t) {
|
|
D(e, n, (l = t));
|
|
}
|
|
})
|
|
: ((l = a.content), D(e, n, l)),
|
|
n
|
|
.find("#description")[0]
|
|
.text(t.control.value().description);
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
type: "label",
|
|
name: "description",
|
|
label: "Description",
|
|
text: "\xa0"
|
|
},
|
|
{ type: "iframe", flex: 1, border: 1 }
|
|
],
|
|
onsubmit: function() {
|
|
P(e, !1, l);
|
|
},
|
|
minWidth: f(e),
|
|
minHeight: g(e)
|
|
}))
|
|
.find("listbox")[0]
|
|
.fire("select");
|
|
else {
|
|
var o = e.translate("No templates defined.");
|
|
e.notificationManager.open({ text: o, type: "info" });
|
|
}
|
|
},
|
|
C = function(e) {
|
|
return function(t) {
|
|
H(e, t);
|
|
};
|
|
},
|
|
A = function(e) {
|
|
e.addButton("template", {
|
|
title: "Insert template",
|
|
onclick: b(e.settings, C(e))
|
|
}),
|
|
e.addMenuItem("template", {
|
|
text: "Template",
|
|
onclick: b(e.settings, C(e)),
|
|
icon: "template",
|
|
context: "insert"
|
|
});
|
|
};
|
|
e.add("template", function(e) {
|
|
A(e), S(e), w(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var n,
|
|
t,
|
|
e,
|
|
r,
|
|
o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s,
|
|
f = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
d = function(n) {
|
|
return function() {
|
|
return n;
|
|
};
|
|
},
|
|
m = {
|
|
noop: function() {},
|
|
noarg: function(n) {
|
|
return function() {
|
|
return n();
|
|
};
|
|
},
|
|
compose: function(n, t) {
|
|
return function() {
|
|
return n(t.apply(null, arguments));
|
|
};
|
|
},
|
|
constant: d,
|
|
identity: function(n) {
|
|
return n;
|
|
},
|
|
tripleEquals: function(n, t) {
|
|
return n === t;
|
|
},
|
|
curry: function(n) {
|
|
for (
|
|
var t = new Array(arguments.length - 1), e = 1;
|
|
e < arguments.length;
|
|
e++
|
|
)
|
|
t[e - 1] = arguments[e];
|
|
return function() {
|
|
for (var e = new Array(arguments.length), r = 0; r < e.length; r++)
|
|
e[r] = arguments[r];
|
|
var o = t.concat(e);
|
|
return n.apply(null, o);
|
|
};
|
|
},
|
|
not: function(n) {
|
|
return function() {
|
|
return !n.apply(null, arguments);
|
|
};
|
|
},
|
|
die: function(n) {
|
|
return function() {
|
|
throw new Error(n);
|
|
};
|
|
},
|
|
apply: function(n) {
|
|
return n();
|
|
},
|
|
call: function(n) {
|
|
n();
|
|
},
|
|
never: d(!1),
|
|
always: d(!0)
|
|
},
|
|
g = m.never,
|
|
p = m.always,
|
|
h = function() {
|
|
return v;
|
|
},
|
|
v = ((r = {
|
|
fold: function(n, t) {
|
|
return n();
|
|
},
|
|
is: g,
|
|
isSome: g,
|
|
isNone: p,
|
|
getOr: (e = function(n) {
|
|
return n;
|
|
}),
|
|
getOrThunk: (t = function(n) {
|
|
return n();
|
|
}),
|
|
getOrDie: function(n) {
|
|
throw new Error(n || "error: getOrDie called on none.");
|
|
},
|
|
or: e,
|
|
orThunk: t,
|
|
map: h,
|
|
ap: h,
|
|
each: function() {},
|
|
bind: h,
|
|
flatten: h,
|
|
exists: g,
|
|
forall: p,
|
|
filter: h,
|
|
equals: (n = function(n) {
|
|
return n.isNone();
|
|
}),
|
|
equals_: n,
|
|
toArray: function() {
|
|
return [];
|
|
},
|
|
toString: m.constant("none()")
|
|
}),
|
|
Object.freeze && Object.freeze(r),
|
|
r),
|
|
b = function(n) {
|
|
var t = function() {
|
|
return n;
|
|
},
|
|
e = function() {
|
|
return o;
|
|
},
|
|
r = function(t) {
|
|
return t(n);
|
|
},
|
|
o = {
|
|
fold: function(t, e) {
|
|
return e(n);
|
|
},
|
|
is: function(t) {
|
|
return n === t;
|
|
},
|
|
isSome: p,
|
|
isNone: g,
|
|
getOr: t,
|
|
getOrThunk: t,
|
|
getOrDie: t,
|
|
or: e,
|
|
orThunk: e,
|
|
map: function(t) {
|
|
return b(t(n));
|
|
},
|
|
ap: function(t) {
|
|
return t.fold(h, function(t) {
|
|
return b(t(n));
|
|
});
|
|
},
|
|
each: function(t) {
|
|
t(n);
|
|
},
|
|
bind: r,
|
|
flatten: t,
|
|
exists: r,
|
|
forall: r,
|
|
filter: function(t) {
|
|
return t(n) ? o : v;
|
|
},
|
|
equals: function(t) {
|
|
return t.is(n);
|
|
},
|
|
equals_: function(t, e) {
|
|
return t.fold(g, function(t) {
|
|
return e(n, t);
|
|
});
|
|
},
|
|
toArray: function() {
|
|
return [n];
|
|
},
|
|
toString: function() {
|
|
return "some(" + n + ")";
|
|
}
|
|
};
|
|
return o;
|
|
},
|
|
w = {
|
|
some: b,
|
|
none: h,
|
|
from: function(n) {
|
|
return null === n || n === undefined ? v : b(n);
|
|
}
|
|
},
|
|
y =
|
|
(o = Array.prototype.indexOf) === undefined
|
|
? function(n, t) {
|
|
return A(n, t);
|
|
}
|
|
: function(n, t) {
|
|
return o.call(n, t);
|
|
},
|
|
x = function(n, t) {
|
|
return y(n, t) > -1;
|
|
},
|
|
C = 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;
|
|
},
|
|
S = function(n, t) {
|
|
for (var e = 0, r = n.length; e < r; e++) t(n[e], e, n);
|
|
},
|
|
R = function(n, t) {
|
|
for (var e = n.length - 1; e >= 0; e--) t(n[e], e, n);
|
|
},
|
|
T = function(n, t) {
|
|
for (var e = [], r = 0, o = n.length; r < o; r++) {
|
|
var i = n[r];
|
|
t(i, r, n) && e.push(i);
|
|
}
|
|
return e;
|
|
},
|
|
D = function(n, t) {
|
|
for (var e = 0, r = n.length; e < r; e++)
|
|
if (t(n[e], e, n)) return w.some(e);
|
|
return w.none();
|
|
},
|
|
A = function(n, t) {
|
|
for (var e = 0, r = n.length; e < r; ++e) if (n[e] === t) return e;
|
|
return -1;
|
|
},
|
|
k = Array.prototype.push,
|
|
N = 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
|
|
);
|
|
k.apply(t, n[e]);
|
|
}
|
|
return t;
|
|
},
|
|
O = function(n, t) {
|
|
for (var e = 0, r = n.length; e < r; ++e)
|
|
if (!0 !== t(n[e], e, n)) return !1;
|
|
return !0;
|
|
},
|
|
E = Array.prototype.slice,
|
|
B = {
|
|
map: C,
|
|
each: S,
|
|
eachr: R,
|
|
partition: function(n, t) {
|
|
for (var e = [], r = [], o = 0, i = n.length; o < i; o++) {
|
|
var u = n[o];
|
|
(t(u, o, n) ? e : r).push(u);
|
|
}
|
|
return { pass: e, fail: r };
|
|
},
|
|
filter: T,
|
|
groupBy: function(n, t) {
|
|
if (0 === n.length) return [];
|
|
for (var e = t(n[0]), r = [], o = [], i = 0, u = n.length; i < u; i++) {
|
|
var a = n[i],
|
|
c = t(a);
|
|
c !== e && (r.push(o), (o = [])), (e = c), o.push(a);
|
|
}
|
|
return 0 !== o.length && r.push(o), r;
|
|
},
|
|
indexOf: function(n, t) {
|
|
var e = y(n, t);
|
|
return -1 === e ? w.none() : w.some(e);
|
|
},
|
|
foldr: function(n, t, e) {
|
|
return (
|
|
R(n, function(n) {
|
|
e = t(e, n);
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
foldl: function(n, t, e) {
|
|
return (
|
|
S(n, function(n) {
|
|
e = t(e, n);
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
find: function(n, t) {
|
|
for (var e = 0, r = n.length; e < r; e++) {
|
|
var o = n[e];
|
|
if (t(o, e, n)) return w.some(o);
|
|
}
|
|
return w.none();
|
|
},
|
|
findIndex: D,
|
|
flatten: N,
|
|
bind: function(n, t) {
|
|
var e = C(n, t);
|
|
return N(e);
|
|
},
|
|
forall: O,
|
|
exists: function(n, t) {
|
|
return D(n, t).isSome();
|
|
},
|
|
contains: x,
|
|
equal: function(n, t) {
|
|
return (
|
|
n.length === t.length &&
|
|
O(n, function(n, e) {
|
|
return n === t[e];
|
|
})
|
|
);
|
|
},
|
|
reverse: function(n) {
|
|
var t = E.call(n, 0);
|
|
return t.reverse(), t;
|
|
},
|
|
chunk: function(n, t) {
|
|
for (var e = [], r = 0; r < n.length; r += t) {
|
|
var o = n.slice(r, r + t);
|
|
e.push(o);
|
|
}
|
|
return e;
|
|
},
|
|
difference: function(n, t) {
|
|
return T(n, function(n) {
|
|
return !x(t, n);
|
|
});
|
|
},
|
|
mapToObject: function(n, t) {
|
|
for (var e = {}, r = 0, o = n.length; r < o; r++) {
|
|
var i = n[r];
|
|
e[String(i)] = t(i, r);
|
|
}
|
|
return e;
|
|
},
|
|
pure: function(n) {
|
|
return [n];
|
|
},
|
|
sort: function(n, t) {
|
|
var e = E.call(n, 0);
|
|
return e.sort(t), e;
|
|
},
|
|
range: function(n, t) {
|
|
for (var e = [], r = 0; r < n; r++) e.push(t(r));
|
|
return e;
|
|
},
|
|
head: function(n) {
|
|
return 0 === n.length ? w.none() : w.some(n[0]);
|
|
},
|
|
last: function(n) {
|
|
return 0 === n.length ? w.none() : w.some(n[n.length - 1]);
|
|
}
|
|
},
|
|
I =
|
|
(i = Object.keys) === undefined
|
|
? function(n) {
|
|
var t = [];
|
|
for (var e in n) n.hasOwnProperty(e) && t.push(e);
|
|
return t;
|
|
}
|
|
: i,
|
|
P = function(n, t) {
|
|
for (var e = I(n), r = 0, o = e.length; r < o; r++) {
|
|
var i = e[r];
|
|
t(n[i], i, n);
|
|
}
|
|
},
|
|
W = function(n, t) {
|
|
var e = {};
|
|
return (
|
|
P(n, function(r, o) {
|
|
var i = t(r, o, n);
|
|
e[i.k] = i.v;
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
_ = function(n, t) {
|
|
var e = [];
|
|
return (
|
|
P(n, function(n, r) {
|
|
e.push(t(n, r));
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
M = function(n) {
|
|
return _(n, function(n) {
|
|
return n;
|
|
});
|
|
},
|
|
L = {
|
|
bifilter: function(n, t) {
|
|
var e = {},
|
|
r = {};
|
|
return (
|
|
P(n, function(n, o) {
|
|
(t(n, o) ? e : r)[o] = n;
|
|
}),
|
|
{ t: e, f: r }
|
|
);
|
|
},
|
|
each: P,
|
|
map: function(n, t) {
|
|
return W(n, function(n, e, r) {
|
|
return { k: e, v: t(n, e, r) };
|
|
});
|
|
},
|
|
mapToArray: _,
|
|
tupleMap: W,
|
|
find: function(n, t) {
|
|
for (var e = I(n), r = 0, o = e.length; r < o; r++) {
|
|
var i = e[r],
|
|
u = n[i];
|
|
if (t(u, i, n)) return w.some(u);
|
|
}
|
|
return w.none();
|
|
},
|
|
keys: I,
|
|
values: M,
|
|
size: function(n) {
|
|
return M(n).length;
|
|
}
|
|
},
|
|
q = function(n) {
|
|
return function(t) {
|
|
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;
|
|
})(t) === n
|
|
);
|
|
};
|
|
},
|
|
z = {
|
|
isString: q("string"),
|
|
isObject: q("object"),
|
|
isArray: q("array"),
|
|
isNull: q("null"),
|
|
isBoolean: q("boolean"),
|
|
isUndefined: q("undefined"),
|
|
isFunction: q("function"),
|
|
isNumber: q("number")
|
|
},
|
|
F = function(n) {
|
|
return n.slice(0).sort();
|
|
},
|
|
j = function(n, t) {
|
|
throw new Error(
|
|
"All required keys (" +
|
|
F(n).join(", ") +
|
|
") were not specified. Specified keys were: " +
|
|
F(t).join(", ") +
|
|
"."
|
|
);
|
|
},
|
|
H = function(n) {
|
|
throw new Error("Unsupported keys for object: " + F(n).join(", "));
|
|
},
|
|
V = function(n, t) {
|
|
if (!z.isArray(t))
|
|
throw new Error(
|
|
"The " + n + " fields must be an array. Was: " + t + "."
|
|
);
|
|
B.each(t, function(t) {
|
|
if (!z.isString(t))
|
|
throw new Error(
|
|
"The value " + t + " in the " + n + " fields was not a string."
|
|
);
|
|
});
|
|
},
|
|
U = function(n, t) {
|
|
throw new Error(
|
|
"All values need to be of type: " +
|
|
t +
|
|
". Keys (" +
|
|
F(n).join(", ") +
|
|
") were not."
|
|
);
|
|
},
|
|
G = function(n) {
|
|
var t = F(n);
|
|
B.find(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(", ") +
|
|
"]."
|
|
);
|
|
});
|
|
},
|
|
X = {
|
|
immutable: function() {
|
|
var n = arguments;
|
|
return function() {
|
|
for (var t = new Array(arguments.length), e = 0; e < t.length; e++)
|
|
t[e] = arguments[e];
|
|
if (n.length !== t.length)
|
|
throw new Error(
|
|
'Wrong number of arguments to struct. Expected "[' +
|
|
n.length +
|
|
']", got ' +
|
|
t.length +
|
|
" arguments"
|
|
);
|
|
var r = {};
|
|
return (
|
|
B.each(n, function(n, e) {
|
|
r[n] = m.constant(t[e]);
|
|
}),
|
|
r
|
|
);
|
|
};
|
|
},
|
|
immutableBag: function(n, t) {
|
|
var e = n.concat(t);
|
|
if (0 === e.length)
|
|
throw new Error(
|
|
"You must specify at least one required or optional field."
|
|
);
|
|
return (
|
|
V("required", n),
|
|
V("optional", t),
|
|
G(e),
|
|
function(r) {
|
|
var o = L.keys(r);
|
|
B.forall(n, function(n) {
|
|
return B.contains(o, n);
|
|
}) || j(n, o);
|
|
var i = B.filter(o, function(n) {
|
|
return !B.contains(e, n);
|
|
});
|
|
i.length > 0 && H(i);
|
|
var u = {};
|
|
return (
|
|
B.each(n, function(n) {
|
|
u[n] = m.constant(r[n]);
|
|
}),
|
|
B.each(t, function(n) {
|
|
u[n] = m.constant(
|
|
Object.prototype.hasOwnProperty.call(r, n)
|
|
? w.some(r[n])
|
|
: w.none()
|
|
);
|
|
}),
|
|
u
|
|
);
|
|
}
|
|
);
|
|
}
|
|
},
|
|
Y = X.immutable("width", "height"),
|
|
$ = X.immutable("rows", "columns"),
|
|
K = X.immutable("row", "column"),
|
|
J = X.immutable("x", "y"),
|
|
Q = X.immutable("element", "rowspan", "colspan"),
|
|
Z = X.immutable("element", "rowspan", "colspan", "isNew"),
|
|
nn = {
|
|
dimensions: Y,
|
|
grid: $,
|
|
address: K,
|
|
coords: J,
|
|
extended: X.immutable("element", "rowspan", "colspan", "row", "column"),
|
|
detail: Q,
|
|
detailnew: Z,
|
|
rowdata: X.immutable("element", "cells", "section"),
|
|
elementnew: X.immutable("element", "isNew"),
|
|
rowdatanew: X.immutable("element", "cells", "section", "isNew"),
|
|
rowcells: X.immutable("cells", "section"),
|
|
rowdetails: X.immutable("details", "section"),
|
|
bounds: X.immutable("startRow", "startCol", "finishRow", "finishCol")
|
|
},
|
|
tn = function(n) {
|
|
if (null === n || n === undefined)
|
|
throw new Error("Node cannot be null or undefined");
|
|
return { dom: m.constant(n) };
|
|
},
|
|
en = {
|
|
fromHtml: function(n, t) {
|
|
var e = (t || document).createElement("div");
|
|
if (((e.innerHTML = n), !e.hasChildNodes() || e.childNodes.length > 1))
|
|
throw (console.error("HTML does not have a single root node", n),
|
|
"HTML must have a single root node");
|
|
return tn(e.childNodes[0]);
|
|
},
|
|
fromTag: function(n, t) {
|
|
var e = (t || document).createElement(n);
|
|
return tn(e);
|
|
},
|
|
fromText: function(n, t) {
|
|
var e = (t || document).createTextNode(n);
|
|
return tn(e);
|
|
},
|
|
fromDom: tn,
|
|
fromPoint: function(n, t, e) {
|
|
return w.from(n.dom().elementFromPoint(t, e)).map(tn);
|
|
}
|
|
},
|
|
rn = 8,
|
|
on = 9,
|
|
un = 1,
|
|
an = 3,
|
|
cn = un,
|
|
ln = on,
|
|
sn = function(n) {
|
|
return (
|
|
(n.nodeType !== cn && n.nodeType !== ln) || 0 === n.childElementCount
|
|
);
|
|
},
|
|
fn = {
|
|
all: function(n, t) {
|
|
var e = t === undefined ? document : t.dom();
|
|
return sn(e) ? [] : B.map(e.querySelectorAll(n), en.fromDom);
|
|
},
|
|
is: function(n, t) {
|
|
var e = n.dom();
|
|
if (e.nodeType !== cn) return !1;
|
|
if (e.matches !== undefined) return e.matches(t);
|
|
if (e.msMatchesSelector !== undefined) return e.msMatchesSelector(t);
|
|
if (e.webkitMatchesSelector !== undefined)
|
|
return e.webkitMatchesSelector(t);
|
|
if (e.mozMatchesSelector !== undefined) return e.mozMatchesSelector(t);
|
|
throw new Error("Browser lacks native selectors");
|
|
},
|
|
one: function(n, t) {
|
|
var e = t === undefined ? document : t.dom();
|
|
return sn(e) ? w.none() : w.from(e.querySelector(n)).map(en.fromDom);
|
|
}
|
|
},
|
|
dn = function(n, t) {
|
|
var e = [],
|
|
r = function(n) {
|
|
return e.push(n), t(n);
|
|
},
|
|
o = t(n);
|
|
do {
|
|
o = o.bind(r);
|
|
} while (o.isSome());
|
|
return e;
|
|
},
|
|
mn = "undefined" != typeof window ? window : Function("return this;")(),
|
|
gn = function(n, t) {
|
|
for (
|
|
var e = t !== undefined && null !== t ? t : mn, r = 0;
|
|
r < n.length && e !== undefined && null !== e;
|
|
++r
|
|
)
|
|
e = e[n[r]];
|
|
return e;
|
|
},
|
|
pn = function(n, t) {
|
|
var e = n.split(".");
|
|
return gn(e, t);
|
|
},
|
|
hn = function(n, t) {
|
|
var e = pn(n, t);
|
|
if (e === undefined || null === e)
|
|
throw n + " not available on this browser";
|
|
return e;
|
|
},
|
|
vn = function() {
|
|
return hn("Node");
|
|
},
|
|
bn = function(n, t, e) {
|
|
return 0 != (n.compareDocumentPosition(t) & e);
|
|
},
|
|
wn = function(n, t) {
|
|
return bn(n, t, vn().DOCUMENT_POSITION_CONTAINED_BY);
|
|
},
|
|
yn = function(n) {
|
|
var t,
|
|
e = !1;
|
|
return function() {
|
|
return e || ((e = !0), (t = n.apply(null, arguments))), t;
|
|
};
|
|
},
|
|
xn = function(n, t) {
|
|
var e = (function(n, t) {
|
|
for (var e = 0; e < n.length; e++) {
|
|
var r = n[e];
|
|
if (r.test(t)) return r;
|
|
}
|
|
return undefined;
|
|
})(n, t);
|
|
if (!e) return { major: 0, minor: 0 };
|
|
var r = function(n) {
|
|
return Number(t.replace(e, "$" + n));
|
|
};
|
|
return Sn(r(1), r(2));
|
|
},
|
|
Cn = function() {
|
|
return Sn(0, 0);
|
|
},
|
|
Sn = function(n, t) {
|
|
return { major: n, minor: t };
|
|
},
|
|
Rn = {
|
|
nu: Sn,
|
|
detect: function(n, t) {
|
|
var e = String(t).toLowerCase();
|
|
return 0 === n.length ? Cn() : xn(n, e);
|
|
},
|
|
unknown: Cn
|
|
},
|
|
Tn = "Firefox",
|
|
Dn = function(n, t) {
|
|
return function() {
|
|
return t === n;
|
|
};
|
|
},
|
|
An = function(n) {
|
|
var t = n.current;
|
|
return {
|
|
current: t,
|
|
version: n.version,
|
|
isEdge: Dn("Edge", t),
|
|
isChrome: Dn("Chrome", t),
|
|
isIE: Dn("IE", t),
|
|
isOpera: Dn("Opera", t),
|
|
isFirefox: Dn(Tn, t),
|
|
isSafari: Dn("Safari", t)
|
|
};
|
|
},
|
|
kn = {
|
|
unknown: function() {
|
|
return An({ current: undefined, version: Rn.unknown() });
|
|
},
|
|
nu: An,
|
|
edge: m.constant("Edge"),
|
|
chrome: m.constant("Chrome"),
|
|
ie: m.constant("IE"),
|
|
opera: m.constant("Opera"),
|
|
firefox: m.constant(Tn),
|
|
safari: m.constant("Safari")
|
|
},
|
|
Nn = "Windows",
|
|
On = "Android",
|
|
En = "Solaris",
|
|
Bn = "FreeBSD",
|
|
In = function(n, t) {
|
|
return function() {
|
|
return t === n;
|
|
};
|
|
},
|
|
Pn = function(n) {
|
|
var t = n.current;
|
|
return {
|
|
current: t,
|
|
version: n.version,
|
|
isWindows: In(Nn, t),
|
|
isiOS: In("iOS", t),
|
|
isAndroid: In(On, t),
|
|
isOSX: In("OSX", t),
|
|
isLinux: In("Linux", t),
|
|
isSolaris: In(En, t),
|
|
isFreeBSD: In(Bn, t)
|
|
};
|
|
},
|
|
Wn = {
|
|
unknown: function() {
|
|
return Pn({ current: undefined, version: Rn.unknown() });
|
|
},
|
|
nu: Pn,
|
|
windows: m.constant(Nn),
|
|
ios: m.constant("iOS"),
|
|
android: m.constant(On),
|
|
linux: m.constant("Linux"),
|
|
osx: m.constant("OSX"),
|
|
solaris: m.constant(En),
|
|
freebsd: m.constant(Bn)
|
|
},
|
|
_n = function(n, t) {
|
|
var e = String(t).toLowerCase();
|
|
return B.find(n, function(n) {
|
|
return n.search(e);
|
|
});
|
|
},
|
|
Mn = function(n, t) {
|
|
return _n(n, t).map(function(n) {
|
|
var e = Rn.detect(n.versionRegexes, t);
|
|
return { current: n.name, version: e };
|
|
});
|
|
},
|
|
Ln = function(n, t) {
|
|
return _n(n, t).map(function(n) {
|
|
var e = Rn.detect(n.versionRegexes, t);
|
|
return { current: n.name, version: e };
|
|
});
|
|
},
|
|
qn = function(n, t) {
|
|
return t + n;
|
|
},
|
|
zn = function(n, t) {
|
|
return n + t;
|
|
},
|
|
Fn = function(n, t) {
|
|
return n.substring(t);
|
|
},
|
|
jn = function(n, t) {
|
|
return n.substring(0, n.length - t);
|
|
},
|
|
Hn = function(n) {
|
|
return "" === n ? w.none() : w.some(n.substr(0, 1));
|
|
},
|
|
Vn = function(n) {
|
|
return "" === n ? w.none() : w.some(n.substring(1));
|
|
},
|
|
Un = function(n, t, e) {
|
|
return (
|
|
"" === t || (!(n.length < t.length) && n.substr(e, e + t.length) === t)
|
|
);
|
|
},
|
|
Gn = function(n, t) {
|
|
return Un(n, t, 0);
|
|
},
|
|
Xn = function(n, t) {
|
|
return Un(n, t, n.length - t.length);
|
|
},
|
|
Yn = {
|
|
supplant: function(n, t) {
|
|
return n.replace(/\${([^{}]*)}/g, function(n, e) {
|
|
var r,
|
|
o = t[e];
|
|
return "string" == (r = typeof o) || "number" === r ? o : n;
|
|
});
|
|
},
|
|
startsWith: Gn,
|
|
removeLeading: function(n, t) {
|
|
return Gn(n, t) ? Fn(n, t.length) : n;
|
|
},
|
|
removeTrailing: function(n, t) {
|
|
return Xn(n, t) ? jn(n, t.length) : n;
|
|
},
|
|
ensureLeading: function(n, t) {
|
|
return Gn(n, t) ? n : qn(n, t);
|
|
},
|
|
ensureTrailing: function(n, t) {
|
|
return Xn(n, t) ? n : zn(n, t);
|
|
},
|
|
endsWith: Xn,
|
|
contains: function(n, t) {
|
|
return -1 !== n.indexOf(t);
|
|
},
|
|
trim: function(n) {
|
|
return n.replace(/^\s+|\s+$/g, "");
|
|
},
|
|
lTrim: function(n) {
|
|
return n.replace(/^\s+/g, "");
|
|
},
|
|
rTrim: function(n) {
|
|
return n.replace(/\s+$/g, "");
|
|
},
|
|
capitalize: function(n) {
|
|
return Hn(n)
|
|
.bind(function(t) {
|
|
return Vn(n).map(function(n) {
|
|
return t.toUpperCase() + n;
|
|
});
|
|
})
|
|
.getOr(n);
|
|
}
|
|
},
|
|
$n = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
|
|
Kn = function(n) {
|
|
return function(t) {
|
|
return Yn.contains(t, n);
|
|
};
|
|
},
|
|
Jn = [
|
|
{
|
|
name: "Edge",
|
|
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
|
|
search: function(n) {
|
|
return (
|
|
Yn.contains(n, "edge/") &&
|
|
Yn.contains(n, "chrome") &&
|
|
Yn.contains(n, "safari") &&
|
|
Yn.contains(n, "applewebkit")
|
|
);
|
|
}
|
|
},
|
|
{
|
|
name: "Chrome",
|
|
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, $n],
|
|
search: function(n) {
|
|
return Yn.contains(n, "chrome") && !Yn.contains(n, "chromeframe");
|
|
}
|
|
},
|
|
{
|
|
name: "IE",
|
|
versionRegexes: [
|
|
/.*?msie\ ?([0-9]+)\.([0-9]+).*/,
|
|
/.*?rv:([0-9]+)\.([0-9]+).*/
|
|
],
|
|
search: function(n) {
|
|
return Yn.contains(n, "msie") || Yn.contains(n, "trident");
|
|
}
|
|
},
|
|
{
|
|
name: "Opera",
|
|
versionRegexes: [$n, /.*?opera\/([0-9]+)\.([0-9]+).*/],
|
|
search: Kn("opera")
|
|
},
|
|
{
|
|
name: "Firefox",
|
|
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
|
|
search: Kn("firefox")
|
|
},
|
|
{
|
|
name: "Safari",
|
|
versionRegexes: [$n, /.*?cpu os ([0-9]+)_([0-9]+).*/],
|
|
search: function(n) {
|
|
return (
|
|
(Yn.contains(n, "safari") || Yn.contains(n, "mobile/")) &&
|
|
Yn.contains(n, "applewebkit")
|
|
);
|
|
}
|
|
}
|
|
],
|
|
Qn = [
|
|
{
|
|
name: "Windows",
|
|
search: Kn("win"),
|
|
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
|
|
},
|
|
{
|
|
name: "iOS",
|
|
search: function(n) {
|
|
return Yn.contains(n, "iphone") || Yn.contains(n, "ipad");
|
|
},
|
|
versionRegexes: [
|
|
/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
|
|
/.*cpu os ([0-9]+)_([0-9]+).*/,
|
|
/.*cpu iphone os ([0-9]+)_([0-9]+).*/
|
|
]
|
|
},
|
|
{
|
|
name: "Android",
|
|
search: Kn("android"),
|
|
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
|
|
},
|
|
{
|
|
name: "OSX",
|
|
search: Kn("os x"),
|
|
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
|
|
},
|
|
{ name: "Linux", search: Kn("linux"), versionRegexes: [] },
|
|
{ name: "Solaris", search: Kn("sunos"), versionRegexes: [] },
|
|
{ name: "FreeBSD", search: Kn("freebsd"), versionRegexes: [] }
|
|
],
|
|
Zn = { browsers: m.constant(Jn), oses: m.constant(Qn) },
|
|
nt = function(n) {
|
|
var t,
|
|
e,
|
|
r,
|
|
o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s,
|
|
f,
|
|
d = Zn.browsers(),
|
|
g = Zn.oses(),
|
|
p = Mn(d, n).fold(kn.unknown, kn.nu),
|
|
h = Ln(g, n).fold(Wn.unknown, Wn.nu);
|
|
return {
|
|
browser: p,
|
|
os: h,
|
|
deviceType: ((e = p),
|
|
(r = n),
|
|
(o = (t = h).isiOS() && !0 === /ipad/i.test(r)),
|
|
(i = t.isiOS() && !o),
|
|
(u = t.isAndroid() && 3 === t.version.major),
|
|
(a = t.isAndroid() && 4 === t.version.major),
|
|
(c = o || u || (a && !0 === /mobile/i.test(r))),
|
|
(l = t.isiOS() || t.isAndroid()),
|
|
(s = l && !c),
|
|
(f = e.isSafari() && t.isiOS() && !1 === /safari/i.test(r)),
|
|
{
|
|
isiPad: m.constant(o),
|
|
isiPhone: m.constant(i),
|
|
isTablet: m.constant(c),
|
|
isPhone: m.constant(s),
|
|
isTouch: m.constant(l),
|
|
isAndroid: t.isAndroid,
|
|
isiOS: t.isiOS,
|
|
isWebView: m.constant(f)
|
|
})
|
|
};
|
|
},
|
|
tt = {
|
|
detect: yn(function() {
|
|
var n = navigator.userAgent;
|
|
return nt(n);
|
|
})
|
|
},
|
|
et = function(n, t) {
|
|
return n.dom() === t.dom();
|
|
},
|
|
rt = tt.detect().browser.isIE()
|
|
? function(n, t) {
|
|
return wn(n.dom(), t.dom());
|
|
}
|
|
: function(n, t) {
|
|
var e = n.dom(),
|
|
r = t.dom();
|
|
return e !== r && e.contains(r);
|
|
},
|
|
ot = {
|
|
eq: et,
|
|
isEqualNode: function(n, t) {
|
|
return n.dom().isEqualNode(t.dom());
|
|
},
|
|
member: function(n, t) {
|
|
return B.exists(t, m.curry(et, n));
|
|
},
|
|
contains: rt,
|
|
is: fn.is
|
|
},
|
|
it = function(n) {
|
|
return en.fromDom(n.dom().ownerDocument);
|
|
},
|
|
ut = function(n) {
|
|
var t = n.dom();
|
|
return w.from(t.parentNode).map(en.fromDom);
|
|
},
|
|
at = function(n) {
|
|
var t = n.dom();
|
|
return w.from(t.previousSibling).map(en.fromDom);
|
|
},
|
|
ct = function(n) {
|
|
var t = n.dom();
|
|
return w.from(t.nextSibling).map(en.fromDom);
|
|
},
|
|
lt = function(n) {
|
|
var t = n.dom();
|
|
return B.map(t.childNodes, en.fromDom);
|
|
},
|
|
st = function(n, t) {
|
|
var e = n.dom().childNodes;
|
|
return w.from(e[t]).map(en.fromDom);
|
|
},
|
|
ft = X.immutable("element", "offset"),
|
|
dt = {
|
|
owner: it,
|
|
defaultView: function(n) {
|
|
var t = n.dom().ownerDocument.defaultView;
|
|
return en.fromDom(t);
|
|
},
|
|
documentElement: function(n) {
|
|
var t = it(n);
|
|
return en.fromDom(t.dom().documentElement);
|
|
},
|
|
parent: ut,
|
|
findIndex: function(n) {
|
|
return ut(n).bind(function(t) {
|
|
var e = lt(t);
|
|
return B.findIndex(e, function(t) {
|
|
return ot.eq(n, t);
|
|
});
|
|
});
|
|
},
|
|
parents: function(n, t) {
|
|
for (
|
|
var e = z.isFunction(t) ? t : m.constant(!1), r = n.dom(), o = [];
|
|
null !== r.parentNode && r.parentNode !== undefined;
|
|
|
|
) {
|
|
var i = r.parentNode,
|
|
u = en.fromDom(i);
|
|
if ((o.push(u), !0 === e(u))) break;
|
|
r = i;
|
|
}
|
|
return o;
|
|
},
|
|
siblings: function(n) {
|
|
return ut(n)
|
|
.map(lt)
|
|
.map(function(t) {
|
|
return B.filter(t, function(t) {
|
|
return !ot.eq(n, t);
|
|
});
|
|
})
|
|
.getOr([]);
|
|
},
|
|
prevSibling: at,
|
|
offsetParent: function(n) {
|
|
var t = n.dom();
|
|
return w.from(t.offsetParent).map(en.fromDom);
|
|
},
|
|
prevSiblings: function(n) {
|
|
return B.reverse(dn(n, at));
|
|
},
|
|
nextSibling: ct,
|
|
nextSiblings: function(n) {
|
|
return dn(n, ct);
|
|
},
|
|
children: lt,
|
|
child: st,
|
|
firstChild: function(n) {
|
|
return st(n, 0);
|
|
},
|
|
lastChild: function(n) {
|
|
return st(n, n.dom().childNodes.length - 1);
|
|
},
|
|
childNodesCount: function(n) {
|
|
return n.dom().childNodes.length;
|
|
},
|
|
hasChildNodes: function(n) {
|
|
return n.dom().hasChildNodes();
|
|
},
|
|
leaf: function(n, t) {
|
|
var e = lt(n);
|
|
return e.length > 0 && t < e.length ? ft(e[t], 0) : ft(n, t);
|
|
}
|
|
},
|
|
mt = function(n, t, e) {
|
|
return B.bind(dt.children(n), function(n) {
|
|
return fn.is(n, t) ? (e(n) ? [n] : []) : mt(n, t, e);
|
|
});
|
|
},
|
|
gt = {
|
|
firstLayer: function(n, t) {
|
|
return mt(n, t, m.constant(!0));
|
|
},
|
|
filterFirstLayer: mt
|
|
},
|
|
pt = function(n) {
|
|
return n.dom().nodeName.toLowerCase();
|
|
},
|
|
ht = function(n) {
|
|
return n.dom().nodeType;
|
|
},
|
|
vt = function(n) {
|
|
return function(t) {
|
|
return ht(t) === n;
|
|
};
|
|
},
|
|
bt = vt(un),
|
|
wt = vt(an),
|
|
yt = vt(on),
|
|
xt = {
|
|
name: pt,
|
|
type: ht,
|
|
value: function(n) {
|
|
return n.dom().nodeValue;
|
|
},
|
|
isElement: bt,
|
|
isText: wt,
|
|
isDocument: yt,
|
|
isComment: function(n) {
|
|
return ht(n) === rn || "#comment" === pt(n);
|
|
}
|
|
},
|
|
Ct = function(n, t, e) {
|
|
if (!(z.isString(e) || z.isBoolean(e) || z.isNumber(e)))
|
|
throw (console.error(
|
|
"Invalid call to Attr.set. Key ",
|
|
t,
|
|
":: Value ",
|
|
e,
|
|
":: Element ",
|
|
n
|
|
),
|
|
new Error("Attribute value was not simple"));
|
|
n.setAttribute(t, e + "");
|
|
},
|
|
St = function(n, t, e) {
|
|
Ct(n.dom(), t, e);
|
|
},
|
|
Rt = function(n, t) {
|
|
var e = n.dom().getAttribute(t);
|
|
return null === e ? undefined : e;
|
|
},
|
|
Tt = function(n, t) {
|
|
var e = n.dom();
|
|
return !(!e || !e.hasAttribute) && e.hasAttribute(t);
|
|
},
|
|
Dt = {
|
|
clone: function(n) {
|
|
return B.foldl(
|
|
n.dom().attributes,
|
|
function(n, t) {
|
|
return (n[t.name] = t.value), n;
|
|
},
|
|
{}
|
|
);
|
|
},
|
|
set: St,
|
|
setAll: function(n, t) {
|
|
var e = n.dom();
|
|
L.each(t, function(n, t) {
|
|
Ct(e, t, n);
|
|
});
|
|
},
|
|
get: Rt,
|
|
has: Tt,
|
|
remove: function(n, t) {
|
|
n.dom().removeAttribute(t);
|
|
},
|
|
hasNone: function(n) {
|
|
var t = n.dom().attributes;
|
|
return t === undefined || null === t || 0 === t.length;
|
|
},
|
|
transfer: function(n, t, e) {
|
|
xt.isElement(n) &&
|
|
xt.isElement(t) &&
|
|
B.each(e, function(e) {
|
|
var r, o, i;
|
|
(o = t), Tt((r = n), (i = e)) && !Tt(o, i) && St(o, i, Rt(r, i));
|
|
});
|
|
}
|
|
},
|
|
At = yn(function() {
|
|
return kt(en.fromDom(document));
|
|
}),
|
|
kt = function(n) {
|
|
var t = n.dom().body;
|
|
if (null === t || t === undefined) throw "Body is not available yet";
|
|
return en.fromDom(t);
|
|
},
|
|
Nt = {
|
|
body: At,
|
|
getBody: kt,
|
|
inBody: function(n) {
|
|
var t = xt.isText(n) ? n.dom().parentNode : n.dom();
|
|
return (
|
|
t !== undefined && null !== t && t.ownerDocument.body.contains(t)
|
|
);
|
|
}
|
|
},
|
|
Ot = function(n, t) {
|
|
var e = [];
|
|
return (
|
|
B.each(dt.children(n), function(n) {
|
|
t(n) && (e = e.concat([n])), (e = e.concat(Ot(n, t)));
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
Et = {
|
|
all: function(n) {
|
|
return Ot(Nt.body(), n);
|
|
},
|
|
ancestors: function(n, t, e) {
|
|
return B.filter(dt.parents(n, e), t);
|
|
},
|
|
siblings: function(n, t) {
|
|
return B.filter(dt.siblings(n), t);
|
|
},
|
|
children: function(n, t) {
|
|
return B.filter(dt.children(n), t);
|
|
},
|
|
descendants: Ot
|
|
},
|
|
Bt = {
|
|
all: function(n) {
|
|
return fn.all(n);
|
|
},
|
|
ancestors: function(n, t, e) {
|
|
return Et.ancestors(
|
|
n,
|
|
function(n) {
|
|
return fn.is(n, t);
|
|
},
|
|
e
|
|
);
|
|
},
|
|
siblings: function(n, t) {
|
|
return Et.siblings(n, function(n) {
|
|
return fn.is(n, t);
|
|
});
|
|
},
|
|
children: function(n, t) {
|
|
return Et.children(n, function(n) {
|
|
return fn.is(n, t);
|
|
});
|
|
},
|
|
descendants: function(n, t) {
|
|
return fn.all(t, n);
|
|
}
|
|
},
|
|
It = function(n, t, e, r, o) {
|
|
return n(e, r)
|
|
? w.some(e)
|
|
: z.isFunction(o) && o(e)
|
|
? w.none()
|
|
: t(e, r, o);
|
|
},
|
|
Pt = function(n, t, e) {
|
|
for (
|
|
var r = n.dom(), o = z.isFunction(e) ? e : m.constant(!1);
|
|
r.parentNode;
|
|
|
|
) {
|
|
r = r.parentNode;
|
|
var i = en.fromDom(r);
|
|
if (t(i)) return w.some(i);
|
|
if (o(i)) break;
|
|
}
|
|
return w.none();
|
|
},
|
|
Wt = function(n, t) {
|
|
return B.find(
|
|
n.dom().childNodes,
|
|
m.compose(
|
|
t,
|
|
en.fromDom
|
|
)
|
|
).map(en.fromDom);
|
|
},
|
|
_t = function(n, t) {
|
|
var e = function(n) {
|
|
for (var r = 0; r < n.childNodes.length; r++) {
|
|
if (t(en.fromDom(n.childNodes[r])))
|
|
return w.some(en.fromDom(n.childNodes[r]));
|
|
var o = e(n.childNodes[r]);
|
|
if (o.isSome()) return o;
|
|
}
|
|
return w.none();
|
|
};
|
|
return e(n.dom());
|
|
},
|
|
Mt = {
|
|
first: function(n) {
|
|
return _t(Nt.body(), n);
|
|
},
|
|
ancestor: Pt,
|
|
closest: function(n, t, e) {
|
|
return It(
|
|
function(n) {
|
|
return t(n);
|
|
},
|
|
Pt,
|
|
n,
|
|
t,
|
|
e
|
|
);
|
|
},
|
|
sibling: function(n, t) {
|
|
var e = n.dom();
|
|
return e.parentNode
|
|
? Wt(en.fromDom(e.parentNode), function(e) {
|
|
return !ot.eq(n, e) && t(e);
|
|
})
|
|
: w.none();
|
|
},
|
|
child: Wt,
|
|
descendant: _t
|
|
},
|
|
Lt = function(n, t, e) {
|
|
return Mt.ancestor(
|
|
n,
|
|
function(n) {
|
|
return fn.is(n, t);
|
|
},
|
|
e
|
|
);
|
|
},
|
|
qt = {
|
|
first: function(n) {
|
|
return fn.one(n);
|
|
},
|
|
ancestor: Lt,
|
|
sibling: function(n, t) {
|
|
return Mt.sibling(n, function(n) {
|
|
return fn.is(n, t);
|
|
});
|
|
},
|
|
child: function(n, t) {
|
|
return Mt.child(n, function(n) {
|
|
return fn.is(n, t);
|
|
});
|
|
},
|
|
descendant: function(n, t) {
|
|
return fn.one(t, n);
|
|
},
|
|
closest: function(n, t, e) {
|
|
return It(fn.is, Lt, n, t, e);
|
|
}
|
|
},
|
|
zt = function(n, t, e) {
|
|
var r = e !== undefined ? e : m.constant(!1);
|
|
return r(t)
|
|
? w.none()
|
|
: B.contains(n, xt.name(t))
|
|
? w.some(t)
|
|
: qt.ancestor(t, n.join(","), function(n) {
|
|
return fn.is(n, "table") || r(n);
|
|
});
|
|
},
|
|
Ft = function(n, t) {
|
|
return dt.parent(t).map(function(t) {
|
|
return Bt.children(t, n);
|
|
});
|
|
},
|
|
jt = function(n, t) {
|
|
return zt(["td", "th"], n, t);
|
|
},
|
|
Ht = function(n) {
|
|
return gt.firstLayer(n, "th,td");
|
|
},
|
|
Vt = (m.curry(Ft, "th,td"),
|
|
function(n, t) {
|
|
return qt.closest(n, "table", t);
|
|
}),
|
|
Ut = function(n) {
|
|
return gt.firstLayer(n, "tr");
|
|
},
|
|
Gt = (m.curry(Ft, "tr"),
|
|
function(n) {
|
|
var t = Ut(n);
|
|
return B.map(t, function(n) {
|
|
var t = n,
|
|
e = dt.parent(t).bind(function(n) {
|
|
var t = xt.name(n);
|
|
return "tfoot" === t || "thead" === t || "tbody" === t
|
|
? t
|
|
: "tbody";
|
|
}),
|
|
r = B.map(Ht(n), function(n) {
|
|
var t = Dt.has(n, "rowspan")
|
|
? parseInt(Dt.get(n, "rowspan"), 10)
|
|
: 1,
|
|
e = Dt.has(n, "colspan") ? parseInt(Dt.get(n, "colspan"), 10) : 1;
|
|
return nn.detail(n, t, e);
|
|
});
|
|
return nn.rowdata(t, r, e);
|
|
});
|
|
}),
|
|
Xt = function(n, t) {
|
|
return B.map(n, function(n) {
|
|
var e = B.map(Ht(n), function(n) {
|
|
var t = Dt.has(n, "rowspan") ? parseInt(Dt.get(n, "rowspan"), 10) : 1,
|
|
e = Dt.has(n, "colspan") ? parseInt(Dt.get(n, "colspan"), 10) : 1;
|
|
return nn.detail(n, t, e);
|
|
});
|
|
return nn.rowdata(n, e, t.section());
|
|
});
|
|
},
|
|
Yt = function(n, t) {
|
|
return n + "," + t;
|
|
},
|
|
$t = function(n, t) {
|
|
var e = B.bind(n.all(), function(n) {
|
|
return n.cells();
|
|
});
|
|
return B.filter(e, t);
|
|
},
|
|
Kt = {
|
|
generate: function(n) {
|
|
var t = {},
|
|
e = [],
|
|
r = n.length,
|
|
o = 0;
|
|
B.each(n, function(n, r) {
|
|
var i = [];
|
|
B.each(n.cells(), function(n, e) {
|
|
for (var u = 0; t[Yt(r, u)] !== undefined; ) u++;
|
|
for (
|
|
var a = nn.extended(n.element(), n.rowspan(), n.colspan(), r, u),
|
|
c = 0;
|
|
c < n.colspan();
|
|
c++
|
|
)
|
|
for (var l = 0; l < n.rowspan(); l++) {
|
|
var s = u + c,
|
|
f = Yt(r + l, s);
|
|
(t[f] = a), (o = Math.max(o, s + 1));
|
|
}
|
|
i.push(a);
|
|
}),
|
|
e.push(nn.rowdata(n.element(), i, n.section()));
|
|
});
|
|
var i = nn.grid(r, o);
|
|
return {
|
|
grid: m.constant(i),
|
|
access: m.constant(t),
|
|
all: m.constant(e)
|
|
};
|
|
},
|
|
getAt: function(n, t, e) {
|
|
var r = n.access()[Yt(t, e)];
|
|
return r !== undefined ? w.some(r) : w.none();
|
|
},
|
|
findItem: function(n, t, e) {
|
|
var r = $t(n, function(n) {
|
|
return e(t, n.element());
|
|
});
|
|
return r.length > 0 ? w.some(r[0]) : w.none();
|
|
},
|
|
filterItems: $t,
|
|
justCells: function(n) {
|
|
var t = B.map(n.all(), function(n) {
|
|
return n.cells();
|
|
});
|
|
return B.flatten(t);
|
|
}
|
|
},
|
|
Jt = function(n) {
|
|
return n.style !== undefined;
|
|
},
|
|
Qt = function(n, t, e) {
|
|
if (!z.isString(e))
|
|
throw (console.error(
|
|
"Invalid call to CSS.set. Property ",
|
|
t,
|
|
":: Value ",
|
|
e,
|
|
":: Element ",
|
|
n
|
|
),
|
|
new Error("CSS value must be a string: " + e));
|
|
Jt(n) && n.style.setProperty(t, e);
|
|
},
|
|
Zt = function(n, t) {
|
|
Jt(n) && n.style.removeProperty(t);
|
|
},
|
|
ne = function(n, t, e) {
|
|
var r = n.dom();
|
|
Qt(r, t, e);
|
|
},
|
|
te = function(n, t) {
|
|
return Jt(n) ? n.style.getPropertyValue(t) : "";
|
|
},
|
|
ee = function(n, t) {
|
|
var e = n.dom(),
|
|
r = te(e, t);
|
|
return w.from(r).filter(function(n) {
|
|
return n.length > 0;
|
|
});
|
|
},
|
|
re = {
|
|
copy: function(n, t) {
|
|
var e = n.dom(),
|
|
r = t.dom();
|
|
Jt(e) && Jt(r) && (r.style.cssText = e.style.cssText);
|
|
},
|
|
set: ne,
|
|
preserve: function(n, t) {
|
|
var e = Dt.get(n, "style"),
|
|
r = t(n);
|
|
return (e === undefined ? Dt.remove : Dt.set)(n, "style", e), r;
|
|
},
|
|
setAll: function(n, t) {
|
|
var e = n.dom();
|
|
L.each(t, function(n, t) {
|
|
Qt(e, t, n);
|
|
});
|
|
},
|
|
setOptions: function(n, t) {
|
|
var e = n.dom();
|
|
L.each(t, function(n, t) {
|
|
n.fold(
|
|
function() {
|
|
Zt(e, t);
|
|
},
|
|
function(n) {
|
|
Qt(e, t, n);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
remove: function(n, t) {
|
|
var e = n.dom();
|
|
Zt(e, t),
|
|
Dt.has(n, "style") &&
|
|
"" === Yn.trim(Dt.get(n, "style")) &&
|
|
Dt.remove(n, "style");
|
|
},
|
|
get: function(n, t) {
|
|
var e = n.dom(),
|
|
r = window.getComputedStyle(e).getPropertyValue(t),
|
|
o = "" !== r || Nt.inBody(n) ? r : te(e, t);
|
|
return null === o ? undefined : o;
|
|
},
|
|
getRaw: ee,
|
|
getAllRaw: function(n) {
|
|
var t = {},
|
|
e = n.dom();
|
|
if (Jt(e))
|
|
for (var r = 0; r < e.style.length; r++) {
|
|
var o = e.style.item(r);
|
|
t[o] = e.style[o];
|
|
}
|
|
return t;
|
|
},
|
|
isValidValue: function(n, t, e) {
|
|
var r = en.fromTag(n);
|
|
return ne(r, t, e), ee(r, t).isSome();
|
|
},
|
|
reflow: function(n) {
|
|
return n.dom().offsetWidth;
|
|
},
|
|
transfer: function(n, t, e) {
|
|
xt.isElement(n) &&
|
|
xt.isElement(t) &&
|
|
B.each(e, function(e) {
|
|
var r, o;
|
|
(r = t),
|
|
ee(n, (o = e)).each(function(n) {
|
|
ee(r, o).isNone() && ne(r, o, n);
|
|
});
|
|
});
|
|
}
|
|
},
|
|
oe = function(n, t) {
|
|
dt.parent(n).each(function(e) {
|
|
e.dom().insertBefore(t.dom(), n.dom());
|
|
});
|
|
},
|
|
ie = function(n, t) {
|
|
n.dom().appendChild(t.dom());
|
|
},
|
|
ue = {
|
|
before: oe,
|
|
after: function(n, t) {
|
|
dt.nextSibling(n).fold(
|
|
function() {
|
|
dt.parent(n).each(function(n) {
|
|
ie(n, t);
|
|
});
|
|
},
|
|
function(n) {
|
|
oe(n, t);
|
|
}
|
|
);
|
|
},
|
|
prepend: function(n, t) {
|
|
dt.firstChild(n).fold(
|
|
function() {
|
|
ie(n, t);
|
|
},
|
|
function(e) {
|
|
n.dom().insertBefore(t.dom(), e.dom());
|
|
}
|
|
);
|
|
},
|
|
append: ie,
|
|
appendAt: function(n, t, e) {
|
|
dt.child(n, e).fold(
|
|
function() {
|
|
ie(n, t);
|
|
},
|
|
function(n) {
|
|
oe(n, t);
|
|
}
|
|
);
|
|
},
|
|
wrap: function(n, t) {
|
|
oe(n, t), ie(t, n);
|
|
}
|
|
},
|
|
ae = {
|
|
before: function(n, t) {
|
|
B.each(t, function(t) {
|
|
ue.before(n, t);
|
|
});
|
|
},
|
|
after: function(n, t) {
|
|
B.each(t, function(e, r) {
|
|
var o = 0 === r ? n : t[r - 1];
|
|
ue.after(o, e);
|
|
});
|
|
},
|
|
prepend: function(n, t) {
|
|
B.each(t.slice().reverse(), function(t) {
|
|
ue.prepend(n, t);
|
|
});
|
|
},
|
|
append: function(n, t) {
|
|
B.each(t, function(t) {
|
|
ue.append(n, t);
|
|
});
|
|
}
|
|
},
|
|
ce = function(n) {
|
|
var t = n.dom();
|
|
null !== t.parentNode && t.parentNode.removeChild(t);
|
|
},
|
|
le = {
|
|
empty: function(n) {
|
|
(n.dom().textContent = ""),
|
|
B.each(dt.children(n), function(n) {
|
|
ce(n);
|
|
});
|
|
},
|
|
remove: ce,
|
|
unwrap: function(n) {
|
|
var t = dt.children(n);
|
|
t.length > 0 && ae.before(n, t), ce(n);
|
|
}
|
|
},
|
|
se = X.immutable("minRow", "minCol", "maxRow", "maxCol"),
|
|
fe = function(n, t) {
|
|
var e,
|
|
r,
|
|
o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s,
|
|
f,
|
|
d = function(n) {
|
|
return fn.is(n.element(), t);
|
|
},
|
|
m = Gt(n),
|
|
g = Kt.generate(m),
|
|
p = ((r = d),
|
|
(o = (e = g).grid().columns()),
|
|
(i = e.grid().rows()),
|
|
(u = o),
|
|
(a = 0),
|
|
(c = 0),
|
|
L.each(e.access(), function(n) {
|
|
if (r(n)) {
|
|
var t = n.row(),
|
|
e = t + n.rowspan() - 1,
|
|
o = n.column(),
|
|
l = o + n.colspan() - 1;
|
|
t < i ? (i = t) : e > a && (a = e),
|
|
o < u ? (u = o) : l > c && (c = l);
|
|
}
|
|
}),
|
|
se(i, u, a, c)),
|
|
h = "th:not(" + t + "),td:not(" + t + ")",
|
|
v = gt.filterFirstLayer(n, "th,td", function(n) {
|
|
return fn.is(n, h);
|
|
});
|
|
return (
|
|
B.each(v, le.remove),
|
|
(function(n, t, e, r) {
|
|
for (
|
|
var o, i, u, a = t.grid().columns(), c = t.grid().rows(), l = 0;
|
|
l < c;
|
|
l++
|
|
)
|
|
for (var s = !1, f = 0; f < a; f++)
|
|
l < e.minRow() ||
|
|
l > e.maxRow() ||
|
|
f < e.minCol() ||
|
|
f > e.maxCol() ||
|
|
(Kt.getAt(t, l, f)
|
|
.filter(r)
|
|
.isNone()
|
|
? ((o = s),
|
|
(i = n[l].element()),
|
|
(u = en.fromTag("td")),
|
|
ue.append(u, en.fromTag("br")),
|
|
(o ? ue.append : ue.prepend)(i, u))
|
|
: (s = !0));
|
|
})(m, g, p, d),
|
|
(l = n),
|
|
(s = p),
|
|
(f = B.filter(gt.firstLayer(l, "tr"), function(n) {
|
|
return 0 === n.dom().childElementCount;
|
|
})),
|
|
B.each(f, le.remove),
|
|
(s.minCol() !== s.maxCol() && s.minRow() !== s.maxRow()) ||
|
|
B.each(gt.firstLayer(l, "th,td"), function(n) {
|
|
Dt.remove(n, "rowspan"), Dt.remove(n, "colspan");
|
|
}),
|
|
Dt.remove(l, "width"),
|
|
Dt.remove(l, "height"),
|
|
re.remove(l, "width"),
|
|
re.remove(l, "height"),
|
|
n
|
|
);
|
|
},
|
|
de = function(n, t) {
|
|
return en.fromDom(n.dom().cloneNode(t));
|
|
},
|
|
me = function(n) {
|
|
return de(n, !0);
|
|
},
|
|
ge = function(n, t) {
|
|
var e = en.fromTag(t),
|
|
r = Dt.clone(n);
|
|
return Dt.setAll(e, r), e;
|
|
},
|
|
pe = function(n) {
|
|
return de(n, !1);
|
|
},
|
|
he = me,
|
|
ve = function(n, t) {
|
|
var e = ge(n, t),
|
|
r = dt.children(me(n));
|
|
return ae.append(e, r), e;
|
|
},
|
|
be = ((u = xt.isText),
|
|
(a = "text"),
|
|
(c = function(n) {
|
|
return u(n) ? w.from(n.dom().nodeValue) : w.none();
|
|
}),
|
|
(l = tt.detect().browser),
|
|
{
|
|
get: function(n) {
|
|
if (!u(n))
|
|
throw new Error("Can only get " + a + " value of a " + a + " node");
|
|
return s(n).getOr("");
|
|
},
|
|
getOption: (s =
|
|
l.isIE() && 10 === l.version.major
|
|
? function(n) {
|
|
try {
|
|
return c(n);
|
|
} catch (t) {
|
|
return w.none();
|
|
}
|
|
}
|
|
: c),
|
|
set: function(n, t) {
|
|
if (!u(n))
|
|
throw new Error(
|
|
"Can only set raw " + a + " value of a " + a + " node"
|
|
);
|
|
n.dom().nodeValue = t;
|
|
}
|
|
}),
|
|
we = {
|
|
get: function(n) {
|
|
return be.get(n);
|
|
},
|
|
getOption: function(n) {
|
|
return be.getOption(n);
|
|
},
|
|
set: function(n, t) {
|
|
be.set(n, t);
|
|
}
|
|
},
|
|
ye = function(n) {
|
|
return "img" === xt.name(n)
|
|
? 1
|
|
: we.getOption(n).fold(
|
|
function() {
|
|
return dt.children(n).length;
|
|
},
|
|
function(n) {
|
|
return n.length;
|
|
}
|
|
);
|
|
},
|
|
xe = ["img", "br"],
|
|
Ce = ye,
|
|
Se = function(n) {
|
|
return (
|
|
we
|
|
.getOption(n)
|
|
.filter(function(n) {
|
|
return 0 !== n.trim().length || n.indexOf("\xa0") > -1;
|
|
})
|
|
.isSome() || B.contains(xe, xt.name(n))
|
|
);
|
|
},
|
|
Re = function(n, t) {
|
|
var e = function(n) {
|
|
for (var r = dt.children(n), o = r.length - 1; o >= 0; o--) {
|
|
var i = r[o];
|
|
if (t(i)) return w.some(i);
|
|
var u = e(i);
|
|
if (u.isSome()) return u;
|
|
}
|
|
return w.none();
|
|
};
|
|
return e(n);
|
|
},
|
|
Te = {
|
|
first: function(n) {
|
|
return Mt.descendant(n, Se);
|
|
},
|
|
last: function(n) {
|
|
return Re(n, Se);
|
|
}
|
|
},
|
|
De = function() {
|
|
var n = en.fromTag("td");
|
|
return ue.append(n, en.fromTag("br")), n;
|
|
},
|
|
Ae = function(n, t, e) {
|
|
var r = ve(n, t);
|
|
return (
|
|
L.each(e, function(n, t) {
|
|
null === n ? Dt.remove(r, t) : Dt.set(r, t, n);
|
|
}),
|
|
r
|
|
);
|
|
},
|
|
ke = function(n) {
|
|
return n;
|
|
},
|
|
Ne = function(n) {
|
|
return function() {
|
|
return en.fromTag("tr", n.dom());
|
|
};
|
|
},
|
|
Oe = function(n, t, e) {
|
|
return {
|
|
row: Ne(t),
|
|
cell: function(t) {
|
|
var r,
|
|
o,
|
|
i,
|
|
u = dt.owner(t.element()),
|
|
a = en.fromTag(xt.name(t.element()), u.dom()),
|
|
c = e.getOr([
|
|
"strong",
|
|
"em",
|
|
"b",
|
|
"i",
|
|
"span",
|
|
"font",
|
|
"h1",
|
|
"h2",
|
|
"h3",
|
|
"h4",
|
|
"h5",
|
|
"h6",
|
|
"p",
|
|
"div"
|
|
]),
|
|
l =
|
|
c.length > 0
|
|
? ((r = t.element()),
|
|
(o = a),
|
|
(i = c),
|
|
Te.first(r)
|
|
.map(function(n) {
|
|
var t = i.join(","),
|
|
e = Bt.ancestors(n, t, function(n) {
|
|
return ot.eq(n, r);
|
|
});
|
|
return B.foldr(
|
|
e,
|
|
function(n, t) {
|
|
var e = pe(t);
|
|
return ue.append(n, e), e;
|
|
},
|
|
o
|
|
);
|
|
})
|
|
.getOr(o))
|
|
: a;
|
|
return (
|
|
ue.append(l, en.fromTag("br")),
|
|
re.copy(t.element(), a),
|
|
re.remove(a, "height"),
|
|
1 !== t.colspan() && re.remove(t.element(), "width"),
|
|
n(t.element(), a),
|
|
a
|
|
);
|
|
},
|
|
replace: Ae,
|
|
gap: De
|
|
};
|
|
},
|
|
Ee = function(n) {
|
|
return { row: Ne(n), cell: De, replace: ke, gap: De };
|
|
},
|
|
Be = function(n, t) {
|
|
var e = (t || document).createElement("div");
|
|
return (e.innerHTML = n), dt.children(en.fromDom(e));
|
|
},
|
|
Ie = [
|
|
"body",
|
|
"p",
|
|
"div",
|
|
"article",
|
|
"aside",
|
|
"figcaption",
|
|
"figure",
|
|
"footer",
|
|
"header",
|
|
"nav",
|
|
"section",
|
|
"ol",
|
|
"ul",
|
|
"li",
|
|
"table",
|
|
"thead",
|
|
"tbody",
|
|
"tfoot",
|
|
"caption",
|
|
"tr",
|
|
"td",
|
|
"th",
|
|
"h1",
|
|
"h2",
|
|
"h3",
|
|
"h4",
|
|
"h5",
|
|
"h6",
|
|
"blockquote",
|
|
"pre",
|
|
"address"
|
|
],
|
|
Pe = function() {
|
|
return {
|
|
up: m.constant({
|
|
selector: qt.ancestor,
|
|
closest: qt.closest,
|
|
predicate: Mt.ancestor,
|
|
all: dt.parents
|
|
}),
|
|
down: m.constant({
|
|
selector: Bt.descendants,
|
|
predicate: Et.descendants
|
|
}),
|
|
styles: m.constant({
|
|
get: re.get,
|
|
getRaw: re.getRaw,
|
|
set: re.set,
|
|
remove: re.remove
|
|
}),
|
|
attrs: m.constant({
|
|
get: Dt.get,
|
|
set: Dt.set,
|
|
remove: Dt.remove,
|
|
copyTo: function(n, t) {
|
|
var e = Dt.clone(n);
|
|
Dt.setAll(t, e);
|
|
}
|
|
}),
|
|
insert: m.constant({
|
|
before: ue.before,
|
|
after: ue.after,
|
|
afterAll: ae.after,
|
|
append: ue.append,
|
|
appendAll: ae.append,
|
|
prepend: ue.prepend,
|
|
wrap: ue.wrap
|
|
}),
|
|
remove: m.constant({ unwrap: le.unwrap, remove: le.remove }),
|
|
create: m.constant({
|
|
nu: en.fromTag,
|
|
clone: function(n) {
|
|
return en.fromDom(n.dom().cloneNode(!1));
|
|
},
|
|
text: en.fromText
|
|
}),
|
|
query: m.constant({
|
|
comparePosition: function(n, t) {
|
|
return n.dom().compareDocumentPosition(t.dom());
|
|
},
|
|
prevSibling: dt.prevSibling,
|
|
nextSibling: dt.nextSibling
|
|
}),
|
|
property: m.constant({
|
|
children: dt.children,
|
|
name: xt.name,
|
|
parent: dt.parent,
|
|
isText: xt.isText,
|
|
isComment: xt.isComment,
|
|
isElement: xt.isElement,
|
|
getText: we.get,
|
|
setText: we.set,
|
|
isBoundary: function(n) {
|
|
return (
|
|
!!xt.isElement(n) &&
|
|
("body" === xt.name(n) || B.contains(Ie, xt.name(n)))
|
|
);
|
|
},
|
|
isEmptyTag: function(n) {
|
|
return (
|
|
!!xt.isElement(n) &&
|
|
B.contains(["br", "img", "hr", "input"], xt.name(n))
|
|
);
|
|
}
|
|
}),
|
|
eq: ot.eq,
|
|
is: ot.is
|
|
};
|
|
},
|
|
We = (X.immutable("left", "right"),
|
|
function(n, t, e, r) {
|
|
var o = t(n, e);
|
|
return B.foldr(
|
|
r,
|
|
function(e, r) {
|
|
var o = t(n, r);
|
|
return _e(n, e, o);
|
|
},
|
|
o
|
|
);
|
|
}),
|
|
_e = function(n, t, e) {
|
|
return t.bind(function(t) {
|
|
return e.filter(m.curry(n.eq, t));
|
|
});
|
|
},
|
|
Me = function(n, t, e) {
|
|
return e.length > 0 ? We(n, t, (r = e)[0], r.slice(1)) : w.none();
|
|
var r;
|
|
},
|
|
Le = function(n, t) {
|
|
return m.curry(n.eq, t);
|
|
},
|
|
qe = function(n, t, e, r) {
|
|
var o = r !== undefined ? r : m.constant(!1),
|
|
i = [t].concat(n.up().all(t)),
|
|
u = [e].concat(n.up().all(e)),
|
|
a = function(n) {
|
|
return B.findIndex(n, o).fold(
|
|
function() {
|
|
return n;
|
|
},
|
|
function(t) {
|
|
return n.slice(0, t + 1);
|
|
}
|
|
);
|
|
},
|
|
c = a(i),
|
|
l = a(u),
|
|
s = B.find(c, function(t) {
|
|
return B.exists(l, Le(n, t));
|
|
});
|
|
return {
|
|
firstpath: m.constant(c),
|
|
secondpath: m.constant(l),
|
|
shared: m.constant(s)
|
|
};
|
|
},
|
|
ze = qe,
|
|
Fe = function(n, t, e) {
|
|
return Me(n, t, e);
|
|
},
|
|
je = function(n, t, e, r) {
|
|
return ze(n, t, e, r);
|
|
},
|
|
He = Pe(),
|
|
Ve = function(n, t) {
|
|
return Fe(
|
|
He,
|
|
function(t, e) {
|
|
return n(e);
|
|
},
|
|
t
|
|
);
|
|
},
|
|
Ue = function(n, t, e) {
|
|
return je(He, n, t, e);
|
|
},
|
|
Ge = function(n, t) {
|
|
return (
|
|
t.column() >= n.startCol() &&
|
|
t.column() + t.colspan() - 1 <= n.finishCol() &&
|
|
t.row() >= n.startRow() &&
|
|
t.row() + t.rowspan() - 1 <= n.finishRow()
|
|
);
|
|
},
|
|
Xe = function(n, t) {
|
|
var e = t.column(),
|
|
r = t.column() + t.colspan() - 1,
|
|
o = t.row(),
|
|
i = t.row() + t.rowspan() - 1;
|
|
return (
|
|
e <= n.finishCol() &&
|
|
r >= n.startCol() &&
|
|
o <= n.finishRow() &&
|
|
i >= n.startRow()
|
|
);
|
|
},
|
|
Ye = function(n, t) {
|
|
for (
|
|
var e = !0, r = m.curry(Ge, t), o = t.startRow();
|
|
o <= t.finishRow();
|
|
o++
|
|
)
|
|
for (var i = t.startCol(); i <= t.finishCol(); i++)
|
|
e = e && Kt.getAt(n, o, i).exists(r);
|
|
return e ? w.some(t) : w.none();
|
|
},
|
|
$e = function(n, t, e) {
|
|
var r = Kt.findItem(n, t, ot.eq),
|
|
o = Kt.findItem(n, e, ot.eq);
|
|
return r.bind(function(n) {
|
|
return o.map(function(t) {
|
|
return (
|
|
(e = n),
|
|
(r = t),
|
|
nn.bounds(
|
|
Math.min(e.row(), r.row()),
|
|
Math.min(e.column(), r.column()),
|
|
Math.max(e.row() + e.rowspan() - 1, r.row() + r.rowspan() - 1),
|
|
Math.max(
|
|
e.column() + e.colspan() - 1,
|
|
r.column() + r.colspan() - 1
|
|
)
|
|
)
|
|
);
|
|
var e, r;
|
|
});
|
|
});
|
|
},
|
|
Ke = $e,
|
|
Je = function(n, t, e) {
|
|
return $e(n, t, e).bind(function(t) {
|
|
return Ye(n, t);
|
|
});
|
|
},
|
|
Qe = function(n, t, e, r) {
|
|
return Kt.findItem(n, t, ot.eq).bind(function(t) {
|
|
var o = e > 0 ? t.row() + t.rowspan() - 1 : t.row(),
|
|
i = r > 0 ? t.column() + t.colspan() - 1 : t.column();
|
|
return Kt.getAt(n, o + e, i + r).map(function(n) {
|
|
return n.element();
|
|
});
|
|
});
|
|
},
|
|
Ze = function(n, t, e) {
|
|
return Ke(n, t, e).map(function(t) {
|
|
var e = Kt.filterItems(n, m.curry(Xe, t));
|
|
return B.map(e, function(n) {
|
|
return n.element();
|
|
});
|
|
});
|
|
},
|
|
nr = function(n, t) {
|
|
return Kt.findItem(n, t, function(n, t) {
|
|
return ot.contains(t, n);
|
|
}).bind(function(n) {
|
|
return n.element();
|
|
});
|
|
},
|
|
tr = function(n) {
|
|
var t = Gt(n);
|
|
return Kt.generate(t);
|
|
},
|
|
er = function(n, t, e) {
|
|
return Vt(n).bind(function(r) {
|
|
var o = tr(r);
|
|
return Qe(o, n, t, e);
|
|
});
|
|
},
|
|
rr = function(n, t, e) {
|
|
var r = tr(n);
|
|
return Ze(r, t, e);
|
|
},
|
|
or = function(n, t, e, r, o) {
|
|
var i = tr(n),
|
|
u = ot.eq(n, e) ? t : nr(i, t),
|
|
a = ot.eq(n, o) ? r : nr(i, r);
|
|
return Ze(i, u, a);
|
|
},
|
|
ir = function(n, t, e) {
|
|
var r = tr(n);
|
|
return Je(r, t, e);
|
|
},
|
|
ur = function(n, t) {
|
|
return qt.ancestor(n, "table");
|
|
},
|
|
ar = X.immutableBag(["boxes", "start", "finish"], []),
|
|
cr = function(n, t, e) {
|
|
var r = function(n) {
|
|
return function(t) {
|
|
return e(t) || ot.eq(t, n);
|
|
};
|
|
};
|
|
return ot.eq(n, t)
|
|
? w.some(ar({ boxes: w.some([n]), start: n, finish: t }))
|
|
: ur(n).bind(function(o) {
|
|
return ur(t).bind(function(i) {
|
|
if (ot.eq(o, i))
|
|
return w.some(ar({ boxes: rr(o, n, t), start: n, finish: t }));
|
|
if (ot.contains(o, i)) {
|
|
var u =
|
|
(a = Bt.ancestors(t, "td,th", r(o))).length > 0
|
|
? a[a.length - 1]
|
|
: t;
|
|
return w.some(
|
|
ar({ boxes: or(o, n, o, t, i), start: n, finish: u })
|
|
);
|
|
}
|
|
if (ot.contains(i, o)) {
|
|
var a,
|
|
c =
|
|
(a = Bt.ancestors(n, "td,th", r(i))).length > 0
|
|
? a[a.length - 1]
|
|
: n;
|
|
return w.some(
|
|
ar({ boxes: or(i, n, o, t, i), start: n, finish: c })
|
|
);
|
|
}
|
|
return Ue(n, t)
|
|
.shared()
|
|
.bind(function(u) {
|
|
return qt.closest(u, "table", e).bind(function(e) {
|
|
var u = Bt.ancestors(t, "td,th", r(e)),
|
|
a = u.length > 0 ? u[u.length - 1] : t,
|
|
c = Bt.ancestors(n, "td,th", r(e)),
|
|
l = c.length > 0 ? c[c.length - 1] : n;
|
|
return w.some(
|
|
ar({ boxes: or(e, n, o, t, i), start: l, finish: a })
|
|
);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
},
|
|
lr = cr,
|
|
sr = function(n, t) {
|
|
var e = Bt.descendants(n, t);
|
|
return e.length > 0 ? w.some(e) : w.none();
|
|
},
|
|
fr = function(n, t, e, r, o) {
|
|
return ((i = n),
|
|
(u = o),
|
|
B.find(i, function(n) {
|
|
return fn.is(n, u);
|
|
})).bind(function(n) {
|
|
return er(n, t, e).bind(function(n) {
|
|
return (
|
|
(e = r),
|
|
qt.ancestor((t = n), "table").bind(function(n) {
|
|
return qt.descendant(n, e).bind(function(n) {
|
|
return cr(n, t).bind(function(n) {
|
|
return n.boxes().map(function(t) {
|
|
return {
|
|
boxes: m.constant(t),
|
|
start: m.constant(n.start()),
|
|
finish: m.constant(n.finish())
|
|
};
|
|
});
|
|
});
|
|
});
|
|
})
|
|
);
|
|
var t, e;
|
|
});
|
|
});
|
|
var i, u;
|
|
},
|
|
dr = function(n, t, e) {
|
|
return qt.descendant(n, t).bind(function(t) {
|
|
return qt.descendant(n, e).bind(function(n) {
|
|
return Ve(ur, [t, n]).map(function(e) {
|
|
return {
|
|
first: m.constant(t),
|
|
last: m.constant(n),
|
|
table: m.constant(e)
|
|
};
|
|
});
|
|
});
|
|
});
|
|
},
|
|
mr = function(n, t) {
|
|
return sr(n, t);
|
|
},
|
|
gr = function(n, t, e) {
|
|
return dr(n, t, e).bind(function(t) {
|
|
var e = function(t) {
|
|
return ot.eq(n, t);
|
|
},
|
|
r = qt.ancestor(t.first(), "thead,tfoot,tbody,table", e),
|
|
o = qt.ancestor(t.last(), "thead,tfoot,tbody,table", e);
|
|
return r.bind(function(n) {
|
|
return o.bind(function(e) {
|
|
return ot.eq(n, e) ? ir(t.table(), t.first(), t.last()) : w.none();
|
|
});
|
|
});
|
|
});
|
|
},
|
|
pr = "data-mce-selected",
|
|
hr = "data-mce-first-selected",
|
|
vr = "data-mce-last-selected",
|
|
br = {
|
|
selected: m.constant(pr),
|
|
selectedSelector: m.constant(
|
|
"td[data-mce-selected],th[data-mce-selected]"
|
|
),
|
|
attributeSelector: m.constant("[data-mce-selected]"),
|
|
firstSelected: m.constant(hr),
|
|
firstSelectedSelector: m.constant(
|
|
"td[data-mce-first-selected],th[data-mce-first-selected]"
|
|
),
|
|
lastSelected: m.constant(vr),
|
|
lastSelectedSelector: m.constant(
|
|
"td[data-mce-last-selected],th[data-mce-last-selected]"
|
|
)
|
|
},
|
|
wr = function(n) {
|
|
if (!z.isArray(n)) throw new Error("cases must be an array");
|
|
if (0 === n.length) throw new Error("there must be at least one case");
|
|
var t = [],
|
|
e = {};
|
|
return (
|
|
B.each(n, function(r, o) {
|
|
var i = L.keys(r);
|
|
if (1 !== i.length) throw new Error("one and only one name per case");
|
|
var u = i[0],
|
|
a = r[u];
|
|
if (e[u] !== undefined)
|
|
throw new Error("duplicate key detected:" + u);
|
|
if ("cata" === u)
|
|
throw new Error("cannot have a case named cata (sorry)");
|
|
if (!z.isArray(a)) throw new Error("case arguments must be an array");
|
|
t.push(u),
|
|
(e[u] = function() {
|
|
var e = arguments.length;
|
|
if (e !== a.length)
|
|
throw new Error(
|
|
"Wrong number of arguments to case " +
|
|
u +
|
|
". Expected " +
|
|
a.length +
|
|
" (" +
|
|
a +
|
|
"), got " +
|
|
e
|
|
);
|
|
for (var r = new Array(e), i = 0; i < r.length; i++)
|
|
r[i] = arguments[i];
|
|
return {
|
|
fold: function() {
|
|
if (arguments.length !== n.length)
|
|
throw new Error(
|
|
"Wrong number of arguments to fold. Expected " +
|
|
n.length +
|
|
", got " +
|
|
arguments.length
|
|
);
|
|
return arguments[o].apply(null, r);
|
|
},
|
|
match: function(n) {
|
|
var e = L.keys(n);
|
|
if (t.length !== e.length)
|
|
throw new Error(
|
|
"Wrong number of arguments to match. Expected: " +
|
|
t.join(",") +
|
|
"\nActual: " +
|
|
e.join(",")
|
|
);
|
|
if (
|
|
!B.forall(t, function(n) {
|
|
return B.contains(e, n);
|
|
})
|
|
)
|
|
throw new Error(
|
|
"Not all branches were specified when using match. Specified: " +
|
|
e.join(", ") +
|
|
"\nRequired: " +
|
|
t.join(", ")
|
|
);
|
|
return n[u].apply(null, r);
|
|
},
|
|
log: function(n) {
|
|
console.log(n, {
|
|
constructors: t,
|
|
constructor: u,
|
|
params: r
|
|
});
|
|
}
|
|
};
|
|
});
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
yr = wr([
|
|
{ none: [] },
|
|
{ multiple: ["elements"] },
|
|
{ single: ["selection"] }
|
|
]),
|
|
xr = {
|
|
cata: function(n, t, e, r) {
|
|
return n.fold(t, e, r);
|
|
},
|
|
none: yr.none,
|
|
multiple: yr.multiple,
|
|
single: yr.single
|
|
},
|
|
Cr = function(n, t) {
|
|
return xr.cata(t.get(), m.constant([]), m.identity, m.constant([n]));
|
|
},
|
|
Sr = function(n, t) {
|
|
return xr.cata(
|
|
t.get(),
|
|
w.none,
|
|
function(t, e) {
|
|
return 0 === t.length
|
|
? w.none()
|
|
: gr(n, br.firstSelectedSelector(), br.lastSelectedSelector()).bind(
|
|
function(n) {
|
|
return t.length > 1
|
|
? w.some({ bounds: m.constant(n), cells: m.constant(t) })
|
|
: w.none();
|
|
}
|
|
);
|
|
},
|
|
w.none
|
|
);
|
|
},
|
|
Rr = function(n, t) {
|
|
var e = Cr(n, t);
|
|
return e.length > 0 &&
|
|
B.forall(e, function(n) {
|
|
return (
|
|
(Dt.has(n, "rowspan") && parseInt(Dt.get(n, "rowspan"), 10) > 1) ||
|
|
(Dt.has(n, "colspan") && parseInt(Dt.get(n, "colspan"), 10) > 1)
|
|
);
|
|
})
|
|
? w.some(e)
|
|
: w.none();
|
|
},
|
|
Tr = Cr,
|
|
Dr = function(n) {
|
|
return {
|
|
element: m.constant(n),
|
|
mergable: w.none,
|
|
unmergable: w.none,
|
|
selection: m.constant([n])
|
|
};
|
|
},
|
|
Ar = X.immutable("element", "clipboard", "generators"),
|
|
kr = {
|
|
noMenu: Dr,
|
|
forMenu: function(n, t, e) {
|
|
return {
|
|
element: m.constant(e),
|
|
mergable: m.constant(Sr(t, n)),
|
|
unmergable: m.constant(Rr(e, n)),
|
|
selection: m.constant(Tr(e, n))
|
|
};
|
|
},
|
|
notCell: function(n) {
|
|
return Dr(n);
|
|
},
|
|
paste: Ar,
|
|
pasteRows: function(n, t, e, r, o) {
|
|
return {
|
|
element: m.constant(e),
|
|
mergable: w.none,
|
|
unmergable: w.none,
|
|
selection: m.constant(Tr(e, n)),
|
|
clipboard: m.constant(r),
|
|
generators: m.constant(o)
|
|
};
|
|
}
|
|
},
|
|
Nr = {
|
|
registerEvents: function(n, t, e, r) {
|
|
n.on("BeforeGetContent", function(e) {
|
|
!0 === e.selection &&
|
|
xr.cata(
|
|
t.get(),
|
|
m.noop,
|
|
function(t) {
|
|
var r;
|
|
e.preventDefault(),
|
|
((r = t),
|
|
Vt(r[0])
|
|
.map(he)
|
|
.map(function(n) {
|
|
return [fe(n, br.attributeSelector())];
|
|
})).each(function(t) {
|
|
e.content = B.map(t, function(t) {
|
|
return (
|
|
(e = t), n.selection.serializer.serialize(e.dom(), {})
|
|
);
|
|
var e;
|
|
}).join("");
|
|
});
|
|
},
|
|
m.noop
|
|
);
|
|
}),
|
|
n.on("BeforeSetContent", function(t) {
|
|
!0 === t.selection &&
|
|
!0 === t.paste &&
|
|
w
|
|
.from(n.dom.getParent(n.selection.getStart(), "th,td"))
|
|
.each(function(o) {
|
|
var i = en.fromDom(o);
|
|
Vt(i).bind(function(o) {
|
|
var u = B.filter(Be(t.content), function(n) {
|
|
return "meta" !== xt.name(n);
|
|
});
|
|
if (1 === u.length && "table" === xt.name(u[0])) {
|
|
t.preventDefault();
|
|
var a = en.fromDom(n.getDoc()),
|
|
c = Ee(a),
|
|
l = kr.paste(i, u[0], c);
|
|
e.pasteCells(o, l).each(function(t) {
|
|
n.selection.setRng(t), n.focus(), r.clear(o);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|
|
},
|
|
Or = {
|
|
render: function(n, t, e, r) {
|
|
var o = en.fromTag("table");
|
|
re.setAll(o, { "border-collapse": "collapse", width: "100%" }),
|
|
Dt.set(o, "border", "1");
|
|
var i = en.fromTag("tbody");
|
|
ue.append(o, i);
|
|
for (var u = [], a = 0; a < n; a++) {
|
|
for (var c = en.fromTag("tr"), l = 0; l < t; l++) {
|
|
var s = a < e || l < r ? en.fromTag("th") : en.fromTag("td");
|
|
l < r && Dt.set(s, "scope", "row"),
|
|
a < e && Dt.set(s, "scope", "col"),
|
|
ue.append(s, en.fromTag("br")),
|
|
re.set(s, "width", 100 / t + "%"),
|
|
ue.append(c, s);
|
|
}
|
|
u.push(c);
|
|
}
|
|
return ae.append(i, u), o;
|
|
}
|
|
},
|
|
Er = function(n) {
|
|
return n.dom().innerHTML;
|
|
},
|
|
Br = function(n) {
|
|
var t = en.fromTag("div"),
|
|
e = en.fromDom(n.dom().cloneNode(!0));
|
|
return ue.append(t, e), Er(t);
|
|
},
|
|
Ir = function(n, t) {
|
|
n.selection.select(t.dom(), !0), n.selection.collapse(!0);
|
|
},
|
|
Pr = {
|
|
insert: function(n, t, e) {
|
|
var r,
|
|
o = Or.render(e, t, 0, 0);
|
|
Dt.set(o, "id", "__mce");
|
|
var i,
|
|
u,
|
|
a = Br(o);
|
|
return (
|
|
n.insertContent(a),
|
|
(r = n.dom.get("__mce")),
|
|
n.dom.setAttrib(r, "id", null),
|
|
n.$("tr", r).each(function(t, e) {
|
|
n.fire("newrow", { node: e }),
|
|
n.$("th,td", e).each(function(t, e) {
|
|
n.fire("newcell", { node: e });
|
|
});
|
|
}),
|
|
n.dom.setAttribs(r, n.settings.table_default_attributes || {}),
|
|
n.dom.setStyles(r, n.settings.table_default_styles || {}),
|
|
(i = n),
|
|
(u = en.fromDom(r)),
|
|
qt.descendant(u, "td,th").each(m.curry(Ir, i)),
|
|
r
|
|
);
|
|
}
|
|
},
|
|
Wr = function(n, t) {
|
|
var e = function(e) {
|
|
var r = t(e);
|
|
if (r <= 0 || null === r) {
|
|
var o = re.get(e, n);
|
|
return parseFloat(o) || 0;
|
|
}
|
|
return r;
|
|
},
|
|
r = function(n, t) {
|
|
return B.foldl(
|
|
t,
|
|
function(t, e) {
|
|
var r = re.get(n, e),
|
|
o = r === undefined ? 0 : parseInt(r, 10);
|
|
return isNaN(o) ? t : t + o;
|
|
},
|
|
0
|
|
);
|
|
};
|
|
return {
|
|
set: function(t, e) {
|
|
if (!z.isNumber(e) && !e.match(/^[0-9]+$/))
|
|
throw n +
|
|
".set accepts only positive integer values. Value was " +
|
|
e;
|
|
var r = t.dom();
|
|
Jt(r) && (r.style[n] = e + "px");
|
|
},
|
|
get: e,
|
|
getOuter: e,
|
|
aggregate: r,
|
|
max: function(n, t, e) {
|
|
var o = r(n, e);
|
|
return t > o ? t - o : 0;
|
|
}
|
|
};
|
|
},
|
|
_r = Wr("height", function(n) {
|
|
return Nt.inBody(n)
|
|
? n.dom().getBoundingClientRect().height
|
|
: n.dom().offsetHeight;
|
|
}),
|
|
Mr = function(n) {
|
|
return _r.get(n);
|
|
},
|
|
Lr = function(n) {
|
|
return _r.getOuter(n);
|
|
},
|
|
qr = Wr("width", function(n) {
|
|
return n.dom().offsetWidth;
|
|
}),
|
|
zr = function(n) {
|
|
return qr.get(n);
|
|
},
|
|
Fr = function(n) {
|
|
return qr.getOuter(n);
|
|
},
|
|
jr = tt.detect(),
|
|
Hr = function(n, t, e) {
|
|
return (r = re.get(n, t)), (o = e), (i = parseFloat(r)), isNaN(i) ? o : i;
|
|
var r, o, i;
|
|
},
|
|
Vr = function(n) {
|
|
return jr.browser.isIE() || jr.browser.isEdge()
|
|
? ((e = Hr((t = n), "padding-top", 0)),
|
|
(r = Hr(t, "padding-bottom", 0)),
|
|
(o = Hr(t, "border-top-width", 0)),
|
|
(i = Hr(t, "border-bottom-width", 0)),
|
|
(u = t.dom().getBoundingClientRect().height),
|
|
"border-box" === re.get(t, "box-sizing") ? u : u - e - r - (o + i))
|
|
: Hr(n, "height", Mr(n));
|
|
var t, e, r, o, i, u;
|
|
},
|
|
Ur = /(\d+(\.\d+)?)(\w|%)*/,
|
|
Gr = /(\d+(\.\d+)?)%/,
|
|
Xr = /(\d+(\.\d+)?)px|em/,
|
|
Yr = function(n, t) {
|
|
re.set(n, "height", t + "px");
|
|
},
|
|
$r = function(n, t, e, r) {
|
|
var o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l = parseInt(n, 10);
|
|
return Yn.endsWith(n, "%") && "table" !== xt.name(t)
|
|
? ((i = l),
|
|
(u = e),
|
|
(a = r),
|
|
(c = Vt((o = t))
|
|
.map(function(n) {
|
|
var t = u(n);
|
|
return Math.floor((i / 100) * t);
|
|
})
|
|
.getOr(i)),
|
|
a(o, c),
|
|
c)
|
|
: l;
|
|
},
|
|
Kr = function(n) {
|
|
var t,
|
|
e = re.getRaw((t = n), "height").getOrThunk(function() {
|
|
return Vr(t) + "px";
|
|
});
|
|
return e ? $r(e, n, Mr, Yr) : Mr(n);
|
|
},
|
|
Jr = function(n, t) {
|
|
return Dt.has(n, t) ? parseInt(Dt.get(n, t), 10) : 1;
|
|
},
|
|
Qr = function(n) {
|
|
return re.getRaw(n, "width").fold(
|
|
function() {
|
|
return w.from(Dt.get(n, "width"));
|
|
},
|
|
function(n) {
|
|
return w.some(n);
|
|
}
|
|
);
|
|
},
|
|
Zr = function(n, t) {
|
|
return (n / t.pixelWidth()) * 100;
|
|
},
|
|
no = {
|
|
percentageBasedSizeRegex: m.constant(Gr),
|
|
pixelBasedSizeRegex: m.constant(Xr),
|
|
setPixelWidth: function(n, t) {
|
|
re.set(n, "width", t + "px");
|
|
},
|
|
setPercentageWidth: function(n, t) {
|
|
re.set(n, "width", t + "%");
|
|
},
|
|
setHeight: Yr,
|
|
getPixelWidth: function(n, t) {
|
|
return Qr(n).fold(
|
|
function() {
|
|
var t = zr(n);
|
|
return parseInt(t, 10);
|
|
},
|
|
function(e) {
|
|
return (function(n, t, e) {
|
|
if (Xr.test(t)) {
|
|
var r = Xr.exec(t);
|
|
return parseInt(r[1], 10);
|
|
}
|
|
if (Gr.test(t)) {
|
|
var o = Gr.exec(t),
|
|
i = parseFloat(o[1]);
|
|
return (i / 100) * e.pixelWidth();
|
|
}
|
|
var u = zr(n);
|
|
return parseInt(u, 10);
|
|
})(n, e, t);
|
|
}
|
|
);
|
|
},
|
|
getPercentageWidth: function(n, t) {
|
|
return Qr(n).fold(
|
|
function() {
|
|
var e = zr(n),
|
|
r = parseInt(e, 10);
|
|
return Zr(r, t);
|
|
},
|
|
function(e) {
|
|
return (function(n, t, e) {
|
|
if (Gr.test(t)) {
|
|
var r = Gr.exec(t);
|
|
return parseFloat(r[1]);
|
|
}
|
|
var o = zr(n),
|
|
i = parseInt(o, 10);
|
|
return Zr(i, e);
|
|
})(n, e, t);
|
|
}
|
|
);
|
|
},
|
|
getGenericWidth: function(n) {
|
|
return Qr(n).bind(function(n) {
|
|
if (Ur.test(n)) {
|
|
var t = Ur.exec(n);
|
|
return w.some({ width: m.constant(t[1]), unit: m.constant(t[3]) });
|
|
}
|
|
return w.none();
|
|
});
|
|
},
|
|
setGenericWidth: function(n, t, e) {
|
|
re.set(n, "width", t + e);
|
|
},
|
|
getHeight: function(n) {
|
|
return (e = "rowspan"), Kr((t = n)) / Jr(t, e);
|
|
var t, e;
|
|
},
|
|
getRawWidth: Qr
|
|
},
|
|
to = function(n, t) {
|
|
no.getGenericWidth(n).each(function(e) {
|
|
var r = e.width() / 2;
|
|
no.setGenericWidth(n, r, e.unit()), no.setGenericWidth(t, r, e.unit());
|
|
});
|
|
},
|
|
eo = function(n, t) {
|
|
var e = t || en.fromDom(document.documentElement);
|
|
return Mt.ancestor(n, m.curry(ot.eq, e)).isSome();
|
|
},
|
|
ro = function(n) {
|
|
var t = n.dom();
|
|
return t === t.window
|
|
? n
|
|
: xt.isDocument(n)
|
|
? t.defaultView || t.parentWindow
|
|
: null;
|
|
},
|
|
oo = function(n, t) {
|
|
return {
|
|
left: m.constant(n),
|
|
top: m.constant(t),
|
|
translate: function(e, r) {
|
|
return oo(n + e, t + r);
|
|
}
|
|
};
|
|
},
|
|
io = function(n, t) {
|
|
return n !== undefined ? n : t !== undefined ? t : 0;
|
|
},
|
|
uo = function(n) {
|
|
var t,
|
|
e = n.dom(),
|
|
r = e.ownerDocument,
|
|
o = r.body,
|
|
i = en.fromDom(r.documentElement);
|
|
return o === e
|
|
? oo(o.offsetLeft, o.offsetTop)
|
|
: eo(n, i)
|
|
? ((t = e.getBoundingClientRect()), oo(t.left, t.top))
|
|
: oo(0, 0);
|
|
},
|
|
ao = function(n) {
|
|
var t = n.dom().ownerDocument,
|
|
e = t.body,
|
|
r = ro(en.fromDom(t)),
|
|
o = t.documentElement,
|
|
i = io(r.pageYOffset, o.scrollTop),
|
|
u = io(r.pageXOffset, o.scrollLeft),
|
|
a = io(o.clientTop, e.clientTop),
|
|
c = io(o.clientLeft, e.clientLeft);
|
|
return uo(n).translate(u - c, i - a);
|
|
},
|
|
co = X.immutable("row", "y"),
|
|
lo = X.immutable("col", "x"),
|
|
so = function(n) {
|
|
return ao(n).left() + Fr(n);
|
|
},
|
|
fo = function(n) {
|
|
return ao(n).left();
|
|
},
|
|
mo = function(n, t) {
|
|
return lo(n, fo(t));
|
|
},
|
|
go = function(n, t) {
|
|
return lo(n, so(t));
|
|
},
|
|
po = function(n) {
|
|
return ao(n).top();
|
|
},
|
|
ho = function(n, t, e) {
|
|
if (0 === e.length) return [];
|
|
var r = B.map(e.slice(1), function(t, e) {
|
|
return t.map(function(t) {
|
|
return n(e, t);
|
|
});
|
|
}),
|
|
o = e[e.length - 1].map(function(n) {
|
|
return t(e.length - 1, n);
|
|
});
|
|
return r.concat([o]);
|
|
},
|
|
vo = {
|
|
delta: m.identity,
|
|
positions: m.curry(
|
|
ho,
|
|
function(n, t) {
|
|
return co(n, po(t));
|
|
},
|
|
function(n, t) {
|
|
return co(n, po(t) + Lr(t));
|
|
}
|
|
),
|
|
edge: po
|
|
},
|
|
bo = { delta: m.identity, edge: fo, positions: m.curry(ho, mo, go) },
|
|
wo = {
|
|
height: vo,
|
|
rtl: {
|
|
delta: function(n, t) {
|
|
return -n;
|
|
},
|
|
edge: so,
|
|
positions: m.curry(ho, go, mo)
|
|
},
|
|
ltr: bo
|
|
},
|
|
yo = { ltr: wo.ltr, rtl: wo.rtl },
|
|
xo = function(n) {
|
|
var t = function(t) {
|
|
return n(t).isRtl() ? yo.rtl : yo.ltr;
|
|
};
|
|
return {
|
|
delta: function(n, e) {
|
|
return t(e).delta(n, e);
|
|
},
|
|
edge: function(n) {
|
|
return t(n).edge(n);
|
|
},
|
|
positions: function(n, e) {
|
|
return t(e).positions(n, e);
|
|
}
|
|
};
|
|
},
|
|
Co = function(n) {
|
|
var t = Gt(n);
|
|
return Kt.generate(t).grid();
|
|
},
|
|
So = function(n) {
|
|
var t = n,
|
|
e = function() {
|
|
return t;
|
|
};
|
|
return {
|
|
get: e,
|
|
set: function(n) {
|
|
t = n;
|
|
},
|
|
clone: function() {
|
|
return So(e());
|
|
}
|
|
};
|
|
},
|
|
Ro = function(n, t) {
|
|
return To(n, t, { validate: z.isFunction, label: "function" });
|
|
},
|
|
To = function(n, t, e) {
|
|
if (0 === t.length)
|
|
throw new Error("You must specify at least one required field.");
|
|
return (
|
|
V("required", t),
|
|
G(t),
|
|
function(r) {
|
|
var o = L.keys(r);
|
|
B.forall(t, function(n) {
|
|
return B.contains(o, n);
|
|
}) || j(t, o),
|
|
n(t, o);
|
|
var i = B.filter(t, function(n) {
|
|
return !e.validate(r[n], n);
|
|
});
|
|
return i.length > 0 && U(i, e.label), r;
|
|
}
|
|
);
|
|
},
|
|
Do = m.noop,
|
|
Ao = {
|
|
exactly: m.curry(Ro, function(n, t) {
|
|
var e = B.filter(t, function(t) {
|
|
return !B.contains(n, t);
|
|
});
|
|
e.length > 0 && H(e);
|
|
}),
|
|
ensure: m.curry(Ro, Do),
|
|
ensureWith: m.curry(To, Do)
|
|
},
|
|
ko = function(n) {
|
|
var t = Dt.has(n, "colspan") ? parseInt(Dt.get(n, "colspan"), 10) : 1,
|
|
e = Dt.has(n, "rowspan") ? parseInt(Dt.get(n, "rowspan"), 10) : 1;
|
|
return {
|
|
element: m.constant(n),
|
|
colspan: m.constant(t),
|
|
rowspan: m.constant(e)
|
|
};
|
|
},
|
|
No = Ao.exactly(["cell", "row", "replace", "gap"]),
|
|
Oo = function(n, t) {
|
|
No(n);
|
|
var e = So(w.none()),
|
|
r = t !== undefined ? t : ko,
|
|
o = function(t) {
|
|
var e,
|
|
o = r(t);
|
|
return (e = o), n.cell(e);
|
|
},
|
|
i = function(n) {
|
|
var t = o(n);
|
|
return (
|
|
e.get().isNone() && e.set(w.some(t)),
|
|
(u = w.some({ item: n, replacement: t })),
|
|
t
|
|
);
|
|
},
|
|
u = w.none();
|
|
return {
|
|
getOrInit: function(n, t) {
|
|
return u.fold(
|
|
function() {
|
|
return i(n);
|
|
},
|
|
function(e) {
|
|
return t(n, e.item) ? e.replacement : i(n);
|
|
}
|
|
);
|
|
},
|
|
cursor: e.get
|
|
};
|
|
},
|
|
Eo = function(n, t) {
|
|
return function(e) {
|
|
var r = So(w.none());
|
|
No(e);
|
|
var o = [],
|
|
i = function(i) {
|
|
var u = e.replace(i, t, { scope: n });
|
|
return (
|
|
o.push({ item: i, sub: u }),
|
|
r.get().isNone() && r.set(w.some(u)),
|
|
u
|
|
);
|
|
};
|
|
return {
|
|
replaceOrInit: function(n, t) {
|
|
return ((e = n),
|
|
(r = t),
|
|
B.find(o, function(n) {
|
|
return r(n.item, e);
|
|
})).fold(
|
|
function() {
|
|
return i(n);
|
|
},
|
|
function(e) {
|
|
return t(n, e.item) ? e.sub : i(n);
|
|
}
|
|
);
|
|
var e, r;
|
|
},
|
|
cursor: r.get
|
|
};
|
|
};
|
|
},
|
|
Bo = function(n) {
|
|
No(n);
|
|
var t = So(w.none());
|
|
return {
|
|
combine: function(e) {
|
|
return (
|
|
t.get().isNone() && t.set(w.some(e)),
|
|
function() {
|
|
var t = n.cell({
|
|
element: m.constant(e),
|
|
colspan: m.constant(1),
|
|
rowspan: m.constant(1)
|
|
});
|
|
return re.remove(t, "width"), re.remove(e, "width"), t;
|
|
}
|
|
);
|
|
},
|
|
cursor: t.get
|
|
};
|
|
},
|
|
Io = [
|
|
"body",
|
|
"p",
|
|
"div",
|
|
"article",
|
|
"aside",
|
|
"figcaption",
|
|
"figure",
|
|
"footer",
|
|
"header",
|
|
"nav",
|
|
"section",
|
|
"ol",
|
|
"ul",
|
|
"table",
|
|
"thead",
|
|
"tfoot",
|
|
"tbody",
|
|
"caption",
|
|
"tr",
|
|
"td",
|
|
"th",
|
|
"h1",
|
|
"h2",
|
|
"h3",
|
|
"h4",
|
|
"h5",
|
|
"h6",
|
|
"blockquote",
|
|
"pre",
|
|
"address"
|
|
],
|
|
Po = function(n, t) {
|
|
var e = n.property().name(t);
|
|
return B.contains(Io, e);
|
|
},
|
|
Wo = function(n, t) {
|
|
return B.contains(["br", "img", "hr", "input"], n.property().name(t));
|
|
},
|
|
_o = Po,
|
|
Mo = function(n, t) {
|
|
var e = n.property().name(t);
|
|
return B.contains(["ol", "ul"], e);
|
|
},
|
|
Lo = Wo,
|
|
qo = Pe(),
|
|
zo = function(n) {
|
|
return _o(qo, n);
|
|
},
|
|
Fo = function(n) {
|
|
return Mo(qo, n);
|
|
},
|
|
jo = function(n) {
|
|
return Lo(qo, n);
|
|
},
|
|
Ho = function(n) {
|
|
var t,
|
|
e = function(n) {
|
|
return "br" === xt.name(n);
|
|
},
|
|
r = function(n) {
|
|
return Te.last(n)
|
|
.bind(function(t) {
|
|
var r,
|
|
o = ((r = t),
|
|
dt
|
|
.nextSibling(r)
|
|
.map(function(n) {
|
|
return !!zo(n) || (jo(n) ? "img" !== xt.name(n) : void 0);
|
|
})
|
|
.getOr(!1));
|
|
return dt.parent(t).map(function(r) {
|
|
return !0 === o ||
|
|
((i = r),
|
|
"li" === xt.name(i) || Mt.ancestor(i, Fo).isSome()) ||
|
|
e(t) ||
|
|
(zo(r) && !ot.eq(n, r))
|
|
? []
|
|
: [en.fromTag("br")];
|
|
var i;
|
|
});
|
|
})
|
|
.getOr([]);
|
|
},
|
|
o =
|
|
0 ===
|
|
(t = B.bind(n, function(n) {
|
|
var t,
|
|
o = dt.children(n);
|
|
return (
|
|
(t = o),
|
|
B.forall(t, function(n) {
|
|
return e(n) || (xt.isText(n) && 0 === we.get(n).trim().length);
|
|
})
|
|
? []
|
|
: o.concat(r(n))
|
|
);
|
|
})).length
|
|
? [en.fromTag("br")]
|
|
: t;
|
|
le.empty(n[0]), ae.append(n[0], o);
|
|
},
|
|
Vo = function(n) {
|
|
return function() {
|
|
for (var t = new Array(arguments.length), e = 0; e < t.length; e++)
|
|
t[e] = arguments[e];
|
|
if (0 === t.length) throw new Error("Can't merge zero objects");
|
|
for (var r = {}, o = 0; o < t.length; o++) {
|
|
var i = t[o];
|
|
for (var u in i) i.hasOwnProperty(u) && (r[u] = n(r[u], i[u]));
|
|
}
|
|
return r;
|
|
};
|
|
},
|
|
Uo = Vo(function(n, t) {
|
|
return z.isObject(n) && z.isObject(t) ? Uo(n, t) : t;
|
|
}),
|
|
Go = Vo(function(n, t) {
|
|
return t;
|
|
}),
|
|
Xo = { deepMerge: Uo, merge: Go },
|
|
Yo = function(n) {
|
|
for (
|
|
var t = [],
|
|
e = function(n) {
|
|
t.push(n);
|
|
},
|
|
r = 0;
|
|
r < n.length;
|
|
r++
|
|
)
|
|
n[r].each(e);
|
|
return t;
|
|
},
|
|
$o = function(n, t) {
|
|
for (var e = 0; e < n.length; e++) {
|
|
var r = t(n[e], e);
|
|
if (r.isSome()) return r;
|
|
}
|
|
return w.none();
|
|
},
|
|
Ko = function(n, t) {
|
|
return nn.rowcells(t, n.section());
|
|
},
|
|
Jo = function(n, t) {
|
|
return n.cells()[t];
|
|
},
|
|
Qo = {
|
|
addCell: function(n, t, e) {
|
|
var r = n.cells(),
|
|
o = r.slice(0, t),
|
|
i = r.slice(t),
|
|
u = o.concat([e]).concat(i);
|
|
return Ko(n, u);
|
|
},
|
|
setCells: Ko,
|
|
mutateCell: function(n, t, e) {
|
|
n.cells()[t] = e;
|
|
},
|
|
getCell: Jo,
|
|
getCellElement: function(n, t) {
|
|
return Jo(n, t).element();
|
|
},
|
|
mapCells: function(n, t) {
|
|
var e = n.cells(),
|
|
r = B.map(e, t);
|
|
return nn.rowcells(r, n.section());
|
|
},
|
|
cellLength: function(n) {
|
|
return n.cells().length;
|
|
}
|
|
},
|
|
Zo = function(n, t) {
|
|
if (0 === n.length) return 0;
|
|
var e = n[0];
|
|
return B.findIndex(n, function(n) {
|
|
return !t(e.element(), n.element());
|
|
}).fold(
|
|
function() {
|
|
return n.length;
|
|
},
|
|
function(n) {
|
|
return n;
|
|
}
|
|
);
|
|
},
|
|
ni = function(n, t, e, r) {
|
|
var o,
|
|
i,
|
|
u,
|
|
a,
|
|
c = ((o = n), (i = t), o[i]).cells().slice(e),
|
|
l = Zo(c, r),
|
|
s = ((u = n),
|
|
(a = e),
|
|
B.map(u, function(n) {
|
|
return Qo.getCell(n, a);
|
|
})).slice(t),
|
|
f = Zo(s, r);
|
|
return { colspan: m.constant(l), rowspan: m.constant(f) };
|
|
},
|
|
ti = function(n, t) {
|
|
var e = B.map(n, function(n, t) {
|
|
return B.map(n.cells(), function(n, t) {
|
|
return !1;
|
|
});
|
|
});
|
|
return B.map(n, function(r, o) {
|
|
var i = B.bind(r.cells(), function(r, i) {
|
|
if (!1 === e[o][i]) {
|
|
var u = ni(n, o, i, t);
|
|
return (
|
|
(function(n, t, r, o) {
|
|
for (var i = n; i < n + r; i++)
|
|
for (var u = t; u < t + o; u++) e[i][u] = !0;
|
|
})(o, i, u.rowspan(), u.colspan()),
|
|
[nn.detailnew(r.element(), u.rowspan(), u.colspan(), r.isNew())]
|
|
);
|
|
}
|
|
return [];
|
|
});
|
|
return nn.rowdetails(i, r.section());
|
|
});
|
|
},
|
|
ei = function(n, t, e) {
|
|
for (var r = [], o = 0; o < n.grid().rows(); o++) {
|
|
for (var i = [], u = 0; u < n.grid().columns(); u++) {
|
|
var a = Kt.getAt(n, o, u)
|
|
.map(function(n) {
|
|
return nn.elementnew(n.element(), e);
|
|
})
|
|
.getOrThunk(function() {
|
|
return nn.elementnew(t.gap(), !0);
|
|
});
|
|
i.push(a);
|
|
}
|
|
var c = nn.rowcells(i, n.all()[o].section());
|
|
r.push(c);
|
|
}
|
|
return r;
|
|
},
|
|
ri = function(n, t, e, r) {
|
|
e === r ? Dt.remove(n, t) : Dt.set(n, t, e);
|
|
},
|
|
oi = function(n, t) {
|
|
var e = [],
|
|
r = [],
|
|
o = function(t, o) {
|
|
t.length > 0
|
|
? (function(t, o) {
|
|
var i = qt.child(n, o).getOrThunk(function() {
|
|
var t = en.fromTag(o, dt.owner(n).dom());
|
|
return ue.append(n, t), t;
|
|
});
|
|
le.empty(i);
|
|
var u = B.map(t, function(n) {
|
|
n.isNew() && e.push(n.element());
|
|
var t = n.element();
|
|
return (
|
|
le.empty(t),
|
|
B.each(n.cells(), function(n) {
|
|
n.isNew() && r.push(n.element()),
|
|
ri(n.element(), "colspan", n.colspan(), 1),
|
|
ri(n.element(), "rowspan", n.rowspan(), 1),
|
|
ue.append(t, n.element());
|
|
}),
|
|
t
|
|
);
|
|
});
|
|
ae.append(i, u);
|
|
})(t, o)
|
|
: qt.child(n, o).bind(le.remove);
|
|
},
|
|
i = [],
|
|
u = [],
|
|
a = [];
|
|
return (
|
|
B.each(t, function(n) {
|
|
switch (n.section()) {
|
|
case "thead":
|
|
i.push(n);
|
|
break;
|
|
case "tbody":
|
|
u.push(n);
|
|
break;
|
|
case "tfoot":
|
|
a.push(n);
|
|
}
|
|
}),
|
|
o(i, "thead"),
|
|
o(u, "tbody"),
|
|
o(a, "tfoot"),
|
|
{ newRows: m.constant(e), newCells: m.constant(r) }
|
|
);
|
|
},
|
|
ii = function(n) {
|
|
return B.map(n, function(n) {
|
|
var t = pe(n.element());
|
|
return (
|
|
B.each(n.cells(), function(n) {
|
|
var e = he(n.element());
|
|
ri(e, "colspan", n.colspan(), 1),
|
|
ri(e, "rowspan", n.rowspan(), 1),
|
|
ue.append(t, e);
|
|
}),
|
|
t
|
|
);
|
|
});
|
|
},
|
|
ui = function(n, t) {
|
|
for (var e = [], r = 0; r < n; r++) e.push(t(r));
|
|
return e;
|
|
},
|
|
ai = function(n, t) {
|
|
for (var e = [], r = n; r < t; r++) e.push(r);
|
|
return e;
|
|
},
|
|
ci = function(n, t) {
|
|
if (t < 0 || t >= n.length - 1) return w.none();
|
|
var e = n[t].fold(
|
|
function() {
|
|
var e = B.reverse(n.slice(0, t));
|
|
return $o(e, function(n, t) {
|
|
return n.map(function(n) {
|
|
return { value: n, delta: t + 1 };
|
|
});
|
|
});
|
|
},
|
|
function(n) {
|
|
return w.some({ value: n, delta: 0 });
|
|
}
|
|
),
|
|
r = n[t + 1].fold(
|
|
function() {
|
|
var e = n.slice(t + 1);
|
|
return $o(e, function(n, t) {
|
|
return n.map(function(n) {
|
|
return { value: n, delta: t + 1 };
|
|
});
|
|
});
|
|
},
|
|
function(n) {
|
|
return w.some({ value: n, delta: 1 });
|
|
}
|
|
);
|
|
return e.bind(function(n) {
|
|
return r.map(function(t) {
|
|
var e = t.delta + n.delta;
|
|
return Math.abs(t.value - n.value) / e;
|
|
});
|
|
});
|
|
},
|
|
li = function(n, t, e) {
|
|
var r = n();
|
|
return B.find(r, t)
|
|
.orThunk(function() {
|
|
return w.from(r[0]).orThunk(e);
|
|
})
|
|
.map(function(n) {
|
|
return n.element();
|
|
});
|
|
},
|
|
si = function(n) {
|
|
var t = n.grid(),
|
|
e = ai(0, t.columns()),
|
|
r = ai(0, t.rows());
|
|
return B.map(e, function(t) {
|
|
return li(
|
|
function() {
|
|
return B.bind(r, function(e) {
|
|
return Kt.getAt(n, e, t)
|
|
.filter(function(n) {
|
|
return n.column() === t;
|
|
})
|
|
.fold(m.constant([]), function(n) {
|
|
return [n];
|
|
});
|
|
});
|
|
},
|
|
function(n) {
|
|
return 1 === n.colspan();
|
|
},
|
|
function() {
|
|
return Kt.getAt(n, 0, t);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
fi = function(n) {
|
|
var t = n.grid(),
|
|
e = ai(0, t.rows()),
|
|
r = ai(0, t.columns());
|
|
return B.map(e, function(t) {
|
|
return li(
|
|
function() {
|
|
return B.bind(r, function(e) {
|
|
return Kt.getAt(n, t, e)
|
|
.filter(function(n) {
|
|
return n.row() === t;
|
|
})
|
|
.fold(m.constant([]), function(n) {
|
|
return [n];
|
|
});
|
|
});
|
|
},
|
|
function(n) {
|
|
return 1 === n.rowspan();
|
|
},
|
|
function() {
|
|
return Kt.getAt(n, t, 0);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
di = function(n, t, e, r, o) {
|
|
var i = en.fromTag("div");
|
|
return (
|
|
re.setAll(i, {
|
|
position: "absolute",
|
|
left: t - r / 2 + "px",
|
|
top: e + "px",
|
|
height: o + "px",
|
|
width: r + "px"
|
|
}),
|
|
Dt.setAll(i, { "data-column": n, role: "presentation" }),
|
|
i
|
|
);
|
|
},
|
|
mi = function(n, t, e, r, o) {
|
|
var i = en.fromTag("div");
|
|
return (
|
|
re.setAll(i, {
|
|
position: "absolute",
|
|
left: t + "px",
|
|
top: e - o / 2 + "px",
|
|
height: o + "px",
|
|
width: r + "px"
|
|
}),
|
|
Dt.setAll(i, { "data-row": n, role: "presentation" }),
|
|
i
|
|
);
|
|
},
|
|
gi = function(n) {
|
|
var t = n.replace(/\./g, "-");
|
|
return {
|
|
resolve: function(n) {
|
|
return t + "-" + n;
|
|
}
|
|
};
|
|
},
|
|
pi = { resolve: gi("ephox-snooker").resolve },
|
|
hi = function(n, t) {
|
|
var e = Dt.get(n, t);
|
|
return e === undefined || "" === e ? [] : e.split(" ");
|
|
},
|
|
vi = hi,
|
|
bi = function(n, t, e) {
|
|
var r = hi(n, t).concat([e]);
|
|
Dt.set(n, t, r.join(" "));
|
|
},
|
|
wi = function(n, t, e) {
|
|
var r = B.filter(hi(n, t), function(n) {
|
|
return n !== e;
|
|
});
|
|
r.length > 0 ? Dt.set(n, t, r.join(" ")) : Dt.remove(n, t);
|
|
},
|
|
yi = function(n) {
|
|
return vi(n, "class");
|
|
},
|
|
xi = function(n, t) {
|
|
return bi(n, "class", t);
|
|
},
|
|
Ci = function(n, t) {
|
|
return wi(n, "class", t);
|
|
},
|
|
Si = yi,
|
|
Ri = xi,
|
|
Ti = Ci,
|
|
Di = function(n, t) {
|
|
B.contains(yi(n), t) ? Ci(n, t) : xi(n, t);
|
|
},
|
|
Ai = function(n) {
|
|
return n.dom().classList !== undefined;
|
|
},
|
|
ki = function(n, t) {
|
|
return Ai(n) && n.dom().classList.contains(t);
|
|
},
|
|
Ni = {
|
|
add: function(n, t) {
|
|
Ai(n) ? n.dom().classList.add(t) : Ri(n, t);
|
|
},
|
|
remove: function(n, t) {
|
|
var e;
|
|
Ai(n) ? n.dom().classList.remove(t) : Ti(n, t),
|
|
0 === (Ai((e = n)) ? e.dom().classList : Si(e)).length &&
|
|
Dt.remove(e, "class");
|
|
},
|
|
toggle: function(n, t) {
|
|
return Ai(n) ? n.dom().classList.toggle(t) : Di(n, t);
|
|
},
|
|
toggler: function(n, t) {
|
|
var e,
|
|
r,
|
|
o,
|
|
i,
|
|
u,
|
|
a,
|
|
c = Ai(n),
|
|
l = n.dom().classList;
|
|
return (
|
|
(e = function() {
|
|
c ? l.remove(t) : Ti(n, t);
|
|
}),
|
|
(r = function() {
|
|
c ? l.add(t) : Ri(n, t);
|
|
}),
|
|
(o = ki(n, t)),
|
|
(i = o || !1),
|
|
{
|
|
on: (u = function() {
|
|
r(), (i = !0);
|
|
}),
|
|
off: (a = function() {
|
|
e(), (i = !1);
|
|
}),
|
|
toggle: function() {
|
|
(i ? a : u)();
|
|
},
|
|
isOn: function() {
|
|
return i;
|
|
}
|
|
}
|
|
);
|
|
},
|
|
has: ki
|
|
},
|
|
Oi = pi.resolve("resizer-bar"),
|
|
Ei = pi.resolve("resizer-rows"),
|
|
Bi = pi.resolve("resizer-cols"),
|
|
Ii = function(n) {
|
|
var t = Bt.descendants(n.parent(), "." + Oi);
|
|
B.each(t, le.remove);
|
|
},
|
|
Pi = function(n, t, e) {
|
|
var r = n.origin();
|
|
B.each(t, function(t, o) {
|
|
t.each(function(t) {
|
|
var o = e(r, t);
|
|
Ni.add(o, Oi), ue.append(n.parent(), o);
|
|
});
|
|
});
|
|
},
|
|
Wi = function(n, t, e, r, o, i) {
|
|
var u,
|
|
a,
|
|
c,
|
|
l,
|
|
s = ao(t),
|
|
f = e.length > 0 ? o.positions(e, t) : [];
|
|
(u = n),
|
|
(a = f),
|
|
(c = s),
|
|
(l = Fr(t)),
|
|
Pi(u, a, function(n, t) {
|
|
var e = mi(t.row(), c.left() - n.left(), t.y() - n.top(), l, 7);
|
|
return Ni.add(e, Ei), e;
|
|
});
|
|
var d,
|
|
m,
|
|
g,
|
|
p,
|
|
h = r.length > 0 ? i.positions(r, t) : [];
|
|
(d = n),
|
|
(m = h),
|
|
(g = s),
|
|
(p = Lr(t)),
|
|
Pi(d, m, function(n, t) {
|
|
var e = di(t.col(), t.x() - n.left(), g.top() - n.top(), 7, p);
|
|
return Ni.add(e, Bi), e;
|
|
});
|
|
},
|
|
_i = function(n, t) {
|
|
var e = Bt.descendants(n.parent(), "." + Oi);
|
|
B.each(e, t);
|
|
},
|
|
Mi = function(n, t, e, r) {
|
|
Ii(n);
|
|
var o = Gt(t),
|
|
i = Kt.generate(o),
|
|
u = fi(i),
|
|
a = si(i);
|
|
Wi(n, t, u, a, e, r);
|
|
},
|
|
Li = function(n) {
|
|
_i(n, function(n) {
|
|
re.set(n, "display", "none");
|
|
});
|
|
},
|
|
qi = function(n) {
|
|
_i(n, function(n) {
|
|
re.set(n, "display", "block");
|
|
});
|
|
},
|
|
zi = Ii,
|
|
Fi = function(n) {
|
|
return Ni.has(n, Ei);
|
|
},
|
|
ji = function(n) {
|
|
return Ni.has(n, Bi);
|
|
},
|
|
Hi = function(n, t) {
|
|
return B.map(n, function(n) {
|
|
var e,
|
|
r = ((e = n.details()),
|
|
$o(e, function(n) {
|
|
return dt.parent(n.element()).map(function(n) {
|
|
var t = dt.parent(n).isNone();
|
|
return nn.elementnew(n, t);
|
|
});
|
|
}).getOrThunk(function() {
|
|
return nn.elementnew(t.row(), !0);
|
|
}));
|
|
return nn.rowdatanew(r.element(), n.details(), n.section(), r.isNew());
|
|
});
|
|
},
|
|
Vi = function(n, t) {
|
|
var e = ti(n, ot.eq);
|
|
return Hi(e, t);
|
|
},
|
|
Ui = function(n, t) {
|
|
var e = B.flatten(
|
|
B.map(n.all(), function(n) {
|
|
return n.cells();
|
|
})
|
|
);
|
|
return B.find(e, function(n) {
|
|
return ot.eq(t, n.element());
|
|
});
|
|
},
|
|
Gi = function(n, t, e, r, o) {
|
|
return function(i, u, a, c, l) {
|
|
var s = Gt(u),
|
|
f = Kt.generate(s);
|
|
return t(f, a)
|
|
.map(function(t) {
|
|
var e = ei(f, c, !1),
|
|
r = n(e, t, ot.eq, o(c)),
|
|
i = Vi(r.grid(), c);
|
|
return { grid: m.constant(i), cursor: r.cursor };
|
|
})
|
|
.fold(
|
|
function() {
|
|
return w.none();
|
|
},
|
|
function(n) {
|
|
var t = oi(u, n.grid());
|
|
return (
|
|
e(u, n.grid(), l),
|
|
r(u),
|
|
Mi(i, u, wo.height, l),
|
|
w.some({
|
|
cursor: n.cursor,
|
|
newRows: t.newRows,
|
|
newCells: t.newCells
|
|
})
|
|
);
|
|
}
|
|
);
|
|
};
|
|
},
|
|
Xi = Vi,
|
|
Yi = function(n, t) {
|
|
return jt(t.element()).bind(function(t) {
|
|
return Ui(n, t);
|
|
});
|
|
},
|
|
$i = function(n, t) {
|
|
var e = B.map(t.selection(), function(t) {
|
|
return jt(t).bind(function(t) {
|
|
return Ui(n, t);
|
|
});
|
|
}),
|
|
r = Yo(e);
|
|
return r.length > 0 ? w.some(r) : w.none();
|
|
},
|
|
Ki = function(n, t) {
|
|
return jt(t.element()).bind(function(e) {
|
|
return Ui(n, e).map(function(n) {
|
|
return Xo.merge(n, {
|
|
generators: t.generators,
|
|
clipboard: t.clipboard
|
|
});
|
|
});
|
|
});
|
|
},
|
|
Ji = function(n, t) {
|
|
var e = B.map(t.selection(), function(t) {
|
|
return jt(t).bind(function(t) {
|
|
return Ui(n, t);
|
|
});
|
|
}),
|
|
r = Yo(e);
|
|
return r.length > 0
|
|
? w.some(
|
|
Xo.merge(
|
|
{ cells: r },
|
|
{ generators: t.generators, clipboard: t.clipboard }
|
|
)
|
|
)
|
|
: w.none();
|
|
},
|
|
Qi = function(n, t) {
|
|
return t.mergable();
|
|
},
|
|
Zi = function(n, t) {
|
|
return t.unmergable();
|
|
},
|
|
nu = function(n) {
|
|
return {
|
|
is: function(t) {
|
|
return n === t;
|
|
},
|
|
isValue: m.constant(!0),
|
|
isError: m.constant(!1),
|
|
getOr: m.constant(n),
|
|
getOrThunk: m.constant(n),
|
|
getOrDie: m.constant(n),
|
|
or: function(t) {
|
|
return nu(n);
|
|
},
|
|
orThunk: function(t) {
|
|
return nu(n);
|
|
},
|
|
fold: function(t, e) {
|
|
return e(n);
|
|
},
|
|
map: function(t) {
|
|
return nu(t(n));
|
|
},
|
|
each: function(t) {
|
|
t(n);
|
|
},
|
|
bind: function(t) {
|
|
return t(n);
|
|
},
|
|
exists: function(t) {
|
|
return t(n);
|
|
},
|
|
forall: function(t) {
|
|
return t(n);
|
|
},
|
|
toOption: function() {
|
|
return w.some(n);
|
|
}
|
|
};
|
|
},
|
|
tu = function(n) {
|
|
return {
|
|
is: m.constant(!1),
|
|
isValue: m.constant(!1),
|
|
isError: m.constant(!0),
|
|
getOr: m.identity,
|
|
getOrThunk: function(n) {
|
|
return n();
|
|
},
|
|
getOrDie: function() {
|
|
return m.die(n)();
|
|
},
|
|
or: function(n) {
|
|
return n;
|
|
},
|
|
orThunk: function(n) {
|
|
return n();
|
|
},
|
|
fold: function(t, e) {
|
|
return t(n);
|
|
},
|
|
map: function(t) {
|
|
return tu(n);
|
|
},
|
|
each: m.noop,
|
|
bind: function(t) {
|
|
return tu(n);
|
|
},
|
|
exists: m.constant(!1),
|
|
forall: m.constant(!0),
|
|
toOption: w.none
|
|
};
|
|
},
|
|
eu = { value: nu, error: tu },
|
|
ru = function(n, t) {
|
|
return B.map(n, function() {
|
|
return nn.elementnew(t.cell(), !0);
|
|
});
|
|
},
|
|
ou = function(n, t, e) {
|
|
return n.concat(
|
|
ui(t, function(t) {
|
|
return Qo.setCells(n[n.length - 1], ru(n[n.length - 1].cells(), e));
|
|
})
|
|
);
|
|
},
|
|
iu = function(n, t, e) {
|
|
return B.map(n, function(n) {
|
|
return Qo.setCells(n, n.cells().concat(ru(ai(0, t), e)));
|
|
});
|
|
},
|
|
uu = function(n, t, e) {
|
|
if (n.row() >= t.length || n.column() > Qo.cellLength(t[0]))
|
|
return eu.error(
|
|
"invalid start address out of table bounds, row: " +
|
|
n.row() +
|
|
", column: " +
|
|
n.column()
|
|
);
|
|
var r = t.slice(n.row()),
|
|
o = r[0].cells().slice(n.column()),
|
|
i = Qo.cellLength(e[0]),
|
|
u = e.length;
|
|
return eu.value({
|
|
rowDelta: m.constant(r.length - u),
|
|
colDelta: m.constant(o.length - i)
|
|
});
|
|
},
|
|
au = function(n, t) {
|
|
var e = Qo.cellLength(n[0]),
|
|
r = Qo.cellLength(t[0]);
|
|
return { rowDelta: m.constant(0), colDelta: m.constant(e - r) };
|
|
},
|
|
cu = function(n, t, e) {
|
|
var r = t.colDelta() < 0 ? iu : m.identity;
|
|
return (t.rowDelta() < 0 ? ou : m.identity)(
|
|
r(n, Math.abs(t.colDelta()), e),
|
|
Math.abs(t.rowDelta()),
|
|
e
|
|
);
|
|
},
|
|
lu = function(n, t, e, r) {
|
|
if (0 === n.length) return n;
|
|
for (var o = t.startRow(); o <= t.finishRow(); o++)
|
|
for (var i = t.startCol(); i <= t.finishCol(); i++)
|
|
Qo.mutateCell(n[o], i, nn.elementnew(r(), !1));
|
|
return n;
|
|
},
|
|
su = function(n, t, e, r) {
|
|
for (var o = !0, i = 0; i < n.length; i++)
|
|
for (var u = 0; u < Qo.cellLength(n[0]); u++) {
|
|
var a = e(Qo.getCellElement(n[i], u), t);
|
|
!0 === a && !1 === o
|
|
? Qo.mutateCell(n[i], u, nn.elementnew(r(), !0))
|
|
: !0 === a && (o = !1);
|
|
}
|
|
return n;
|
|
},
|
|
fu = function(n, t, e, r) {
|
|
if (t > 0 && t < n.length) {
|
|
var o = n[t - 1].cells(),
|
|
i = ((u = o),
|
|
(a = e),
|
|
B.foldl(
|
|
u,
|
|
function(n, t) {
|
|
return B.exists(n, function(n) {
|
|
return a(n.element(), t.element());
|
|
})
|
|
? n
|
|
: n.concat([t]);
|
|
},
|
|
[]
|
|
));
|
|
B.each(i, function(o) {
|
|
for (var i = w.none(), u = t; u < n.length; u++)
|
|
for (var a = 0; a < Qo.cellLength(n[0]); a++) {
|
|
var c = n[u].cells()[a];
|
|
e(c.element(), o.element()) &&
|
|
(i.isNone() && (i = w.some(r())),
|
|
i.each(function(t) {
|
|
Qo.mutateCell(n[u], a, nn.elementnew(t, !0));
|
|
}));
|
|
}
|
|
});
|
|
}
|
|
var u, a;
|
|
return n;
|
|
},
|
|
du = function(n, t, e, r, o) {
|
|
return uu(n, t, e).map(function(i) {
|
|
var u = cu(t, i, r);
|
|
return (function(n, t, e, r, o) {
|
|
for (
|
|
var i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s,
|
|
f,
|
|
d = n.row(),
|
|
g = n.column(),
|
|
p = d + e.length,
|
|
h = g + Qo.cellLength(e[0]),
|
|
v = d;
|
|
v < p;
|
|
v++
|
|
)
|
|
for (var b = g; b < h; b++) {
|
|
(i = t),
|
|
(u = v),
|
|
(a = b),
|
|
(c = o),
|
|
(l = void 0),
|
|
(s = void 0),
|
|
(l = Qo.getCell(i[u], a)),
|
|
(s = m.curry(c, l.element())),
|
|
(f = i[u]),
|
|
i.length > 1 &&
|
|
Qo.cellLength(f) > 1 &&
|
|
((a > 0 && s(Qo.getCellElement(f, a - 1))) ||
|
|
(a < f.length - 1 && s(Qo.getCellElement(f, a + 1))) ||
|
|
(u > 0 && s(Qo.getCellElement(i[u - 1], a))) ||
|
|
(u < i.length - 1 && s(Qo.getCellElement(i[u + 1], a)))) &&
|
|
su(t, Qo.getCellElement(t[v], b), o, r.cell);
|
|
var w = Qo.getCellElement(e[v - d], b - g),
|
|
y = r.replace(w);
|
|
Qo.mutateCell(t[v], b, nn.elementnew(y, !0));
|
|
}
|
|
return t;
|
|
})(n, u, e, r, o);
|
|
});
|
|
},
|
|
mu = function(n, t, e, r, o) {
|
|
fu(t, n, o, r.cell);
|
|
var i = au(e, t),
|
|
u = cu(e, i, r),
|
|
a = au(t, u),
|
|
c = cu(t, a, r);
|
|
return c
|
|
.slice(0, n)
|
|
.concat(u)
|
|
.concat(c.slice(n, c.length));
|
|
},
|
|
gu = function(n, t, e, r, o) {
|
|
var i = n.slice(0, t),
|
|
u = n.slice(t),
|
|
a = Qo.mapCells(n[e], function(e, i) {
|
|
return t > 0 &&
|
|
t < n.length &&
|
|
r(Qo.getCellElement(n[t - 1], i), Qo.getCellElement(n[t], i))
|
|
? Qo.getCell(n[t], i)
|
|
: nn.elementnew(o(e.element(), r), !0);
|
|
});
|
|
return i.concat([a]).concat(u);
|
|
},
|
|
pu = function(n, t, e, r, o) {
|
|
return B.map(n, function(n) {
|
|
var i =
|
|
t > 0 &&
|
|
t < Qo.cellLength(n) &&
|
|
r(Qo.getCellElement(n, t - 1), Qo.getCellElement(n, t))
|
|
? Qo.getCell(n, t)
|
|
: nn.elementnew(o(Qo.getCellElement(n, e), r), !0);
|
|
return Qo.addCell(n, t, i);
|
|
});
|
|
},
|
|
hu = function(n, t, e, r, o) {
|
|
var i = e + 1;
|
|
return B.map(n, function(n, u) {
|
|
var a =
|
|
u === t
|
|
? nn.elementnew(o(Qo.getCellElement(n, e), r), !0)
|
|
: Qo.getCell(n, e);
|
|
return Qo.addCell(n, i, a);
|
|
});
|
|
},
|
|
vu = function(n, t, e, r, o) {
|
|
var i = t + 1,
|
|
u = n.slice(0, i),
|
|
a = n.slice(i),
|
|
c = Qo.mapCells(n[t], function(n, t) {
|
|
return t === e ? nn.elementnew(o(n.element(), r), !0) : n;
|
|
});
|
|
return u.concat([c]).concat(a);
|
|
},
|
|
bu = function(n, t, e) {
|
|
return n.slice(0, t).concat(n.slice(e + 1));
|
|
},
|
|
wu = function(n, t, e) {
|
|
var r = B.map(n, function(n) {
|
|
var r = n
|
|
.cells()
|
|
.slice(0, t)
|
|
.concat(n.cells().slice(e + 1));
|
|
return nn.rowcells(r, n.section());
|
|
});
|
|
return B.filter(r, function(n) {
|
|
return n.cells().length > 0;
|
|
});
|
|
},
|
|
yu = function(n, t, e, r) {
|
|
return B.map(n, function(n) {
|
|
return Qo.mapCells(n, function(n) {
|
|
return (
|
|
(o = n),
|
|
B.exists(t, function(n) {
|
|
return e(o.element(), n.element());
|
|
})
|
|
? nn.elementnew(r(n.element(), e), !0)
|
|
: n
|
|
);
|
|
var o;
|
|
});
|
|
});
|
|
},
|
|
xu = function(n, t, e, r) {
|
|
return (
|
|
Qo.getCellElement(n[t], e) !== undefined &&
|
|
t > 0 &&
|
|
r(Qo.getCellElement(n[t - 1], e), Qo.getCellElement(n[t], e))
|
|
);
|
|
},
|
|
Cu = function(n, t, e) {
|
|
return t > 0 && e(Qo.getCellElement(n, t - 1), Qo.getCellElement(n, t));
|
|
},
|
|
Su = function(n, t, e, r) {
|
|
var o = B.bind(n, function(r, o) {
|
|
return xu(n, o, t, e) || Cu(r, t, e) ? [] : [Qo.getCell(r, t)];
|
|
});
|
|
return yu(n, o, e, r);
|
|
},
|
|
Ru = function(n, t, e, r) {
|
|
var o = n[t],
|
|
i = B.bind(o.cells(), function(r, i) {
|
|
return xu(n, t, i, e) || Cu(o, i, e) ? [] : [r];
|
|
});
|
|
return yu(n, i, e, r);
|
|
},
|
|
Tu = function(n) {
|
|
return { fold: n };
|
|
},
|
|
Du = function() {
|
|
return Tu(function(n, t, e, r, o) {
|
|
return n();
|
|
});
|
|
},
|
|
Au = function(n) {
|
|
return Tu(function(t, e, r, o, i) {
|
|
return e(n);
|
|
});
|
|
},
|
|
ku = function(n, t) {
|
|
return Tu(function(e, r, o, i, u) {
|
|
return o(n, t);
|
|
});
|
|
},
|
|
Nu = function(n, t, e) {
|
|
return Tu(function(r, o, i, u, a) {
|
|
return u(n, t, e);
|
|
});
|
|
},
|
|
Ou = function(n, t) {
|
|
return Tu(function(e, r, o, i, u) {
|
|
return u(n, t);
|
|
});
|
|
},
|
|
Eu = function(n, t, e, r) {
|
|
var o,
|
|
i,
|
|
u = n.slice(0),
|
|
a = ((i = t),
|
|
0 === (o = n).length
|
|
? Du()
|
|
: 1 === o.length
|
|
? Au(0)
|
|
: 0 === i
|
|
? ku(0, 1)
|
|
: i === o.length - 1
|
|
? Ou(i - 1, i)
|
|
: i > 0 && i < o.length - 1
|
|
? Nu(i - 1, i, i + 1)
|
|
: Du()),
|
|
c = function(n) {
|
|
return B.map(n, m.constant(0));
|
|
},
|
|
l = m.constant(c(u)),
|
|
s = function(n, t) {
|
|
if (e >= 0) {
|
|
var o = Math.max(r.minCellWidth(), u[t] - e);
|
|
return c(u.slice(0, n))
|
|
.concat([e, o - u[t]])
|
|
.concat(c(u.slice(t + 1)));
|
|
}
|
|
var i = Math.max(r.minCellWidth(), u[n] + e),
|
|
a = u[n] - i;
|
|
return c(u.slice(0, n))
|
|
.concat([i - u[n], a])
|
|
.concat(c(u.slice(t + 1)));
|
|
},
|
|
f = s;
|
|
return a.fold(
|
|
l,
|
|
function(n) {
|
|
return r.singleColumnWidth(u[n], e);
|
|
},
|
|
f,
|
|
function(n, t, e) {
|
|
return s(t, e);
|
|
},
|
|
function(n, t) {
|
|
if (e >= 0) return c(u.slice(0, t)).concat([e]);
|
|
var o = Math.max(r.minCellWidth(), u[t] + e);
|
|
return c(u.slice(0, t)).concat([o - u[t]]);
|
|
}
|
|
);
|
|
},
|
|
Bu = function(n, t) {
|
|
return Dt.has(n, t) && parseInt(Dt.get(n, t), 10) > 1;
|
|
},
|
|
Iu = {
|
|
hasColspan: function(n) {
|
|
return Bu(n, "colspan");
|
|
},
|
|
hasRowspan: function(n) {
|
|
return Bu(n, "rowspan");
|
|
},
|
|
minWidth: m.constant(10),
|
|
minHeight: m.constant(10),
|
|
getInt: function(n, t) {
|
|
return parseInt(re.get(n, t), 10);
|
|
}
|
|
},
|
|
Pu = function(n, t, e) {
|
|
return re.getRaw(n, t).fold(
|
|
function() {
|
|
return e(n) + "px";
|
|
},
|
|
function(n) {
|
|
return n;
|
|
}
|
|
);
|
|
},
|
|
Wu = function(n) {
|
|
return Pu(n, "width", no.getPixelWidth);
|
|
},
|
|
_u = function(n) {
|
|
return Pu(n, "height", no.getHeight);
|
|
},
|
|
Mu = function(n, t, e, r, o) {
|
|
var i = si(n),
|
|
u = B.map(i, function(n) {
|
|
return n.map(t.edge);
|
|
});
|
|
return B.map(i, function(n, t) {
|
|
return n.filter(m.not(Iu.hasColspan)).fold(
|
|
function() {
|
|
var n = ci(u, t);
|
|
return r(n);
|
|
},
|
|
function(n) {
|
|
return e(n, o);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
Lu = function(n) {
|
|
return n
|
|
.map(function(n) {
|
|
return n + "px";
|
|
})
|
|
.getOr("");
|
|
},
|
|
qu = function(n, t, e, r) {
|
|
var o = fi(n),
|
|
i = B.map(o, function(n) {
|
|
return n.map(t.edge);
|
|
});
|
|
return B.map(o, function(n, t) {
|
|
return n.filter(m.not(Iu.hasRowspan)).fold(
|
|
function() {
|
|
var n = ci(i, t);
|
|
return r(n);
|
|
},
|
|
function(n) {
|
|
return e(n);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
zu = {
|
|
getRawWidths: function(n, t) {
|
|
return Mu(n, t, Wu, Lu);
|
|
},
|
|
getPixelWidths: function(n, t, e) {
|
|
return Mu(
|
|
n,
|
|
t,
|
|
no.getPixelWidth,
|
|
function(n) {
|
|
return n.getOrThunk(e.minCellWidth);
|
|
},
|
|
e
|
|
);
|
|
},
|
|
getPercentageWidths: function(n, t, e) {
|
|
return Mu(
|
|
n,
|
|
t,
|
|
no.getPercentageWidth,
|
|
function(n) {
|
|
return n.fold(
|
|
function() {
|
|
return e.minCellWidth();
|
|
},
|
|
function(n) {
|
|
return (n / e.pixelWidth()) * 100;
|
|
}
|
|
);
|
|
},
|
|
e
|
|
);
|
|
},
|
|
getPixelHeights: function(n, t) {
|
|
return qu(n, t, no.getHeight, function(n) {
|
|
return n.getOrThunk(Iu.minHeight);
|
|
});
|
|
},
|
|
getRawHeights: function(n, t) {
|
|
return qu(n, t, _u, Lu);
|
|
}
|
|
},
|
|
Fu = function(n, t, e) {
|
|
for (var r = 0, o = n; o < t; o++) r += e[o] !== undefined ? e[o] : 0;
|
|
return r;
|
|
},
|
|
ju = function(n, t) {
|
|
var e = Kt.justCells(n);
|
|
return B.map(e, function(n) {
|
|
var e = Fu(n.column(), n.column() + n.colspan(), t);
|
|
return { element: n.element, width: m.constant(e), colspan: n.colspan };
|
|
});
|
|
},
|
|
Hu = function(n, t) {
|
|
var e = Kt.justCells(n);
|
|
return B.map(e, function(n) {
|
|
var e = Fu(n.row(), n.row() + n.rowspan(), t);
|
|
return {
|
|
element: n.element,
|
|
height: m.constant(e),
|
|
rowspan: n.rowspan
|
|
};
|
|
});
|
|
},
|
|
Vu = function(n, t) {
|
|
return B.map(n.all(), function(n, e) {
|
|
return { element: n.element, height: m.constant(t[e]) };
|
|
});
|
|
},
|
|
Uu = function(n) {
|
|
var t = parseInt(n, 10),
|
|
e = m.identity;
|
|
return {
|
|
width: m.constant(t),
|
|
pixelWidth: m.constant(t),
|
|
getWidths: zu.getPixelWidths,
|
|
getCellDelta: e,
|
|
singleColumnWidth: function(n, t) {
|
|
return [Math.max(Iu.minWidth(), n + t) - n];
|
|
},
|
|
minCellWidth: Iu.minWidth,
|
|
setElementWidth: no.setPixelWidth,
|
|
setTableWidth: function(n, t, e) {
|
|
var r = B.foldr(
|
|
t,
|
|
function(n, t) {
|
|
return n + t;
|
|
},
|
|
0
|
|
);
|
|
no.setPixelWidth(n, r);
|
|
}
|
|
};
|
|
},
|
|
Gu = function(n, t) {
|
|
if (no.percentageBasedSizeRegex().test(t)) {
|
|
var e = no.percentageBasedSizeRegex().exec(t);
|
|
return (
|
|
(o = e[1]),
|
|
(i = n),
|
|
(u = parseFloat(o)),
|
|
(a = zr(i)),
|
|
{
|
|
width: m.constant(u),
|
|
pixelWidth: m.constant(a),
|
|
getWidths: zu.getPercentageWidths,
|
|
getCellDelta: function(n) {
|
|
return (n / a) * 100;
|
|
},
|
|
singleColumnWidth: function(n, t) {
|
|
return [100 - n];
|
|
},
|
|
minCellWidth: function() {
|
|
return (Iu.minWidth() / a) * 100;
|
|
},
|
|
setElementWidth: no.setPercentageWidth,
|
|
setTableWidth: function(n, t, e) {
|
|
var r = u + e;
|
|
no.setPercentageWidth(n, r);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
if (no.pixelBasedSizeRegex().test(t)) {
|
|
var r = no.pixelBasedSizeRegex().exec(t);
|
|
return Uu(r[1]);
|
|
}
|
|
var o,
|
|
i,
|
|
u,
|
|
a,
|
|
c = zr(n);
|
|
return Uu(c);
|
|
},
|
|
Xu = function(n) {
|
|
return no.getRawWidth(n).fold(
|
|
function() {
|
|
var t = zr(n);
|
|
return Uu(t);
|
|
},
|
|
function(t) {
|
|
return Gu(n, t);
|
|
}
|
|
);
|
|
},
|
|
Yu = function(n) {
|
|
return Kt.generate(n);
|
|
},
|
|
$u = function(n) {
|
|
var t = Gt(n);
|
|
return Yu(t);
|
|
},
|
|
Ku = function(n, t, e, r) {
|
|
var o = Xu(n),
|
|
i = o.getCellDelta(t),
|
|
u = $u(n),
|
|
a = o.getWidths(u, r, o),
|
|
c = Eu(a, e, i, o),
|
|
l = B.map(c, function(n, t) {
|
|
return n + a[t];
|
|
}),
|
|
s = ju(u, l);
|
|
B.each(s, function(n) {
|
|
o.setElementWidth(n.element(), n.width());
|
|
}),
|
|
e === u.grid().columns() - 1 && o.setTableWidth(n, l, i);
|
|
},
|
|
Ju = function(n, t, e, r) {
|
|
var o = $u(n),
|
|
i = zu.getPixelHeights(o, r),
|
|
u = B.map(i, function(n, r) {
|
|
return e === r ? Math.max(t + n, Iu.minHeight()) : n;
|
|
}),
|
|
a = Hu(o, u),
|
|
c = Vu(o, u);
|
|
B.each(c, function(n) {
|
|
no.setHeight(n.element(), n.height());
|
|
}),
|
|
B.each(a, function(n) {
|
|
no.setHeight(n.element(), n.height());
|
|
});
|
|
var l,
|
|
s = ((l = u),
|
|
B.foldr(
|
|
l,
|
|
function(n, t) {
|
|
return n + t;
|
|
},
|
|
0
|
|
));
|
|
no.setHeight(n, s);
|
|
},
|
|
Qu = function(n, t, e) {
|
|
var r = Xu(n),
|
|
o = Yu(t),
|
|
i = r.getWidths(o, e, r),
|
|
u = ju(o, i);
|
|
B.each(u, function(n) {
|
|
r.setElementWidth(n.element(), n.width());
|
|
});
|
|
var a = B.foldr(
|
|
i,
|
|
function(n, t) {
|
|
return t + n;
|
|
},
|
|
0
|
|
);
|
|
u.length > 0 && r.setElementWidth(n, a);
|
|
},
|
|
Zu = function(n) {
|
|
0 === Ht(n).length && le.remove(n);
|
|
},
|
|
na = X.immutable("grid", "cursor"),
|
|
ta = function(n, t, e) {
|
|
return ea(n, t, e).orThunk(function() {
|
|
return ea(n, 0, 0);
|
|
});
|
|
},
|
|
ea = function(n, t, e) {
|
|
return w.from(n[t]).bind(function(n) {
|
|
return w.from(n.cells()[e]).bind(function(n) {
|
|
return w.from(n.element());
|
|
});
|
|
});
|
|
},
|
|
ra = function(n, t, e) {
|
|
return na(n, ea(n, t, e));
|
|
},
|
|
oa = function(n) {
|
|
return B.foldl(
|
|
n,
|
|
function(n, t) {
|
|
return B.exists(n, function(n) {
|
|
return n.row() === t.row();
|
|
})
|
|
? n
|
|
: n.concat([t]);
|
|
},
|
|
[]
|
|
).sort(function(n, t) {
|
|
return n.row() - t.row();
|
|
});
|
|
},
|
|
ia = function(n) {
|
|
return B.foldl(
|
|
n,
|
|
function(n, t) {
|
|
return B.exists(n, function(n) {
|
|
return n.column() === t.column();
|
|
})
|
|
? n
|
|
: n.concat([t]);
|
|
},
|
|
[]
|
|
).sort(function(n, t) {
|
|
return n.column() - t.column();
|
|
});
|
|
},
|
|
ua = function(n, t, e) {
|
|
var r = Xt(n, e),
|
|
o = Kt.generate(r);
|
|
return ei(o, t, !0);
|
|
},
|
|
aa = Qu,
|
|
ca = {
|
|
insertRowBefore: Gi(
|
|
function(n, t, e, r) {
|
|
var o = t.row(),
|
|
i = t.row(),
|
|
u = gu(n, i, o, e, r.getOrInit);
|
|
return ra(u, i, t.column());
|
|
},
|
|
Yi,
|
|
m.noop,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
insertRowsBefore: Gi(
|
|
function(n, t, e, r) {
|
|
var o = t[0].row(),
|
|
i = t[0].row(),
|
|
u = oa(t),
|
|
a = B.foldl(
|
|
u,
|
|
function(n, t) {
|
|
return gu(n, i, o, e, r.getOrInit);
|
|
},
|
|
n
|
|
);
|
|
return ra(a, i, t[0].column());
|
|
},
|
|
$i,
|
|
m.noop,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
insertRowAfter: Gi(
|
|
function(n, t, e, r) {
|
|
var o = t.row(),
|
|
i = t.row() + t.rowspan(),
|
|
u = gu(n, i, o, e, r.getOrInit);
|
|
return ra(u, i, t.column());
|
|
},
|
|
Yi,
|
|
m.noop,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
insertRowsAfter: Gi(
|
|
function(n, t, e, r) {
|
|
var o = oa(t),
|
|
i = o[o.length - 1].row(),
|
|
u = o[o.length - 1].row() + o[o.length - 1].rowspan(),
|
|
a = B.foldl(
|
|
o,
|
|
function(n, t) {
|
|
return gu(n, u, i, e, r.getOrInit);
|
|
},
|
|
n
|
|
);
|
|
return ra(a, u, t[0].column());
|
|
},
|
|
$i,
|
|
m.noop,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
insertColumnBefore: Gi(
|
|
function(n, t, e, r) {
|
|
var o = t.column(),
|
|
i = t.column(),
|
|
u = pu(n, i, o, e, r.getOrInit);
|
|
return ra(u, t.row(), i);
|
|
},
|
|
Yi,
|
|
aa,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
insertColumnsBefore: Gi(
|
|
function(n, t, e, r) {
|
|
var o = ia(t),
|
|
i = o[0].column(),
|
|
u = o[0].column(),
|
|
a = B.foldl(
|
|
o,
|
|
function(n, t) {
|
|
return pu(n, u, i, e, r.getOrInit);
|
|
},
|
|
n
|
|
);
|
|
return ra(a, t[0].row(), u);
|
|
},
|
|
$i,
|
|
aa,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
insertColumnAfter: Gi(
|
|
function(n, t, e, r) {
|
|
var o = t.column(),
|
|
i = t.column() + t.colspan(),
|
|
u = pu(n, i, o, e, r.getOrInit);
|
|
return ra(u, t.row(), i);
|
|
},
|
|
Yi,
|
|
aa,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
insertColumnsAfter: Gi(
|
|
function(n, t, e, r) {
|
|
var o = t[t.length - 1].column(),
|
|
i = t[t.length - 1].column() + t[t.length - 1].colspan(),
|
|
u = ia(t),
|
|
a = B.foldl(
|
|
u,
|
|
function(n, t) {
|
|
return pu(n, i, o, e, r.getOrInit);
|
|
},
|
|
n
|
|
);
|
|
return ra(a, t[0].row(), i);
|
|
},
|
|
$i,
|
|
aa,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
splitCellIntoColumns: Gi(
|
|
function(n, t, e, r) {
|
|
var o = hu(n, t.row(), t.column(), e, r.getOrInit);
|
|
return ra(o, t.row(), t.column());
|
|
},
|
|
Yi,
|
|
aa,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
splitCellIntoRows: Gi(
|
|
function(n, t, e, r) {
|
|
var o = vu(n, t.row(), t.column(), e, r.getOrInit);
|
|
return ra(o, t.row(), t.column());
|
|
},
|
|
Yi,
|
|
m.noop,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
eraseColumns: Gi(
|
|
function(n, t, e, r) {
|
|
var o = ia(t),
|
|
i = wu(n, o[0].column(), o[o.length - 1].column()),
|
|
u = ta(i, t[0].row(), t[0].column());
|
|
return na(i, u);
|
|
},
|
|
$i,
|
|
aa,
|
|
Zu,
|
|
Oo
|
|
),
|
|
eraseRows: Gi(
|
|
function(n, t, e, r) {
|
|
var o = oa(t),
|
|
i = bu(n, o[0].row(), o[o.length - 1].row()),
|
|
u = ta(i, t[0].row(), t[0].column());
|
|
return na(i, u);
|
|
},
|
|
$i,
|
|
m.noop,
|
|
Zu,
|
|
Oo
|
|
),
|
|
makeColumnHeader: Gi(
|
|
function(n, t, e, r) {
|
|
var o = Su(n, t.column(), e, r.replaceOrInit);
|
|
return ra(o, t.row(), t.column());
|
|
},
|
|
Yi,
|
|
m.noop,
|
|
m.noop,
|
|
Eo("row", "th")
|
|
),
|
|
unmakeColumnHeader: Gi(
|
|
function(n, t, e, r) {
|
|
var o = Su(n, t.column(), e, r.replaceOrInit);
|
|
return ra(o, t.row(), t.column());
|
|
},
|
|
Yi,
|
|
m.noop,
|
|
m.noop,
|
|
Eo(null, "td")
|
|
),
|
|
makeRowHeader: Gi(
|
|
function(n, t, e, r) {
|
|
var o = Ru(n, t.row(), e, r.replaceOrInit);
|
|
return ra(o, t.row(), t.column());
|
|
},
|
|
Yi,
|
|
m.noop,
|
|
m.noop,
|
|
Eo("col", "th")
|
|
),
|
|
unmakeRowHeader: Gi(
|
|
function(n, t, e, r) {
|
|
var o = Ru(n, t.row(), e, r.replaceOrInit);
|
|
return ra(o, t.row(), t.column());
|
|
},
|
|
Yi,
|
|
m.noop,
|
|
m.noop,
|
|
Eo(null, "td")
|
|
),
|
|
mergeCells: Gi(
|
|
function(n, t, e, r) {
|
|
var o = t.cells();
|
|
Ho(o);
|
|
var i = lu(n, t.bounds(), e, m.constant(o[0]));
|
|
return na(i, w.from(o[0]));
|
|
},
|
|
Qi,
|
|
m.noop,
|
|
m.noop,
|
|
Bo
|
|
),
|
|
unmergeCells: Gi(
|
|
function(n, t, e, r) {
|
|
var o = B.foldr(
|
|
t,
|
|
function(n, t) {
|
|
return su(n, t, e, r.combine(t));
|
|
},
|
|
n
|
|
);
|
|
return na(o, w.from(t[0]));
|
|
},
|
|
Zi,
|
|
aa,
|
|
m.noop,
|
|
Bo
|
|
),
|
|
pasteCells: Gi(
|
|
function(n, t, e, r) {
|
|
var o,
|
|
i,
|
|
u,
|
|
a,
|
|
c = ((o = t.clipboard()),
|
|
(i = t.generators()),
|
|
(u = Gt(o)),
|
|
(a = Kt.generate(u)),
|
|
ei(a, i, !0)),
|
|
l = nn.address(t.row(), t.column());
|
|
return du(l, n, c, t.generators(), e).fold(
|
|
function() {
|
|
return na(n, w.some(t.element()));
|
|
},
|
|
function(n) {
|
|
var e = ta(n, t.row(), t.column());
|
|
return na(n, e);
|
|
}
|
|
);
|
|
},
|
|
Ki,
|
|
aa,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
pasteRowsBefore: Gi(
|
|
function(n, t, e, r) {
|
|
var o = n[t.cells[0].row()],
|
|
i = t.cells[0].row(),
|
|
u = ua(t.clipboard(), t.generators(), o),
|
|
a = mu(i, n, u, t.generators(), e),
|
|
c = ta(a, t.cells[0].row(), t.cells[0].column());
|
|
return na(a, c);
|
|
},
|
|
Ji,
|
|
m.noop,
|
|
m.noop,
|
|
Oo
|
|
),
|
|
pasteRowsAfter: Gi(
|
|
function(n, t, e, r) {
|
|
var o = n[t.cells[0].row()],
|
|
i =
|
|
t.cells[t.cells.length - 1].row() +
|
|
t.cells[t.cells.length - 1].rowspan(),
|
|
u = ua(t.clipboard(), t.generators(), o),
|
|
a = mu(i, n, u, t.generators(), e),
|
|
c = ta(a, t.cells[0].row(), t.cells[0].column());
|
|
return na(a, c);
|
|
},
|
|
Ji,
|
|
m.noop,
|
|
m.noop,
|
|
Oo
|
|
)
|
|
},
|
|
la = function(n) {
|
|
return en.fromDom(n.getBody());
|
|
},
|
|
sa = {
|
|
getBody: la,
|
|
getIsRoot: function(n) {
|
|
return function(t) {
|
|
return ot.eq(t, la(n));
|
|
};
|
|
},
|
|
addSizeSuffix: function(n) {
|
|
return /^[0-9]+$/.test(n) && (n += "px"), n;
|
|
},
|
|
removePxSuffix: function(n) {
|
|
return n ? n.replace(/px$/, "") : "";
|
|
}
|
|
},
|
|
fa = function(n) {
|
|
return "rtl" === re.get(n, "direction") ? "rtl" : "ltr";
|
|
},
|
|
da = {
|
|
onDirection: function(n, t) {
|
|
return function(e) {
|
|
return "rtl" === fa(e) ? t : n;
|
|
};
|
|
},
|
|
getDirection: fa
|
|
},
|
|
ma = { isRtl: m.constant(!1) },
|
|
ga = { isRtl: m.constant(!0) },
|
|
pa = function(n) {
|
|
return "rtl" === da.getDirection(n) ? ga : ma;
|
|
},
|
|
ha = function(n, t) {
|
|
var e,
|
|
r = function(n) {
|
|
return "table" === xt.name(sa.getBody(n));
|
|
};
|
|
!1 !== n.settings.table_clone_elements &&
|
|
("string" == typeof n.settings.table_clone_elements
|
|
? (e = n.settings.table_clone_elements.split(/[ ,]/))
|
|
: Array.isArray(n.settings.table_clone_elements) &&
|
|
(e = n.settings.table_clone_elements));
|
|
var o = w.from(e),
|
|
i = function(t, e, r, i) {
|
|
return function(u, a) {
|
|
var c = Bt.descendants(u, "td[data-mce-style],th[data-mce-style]");
|
|
B.each(c, function(n) {
|
|
Dt.remove(n, "data-mce-style");
|
|
});
|
|
var l = i(),
|
|
s = en.fromDom(n.getDoc()),
|
|
f = xo(pa),
|
|
d = Oe(r, s, o);
|
|
return e(u)
|
|
? t(l, u, a, d, f).bind(function(t) {
|
|
return (
|
|
B.each(t.newRows(), function(t) {
|
|
var e;
|
|
(e = t), n.fire("newrow", { node: e.dom() }), e.dom();
|
|
}),
|
|
B.each(t.newCells(), function(t) {
|
|
var e;
|
|
(e = t), n.fire("newcell", { node: e.dom() }), e.dom();
|
|
}),
|
|
t.cursor().map(function(t) {
|
|
var e = n.dom.createRng();
|
|
return e.setStart(t.dom(), 0), e.setEnd(t.dom(), 0), e;
|
|
})
|
|
);
|
|
})
|
|
: w.none();
|
|
};
|
|
};
|
|
return {
|
|
deleteRow: i(
|
|
ca.eraseRows,
|
|
function(t) {
|
|
var e = Co(t);
|
|
return !1 === r(n) || e.rows() > 1;
|
|
},
|
|
m.noop,
|
|
t
|
|
),
|
|
deleteColumn: i(
|
|
ca.eraseColumns,
|
|
function(t) {
|
|
var e = Co(t);
|
|
return !1 === r(n) || e.columns() > 1;
|
|
},
|
|
m.noop,
|
|
t
|
|
),
|
|
insertRowsBefore: i(ca.insertRowsBefore, m.always, m.noop, t),
|
|
insertRowsAfter: i(ca.insertRowsAfter, m.always, m.noop, t),
|
|
insertColumnsBefore: i(ca.insertColumnsBefore, m.always, to, t),
|
|
insertColumnsAfter: i(ca.insertColumnsAfter, m.always, to, t),
|
|
mergeCells: i(ca.mergeCells, m.always, m.noop, t),
|
|
unmergeCells: i(ca.unmergeCells, m.always, m.noop, t),
|
|
pasteRowsBefore: i(ca.pasteRowsBefore, m.always, m.noop, t),
|
|
pasteRowsAfter: i(ca.pasteRowsAfter, m.always, m.noop, t),
|
|
pasteCells: i(ca.pasteCells, m.always, m.noop, t)
|
|
};
|
|
},
|
|
va = function(n, t, e) {
|
|
var r = Gt(n),
|
|
o = Kt.generate(r);
|
|
return $i(o, t).map(function(n) {
|
|
var t = ei(o, e, !1).slice(
|
|
n[0].row(),
|
|
n[n.length - 1].row() + n[n.length - 1].rowspan()
|
|
),
|
|
r = Xi(t, e);
|
|
return ii(r);
|
|
});
|
|
},
|
|
ba = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
wa = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
ya = {
|
|
applyAlign: function(n, t, e) {
|
|
e && n.formatter.apply("align" + e, {}, t);
|
|
},
|
|
applyVAlign: function(n, t, e) {
|
|
e && n.formatter.apply("valign" + e, {}, t);
|
|
},
|
|
unApplyAlign: function(n, t) {
|
|
ba.each("left center right".split(" "), function(e) {
|
|
n.formatter.remove("align" + e, {}, t);
|
|
});
|
|
},
|
|
unApplyVAlign: function(n, t) {
|
|
ba.each("top middle bottom".split(" "), function(e) {
|
|
n.formatter.remove("valign" + e, {}, t);
|
|
});
|
|
},
|
|
getTDTHOverallStyle: function(n, t, e) {
|
|
var r;
|
|
return (r = (function(t, r) {
|
|
for (var o = 0; o < r.length; o++) {
|
|
var i = n.getStyle(r[o], e);
|
|
if ((void 0 === t && (t = i), t !== i)) return "";
|
|
}
|
|
return t;
|
|
})(r, n.select("td,th", t)));
|
|
}
|
|
},
|
|
xa = function(n, t) {
|
|
var e = n.dom,
|
|
r = t.control.rootControl,
|
|
o = r.toJSON(),
|
|
i = e.parseStyle(o.style);
|
|
"style" === t.control.name()
|
|
? (r
|
|
.find("#borderStyle")
|
|
.value(i["border-style"] || "")[0]
|
|
.fire("select"),
|
|
r
|
|
.find("#borderColor")
|
|
.value(i["border-color"] || "")[0]
|
|
.fire("change"),
|
|
r
|
|
.find("#backgroundColor")
|
|
.value(i["background-color"] || "")[0]
|
|
.fire("change"),
|
|
r
|
|
.find("#width")
|
|
.value(i.width || "")
|
|
.fire("change"),
|
|
r
|
|
.find("#height")
|
|
.value(i.height || "")
|
|
.fire("change"))
|
|
: ((i["border-style"] = o.borderStyle),
|
|
(i["border-color"] = o.borderColor),
|
|
(i["background-color"] = o.backgroundColor),
|
|
(i.width = o.width ? sa.addSizeSuffix(o.width) : ""),
|
|
(i.height = o.height ? sa.addSizeSuffix(o.height) : "")),
|
|
r
|
|
.find("#style")
|
|
.value(e.serializeStyle(e.parseStyle(e.serializeStyle(i))));
|
|
},
|
|
Ca = {
|
|
createStyleForm: function(n) {
|
|
var t = function() {
|
|
var t = n.settings.color_picker_callback;
|
|
if (t)
|
|
return function(e) {
|
|
return t.call(
|
|
n,
|
|
function(n) {
|
|
e.control.value(n).fire("change");
|
|
},
|
|
e.control.value()
|
|
);
|
|
};
|
|
};
|
|
return {
|
|
title: "Advanced",
|
|
type: "form",
|
|
defaults: { onchange: m.curry(xa, n) },
|
|
items: [
|
|
{ label: "Style", name: "style", type: "textbox" },
|
|
{
|
|
type: "form",
|
|
padding: 0,
|
|
formItemDefaults: { layout: "grid", alignH: ["start", "right"] },
|
|
defaults: { size: 7 },
|
|
items: [
|
|
{
|
|
label: "Border style",
|
|
type: "listbox",
|
|
name: "borderStyle",
|
|
width: 90,
|
|
onselect: m.curry(xa, n),
|
|
values: [
|
|
{ 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" }
|
|
]
|
|
},
|
|
{
|
|
label: "Border color",
|
|
type: "colorbox",
|
|
name: "borderColor",
|
|
onaction: t()
|
|
},
|
|
{
|
|
label: "Background color",
|
|
type: "colorbox",
|
|
name: "backgroundColor",
|
|
onaction: t()
|
|
}
|
|
]
|
|
}
|
|
]
|
|
};
|
|
},
|
|
buildListItems: function(n, t, e) {
|
|
var r = function(n, e) {
|
|
return (
|
|
(e = e || []),
|
|
ba.each(n, function(n) {
|
|
var o = { text: n.text || n.title };
|
|
n.menu ? (o.menu = r(n.menu)) : ((o.value = n.value), t && t(o)),
|
|
e.push(o);
|
|
}),
|
|
e
|
|
);
|
|
};
|
|
return r(n, e || []);
|
|
},
|
|
updateStyleField: xa,
|
|
extractAdvancedStyles: function(n, t) {
|
|
var e = n.parseStyle(n.getAttrib(t, "style")),
|
|
r = {};
|
|
return (
|
|
e["border-style"] && (r.borderStyle = e["border-style"]),
|
|
e["border-color"] && (r.borderColor = e["border-color"]),
|
|
e["background-color"] && (r.backgroundColor = e["background-color"]),
|
|
(r.style = n.serializeStyle(e)),
|
|
r
|
|
);
|
|
}
|
|
};
|
|
function Sa(n, t, e, r) {
|
|
if ("TD" === t.tagName || "TH" === t.tagName) n.setStyle(t, e, r);
|
|
else if (t.children)
|
|
for (var o = 0; o < t.children.length; o++) Sa(n, t.children[o], e, r);
|
|
}
|
|
var Ra = function(n, t, e) {
|
|
var r,
|
|
o,
|
|
i = n.dom;
|
|
Ca.updateStyleField(n, e),
|
|
!1 === (o = e.control.rootControl.toJSON())["class"] &&
|
|
delete o["class"],
|
|
n.undoManager.transact(function() {
|
|
t || (t = Pr.insert(n, o.cols || 1, o.rows || 1)),
|
|
(function(n, t, e) {
|
|
var r = n.dom,
|
|
o = {},
|
|
i = {};
|
|
if (
|
|
((o["class"] = e["class"]),
|
|
(i.height = sa.addSizeSuffix(e.height)),
|
|
r.getAttrib(t, "width") && !n.settings.table_style_by_css
|
|
? (o.width = sa.removePxSuffix(e.width))
|
|
: (i.width = sa.addSizeSuffix(e.width)),
|
|
n.settings.table_style_by_css
|
|
? ((i["border-width"] = sa.addSizeSuffix(e.border)),
|
|
(i["border-spacing"] = sa.addSizeSuffix(e.cellspacing)),
|
|
ba.extend(o, {
|
|
"data-mce-border-color": e.borderColor,
|
|
"data-mce-cell-padding": e.cellpadding,
|
|
"data-mce-border": e.border
|
|
}))
|
|
: ba.extend(o, {
|
|
border: e.border,
|
|
cellpadding: e.cellpadding,
|
|
cellspacing: e.cellspacing
|
|
}),
|
|
n.settings.table_style_by_css && t.children)
|
|
)
|
|
for (var u = 0; u < t.children.length; u++)
|
|
Sa(r, t.children[u], {
|
|
"border-width": sa.addSizeSuffix(e.border),
|
|
"border-color": e.borderColor,
|
|
padding: sa.addSizeSuffix(e.cellpadding)
|
|
});
|
|
e.style
|
|
? ba.extend(i, r.parseStyle(e.style))
|
|
: (i = ba.extend({}, r.parseStyle(r.getAttrib(t, "style")), i)),
|
|
(o.style = r.serializeStyle(i)),
|
|
r.setAttribs(t, o);
|
|
})(n, t, o),
|
|
(r = i.select("caption", t)[0]) && !o.caption && i.remove(r),
|
|
!r &&
|
|
o.caption &&
|
|
(((r = i.create("caption")).innerHTML = wa.ie
|
|
? "\xa0"
|
|
: '<br data-mce-bogus="1"/>'),
|
|
t.insertBefore(r, t.firstChild)),
|
|
ya.unApplyAlign(n, t),
|
|
o.align && ya.applyAlign(n, t, o.align),
|
|
n.focus(),
|
|
n.addVisual();
|
|
});
|
|
},
|
|
Ta = function(n, t) {
|
|
var e,
|
|
r,
|
|
o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s,
|
|
f = n.dom,
|
|
d = {};
|
|
!0 === t
|
|
? (e = f.getParent(n.selection.getStart(), "table")) &&
|
|
((c = e),
|
|
(l = (a = n).dom),
|
|
(s = {
|
|
width: l.getStyle(c, "width") || l.getAttrib(c, "width"),
|
|
height: l.getStyle(c, "height") || l.getAttrib(c, "height"),
|
|
cellspacing:
|
|
l.getStyle(c, "border-spacing") || l.getAttrib(c, "cellspacing"),
|
|
cellpadding:
|
|
l.getAttrib(c, "data-mce-cell-padding") ||
|
|
l.getAttrib(c, "cellpadding") ||
|
|
ya.getTDTHOverallStyle(a.dom, c, "padding"),
|
|
border:
|
|
l.getAttrib(c, "data-mce-border") ||
|
|
l.getAttrib(c, "border") ||
|
|
ya.getTDTHOverallStyle(a.dom, c, "border"),
|
|
borderColor: l.getAttrib(c, "data-mce-border-color"),
|
|
caption: !!l.select("caption", c)[0],
|
|
class: l.getAttrib(c, "class")
|
|
}),
|
|
ba.each("left center right".split(" "), function(n) {
|
|
a.formatter.matchNode(c, "align" + n) && (s.align = n);
|
|
}),
|
|
!1 !== a.settings.table_advtab &&
|
|
ba.extend(s, Ca.extractAdvancedStyles(l, c)),
|
|
(d = s))
|
|
: ((r = { label: "Cols", name: "cols" }),
|
|
(o = { label: "Rows", name: "rows" })),
|
|
n.settings.table_class_list &&
|
|
(d["class"] &&
|
|
(d["class"] = d["class"].replace(/\s*mce\-item\-table\s*/g, "")),
|
|
(i = {
|
|
name: "class",
|
|
type: "listbox",
|
|
label: "Class",
|
|
values: Ca.buildListItems(n.settings.table_class_list, function(t) {
|
|
t.value &&
|
|
(t.textStyle = function() {
|
|
return n.formatter.getCssText({
|
|
block: "table",
|
|
classes: [t.value]
|
|
});
|
|
});
|
|
})
|
|
})),
|
|
(u = {
|
|
type: "form",
|
|
layout: "flex",
|
|
direction: "column",
|
|
labelGapCalc: "children",
|
|
padding: 0,
|
|
items: [
|
|
{
|
|
type: "form",
|
|
labelGapCalc: !1,
|
|
padding: 0,
|
|
layout: "grid",
|
|
columns: 2,
|
|
defaults: { type: "textbox", maxWidth: 50 },
|
|
items:
|
|
!1 !== n.settings.table_appearance_options
|
|
? [
|
|
r,
|
|
o,
|
|
{
|
|
label: "Width",
|
|
name: "width",
|
|
onchange: m.curry(Ca.updateStyleField, n)
|
|
},
|
|
{
|
|
label: "Height",
|
|
name: "height",
|
|
onchange: m.curry(Ca.updateStyleField, n)
|
|
},
|
|
{ label: "Cell spacing", name: "cellspacing" },
|
|
{ label: "Cell padding", name: "cellpadding" },
|
|
{ label: "Border", name: "border" },
|
|
{ label: "Caption", name: "caption", type: "checkbox" }
|
|
]
|
|
: [
|
|
r,
|
|
o,
|
|
{
|
|
label: "Width",
|
|
name: "width",
|
|
onchange: m.curry(Ca.updateStyleField, n)
|
|
},
|
|
{
|
|
label: "Height",
|
|
name: "height",
|
|
onchange: m.curry(Ca.updateStyleField, n)
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: "Alignment",
|
|
name: "align",
|
|
type: "listbox",
|
|
text: "None",
|
|
values: [
|
|
{ text: "None", value: "" },
|
|
{ text: "Left", value: "left" },
|
|
{ text: "Center", value: "center" },
|
|
{ text: "Right", value: "right" }
|
|
]
|
|
},
|
|
i
|
|
]
|
|
}),
|
|
!1 !== n.settings.table_advtab
|
|
? n.windowManager.open({
|
|
title: "Table properties",
|
|
data: d,
|
|
bodyType: "tabpanel",
|
|
body: [
|
|
{ title: "General", type: "form", items: u },
|
|
Ca.createStyleForm(n)
|
|
],
|
|
onsubmit: m.curry(Ra, n, e)
|
|
})
|
|
: n.windowManager.open({
|
|
title: "Table properties",
|
|
data: d,
|
|
body: u,
|
|
onsubmit: m.curry(Ra, n, e)
|
|
});
|
|
},
|
|
Da = function(n, t, e) {
|
|
var r = n.getParent(t, "table"),
|
|
o = t.parentNode,
|
|
i = n.select(e, r)[0];
|
|
i ||
|
|
((i = n.create(e)),
|
|
r.firstChild
|
|
? "CAPTION" === r.firstChild.nodeName
|
|
? n.insertAfter(i, r.firstChild)
|
|
: r.insertBefore(i, r.firstChild)
|
|
: r.appendChild(i)),
|
|
i.appendChild(t),
|
|
o.hasChildNodes() || n.remove(o);
|
|
};
|
|
function Aa(n, t, e) {
|
|
var r,
|
|
o = n.dom;
|
|
function i(n, t, e) {
|
|
e && o.setAttrib(n, t, e);
|
|
}
|
|
Ca.updateStyleField(n, e),
|
|
(r = e.control.rootControl.toJSON()),
|
|
n.undoManager.transact(function() {
|
|
ba.each(t, function(e) {
|
|
var u, a, c;
|
|
i(e, "scope", r.scope),
|
|
i(e, "style", r.style),
|
|
i(e, "class", r["class"]),
|
|
(u = e),
|
|
(a = "height"),
|
|
(c = sa.addSizeSuffix(r.height)) && o.setStyle(u, a, c),
|
|
r.type !== e.parentNode.nodeName.toLowerCase() &&
|
|
Da(n.dom, e, r.type),
|
|
1 === t.length && ya.unApplyAlign(n, e),
|
|
r.align && ya.applyAlign(n, e, r.align);
|
|
}),
|
|
n.focus();
|
|
});
|
|
}
|
|
var ka = function(n) {
|
|
var t,
|
|
e,
|
|
r,
|
|
o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s,
|
|
f = n.dom,
|
|
d = [];
|
|
(t = f.getParent(n.selection.getStart(), "table")),
|
|
(e = f.getParent(n.selection.getStart(), "td,th")),
|
|
ba.each(t.rows, function(n) {
|
|
ba.each(n.cells, function(t) {
|
|
if (f.getAttrib(t, "data-mce-selected") || t === e)
|
|
return d.push(n), !1;
|
|
});
|
|
}),
|
|
(r = d[0]) &&
|
|
(d.length > 1
|
|
? (i = {
|
|
height: "",
|
|
scope: "",
|
|
class: "",
|
|
align: "",
|
|
type: r.parentNode.nodeName.toLowerCase()
|
|
})
|
|
: ((c = r),
|
|
(l = (a = n).dom),
|
|
((s = {
|
|
height: l.getStyle(c, "height") || l.getAttrib(c, "height"),
|
|
scope: l.getAttrib(c, "scope"),
|
|
class: l.getAttrib(c, "class")
|
|
}).type = c.parentNode.nodeName.toLowerCase()),
|
|
ba.each("left center right".split(" "), function(n) {
|
|
a.formatter.matchNode(c, "align" + n) && (s.align = n);
|
|
}),
|
|
!1 !== a.settings.table_row_advtab &&
|
|
ba.extend(s, Ca.extractAdvancedStyles(l, c)),
|
|
(i = s)),
|
|
n.settings.table_row_class_list &&
|
|
(o = {
|
|
name: "class",
|
|
type: "listbox",
|
|
label: "Class",
|
|
values: Ca.buildListItems(
|
|
n.settings.table_row_class_list,
|
|
function(t) {
|
|
t.value &&
|
|
(t.textStyle = function() {
|
|
return n.formatter.getCssText({
|
|
block: "tr",
|
|
classes: [t.value]
|
|
});
|
|
});
|
|
}
|
|
)
|
|
}),
|
|
(u = {
|
|
type: "form",
|
|
columns: 2,
|
|
padding: 0,
|
|
defaults: { type: "textbox" },
|
|
items: [
|
|
{
|
|
type: "listbox",
|
|
name: "type",
|
|
label: "Row type",
|
|
text: "Header",
|
|
maxWidth: null,
|
|
values: [
|
|
{ text: "Header", value: "thead" },
|
|
{ text: "Body", value: "tbody" },
|
|
{ text: "Footer", value: "tfoot" }
|
|
]
|
|
},
|
|
{
|
|
type: "listbox",
|
|
name: "align",
|
|
label: "Alignment",
|
|
text: "None",
|
|
maxWidth: null,
|
|
values: [
|
|
{ text: "None", value: "" },
|
|
{ text: "Left", value: "left" },
|
|
{ text: "Center", value: "center" },
|
|
{ text: "Right", value: "right" }
|
|
]
|
|
},
|
|
{ label: "Height", name: "height" },
|
|
o
|
|
]
|
|
}),
|
|
!1 !== n.settings.table_row_advtab
|
|
? n.windowManager.open({
|
|
title: "Row properties",
|
|
data: i,
|
|
bodyType: "tabpanel",
|
|
body: [
|
|
{ title: "General", type: "form", items: u },
|
|
Ca.createStyleForm(n)
|
|
],
|
|
onsubmit: m.curry(Aa, n, d)
|
|
})
|
|
: n.windowManager.open({
|
|
title: "Row properties",
|
|
data: i,
|
|
body: u,
|
|
onsubmit: m.curry(Aa, n, d)
|
|
}));
|
|
},
|
|
Na = function(n, t, e) {
|
|
var r,
|
|
o = n.dom;
|
|
function i(n, t, e) {
|
|
e && o.setAttrib(n, t, e);
|
|
}
|
|
function u(n, t, e) {
|
|
e && o.setStyle(n, t, e);
|
|
}
|
|
Ca.updateStyleField(n, e),
|
|
(r = e.control.rootControl.toJSON()),
|
|
n.undoManager.transact(function() {
|
|
ba.each(t, function(e) {
|
|
var a, c;
|
|
i(e, "scope", r.scope),
|
|
1 === t.length
|
|
? i(e, "style", r.style)
|
|
: ((a = e), (c = r.style), (a.style.cssText += ";" + c)),
|
|
i(e, "class", r["class"]),
|
|
u(e, "width", sa.addSizeSuffix(r.width)),
|
|
u(e, "height", sa.addSizeSuffix(r.height)),
|
|
r.type &&
|
|
e.nodeName.toLowerCase() !== r.type &&
|
|
(e = o.rename(e, r.type)),
|
|
1 === t.length && (ya.unApplyAlign(n, e), ya.unApplyVAlign(n, e)),
|
|
r.align && ya.applyAlign(n, e, r.align),
|
|
r.valign && ya.applyVAlign(n, e, r.valign);
|
|
}),
|
|
n.focus();
|
|
});
|
|
},
|
|
Oa = function(n) {
|
|
var t,
|
|
e,
|
|
r,
|
|
o = [];
|
|
if (
|
|
((o = n.dom.select("td[data-mce-selected],th[data-mce-selected]")),
|
|
(t = n.dom.getParent(n.selection.getStart(), "td,th")),
|
|
!o.length && t && o.push(t),
|
|
(t = t || o[0]))
|
|
) {
|
|
var i, u, a, c;
|
|
o.length > 1
|
|
? (e = {
|
|
width: "",
|
|
height: "",
|
|
scope: "",
|
|
class: "",
|
|
align: "",
|
|
style: "",
|
|
type: t.nodeName.toLowerCase()
|
|
})
|
|
: ((u = t),
|
|
(a = (i = n).dom),
|
|
((c = {
|
|
width: a.getStyle(u, "width") || a.getAttrib(u, "width"),
|
|
height: a.getStyle(u, "height") || a.getAttrib(u, "height"),
|
|
scope: a.getAttrib(u, "scope"),
|
|
class: a.getAttrib(u, "class")
|
|
}).type = u.nodeName.toLowerCase()),
|
|
ba.each("left center right".split(" "), function(n) {
|
|
i.formatter.matchNode(u, "align" + n) && (c.align = n);
|
|
}),
|
|
ba.each("top middle bottom".split(" "), function(n) {
|
|
i.formatter.matchNode(u, "valign" + n) && (c.valign = n);
|
|
}),
|
|
!1 !== i.settings.table_cell_advtab &&
|
|
ba.extend(c, Ca.extractAdvancedStyles(a, u)),
|
|
(e = c)),
|
|
n.settings.table_cell_class_list &&
|
|
(r = {
|
|
name: "class",
|
|
type: "listbox",
|
|
label: "Class",
|
|
values: Ca.buildListItems(
|
|
n.settings.table_cell_class_list,
|
|
function(t) {
|
|
t.value &&
|
|
(t.textStyle = function() {
|
|
return n.formatter.getCssText({
|
|
block: "td",
|
|
classes: [t.value]
|
|
});
|
|
});
|
|
}
|
|
)
|
|
});
|
|
var l = {
|
|
type: "form",
|
|
layout: "flex",
|
|
direction: "column",
|
|
labelGapCalc: "children",
|
|
padding: 0,
|
|
items: [
|
|
{
|
|
type: "form",
|
|
layout: "grid",
|
|
columns: 2,
|
|
labelGapCalc: !1,
|
|
padding: 0,
|
|
defaults: { type: "textbox", maxWidth: 50 },
|
|
items: [
|
|
{
|
|
label: "Width",
|
|
name: "width",
|
|
onchange: m.curry(Ca.updateStyleField, n)
|
|
},
|
|
{
|
|
label: "Height",
|
|
name: "height",
|
|
onchange: m.curry(Ca.updateStyleField, n)
|
|
},
|
|
{
|
|
label: "Cell type",
|
|
name: "type",
|
|
type: "listbox",
|
|
text: "None",
|
|
minWidth: 90,
|
|
maxWidth: null,
|
|
values: [
|
|
{ text: "Cell", value: "td" },
|
|
{ text: "Header cell", value: "th" }
|
|
]
|
|
},
|
|
{
|
|
label: "Scope",
|
|
name: "scope",
|
|
type: "listbox",
|
|
text: "None",
|
|
minWidth: 90,
|
|
maxWidth: null,
|
|
values: [
|
|
{ text: "None", value: "" },
|
|
{ text: "Row", value: "row" },
|
|
{ text: "Column", value: "col" },
|
|
{ text: "Row group", value: "rowgroup" },
|
|
{ text: "Column group", value: "colgroup" }
|
|
]
|
|
},
|
|
{
|
|
label: "H Align",
|
|
name: "align",
|
|
type: "listbox",
|
|
text: "None",
|
|
minWidth: 90,
|
|
maxWidth: null,
|
|
values: [
|
|
{ text: "None", value: "" },
|
|
{ text: "Left", value: "left" },
|
|
{ text: "Center", value: "center" },
|
|
{ text: "Right", value: "right" }
|
|
]
|
|
},
|
|
{
|
|
label: "V Align",
|
|
name: "valign",
|
|
type: "listbox",
|
|
text: "None",
|
|
minWidth: 90,
|
|
maxWidth: null,
|
|
values: [
|
|
{ text: "None", value: "" },
|
|
{ text: "Top", value: "top" },
|
|
{ text: "Middle", value: "middle" },
|
|
{ text: "Bottom", value: "bottom" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
r
|
|
]
|
|
};
|
|
!1 !== n.settings.table_cell_advtab
|
|
? n.windowManager.open({
|
|
title: "Cell properties",
|
|
bodyType: "tabpanel",
|
|
data: e,
|
|
body: [
|
|
{ title: "General", type: "form", items: l },
|
|
Ca.createStyleForm(n)
|
|
],
|
|
onsubmit: m.curry(Na, n, o)
|
|
})
|
|
: n.windowManager.open({
|
|
title: "Cell properties",
|
|
data: e,
|
|
body: l,
|
|
onsubmit: m.curry(Na, n, o)
|
|
});
|
|
}
|
|
},
|
|
Ea = ba.each,
|
|
Ba = w.none(),
|
|
Ia = {
|
|
registerCommands: function(n, t, e, r) {
|
|
var o = sa.getIsRoot(n),
|
|
i = function() {
|
|
return en.fromDom(n.dom.getParent(n.selection.getStart(), "th,td"));
|
|
},
|
|
u = function(n) {
|
|
return Vt(n, o);
|
|
},
|
|
a = function(t) {
|
|
var o = i();
|
|
u(o).each(function(i) {
|
|
var u = kr.forMenu(r, i, o);
|
|
t(i, u).each(function(t) {
|
|
n.selection.setRng(t), n.focus(), e.clear(i);
|
|
});
|
|
});
|
|
},
|
|
c = function(t) {
|
|
var e = i();
|
|
return u(e).bind(function(t) {
|
|
var o = en.fromDom(n.getDoc()),
|
|
i = kr.forMenu(r, t, e),
|
|
u = Oe(m.noop, o, w.none());
|
|
return va(t, i, u);
|
|
});
|
|
},
|
|
l = function(t) {
|
|
Ba.each(function(o) {
|
|
var a = B.map(o, function(n) {
|
|
return he(n);
|
|
}),
|
|
c = i();
|
|
u(c).bind(function(o) {
|
|
var i = en.fromDom(n.getDoc()),
|
|
u = Ee(i),
|
|
l = kr.pasteRows(r, o, c, a, u);
|
|
t(o, l).each(function(t) {
|
|
n.selection.setRng(t), n.focus(), e.clear(o);
|
|
});
|
|
});
|
|
});
|
|
};
|
|
Ea(
|
|
{
|
|
mceTableSplitCells: function() {
|
|
a(t.unmergeCells);
|
|
},
|
|
mceTableMergeCells: function() {
|
|
a(t.mergeCells);
|
|
},
|
|
mceTableInsertRowBefore: function() {
|
|
a(t.insertRowsBefore);
|
|
},
|
|
mceTableInsertRowAfter: function() {
|
|
a(t.insertRowsAfter);
|
|
},
|
|
mceTableInsertColBefore: function() {
|
|
a(t.insertColumnsBefore);
|
|
},
|
|
mceTableInsertColAfter: function() {
|
|
a(t.insertColumnsAfter);
|
|
},
|
|
mceTableDeleteCol: function() {
|
|
a(t.deleteColumn);
|
|
},
|
|
mceTableDeleteRow: function() {
|
|
a(t.deleteRow);
|
|
},
|
|
mceTableCutRow: function(n) {
|
|
(Ba = c()), a(t.deleteRow);
|
|
},
|
|
mceTableCopyRow: function(n) {
|
|
Ba = c();
|
|
},
|
|
mceTablePasteRowBefore: function(n) {
|
|
l(t.pasteRowsBefore);
|
|
},
|
|
mceTablePasteRowAfter: function(n) {
|
|
l(t.pasteRowsAfter);
|
|
},
|
|
mceTableDelete: function() {
|
|
var t = en.fromDom(
|
|
n.dom.getParent(n.selection.getStart(), "th,td")
|
|
);
|
|
Vt(t, o)
|
|
.filter(m.not(o))
|
|
.each(function(t) {
|
|
var e = en.fromText("");
|
|
ue.after(t, e), le.remove(t);
|
|
var r = n.dom.createRng();
|
|
r.setStart(e.dom(), 0),
|
|
r.setEnd(e.dom(), 0),
|
|
n.selection.setRng(r);
|
|
});
|
|
}
|
|
},
|
|
function(t, e) {
|
|
n.addCommand(e, t);
|
|
}
|
|
),
|
|
Ea(
|
|
{
|
|
mceInsertTable: m.curry(Ta, n),
|
|
mceTableProps: m.curry(Ta, n, !0),
|
|
mceTableRowProps: m.curry(ka, n),
|
|
mceTableCellProps: m.curry(Oa, n)
|
|
},
|
|
function(t, e) {
|
|
n.addCommand(e, function(n, e) {
|
|
t(e);
|
|
});
|
|
}
|
|
);
|
|
},
|
|
getClipboardRows: function() {
|
|
return Ba.fold(
|
|
function() {},
|
|
function(n) {
|
|
return B.map(n, function(n) {
|
|
return n.dom();
|
|
});
|
|
}
|
|
);
|
|
},
|
|
setClipboardRows: function(n) {
|
|
var t = B.map(n, en.fromDom);
|
|
Ba = w.from(t);
|
|
}
|
|
},
|
|
Pa = function(n) {
|
|
var t = w
|
|
.from(n.dom().documentElement)
|
|
.map(en.fromDom)
|
|
.getOr(n);
|
|
return {
|
|
parent: m.constant(t),
|
|
view: m.constant(n),
|
|
origin: m.constant(oo(0, 0))
|
|
};
|
|
},
|
|
Wa = function(n, t) {
|
|
return {
|
|
parent: m.constant(t),
|
|
view: m.constant(n),
|
|
origin: m.constant(oo(0, 0))
|
|
};
|
|
},
|
|
_a = function(n) {
|
|
var t = X.immutable.apply(null, n),
|
|
e = [];
|
|
return {
|
|
bind: function(n) {
|
|
if (n === undefined) throw "Event bind error: undefined handler";
|
|
e.push(n);
|
|
},
|
|
unbind: function(n) {
|
|
e = B.filter(e, function(t) {
|
|
return t !== n;
|
|
});
|
|
},
|
|
trigger: function() {
|
|
var n = t.apply(null, arguments);
|
|
B.each(e, function(t) {
|
|
t(n);
|
|
});
|
|
}
|
|
};
|
|
},
|
|
Ma = function(n) {
|
|
return {
|
|
registry: L.map(n, function(n) {
|
|
return { bind: n.bind, unbind: n.unbind };
|
|
}),
|
|
trigger: L.map(n, function(n) {
|
|
return n.trigger;
|
|
})
|
|
};
|
|
},
|
|
La = {
|
|
mode: Ao.exactly(["compare", "extract", "mutate", "sink"]),
|
|
sink: Ao.exactly(["element", "start", "stop", "destroy"]),
|
|
api: Ao.exactly(["forceDrop", "drop", "move", "delayDrop"])
|
|
},
|
|
qa = { resolve: gi("ephox-dragster").resolve },
|
|
za = function(n, t) {
|
|
return function(e) {
|
|
if (n(e)) {
|
|
var r,
|
|
o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s = en.fromDom(e.target),
|
|
f = function() {
|
|
e.stopPropagation();
|
|
},
|
|
d = function() {
|
|
e.preventDefault();
|
|
},
|
|
g = m.compose(
|
|
d,
|
|
f
|
|
),
|
|
p = ((r = s),
|
|
(o = e.clientX),
|
|
(i = e.clientY),
|
|
(u = f),
|
|
(a = d),
|
|
(c = g),
|
|
(l = e),
|
|
{
|
|
target: m.constant(r),
|
|
x: m.constant(o),
|
|
y: m.constant(i),
|
|
stop: u,
|
|
prevent: a,
|
|
kill: c,
|
|
raw: m.constant(l)
|
|
});
|
|
t(p);
|
|
}
|
|
};
|
|
},
|
|
Fa = function(n, t, e, r, o) {
|
|
var i = za(e, r);
|
|
return (
|
|
n.dom().addEventListener(t, i, o), { unbind: m.curry(ja, n, t, i, o) }
|
|
);
|
|
},
|
|
ja = function(n, t, e, r) {
|
|
n.dom().removeEventListener(t, e, r);
|
|
},
|
|
Ha = function(n, t, e, r) {
|
|
return Fa(n, t, e, r, !1);
|
|
},
|
|
Va = m.constant(!0),
|
|
Ua = function(n, t, e) {
|
|
return Ha(n, t, Va, e);
|
|
},
|
|
Ga = La.mode({
|
|
compare: function(n, t) {
|
|
return oo(t.left() - n.left(), t.top() - n.top());
|
|
},
|
|
extract: function(n) {
|
|
return w.some(oo(n.x(), n.y()));
|
|
},
|
|
sink: function(n, t) {
|
|
var e,
|
|
r,
|
|
o,
|
|
i = ((e = t),
|
|
(r = Xo.merge({ layerClass: qa.resolve("blocker") }, e)),
|
|
(o = en.fromTag("div")),
|
|
Dt.set(o, "role", "presentation"),
|
|
re.setAll(o, {
|
|
position: "fixed",
|
|
left: "0px",
|
|
top: "0px",
|
|
width: "100%",
|
|
height: "100%"
|
|
}),
|
|
Ni.add(o, qa.resolve("blocker")),
|
|
Ni.add(o, r.layerClass),
|
|
{
|
|
element: function() {
|
|
return o;
|
|
},
|
|
destroy: function() {
|
|
le.remove(o);
|
|
}
|
|
}),
|
|
u = Ua(i.element(), "mousedown", n.forceDrop),
|
|
a = Ua(i.element(), "mouseup", n.drop),
|
|
c = Ua(i.element(), "mousemove", n.move),
|
|
l = Ua(i.element(), "mouseout", n.delayDrop);
|
|
return La.sink({
|
|
element: i.element,
|
|
start: function(n) {
|
|
ue.append(n, i.element());
|
|
},
|
|
stop: function() {
|
|
le.remove(i.element());
|
|
},
|
|
destroy: function() {
|
|
i.destroy(), a.unbind(), c.unbind(), l.unbind(), u.unbind();
|
|
}
|
|
});
|
|
},
|
|
mutate: function(n, t) {
|
|
n.mutate(t.left(), t.top());
|
|
}
|
|
}),
|
|
Xa = function() {
|
|
var n = w.none(),
|
|
t = Ma({ move: _a(["info"]) });
|
|
return {
|
|
onEvent: function(e, r) {
|
|
r.extract(e).each(function(e) {
|
|
var o, i, u;
|
|
((o = r),
|
|
(i = e),
|
|
(u = n.map(function(n) {
|
|
return o.compare(n, i);
|
|
})),
|
|
(n = w.some(i)),
|
|
u).each(function(n) {
|
|
t.trigger.move(n);
|
|
});
|
|
});
|
|
},
|
|
reset: function() {
|
|
n = w.none();
|
|
},
|
|
events: t.registry
|
|
};
|
|
},
|
|
Ya = function() {
|
|
var n = { onEvent: function(n, t) {}, reset: m.noop },
|
|
t = Xa(),
|
|
e = n;
|
|
return {
|
|
on: function() {
|
|
e.reset(), (e = t);
|
|
},
|
|
off: function() {
|
|
e.reset(), (e = n);
|
|
},
|
|
isOn: function() {
|
|
return e === t;
|
|
},
|
|
onEvent: function(n, t) {
|
|
e.onEvent(n, t);
|
|
},
|
|
events: t.events
|
|
};
|
|
},
|
|
$a = function(n, t) {
|
|
var e = null;
|
|
return {
|
|
cancel: function() {
|
|
null !== e && (clearTimeout(e), (e = null));
|
|
},
|
|
throttle: function() {
|
|
var r = arguments;
|
|
null !== e && clearTimeout(e),
|
|
(e = setTimeout(function() {
|
|
n.apply(null, r), (e = null), (r = null);
|
|
}, t));
|
|
}
|
|
};
|
|
},
|
|
Ka = function(n, t, e) {
|
|
var r = !1,
|
|
o = Ma({ start: _a([]), stop: _a([]) }),
|
|
i = Ya(),
|
|
u = function() {
|
|
l.stop(), i.isOn() && (i.off(), o.trigger.stop());
|
|
},
|
|
a = $a(u, 200);
|
|
i.events.move.bind(function(e) {
|
|
t.mutate(n, e.info());
|
|
});
|
|
var c = function(n) {
|
|
return function() {
|
|
var t = Array.prototype.slice.call(arguments, 0);
|
|
if (r) return n.apply(null, t);
|
|
};
|
|
},
|
|
l = t.sink(
|
|
La.api({
|
|
forceDrop: u,
|
|
drop: c(u),
|
|
move: c(function(n, e) {
|
|
a.cancel(), i.onEvent(n, t);
|
|
}),
|
|
delayDrop: c(a.throttle)
|
|
}),
|
|
e
|
|
);
|
|
return {
|
|
element: l.element,
|
|
go: function(n) {
|
|
l.start(n), i.on(), o.trigger.start();
|
|
},
|
|
on: function() {
|
|
r = !0;
|
|
},
|
|
off: function() {
|
|
r = !1;
|
|
},
|
|
destroy: function() {
|
|
l.destroy();
|
|
},
|
|
events: o.registry
|
|
};
|
|
},
|
|
Ja = function(n, t) {
|
|
var e = t !== undefined ? t : {},
|
|
r = e.mode !== undefined ? e.mode : Ga;
|
|
return Ka(n, r, t);
|
|
},
|
|
Qa = function() {
|
|
var n,
|
|
t = Ma({ drag: _a(["xDelta", "yDelta", "target"]) }),
|
|
e = w.none(),
|
|
r = {
|
|
mutate: function(t, e) {
|
|
n.trigger.drag(t, e);
|
|
},
|
|
events: (n = Ma({ drag: _a(["xDelta", "yDelta"]) })).registry
|
|
};
|
|
return (
|
|
r.events.drag.bind(function(n) {
|
|
e.each(function(e) {
|
|
t.trigger.drag(n.xDelta(), n.yDelta(), e);
|
|
});
|
|
}),
|
|
{
|
|
assign: function(n) {
|
|
e = w.some(n);
|
|
},
|
|
get: function() {
|
|
return e;
|
|
},
|
|
mutate: r.mutate,
|
|
events: t.registry
|
|
}
|
|
);
|
|
},
|
|
Za = function(n, t, e) {
|
|
return qt.ancestor(n, t, e).isSome();
|
|
},
|
|
nc = pi.resolve("resizer-bar-dragging"),
|
|
tc = function(n, t) {
|
|
var e = wo.height,
|
|
r = (function(n, t, e) {
|
|
var r = Qa(),
|
|
o = Ja(r, {}),
|
|
i = w.none(),
|
|
u = function(n, t) {
|
|
return w.from(Dt.get(n, t));
|
|
};
|
|
r.events.drag.bind(function(n) {
|
|
u(n.target(), "data-row").each(function(t) {
|
|
var e = Iu.getInt(n.target(), "top");
|
|
re.set(n.target(), "top", e + n.yDelta() + "px");
|
|
}),
|
|
u(n.target(), "data-column").each(function(t) {
|
|
var e = Iu.getInt(n.target(), "left");
|
|
re.set(n.target(), "left", e + n.xDelta() + "px");
|
|
});
|
|
});
|
|
var a = function(n, t) {
|
|
return (
|
|
Iu.getInt(n, t) - parseInt(Dt.get(n, "data-initial-" + t), 10)
|
|
);
|
|
};
|
|
o.events.stop.bind(function() {
|
|
r.get().each(function(r) {
|
|
i.each(function(o) {
|
|
u(r, "data-row").each(function(n) {
|
|
var t = a(r, "top");
|
|
Dt.remove(r, "data-initial-top"),
|
|
d.trigger.adjustHeight(o, t, parseInt(n, 10));
|
|
}),
|
|
u(r, "data-column").each(function(n) {
|
|
var t = a(r, "left");
|
|
Dt.remove(r, "data-initial-left"),
|
|
d.trigger.adjustWidth(o, t, parseInt(n, 10));
|
|
}),
|
|
Mi(n, o, e, t);
|
|
});
|
|
});
|
|
});
|
|
var c = function(t, e) {
|
|
d.trigger.startAdjust(),
|
|
r.assign(t),
|
|
Dt.set(t, "data-initial-" + e, parseInt(re.get(t, e), 10)),
|
|
Ni.add(t, nc),
|
|
re.set(t, "opacity", "0.2"),
|
|
o.go(n.parent());
|
|
},
|
|
l = Ua(n.parent(), "mousedown", function(n) {
|
|
Fi(n.target()) && c(n.target(), "top"),
|
|
ji(n.target()) && c(n.target(), "left");
|
|
}),
|
|
s = function(t) {
|
|
return ot.eq(t, n.view());
|
|
},
|
|
f = Ua(n.view(), "mouseover", function(r) {
|
|
"table" === xt.name(r.target()) || Za(r.target(), "table", s)
|
|
? (i =
|
|
"table" === xt.name(r.target())
|
|
? w.some(r.target())
|
|
: qt.ancestor(r.target(), "table", s)).each(function(r) {
|
|
Mi(n, r, e, t);
|
|
})
|
|
: Nt.inBody(r.target()) && zi(n);
|
|
}),
|
|
d = Ma({
|
|
adjustHeight: _a(["table", "delta", "row"]),
|
|
adjustWidth: _a(["table", "delta", "column"]),
|
|
startAdjust: _a([])
|
|
});
|
|
return {
|
|
destroy: function() {
|
|
l.unbind(), f.unbind(), o.destroy(), zi(n);
|
|
},
|
|
refresh: function(r) {
|
|
Mi(n, r, e, t);
|
|
},
|
|
on: o.on,
|
|
off: o.off,
|
|
hideBars: m.curry(Li, n),
|
|
showBars: m.curry(qi, n),
|
|
events: d.registry
|
|
};
|
|
})(n, t, e),
|
|
o = Ma({
|
|
beforeResize: _a(["table"]),
|
|
afterResize: _a(["table"]),
|
|
startDrag: _a([])
|
|
});
|
|
return (
|
|
r.events.adjustHeight.bind(function(n) {
|
|
o.trigger.beforeResize(n.table());
|
|
var t = e.delta(n.delta(), n.table());
|
|
Ju(n.table(), t, n.row(), e), o.trigger.afterResize(n.table());
|
|
}),
|
|
r.events.startAdjust.bind(function(n) {
|
|
o.trigger.startDrag();
|
|
}),
|
|
r.events.adjustWidth.bind(function(n) {
|
|
o.trigger.beforeResize(n.table());
|
|
var e = t.delta(n.delta(), n.table());
|
|
Ku(n.table(), e, n.column(), t), o.trigger.afterResize(n.table());
|
|
}),
|
|
{
|
|
on: r.on,
|
|
off: r.off,
|
|
hideBars: r.hideBars,
|
|
showBars: r.showBars,
|
|
destroy: r.destroy,
|
|
events: o.registry
|
|
}
|
|
);
|
|
},
|
|
ec = function(n, t) {
|
|
return n.inline
|
|
? Wa(
|
|
sa.getBody(n),
|
|
((e = en.fromTag("div")),
|
|
re.setAll(e, {
|
|
position: "static",
|
|
height: "0",
|
|
width: "0",
|
|
padding: "0",
|
|
margin: "0",
|
|
border: "0"
|
|
}),
|
|
ue.append(Nt.body(), e),
|
|
e)
|
|
)
|
|
: Pa(en.fromDom(n.getDoc()));
|
|
var e;
|
|
},
|
|
rc = function(n, t) {
|
|
n.inline && le.remove(t.parent());
|
|
},
|
|
oc = function(n) {
|
|
var t,
|
|
e,
|
|
r = w.none(),
|
|
o = w.none(),
|
|
i = w.none(),
|
|
u = /(\d+(\.\d+)?)%/,
|
|
a = function(n) {
|
|
return "TABLE" === n.nodeName;
|
|
};
|
|
return (
|
|
n.on("init", function() {
|
|
var t = xo(pa),
|
|
e = ec(n);
|
|
if (
|
|
((i = w.some(e)),
|
|
n.settings.object_resizing &&
|
|
!1 !== n.settings.table_resize_bars &&
|
|
(!0 === n.settings.object_resizing ||
|
|
"table" === n.settings.object_resizing))
|
|
) {
|
|
var u = tc(e, t);
|
|
u.on(),
|
|
u.events.startDrag.bind(function(t) {
|
|
r = w.some(n.selection.getRng());
|
|
}),
|
|
u.events.afterResize.bind(function(t) {
|
|
var e = t.table(),
|
|
o = Bt.descendants(
|
|
e,
|
|
"td[data-mce-style],th[data-mce-style]"
|
|
);
|
|
B.each(o, function(n) {
|
|
Dt.remove(n, "data-mce-style");
|
|
}),
|
|
r.each(function(t) {
|
|
n.selection.setRng(t), n.focus();
|
|
}),
|
|
n.undoManager.add();
|
|
}),
|
|
(o = w.some(u));
|
|
}
|
|
}),
|
|
n.on("ObjectResizeStart", function(r) {
|
|
var o;
|
|
a(r.target) &&
|
|
((t = r.width),
|
|
(o = r.target),
|
|
(e = n.dom.getStyle(o, "width") || n.dom.getAttrib(o, "width")));
|
|
}),
|
|
n.on("ObjectResized", function(r) {
|
|
if (a(r.target)) {
|
|
var o = r.target;
|
|
if (u.test(e)) {
|
|
var i = parseFloat(u.exec(e)[1]),
|
|
c = (r.width * i) / t;
|
|
n.dom.setStyle(o, "width", c + "%");
|
|
} else {
|
|
var l = [];
|
|
ba.each(o.rows, function(t) {
|
|
ba.each(t.cells, function(t) {
|
|
var e = n.dom.getStyle(t, "width", !0);
|
|
l.push({ cell: t, width: e });
|
|
});
|
|
}),
|
|
ba.each(l, function(t) {
|
|
n.dom.setStyle(t.cell, "width", t.width),
|
|
n.dom.setAttrib(t.cell, "width", null);
|
|
});
|
|
}
|
|
}
|
|
}),
|
|
{
|
|
lazyResize: function() {
|
|
return o;
|
|
},
|
|
lazyWire: function() {
|
|
return i.getOr(Pa(en.fromDom(n.getBody())));
|
|
},
|
|
destroy: function() {
|
|
o.each(function(n) {
|
|
n.destroy();
|
|
}),
|
|
i.each(function(t) {
|
|
rc(n, t);
|
|
});
|
|
}
|
|
}
|
|
);
|
|
},
|
|
ic = function(n) {
|
|
return { fold: n };
|
|
},
|
|
uc = function(n) {
|
|
return ic(function(t, e, r, o) {
|
|
return t(n);
|
|
});
|
|
},
|
|
ac = function(n) {
|
|
return ic(function(t, e, r, o) {
|
|
return e(n);
|
|
});
|
|
},
|
|
cc = function(n, t) {
|
|
return ic(function(e, r, o, i) {
|
|
return o(n, t);
|
|
});
|
|
},
|
|
lc = function(n) {
|
|
return ic(function(t, e, r, o) {
|
|
return o(n);
|
|
});
|
|
},
|
|
sc = function(n, t) {
|
|
return Vt(n, t).bind(function(t) {
|
|
var e = Ht(t);
|
|
return B.findIndex(e, function(t) {
|
|
return ot.eq(n, t);
|
|
}).map(function(n) {
|
|
return { index: m.constant(n), all: m.constant(e) };
|
|
});
|
|
});
|
|
},
|
|
fc = function(n, t) {
|
|
return sc(n, t).fold(
|
|
function() {
|
|
return uc(n);
|
|
},
|
|
function(t) {
|
|
return t.index() + 1 < t.all().length
|
|
? cc(n, t.all()[t.index() + 1])
|
|
: lc(n);
|
|
}
|
|
);
|
|
},
|
|
dc = function(n, t) {
|
|
return sc(n, t).fold(
|
|
function() {
|
|
return uc();
|
|
},
|
|
function(t) {
|
|
return t.index() - 1 >= 0 ? cc(n, t.all()[t.index() - 1]) : ac(n);
|
|
}
|
|
);
|
|
},
|
|
mc = wr([
|
|
{ before: ["element"] },
|
|
{ on: ["element", "offset"] },
|
|
{ after: ["element"] }
|
|
]),
|
|
gc = {
|
|
before: mc.before,
|
|
on: mc.on,
|
|
after: mc.after,
|
|
cata: function(n, t, e, r) {
|
|
return n.fold(t, e, r);
|
|
},
|
|
getStart: function(n) {
|
|
return n.fold(m.identity, m.identity, m.identity);
|
|
}
|
|
},
|
|
pc = wr([
|
|
{ domRange: ["rng"] },
|
|
{ relative: ["startSitu", "finishSitu"] },
|
|
{ exact: ["start", "soffset", "finish", "foffset"] }
|
|
]),
|
|
hc = X.immutable("start", "soffset", "finish", "foffset"),
|
|
vc = {
|
|
domRange: pc.domRange,
|
|
relative: pc.relative,
|
|
exact: pc.exact,
|
|
exactFromRange: function(n) {
|
|
return pc.exact(n.start(), n.soffset(), n.finish(), n.foffset());
|
|
},
|
|
range: hc,
|
|
getWin: function(n) {
|
|
var t = n.match({
|
|
domRange: function(n) {
|
|
return en.fromDom(n.startContainer);
|
|
},
|
|
relative: function(n, t) {
|
|
return gc.getStart(n);
|
|
},
|
|
exact: function(n, t, e, r) {
|
|
return n;
|
|
}
|
|
});
|
|
return dt.defaultView(t);
|
|
}
|
|
},
|
|
bc = function(n, t, e, r) {
|
|
var o = dt
|
|
.owner(n)
|
|
.dom()
|
|
.createRange();
|
|
return o.setStart(n.dom(), t), o.setEnd(e.dom(), r), o;
|
|
},
|
|
wc = function(n, t, e, r) {
|
|
var o = bc(n, t, e, r),
|
|
i = ot.eq(n, e) && t === r;
|
|
return o.collapsed && !i;
|
|
},
|
|
yc = function(n, t) {
|
|
n.selectNodeContents(t.dom());
|
|
},
|
|
xc = function(n) {
|
|
n.deleteContents();
|
|
},
|
|
Cc = function(n) {
|
|
return {
|
|
left: m.constant(n.left),
|
|
top: m.constant(n.top),
|
|
right: m.constant(n.right),
|
|
bottom: m.constant(n.bottom),
|
|
width: m.constant(n.width),
|
|
height: m.constant(n.height)
|
|
};
|
|
},
|
|
Sc = {
|
|
create: function(n) {
|
|
return n.document.createRange();
|
|
},
|
|
replaceWith: function(n, t) {
|
|
xc(n), n.insertNode(t.dom());
|
|
},
|
|
selectNodeContents: function(n, t) {
|
|
var e = n.document.createRange();
|
|
return yc(e, t), e;
|
|
},
|
|
selectNodeContentsUsing: yc,
|
|
relativeToNative: function(n, t, e) {
|
|
var r,
|
|
o,
|
|
i = n.document.createRange();
|
|
return (
|
|
(r = i),
|
|
t.fold(
|
|
function(n) {
|
|
r.setStartBefore(n.dom());
|
|
},
|
|
function(n, t) {
|
|
r.setStart(n.dom(), t);
|
|
},
|
|
function(n) {
|
|
r.setStartAfter(n.dom());
|
|
}
|
|
),
|
|
(o = i),
|
|
e.fold(
|
|
function(n) {
|
|
o.setEndBefore(n.dom());
|
|
},
|
|
function(n, t) {
|
|
o.setEnd(n.dom(), t);
|
|
},
|
|
function(n) {
|
|
o.setEndAfter(n.dom());
|
|
}
|
|
),
|
|
i
|
|
);
|
|
},
|
|
exactToNative: function(n, t, e, r, o) {
|
|
var i = n.document.createRange();
|
|
return i.setStart(t.dom(), e), i.setEnd(r.dom(), o), i;
|
|
},
|
|
deleteContents: xc,
|
|
cloneFragment: function(n) {
|
|
var t = n.cloneContents();
|
|
return en.fromDom(t);
|
|
},
|
|
getFirstRect: function(n) {
|
|
var t = n.getClientRects(),
|
|
e = t.length > 0 ? t[0] : n.getBoundingClientRect();
|
|
return e.width > 0 || e.height > 0 ? w.some(e).map(Cc) : w.none();
|
|
},
|
|
getBounds: function(n) {
|
|
var t = n.getBoundingClientRect();
|
|
return t.width > 0 || t.height > 0 ? w.some(t).map(Cc) : w.none();
|
|
},
|
|
isWithin: function(n, t) {
|
|
return (
|
|
t.compareBoundaryPoints(n.END_TO_START, n) < 1 &&
|
|
t.compareBoundaryPoints(n.START_TO_END, n) > -1
|
|
);
|
|
},
|
|
toString: function(n) {
|
|
return n.toString();
|
|
}
|
|
},
|
|
Rc = wr([
|
|
{ ltr: ["start", "soffset", "finish", "foffset"] },
|
|
{ rtl: ["start", "soffset", "finish", "foffset"] }
|
|
]),
|
|
Tc = function(n, t, e) {
|
|
return t(
|
|
en.fromDom(e.startContainer),
|
|
e.startOffset,
|
|
en.fromDom(e.endContainer),
|
|
e.endOffset
|
|
);
|
|
},
|
|
Dc = function(n, t) {
|
|
var e,
|
|
r,
|
|
o,
|
|
i = ((e = n),
|
|
t.match({
|
|
domRange: function(n) {
|
|
return { ltr: m.constant(n), rtl: w.none };
|
|
},
|
|
relative: function(n, t) {
|
|
return {
|
|
ltr: yn(function() {
|
|
return Sc.relativeToNative(e, n, t);
|
|
}),
|
|
rtl: yn(function() {
|
|
return w.some(Sc.relativeToNative(e, t, n));
|
|
})
|
|
};
|
|
},
|
|
exact: function(n, t, r, o) {
|
|
return {
|
|
ltr: yn(function() {
|
|
return Sc.exactToNative(e, n, t, r, o);
|
|
}),
|
|
rtl: yn(function() {
|
|
return w.some(Sc.exactToNative(e, r, o, n, t));
|
|
})
|
|
};
|
|
}
|
|
}));
|
|
return (o = (r = i).ltr()).collapsed
|
|
? r
|
|
.rtl()
|
|
.filter(function(n) {
|
|
return !1 === n.collapsed;
|
|
})
|
|
.map(function(n) {
|
|
return Rc.rtl(
|
|
en.fromDom(n.endContainer),
|
|
n.endOffset,
|
|
en.fromDom(n.startContainer),
|
|
n.startOffset
|
|
);
|
|
})
|
|
.getOrThunk(function() {
|
|
return Tc(0, Rc.ltr, o);
|
|
})
|
|
: Tc(0, Rc.ltr, o);
|
|
},
|
|
Ac = (Rc.ltr, Rc.rtl, Dc),
|
|
kc = function(n, t) {
|
|
return Dc(n, t).match({
|
|
ltr: function(t, e, r, o) {
|
|
var i = n.document.createRange();
|
|
return i.setStart(t.dom(), e), i.setEnd(r.dom(), o), i;
|
|
},
|
|
rtl: function(t, e, r, o) {
|
|
var i = n.document.createRange();
|
|
return i.setStart(r.dom(), o), i.setEnd(t.dom(), e), i;
|
|
}
|
|
});
|
|
},
|
|
Nc = function(n, t, e) {
|
|
return t >= n.left && t <= n.right && e >= n.top && e <= n.bottom;
|
|
},
|
|
Oc = function(n, t, e, r, o) {
|
|
if (0 === o) return 0;
|
|
if (t === r) return o - 1;
|
|
for (var i = r, u = 1; u < o; u++) {
|
|
var a = n(u),
|
|
c = Math.abs(t - a.left);
|
|
if (e > a.bottom);
|
|
else {
|
|
if (e < a.top || c > i) return u - 1;
|
|
i = c;
|
|
}
|
|
}
|
|
return 0;
|
|
},
|
|
Ec = {
|
|
locate: function(n, t, e, r) {
|
|
var o = n.dom().createRange();
|
|
o.selectNode(t.dom());
|
|
var i = o.getClientRects();
|
|
return $o(i, function(n) {
|
|
return Nc(n, e, r) ? w.some(n) : w.none();
|
|
}).map(function(o) {
|
|
return (
|
|
(i = n),
|
|
(a = e),
|
|
(c = r),
|
|
(l = o),
|
|
(s = function(n) {
|
|
var t = i.dom().createRange();
|
|
return t.setStart(u.dom(), n), t.collapse(!0), t;
|
|
}),
|
|
(f = we.get((u = t)).length),
|
|
(d = Oc(
|
|
function(n) {
|
|
return s(n).getBoundingClientRect();
|
|
},
|
|
a,
|
|
c,
|
|
l.right,
|
|
f
|
|
)),
|
|
s(d)
|
|
);
|
|
var i, u, a, c, l, s, f, d;
|
|
});
|
|
}
|
|
},
|
|
Bc = function(n, t, e, r) {
|
|
var o = n.dom().createRange(),
|
|
i = dt.children(t);
|
|
return $o(i, function(t) {
|
|
return (
|
|
o.selectNode(t.dom()),
|
|
Nc(o.getBoundingClientRect(), e, r) ? Ic(n, t, e, r) : w.none()
|
|
);
|
|
});
|
|
},
|
|
Ic = function(n, t, e, r) {
|
|
return (xt.isText(t) ? Ec.locate : Bc)(n, t, e, r);
|
|
},
|
|
Pc = function(n, t, e, r) {
|
|
var o = n.dom().createRange();
|
|
o.selectNode(t.dom());
|
|
var i = o.getBoundingClientRect(),
|
|
u = Math.max(i.left, Math.min(i.right, e)),
|
|
a = Math.max(i.top, Math.min(i.bottom, r));
|
|
return Ic(n, t, u, a);
|
|
},
|
|
Wc = function(n, t) {
|
|
return t - n.left < n.right - t;
|
|
},
|
|
_c = function(n, t, e) {
|
|
var r = n.dom().createRange();
|
|
return r.selectNode(t.dom()), r.collapse(e), r;
|
|
},
|
|
Mc = function(n, t, e) {
|
|
var r = n.dom().createRange();
|
|
r.selectNode(t.dom());
|
|
var o = r.getBoundingClientRect(),
|
|
i = Wc(o, e);
|
|
return (!0 === i ? Te.first : Te.last)(t).map(function(t) {
|
|
return _c(n, t, i);
|
|
});
|
|
},
|
|
Lc = function(n, t, e) {
|
|
var r = t.dom().getBoundingClientRect(),
|
|
o = Wc(r, e);
|
|
return w.some(_c(n, t, o));
|
|
},
|
|
qc = function(n, t, e) {
|
|
return (0 === dt.children(t).length ? Lc : Mc)(n, t, e);
|
|
},
|
|
zc = document.caretPositionFromPoint
|
|
? function(n, t, e) {
|
|
return w.from(n.dom().caretPositionFromPoint(t, e)).bind(function(t) {
|
|
if (null === t.offsetNode) return w.none();
|
|
var e = n.dom().createRange();
|
|
return e.setStart(t.offsetNode, t.offset), e.collapse(), w.some(e);
|
|
});
|
|
}
|
|
: document.caretRangeFromPoint
|
|
? function(n, t, e) {
|
|
return w.from(n.dom().caretRangeFromPoint(t, e));
|
|
}
|
|
: function(n, t, e) {
|
|
return en.fromPoint(n, t, e).bind(function(r) {
|
|
var o = function() {
|
|
return qc(n, r, t);
|
|
};
|
|
return 0 === dt.children(r).length
|
|
? o()
|
|
: (function(n, t, e, r) {
|
|
var o = n.dom().createRange();
|
|
o.selectNode(t.dom());
|
|
var i = o.getBoundingClientRect(),
|
|
u = Math.max(i.left, Math.min(i.right, e)),
|
|
a = Math.max(i.top, Math.min(i.bottom, r));
|
|
return Pc(n, t, u, a);
|
|
})(n, r, t, e).orThunk(o);
|
|
});
|
|
},
|
|
Fc = function(n, t, e) {
|
|
var r = en.fromDom(n.document);
|
|
return zc(r, t, e).map(function(n) {
|
|
return vc.range(
|
|
en.fromDom(n.startContainer),
|
|
n.startOffset,
|
|
en.fromDom(n.endContainer),
|
|
n.endOffset
|
|
);
|
|
});
|
|
},
|
|
jc = function(n, t) {
|
|
var e = xt.name(n);
|
|
return "input" === e
|
|
? gc.after(n)
|
|
: B.contains(["br", "img"], e)
|
|
? 0 === t
|
|
? gc.before(n)
|
|
: gc.after(n)
|
|
: gc.on(n, t);
|
|
},
|
|
Hc = function(n, t) {
|
|
var e = n.fold(gc.before, jc, gc.after),
|
|
r = t.fold(gc.before, jc, gc.after);
|
|
return vc.relative(e, r);
|
|
},
|
|
Vc = function(n, t, e, r) {
|
|
var o = jc(n, t),
|
|
i = jc(e, r);
|
|
return vc.relative(o, i);
|
|
},
|
|
Uc = function(n) {
|
|
return n.match({
|
|
domRange: function(n) {
|
|
var t = en.fromDom(n.startContainer),
|
|
e = en.fromDom(n.endContainer);
|
|
return Vc(t, n.startOffset, e, n.endOffset);
|
|
},
|
|
relative: Hc,
|
|
exact: Vc
|
|
});
|
|
},
|
|
Gc = Hc,
|
|
Xc = Vc,
|
|
Yc = function(n, t) {
|
|
w.from(n.getSelection()).each(function(n) {
|
|
n.removeAllRanges(), n.addRange(t);
|
|
});
|
|
},
|
|
$c = function(n, t, e, r, o) {
|
|
var i = Sc.exactToNative(n, t, e, r, o);
|
|
Yc(n, i);
|
|
},
|
|
Kc = function(n, t) {
|
|
return Ac(n, t).match({
|
|
ltr: function(t, e, r, o) {
|
|
$c(n, t, e, r, o);
|
|
},
|
|
rtl: function(t, e, r, o) {
|
|
var i = n.getSelection();
|
|
i.extend
|
|
? (i.collapse(t.dom(), e), i.extend(r.dom(), o))
|
|
: $c(n, r, o, t, e);
|
|
}
|
|
});
|
|
},
|
|
Jc = function(n) {
|
|
var t = en.fromDom(n.anchorNode),
|
|
e = en.fromDom(n.focusNode);
|
|
return wc(t, n.anchorOffset, e, n.focusOffset)
|
|
? w.some(
|
|
vc.range(
|
|
en.fromDom(n.anchorNode),
|
|
n.anchorOffset,
|
|
en.fromDom(n.focusNode),
|
|
n.focusOffset
|
|
)
|
|
)
|
|
: (function(n) {
|
|
if (n.rangeCount > 0) {
|
|
var t = n.getRangeAt(0),
|
|
e = n.getRangeAt(n.rangeCount - 1);
|
|
return w.some(
|
|
vc.range(
|
|
en.fromDom(t.startContainer),
|
|
t.startOffset,
|
|
en.fromDom(e.endContainer),
|
|
e.endOffset
|
|
)
|
|
);
|
|
}
|
|
return w.none();
|
|
})(n);
|
|
},
|
|
Qc = function(n) {
|
|
var t = n.getSelection();
|
|
return t.rangeCount > 0 ? Jc(t) : w.none();
|
|
},
|
|
Zc = function(n, t, e, r, o) {
|
|
var i = Xc(t, e, r, o);
|
|
Kc(n, i);
|
|
},
|
|
nl = function(n) {
|
|
return Qc(n).map(function(n) {
|
|
return vc.exact(n.start(), n.soffset(), n.finish(), n.foffset());
|
|
});
|
|
},
|
|
tl = function(n, t, e) {
|
|
var r = Gc(t, e);
|
|
Kc(n, r);
|
|
},
|
|
el = function(n) {
|
|
var t = vc.getWin(n).dom(),
|
|
e = function(n, e, r, o) {
|
|
return Sc.exactToNative(t, n, e, r, o);
|
|
},
|
|
r = Uc(n);
|
|
return Ac(t, r).match({ ltr: e, rtl: e });
|
|
},
|
|
rl = function(n, t) {
|
|
var e = Sc.selectNodeContents(n, t);
|
|
Yc(n, e);
|
|
},
|
|
ol = function(n) {
|
|
n.getSelection().removeAllRanges();
|
|
},
|
|
il = function(n, t) {
|
|
var e = kc(n, t);
|
|
return Sc.getFirstRect(e);
|
|
},
|
|
ul = function(n, t, e) {
|
|
return Fc(n, t, e);
|
|
},
|
|
al = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
cl = function(n, t, e, r) {
|
|
return fl(n, t, fc(e), r);
|
|
},
|
|
ll = function(n, t, e, r) {
|
|
return fl(n, t, dc(e), r);
|
|
},
|
|
sl = function(n, t) {
|
|
var e = vc.exact(t, 0, t, 0);
|
|
return el(e);
|
|
},
|
|
fl = function(n, t, e, r, o) {
|
|
return e.fold(
|
|
w.none,
|
|
w.none,
|
|
function(n, t) {
|
|
return Te.first(t).map(function(n) {
|
|
return sl(0, n);
|
|
});
|
|
},
|
|
function(e) {
|
|
return Vt(e, t).bind(function(t) {
|
|
var o,
|
|
i = kr.noMenu(e);
|
|
return (
|
|
n.undoManager.transact(function() {
|
|
r.insertRowsAfter(t, i);
|
|
}),
|
|
(o = Bt.descendants(t, "tr")),
|
|
B.last(o).bind(function(n) {
|
|
return qt.descendant(n, "td,th").map(function(n) {
|
|
return sl(0, n);
|
|
});
|
|
})
|
|
);
|
|
});
|
|
}
|
|
);
|
|
},
|
|
dl = ["table", "li", "dl"],
|
|
ml = {
|
|
handle: function(n, t, e, r) {
|
|
if (n.keyCode === al.TAB) {
|
|
var o = sa.getBody(t),
|
|
i = function(n) {
|
|
var t = xt.name(n);
|
|
return ot.eq(n, o) || B.contains(dl, t);
|
|
},
|
|
u = t.selection.getRng();
|
|
if (u.collapsed) {
|
|
var a = en.fromDom(u.startContainer);
|
|
jt(a, i).each(function(o) {
|
|
n.preventDefault(),
|
|
(n.shiftKey ? ll : cl)(t, i, o, e, r).each(function(n) {
|
|
t.selection.setRng(n);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
},
|
|
gl = { response: X.immutable("selection", "kill") },
|
|
pl = function(n) {
|
|
return function(t) {
|
|
return t === n;
|
|
};
|
|
},
|
|
hl = pl(38),
|
|
vl = pl(40),
|
|
bl = {
|
|
ltr: { isBackward: pl(37), isForward: pl(39) },
|
|
rtl: { isBackward: pl(39), isForward: pl(37) },
|
|
isUp: hl,
|
|
isDown: vl,
|
|
isNavigation: function(n) {
|
|
return n >= 37 && n <= 40;
|
|
}
|
|
},
|
|
wl = function(n, t) {
|
|
var e = kc(n, t);
|
|
return {
|
|
start: m.constant(en.fromDom(e.startContainer)),
|
|
soffset: m.constant(e.startOffset),
|
|
finish: m.constant(en.fromDom(e.endContainer)),
|
|
foffset: m.constant(e.endOffset)
|
|
};
|
|
},
|
|
yl = function(n, t, e, r) {
|
|
return {
|
|
start: m.constant(gc.on(n, t)),
|
|
finish: m.constant(gc.on(e, r))
|
|
};
|
|
},
|
|
xl = (tt.detect().browser.isSafari(),
|
|
function(n) {
|
|
var t = n !== undefined ? n.dom() : document,
|
|
e = t.body.scrollLeft || t.documentElement.scrollLeft,
|
|
r = t.body.scrollTop || t.documentElement.scrollTop;
|
|
return oo(e, r);
|
|
}),
|
|
Cl = xl,
|
|
Sl = function(n, t, e) {
|
|
(e !== undefined ? e.dom() : document).defaultView.scrollBy(n, t);
|
|
},
|
|
Rl = function(n) {
|
|
return {
|
|
elementFromPoint: function(t, e) {
|
|
return w.from(n.document.elementFromPoint(t, e)).map(en.fromDom);
|
|
},
|
|
getRect: function(n) {
|
|
return n.dom().getBoundingClientRect();
|
|
},
|
|
getRangedRect: function(t, e, r, o) {
|
|
var i = vc.exact(t, e, r, o);
|
|
return il(n, i).map(function(n) {
|
|
return L.map(n, m.apply);
|
|
});
|
|
},
|
|
getSelection: function() {
|
|
return nl(n).map(function(t) {
|
|
return wl(n, t);
|
|
});
|
|
},
|
|
fromSitus: function(t) {
|
|
var e = vc.relative(t.start(), t.finish());
|
|
return wl(n, e);
|
|
},
|
|
situsFromPoint: function(t, e) {
|
|
return ul(n, t, e).map(function(n) {
|
|
return {
|
|
start: m.constant(gc.on(n.start(), n.soffset())),
|
|
finish: m.constant(gc.on(n.finish(), n.foffset()))
|
|
};
|
|
});
|
|
},
|
|
clearSelection: function() {
|
|
ol(n);
|
|
},
|
|
setSelection: function(t) {
|
|
Zc(n, t.start(), t.soffset(), t.finish(), t.foffset());
|
|
},
|
|
setRelativeSelection: function(t, e) {
|
|
tl(n, t, e);
|
|
},
|
|
selectContents: function(t) {
|
|
rl(n, t);
|
|
},
|
|
getInnerHeight: function() {
|
|
return n.innerHeight;
|
|
},
|
|
getScrollY: function() {
|
|
return Cl(en.fromDom(n.document)).top();
|
|
},
|
|
scrollBy: function(t, e) {
|
|
Sl(t, e, en.fromDom(n.document));
|
|
}
|
|
};
|
|
},
|
|
Tl = function(n, t, e, r, o) {
|
|
if (!ot.eq(e, r))
|
|
return lr(e, r, t).bind(function(t) {
|
|
var r = t.boxes().getOr([]);
|
|
return r.length > 0
|
|
? (o(n, r, t.start(), t.finish()),
|
|
w.some(gl.response(w.some(yl(e, 0, e, Ce(e))), !0)))
|
|
: w.none();
|
|
});
|
|
},
|
|
Dl = {
|
|
sync: function(n, t, e, r, o, i, u) {
|
|
return ot.eq(e, o) && r === i
|
|
? w.none()
|
|
: qt.closest(e, "td,th", t).bind(function(e) {
|
|
return qt.closest(o, "td,th", t).bind(function(r) {
|
|
return Tl(n, t, e, r, u);
|
|
});
|
|
});
|
|
},
|
|
detect: Tl,
|
|
update: function(n, t, e, r, o) {
|
|
return fr(
|
|
r,
|
|
n,
|
|
t,
|
|
o.firstSelectedSelector(),
|
|
o.lastSelectedSelector()
|
|
).map(function(n) {
|
|
return (
|
|
o.clear(e),
|
|
o.selectRange(e, n.boxes(), n.start(), n.finish()),
|
|
n.boxes()
|
|
);
|
|
});
|
|
}
|
|
},
|
|
Al = X.immutableBag(["left", "top", "right", "bottom"], []),
|
|
kl = {
|
|
nu: Al,
|
|
moveUp: function(n, t) {
|
|
return Al({
|
|
left: n.left(),
|
|
top: n.top() - t,
|
|
right: n.right(),
|
|
bottom: n.bottom() - t
|
|
});
|
|
},
|
|
moveDown: function(n, t) {
|
|
return Al({
|
|
left: n.left(),
|
|
top: n.top() + t,
|
|
right: n.right(),
|
|
bottom: n.bottom() + t
|
|
});
|
|
},
|
|
moveBottomTo: function(n, t) {
|
|
var e = n.bottom() - n.top();
|
|
return Al({ left: n.left(), top: t - e, right: n.right(), bottom: t });
|
|
},
|
|
moveTopTo: function(n, t) {
|
|
var e = n.bottom() - n.top();
|
|
return Al({ left: n.left(), top: t, right: n.right(), bottom: t + e });
|
|
},
|
|
getTop: function(n) {
|
|
return n.top();
|
|
},
|
|
getBottom: function(n) {
|
|
return n.bottom();
|
|
},
|
|
translate: function(n, t, e) {
|
|
return Al({
|
|
left: n.left() + t,
|
|
top: n.top() + e,
|
|
right: n.right() + t,
|
|
bottom: n.bottom() + e
|
|
});
|
|
},
|
|
toString: function(n) {
|
|
return (
|
|
"(" +
|
|
n.left() +
|
|
", " +
|
|
n.top() +
|
|
") -> (" +
|
|
n.right() +
|
|
", " +
|
|
n.bottom() +
|
|
")"
|
|
);
|
|
}
|
|
},
|
|
Nl = function(n) {
|
|
return kl.nu({
|
|
left: n.left,
|
|
top: n.top,
|
|
right: n.right,
|
|
bottom: n.bottom
|
|
});
|
|
},
|
|
Ol = function(n, t) {
|
|
return w.some(n.getRect(t));
|
|
},
|
|
El = function(n, t, e) {
|
|
return xt.isElement(t)
|
|
? Ol(n, t).map(Nl)
|
|
: xt.isText(t)
|
|
? ((r = n),
|
|
(o = t),
|
|
(i = e),
|
|
i >= 0 && i < Ce(o)
|
|
? r.getRangedRect(o, i, o, i + 1)
|
|
: i > 0
|
|
? r.getRangedRect(o, i - 1, o, i)
|
|
: w.none()).map(Nl)
|
|
: w.none();
|
|
var r, o, i;
|
|
},
|
|
Bl = function(n, t) {
|
|
return xt.isElement(t)
|
|
? Ol(n, t).map(Nl)
|
|
: xt.isText(t)
|
|
? n.getRangedRect(t, 0, t, Ce(t)).map(Nl)
|
|
: w.none();
|
|
},
|
|
Il = X.immutable("item", "mode"),
|
|
Pl = function(n, t, e, r) {
|
|
var o = r !== undefined ? r : Wl;
|
|
return n
|
|
.property()
|
|
.parent(t)
|
|
.map(function(n) {
|
|
return Il(n, o);
|
|
});
|
|
},
|
|
Wl = function(n, t, e, r) {
|
|
var o = r !== undefined ? r : _l;
|
|
return e.sibling(n, t).map(function(n) {
|
|
return Il(n, o);
|
|
});
|
|
},
|
|
_l = function(n, t, e, r) {
|
|
var o = r !== undefined ? r : _l,
|
|
i = n.property().children(t);
|
|
return e.first(i).map(function(n) {
|
|
return Il(n, o);
|
|
});
|
|
},
|
|
Ml = [
|
|
{ current: Pl, next: Wl, fallback: w.none() },
|
|
{ current: Wl, next: _l, fallback: w.some(Pl) },
|
|
{ current: _l, next: _l, fallback: w.some(Wl) }
|
|
],
|
|
Ll = function(n, t, e, r, o) {
|
|
return (
|
|
(o = o !== undefined ? o : Ml),
|
|
B.find(o, function(n) {
|
|
return n.current === e;
|
|
}).bind(function(e) {
|
|
return e.current(n, t, r, e.next).orThunk(function() {
|
|
return e.fallback.bind(function(e) {
|
|
return Ll(n, t, e, r);
|
|
});
|
|
});
|
|
})
|
|
);
|
|
},
|
|
ql = { backtrack: Pl, sidestep: Wl, advance: _l, go: Ll },
|
|
zl = {
|
|
left: function() {
|
|
return {
|
|
sibling: function(n, t) {
|
|
return n.query().prevSibling(t);
|
|
},
|
|
first: function(n) {
|
|
return n.length > 0 ? w.some(n[n.length - 1]) : w.none();
|
|
}
|
|
};
|
|
},
|
|
right: function() {
|
|
return {
|
|
sibling: function(n, t) {
|
|
return n.query().nextSibling(t);
|
|
},
|
|
first: function(n) {
|
|
return n.length > 0 ? w.some(n[0]) : w.none();
|
|
}
|
|
};
|
|
}
|
|
},
|
|
Fl = function(n, t, e, r, o, i) {
|
|
return ql.go(n, t, r, o).bind(function(t) {
|
|
return i(t.item())
|
|
? w.none()
|
|
: e(t.item())
|
|
? w.some(t.item())
|
|
: Fl(n, t.item(), e, t.mode(), o, i);
|
|
});
|
|
},
|
|
jl = function(n, t, e, r) {
|
|
return Fl(n, t, e, ql.sidestep, zl.left(), r);
|
|
},
|
|
Hl = function(n, t, e, r) {
|
|
return Fl(n, t, e, ql.sidestep, zl.right(), r);
|
|
},
|
|
Vl = function(n, t) {
|
|
return 0 === n.property().children(t).length;
|
|
},
|
|
Ul = function(n, t, e, r) {
|
|
return jl(n, t, e, r);
|
|
},
|
|
Gl = function(n, t, e, r) {
|
|
return Hl(n, t, e, r);
|
|
},
|
|
Xl = {
|
|
before: function(n, t, e) {
|
|
return Ul(n, t, m.curry(Vl, n), e);
|
|
},
|
|
after: function(n, t, e) {
|
|
return Gl(n, t, m.curry(Vl, n), e);
|
|
},
|
|
seekLeft: Ul,
|
|
seekRight: Gl,
|
|
walkers: function() {
|
|
return { left: zl.left, right: zl.right };
|
|
},
|
|
walk: function(n, t, e, r, o) {
|
|
return ql.go(n, t, e, r, o);
|
|
},
|
|
backtrack: ql.backtrack,
|
|
sidestep: ql.sidestep,
|
|
advance: ql.advance
|
|
},
|
|
Yl = Pe(),
|
|
$l = {
|
|
gather: function(n, t, e) {
|
|
return Xl.gather(Yl, n, t, e);
|
|
},
|
|
before: function(n, t) {
|
|
return Xl.before(Yl, n, t);
|
|
},
|
|
after: function(n, t) {
|
|
return Xl.after(Yl, n, t);
|
|
},
|
|
seekLeft: function(n, t, e) {
|
|
return Xl.seekLeft(Yl, n, t, e);
|
|
},
|
|
seekRight: function(n, t, e) {
|
|
return Xl.seekRight(Yl, n, t, e);
|
|
},
|
|
walkers: function() {
|
|
return Xl.walkers();
|
|
},
|
|
walk: function(n, t, e, r) {
|
|
return Xl.walk(Yl, n, t, e, r);
|
|
}
|
|
},
|
|
Kl = wr([{ none: [] }, { retry: ["caret"] }]),
|
|
Jl = function(n, t, e) {
|
|
return Mt.closest(t, zo).fold(m.constant(!1), function(t) {
|
|
return Bl(n, t).exists(function(n) {
|
|
return (
|
|
(r = n),
|
|
(t = e).left() < r.left() ||
|
|
Math.abs(r.right() - t.left()) < 1 ||
|
|
t.left() > r.right()
|
|
);
|
|
var t, r;
|
|
});
|
|
});
|
|
},
|
|
Ql = {
|
|
point: kl.getTop,
|
|
adjuster: function(n, t, e, r, o) {
|
|
var i = kl.moveUp(o, 5);
|
|
return Math.abs(e.top() - r.top()) < 1
|
|
? Kl.retry(i)
|
|
: e.bottom() < o.top()
|
|
? Kl.retry(i)
|
|
: e.bottom() === o.top()
|
|
? Kl.retry(kl.moveUp(o, 1))
|
|
: Jl(n, t, o)
|
|
? Kl.retry(kl.translate(i, 5, 0))
|
|
: Kl.none();
|
|
},
|
|
move: kl.moveUp,
|
|
gather: $l.before
|
|
},
|
|
Zl = {
|
|
point: kl.getBottom,
|
|
adjuster: function(n, t, e, r, o) {
|
|
var i = kl.moveDown(o, 5);
|
|
return Math.abs(e.bottom() - r.bottom()) < 1
|
|
? Kl.retry(i)
|
|
: e.top() > o.bottom()
|
|
? Kl.retry(i)
|
|
: e.top() === o.bottom()
|
|
? Kl.retry(kl.moveDown(o, 1))
|
|
: Jl(n, t, o)
|
|
? Kl.retry(kl.translate(i, 5, 0))
|
|
: Kl.none();
|
|
},
|
|
move: kl.moveDown,
|
|
gather: $l.after
|
|
},
|
|
ns = function(n, t, e, r, o) {
|
|
return 0 === o
|
|
? w.some(r)
|
|
: ((c = n),
|
|
(l = r.left()),
|
|
(s = t.point(r)),
|
|
c
|
|
.elementFromPoint(l, s)
|
|
.filter(function(n) {
|
|
return "table" === xt.name(n);
|
|
})
|
|
.isSome()
|
|
? ((u = r), (a = o - 1), ns(n, (i = t), e, i.move(u, 5), a))
|
|
: n.situsFromPoint(r.left(), t.point(r)).bind(function(i) {
|
|
return i.start().fold(
|
|
w.none,
|
|
function(i, u) {
|
|
return Bl(n, i, u)
|
|
.bind(function(u) {
|
|
return t
|
|
.adjuster(n, i, u, e, r)
|
|
.fold(w.none, function(r) {
|
|
return ns(n, t, e, r, o - 1);
|
|
});
|
|
})
|
|
.orThunk(function() {
|
|
return w.some(r);
|
|
});
|
|
},
|
|
w.none
|
|
);
|
|
}));
|
|
var i, u, a, c, l, s;
|
|
},
|
|
ts = function(n, t, e) {
|
|
var r,
|
|
o,
|
|
i,
|
|
u = n.move(e, 5),
|
|
a = ns(t, n, e, u, 100).getOr(u);
|
|
return ((r = n),
|
|
(o = a),
|
|
(i = t),
|
|
r.point(o) > i.getInnerHeight()
|
|
? w.some(r.point(o) - i.getInnerHeight())
|
|
: r.point(o) < 0
|
|
? w.some(-r.point(o))
|
|
: w.none()).fold(
|
|
function() {
|
|
return t.situsFromPoint(a.left(), n.point(a));
|
|
},
|
|
function(e) {
|
|
return t.scrollBy(0, e), t.situsFromPoint(a.left(), n.point(a) - e);
|
|
}
|
|
);
|
|
},
|
|
es = {
|
|
tryUp: m.curry(ts, Ql),
|
|
tryDown: m.curry(ts, Zl),
|
|
ieTryUp: function(n, t) {
|
|
return n.situsFromPoint(t.left(), t.top() - 5);
|
|
},
|
|
ieTryDown: function(n, t) {
|
|
return n.situsFromPoint(t.left(), t.bottom() + 5);
|
|
},
|
|
getJumpSize: m.constant(5)
|
|
},
|
|
rs = wr([
|
|
{ none: ["message"] },
|
|
{ success: [] },
|
|
{ failedUp: ["cell"] },
|
|
{ failedDown: ["cell"] }
|
|
]),
|
|
os = function(n) {
|
|
return qt.closest(n, "tr");
|
|
},
|
|
is = {
|
|
verify: function(n, t, e, r, o, i, u) {
|
|
return qt
|
|
.closest(r, "td,th", u)
|
|
.bind(function(e) {
|
|
return qt.closest(t, "td,th", u).map(function(t) {
|
|
return ot.eq(e, t)
|
|
? ot.eq(r, e) && Ce(e) === o
|
|
? i(t)
|
|
: rs.none("in same cell")
|
|
: Ve(os, [e, t]).fold(
|
|
function() {
|
|
return (
|
|
(o = t),
|
|
(u = e),
|
|
(a = (r = n).getRect(o)),
|
|
(c = r.getRect(u)).right > a.left && c.left < a.right
|
|
? rs.success()
|
|
: i(t)
|
|
);
|
|
var r, o, u, a, c;
|
|
},
|
|
function(n) {
|
|
return i(t);
|
|
}
|
|
);
|
|
});
|
|
})
|
|
.getOr(rs.none("default"));
|
|
},
|
|
cata: function(n, t, e, r, o) {
|
|
return n.fold(t, e, r, o);
|
|
},
|
|
adt: rs
|
|
},
|
|
us = {
|
|
point: X.immutable("element", "offset"),
|
|
delta: X.immutable("element", "deltaOffset"),
|
|
range: X.immutable("element", "start", "finish"),
|
|
points: X.immutable("begin", "end"),
|
|
text: X.immutable("element", "text")
|
|
},
|
|
as = (X.immutable("ancestor", "descendants", "element", "index"),
|
|
X.immutable("parent", "children", "element", "index")),
|
|
cs = function(n, t) {
|
|
return B.findIndex(n, m.curry(ot.eq, t));
|
|
},
|
|
ls = function(n) {
|
|
return dt.parent(n).bind(function(t) {
|
|
var e = dt.children(t);
|
|
return cs(e, n).map(function(r) {
|
|
return as(t, e, n, r);
|
|
});
|
|
});
|
|
},
|
|
ss = function(n) {
|
|
return "br" === xt.name(n);
|
|
},
|
|
fs = function(n, t, e) {
|
|
return t(n, e).bind(function(n) {
|
|
return xt.isText(n) && 0 === we.get(n).trim().length
|
|
? fs(n, t, e)
|
|
: w.some(n);
|
|
});
|
|
},
|
|
ds = function(n, t, e, r) {
|
|
return ((o = t),
|
|
(i = e),
|
|
dt
|
|
.child(o, i)
|
|
.filter(ss)
|
|
.orThunk(function() {
|
|
return dt.child(o, i - 1).filter(ss);
|
|
})).bind(function(t) {
|
|
return r.traverse(t).fold(
|
|
function() {
|
|
return fs(t, r.gather, n).map(r.relative);
|
|
},
|
|
function(n) {
|
|
return ls(n).map(function(n) {
|
|
return gc.on(n.parent(), n.index());
|
|
});
|
|
}
|
|
);
|
|
});
|
|
var o, i;
|
|
},
|
|
ms = function(n, t, e, r) {
|
|
var o, i, u;
|
|
return (ss(t)
|
|
? ((o = n),
|
|
(i = t),
|
|
(u = r)
|
|
.traverse(i)
|
|
.orThunk(function() {
|
|
return fs(i, u.gather, o);
|
|
})
|
|
.map(u.relative))
|
|
: ds(n, t, e, r)
|
|
).map(function(n) {
|
|
return { start: m.constant(n), finish: m.constant(n) };
|
|
});
|
|
},
|
|
gs = function(n) {
|
|
return is.cata(
|
|
n,
|
|
function(n) {
|
|
return w.none("BR ADT: none");
|
|
},
|
|
function() {
|
|
return w.none();
|
|
},
|
|
function(n) {
|
|
return w.some(us.point(n, 0));
|
|
},
|
|
function(n) {
|
|
return w.some(us.point(n, Ce(n)));
|
|
}
|
|
);
|
|
},
|
|
ps = tt.detect(),
|
|
hs = function(n, t, e, r, o, i) {
|
|
return 0 === i
|
|
? w.none()
|
|
: ws(n, t, e, r, o).bind(function(u) {
|
|
var a = n.fromSitus(u),
|
|
c = is.verify(n, e, r, a.finish(), a.foffset(), o.failure, t);
|
|
return is.cata(
|
|
c,
|
|
function() {
|
|
return w.none();
|
|
},
|
|
function() {
|
|
return w.some(u);
|
|
},
|
|
function(u) {
|
|
return ot.eq(e, u) && 0 === r
|
|
? vs(n, e, r, kl.moveUp, o)
|
|
: hs(n, t, u, 0, o, i - 1);
|
|
},
|
|
function(u) {
|
|
return ot.eq(e, u) && r === Ce(u)
|
|
? vs(n, e, r, kl.moveDown, o)
|
|
: hs(n, t, u, Ce(u), o, i - 1);
|
|
}
|
|
);
|
|
});
|
|
},
|
|
vs = function(n, t, e, r, o) {
|
|
return El(n, t, e).bind(function(t) {
|
|
return bs(n, o, r(t, es.getJumpSize()));
|
|
});
|
|
},
|
|
bs = function(n, t, e) {
|
|
return ps.browser.isChrome() ||
|
|
ps.browser.isSafari() ||
|
|
ps.browser.isFirefox() ||
|
|
ps.browser.isEdge()
|
|
? t.otherRetry(n, e)
|
|
: ps.browser.isIE()
|
|
? t.ieRetry(n, e)
|
|
: w.none();
|
|
},
|
|
ws = function(n, t, e, r, o) {
|
|
return El(n, e, r).bind(function(t) {
|
|
return bs(n, o, t);
|
|
});
|
|
},
|
|
ys = function(n, t, e) {
|
|
return ((r = n),
|
|
(o = t),
|
|
(i = e),
|
|
r.getSelection().bind(function(n) {
|
|
return ms(o, n.finish(), n.foffset(), i).fold(
|
|
function() {
|
|
return w.some(us.point(n.finish(), n.foffset()));
|
|
},
|
|
function(t) {
|
|
var e = r.fromSitus(t),
|
|
u = is.verify(
|
|
r,
|
|
n.finish(),
|
|
n.foffset(),
|
|
e.finish(),
|
|
e.foffset(),
|
|
i.failure,
|
|
o
|
|
);
|
|
return gs(u);
|
|
}
|
|
);
|
|
})).bind(function(r) {
|
|
return hs(n, t, r.element(), r.offset(), e, 20).map(n.fromSitus);
|
|
});
|
|
var r, o, i;
|
|
},
|
|
xs = function(n, t, e) {
|
|
return Mt.ancestor(n, t, e).isSome();
|
|
},
|
|
Cs = tt.detect(),
|
|
Ss = function(n, t, e, r, o) {
|
|
return qt.closest(r, "td,th", t).bind(function(r) {
|
|
return qt.closest(r, "table", t).bind(function(i) {
|
|
return (
|
|
(u = i),
|
|
xs(o, function(n) {
|
|
return dt.parent(n).exists(function(n) {
|
|
return ot.eq(n, u);
|
|
});
|
|
})
|
|
? ys(n, t, e).bind(function(n) {
|
|
return qt.closest(n.finish(), "td,th", t).map(function(t) {
|
|
return {
|
|
start: m.constant(r),
|
|
finish: m.constant(t),
|
|
range: m.constant(n)
|
|
};
|
|
});
|
|
})
|
|
: w.none()
|
|
);
|
|
var u;
|
|
});
|
|
});
|
|
},
|
|
Rs = function(n, t, e, r, o, i) {
|
|
return Cs.browser.isIE()
|
|
? w.none()
|
|
: i(r, t).orThunk(function() {
|
|
return Ss(n, t, e, r, o).map(function(n) {
|
|
var t = n.range();
|
|
return gl.response(
|
|
w.some(yl(t.start(), t.soffset(), t.finish(), t.foffset())),
|
|
!0
|
|
);
|
|
});
|
|
});
|
|
},
|
|
Ts = function(n, t, e, r, o, i, u) {
|
|
return Ss(n, e, r, o, i).bind(function(n) {
|
|
return Dl.detect(t, e, n.start(), n.finish(), u);
|
|
});
|
|
},
|
|
Ds = function(n, t) {
|
|
return qt.closest(n, "tr", t).bind(function(n) {
|
|
return qt.closest(n, "table", t).bind(function(e) {
|
|
var r = Bt.descendants(e, "tr");
|
|
return ot.eq(n, r[0])
|
|
? $l
|
|
.seekLeft(
|
|
e,
|
|
function(n) {
|
|
return Te.last(n).isSome();
|
|
},
|
|
t
|
|
)
|
|
.map(function(n) {
|
|
var t = Ce(n);
|
|
return gl.response(w.some(yl(n, t, n, t)), !0);
|
|
})
|
|
: w.none();
|
|
});
|
|
});
|
|
},
|
|
As = function(n, t) {
|
|
return qt.closest(n, "tr", t).bind(function(n) {
|
|
return qt.closest(n, "table", t).bind(function(e) {
|
|
var r = Bt.descendants(e, "tr");
|
|
return ot.eq(n, r[r.length - 1])
|
|
? $l
|
|
.seekRight(
|
|
e,
|
|
function(n) {
|
|
return Te.first(n).isSome();
|
|
},
|
|
t
|
|
)
|
|
.map(function(n) {
|
|
return gl.response(w.some(yl(n, 0, n, 0)), !0);
|
|
})
|
|
: w.none();
|
|
});
|
|
});
|
|
},
|
|
ks = function(n, t) {
|
|
return qt.closest(n, "td,th", t);
|
|
},
|
|
Ns = {
|
|
down: {
|
|
traverse: dt.nextSibling,
|
|
gather: $l.after,
|
|
relative: gc.before,
|
|
otherRetry: es.tryDown,
|
|
ieRetry: es.ieTryDown,
|
|
failure: is.adt.failedDown
|
|
},
|
|
up: {
|
|
traverse: dt.prevSibling,
|
|
gather: $l.before,
|
|
relative: gc.before,
|
|
otherRetry: es.tryUp,
|
|
ieRetry: es.ieTryUp,
|
|
failure: is.adt.failedUp
|
|
}
|
|
},
|
|
Os = X.immutable("rows", "cols"),
|
|
Es = function(n, t, e, r) {
|
|
var o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l,
|
|
s = Rl(n),
|
|
f = ((o = s),
|
|
(i = t),
|
|
(u = e),
|
|
(a = r),
|
|
(c = w.none()),
|
|
(l = function() {
|
|
c = w.none();
|
|
}),
|
|
{
|
|
mousedown: function(n) {
|
|
a.clear(i), (c = ks(n.target(), u));
|
|
},
|
|
mouseover: function(n) {
|
|
c.each(function(t) {
|
|
a.clear(i),
|
|
ks(n.target(), u).each(function(n) {
|
|
lr(t, n, u).each(function(e) {
|
|
var r = e.boxes().getOr([]);
|
|
(r.length > 1 || (1 === r.length && !ot.eq(t, n))) &&
|
|
(a.selectRange(i, r, e.start(), e.finish()),
|
|
o.selectContents(n));
|
|
});
|
|
});
|
|
});
|
|
},
|
|
mouseup: function() {
|
|
c.each(l);
|
|
}
|
|
});
|
|
return {
|
|
mousedown: f.mousedown,
|
|
mouseover: f.mouseover,
|
|
mouseup: f.mouseup
|
|
};
|
|
},
|
|
Bs = function(n, t, e, r) {
|
|
var o = Rl(n),
|
|
i = function() {
|
|
return r.clear(t), w.none();
|
|
};
|
|
return {
|
|
keydown: function(n, u, a, c, l, s) {
|
|
var f = n.raw().which,
|
|
d = !0 === n.raw().shiftKey;
|
|
return sr(t, r.selectedSelector()).fold(
|
|
function() {
|
|
return bl.isDown(f) && d
|
|
? m.curry(Ts, o, t, e, Ns.down, c, u, r.selectRange)
|
|
: bl.isUp(f) && d
|
|
? m.curry(Ts, o, t, e, Ns.up, c, u, r.selectRange)
|
|
: bl.isDown(f)
|
|
? m.curry(Rs, o, e, Ns.down, c, u, As)
|
|
: bl.isUp(f)
|
|
? m.curry(Rs, o, e, Ns.up, c, u, Ds)
|
|
: w.none;
|
|
},
|
|
function(n) {
|
|
var e = function(e) {
|
|
return function() {
|
|
return $o(e, function(e) {
|
|
return Dl.update(e.rows(), e.cols(), t, n, r);
|
|
}).fold(
|
|
function() {
|
|
return dr(
|
|
t,
|
|
r.firstSelectedSelector(),
|
|
r.lastSelectedSelector()
|
|
).map(function(n) {
|
|
var e =
|
|
bl.isDown(f) || s.isForward(f) ? gc.after : gc.before;
|
|
return (
|
|
o.setRelativeSelection(
|
|
gc.on(n.first(), 0),
|
|
e(n.table())
|
|
),
|
|
r.clear(t),
|
|
gl.response(w.none(), !0)
|
|
);
|
|
});
|
|
},
|
|
function(n) {
|
|
return w.some(gl.response(w.none(), !0));
|
|
}
|
|
);
|
|
};
|
|
};
|
|
return bl.isDown(f) && d
|
|
? e([Os(1, 0)])
|
|
: bl.isUp(f) && d
|
|
? e([Os(-1, 0)])
|
|
: s.isBackward(f) && d
|
|
? e([Os(0, -1), Os(-1, 0)])
|
|
: s.isForward(f) && d
|
|
? e([Os(0, 1), Os(1, 0)])
|
|
: bl.isNavigation(f) && !1 === d
|
|
? i
|
|
: w.none;
|
|
}
|
|
)();
|
|
},
|
|
keyup: function(n, o, i, u, a) {
|
|
return sr(t, r.selectedSelector()).fold(function() {
|
|
var c = n.raw().which;
|
|
return 0 == (!0 === n.raw().shiftKey)
|
|
? w.none()
|
|
: bl.isNavigation(c)
|
|
? Dl.sync(t, e, o, i, u, a, r.selectRange)
|
|
: w.none();
|
|
}, w.none);
|
|
}
|
|
};
|
|
},
|
|
Is = function(n) {
|
|
var t = function(t) {
|
|
Dt.remove(t, n.selected()),
|
|
Dt.remove(t, n.firstSelected()),
|
|
Dt.remove(t, n.lastSelected());
|
|
},
|
|
e = function(t) {
|
|
Dt.set(t, n.selected(), "1");
|
|
},
|
|
r = function(e) {
|
|
var r = Bt.descendants(e, n.selectedSelector());
|
|
B.each(r, t);
|
|
};
|
|
return {
|
|
clear: r,
|
|
selectRange: function(t, o, i, u) {
|
|
r(t),
|
|
B.each(o, e),
|
|
Dt.set(i, n.firstSelected(), "1"),
|
|
Dt.set(u, n.lastSelected(), "1");
|
|
},
|
|
selectedSelector: n.selectedSelector,
|
|
firstSelectedSelector: n.firstSelectedSelector,
|
|
lastSelectedSelector: n.lastSelectedSelector
|
|
};
|
|
},
|
|
Ps = function(n, t) {
|
|
var e = X.immutableBag(
|
|
["mousedown", "mouseover", "mouseup", "keyup", "keydown"],
|
|
[]
|
|
),
|
|
r = w.none(),
|
|
o = Is(br);
|
|
return (
|
|
n.on("init", function(i) {
|
|
var u = n.getWin(),
|
|
a = sa.getBody(n),
|
|
c = sa.getIsRoot(n),
|
|
l = Es(u, a, c, o),
|
|
s = Bs(u, a, c, o),
|
|
f = function(t, e) {
|
|
e.kill() && t.kill(),
|
|
e.selection().each(function(t) {
|
|
var e = vc.relative(t.start(), t.finish()),
|
|
r = kc(u, e);
|
|
n.selection.setRng(r);
|
|
});
|
|
},
|
|
d = function(t) {
|
|
var e = h(t);
|
|
if (e.raw().shiftKey && bl.isNavigation(e.raw().which)) {
|
|
var r = n.selection.getRng(),
|
|
o = en.fromDom(r.startContainer),
|
|
i = en.fromDom(r.endContainer);
|
|
s.keyup(e, o, r.startOffset, i, r.endOffset).each(function(n) {
|
|
f(e, n);
|
|
});
|
|
}
|
|
},
|
|
g = function(n) {
|
|
return !(
|
|
Dt.has(n, "data-mce-bogus") ||
|
|
"br" === xt.name(n) ||
|
|
(xt.isText(n) && 0 === we.get(n).length)
|
|
);
|
|
},
|
|
p = function(e) {
|
|
var r,
|
|
o,
|
|
i = h(e);
|
|
t().each(function(n) {
|
|
n.hideBars();
|
|
}),
|
|
40 === e.which &&
|
|
((r = en.fromDom(n.getBody())),
|
|
(o = function(n) {
|
|
return dt.prevSibling(n).bind(function(n) {
|
|
return g(n) ? w.some(n) : o(n);
|
|
});
|
|
}),
|
|
dt.lastChild(r).bind(function(n) {
|
|
return g(n) ? w.some(n) : o(n);
|
|
})).each(function(t) {
|
|
"table" === xt.name(t) &&
|
|
(n.settings.forced_root_block
|
|
? n.dom.add(
|
|
n.getBody(),
|
|
n.settings.forced_root_block,
|
|
n.settings.forced_root_block_attrs,
|
|
"<br/>"
|
|
)
|
|
: n.dom.add(n.getBody(), "br"));
|
|
});
|
|
var u = n.selection.getRng(),
|
|
a = en.fromDom(n.selection.getStart()),
|
|
c = en.fromDom(u.startContainer),
|
|
l = en.fromDom(u.endContainer),
|
|
d = pa(a).isRtl() ? bl.rtl : bl.ltr;
|
|
s
|
|
.keydown(i, c, u.startOffset, l, u.endOffset, d)
|
|
.each(function(n) {
|
|
f(i, n);
|
|
}),
|
|
t().each(function(n) {
|
|
n.showBars();
|
|
});
|
|
},
|
|
h = function(n) {
|
|
var t = en.fromDom(n.target),
|
|
e = function() {
|
|
n.stopPropagation();
|
|
},
|
|
r = function() {
|
|
n.preventDefault();
|
|
},
|
|
o = m.compose(
|
|
r,
|
|
e
|
|
);
|
|
return {
|
|
target: m.constant(t),
|
|
x: m.constant(n.x),
|
|
y: m.constant(n.y),
|
|
stop: e,
|
|
prevent: r,
|
|
kill: o,
|
|
raw: m.constant(n)
|
|
};
|
|
},
|
|
v = function(n) {
|
|
return 0 === n.button;
|
|
},
|
|
b = function(n) {
|
|
v(n) && l.mousedown(h(n));
|
|
},
|
|
y = function(n) {
|
|
var t;
|
|
((t = n).buttons === undefined || 0 != (1 & t.buttons)) &&
|
|
l.mouseover(h(n));
|
|
},
|
|
x = function(n) {
|
|
v && l.mouseup(h(n));
|
|
};
|
|
n.on("mousedown", b),
|
|
n.on("mouseover", y),
|
|
n.on("mouseup", x),
|
|
n.on("keyup", d),
|
|
n.on("keydown", p),
|
|
n.on("nodechange", function() {
|
|
var t = n.selection,
|
|
e = en.fromDom(t.getStart()),
|
|
r = en.fromDom(t.getEnd()),
|
|
i = Vt(e),
|
|
u = Vt(r);
|
|
i.bind(function(n) {
|
|
return u.bind(function(t) {
|
|
return ot.eq(n, t) ? w.some(!0) : w.none();
|
|
});
|
|
}).fold(function() {
|
|
o.clear(a);
|
|
}, m.noop);
|
|
}),
|
|
(r = w.some(
|
|
e({
|
|
mousedown: b,
|
|
mouseover: y,
|
|
mouseup: x,
|
|
keyup: d,
|
|
keydown: p
|
|
})
|
|
));
|
|
}),
|
|
{
|
|
clear: o.clear,
|
|
destroy: function() {
|
|
r.each(function(n) {});
|
|
}
|
|
}
|
|
);
|
|
},
|
|
Ws = function(n) {
|
|
return {
|
|
get: function() {
|
|
var t = sa.getBody(n);
|
|
return mr(t, br.selectedSelector()).fold(
|
|
function() {
|
|
return n.selection.getStart() === undefined
|
|
? xr.none()
|
|
: xr.single(n.selection);
|
|
},
|
|
function(n) {
|
|
return xr.multiple(n);
|
|
}
|
|
);
|
|
}
|
|
};
|
|
},
|
|
_s = ba.each,
|
|
Ms = {
|
|
addButtons: function(n) {
|
|
var t = [];
|
|
function e(t) {
|
|
return function() {
|
|
n.execCommand(t);
|
|
};
|
|
}
|
|
_s(
|
|
"inserttable tableprops deletetable | cell row column".split(" "),
|
|
function(e) {
|
|
"|" === e ? t.push({ text: "-" }) : t.push(n.menuItems[e]);
|
|
}
|
|
),
|
|
n.addButton("table", { type: "menubutton", title: "Table", menu: t }),
|
|
n.addButton("tableprops", {
|
|
title: "Table properties",
|
|
onclick: m.curry(Ta, n, !0),
|
|
icon: "table"
|
|
}),
|
|
n.addButton("tabledelete", {
|
|
title: "Delete table",
|
|
onclick: e("mceTableDelete")
|
|
}),
|
|
n.addButton("tablecellprops", {
|
|
title: "Cell properties",
|
|
onclick: e("mceTableCellProps")
|
|
}),
|
|
n.addButton("tablemergecells", {
|
|
title: "Merge cells",
|
|
onclick: e("mceTableMergeCells")
|
|
}),
|
|
n.addButton("tablesplitcells", {
|
|
title: "Split cell",
|
|
onclick: e("mceTableSplitCells")
|
|
}),
|
|
n.addButton("tableinsertrowbefore", {
|
|
title: "Insert row before",
|
|
onclick: e("mceTableInsertRowBefore")
|
|
}),
|
|
n.addButton("tableinsertrowafter", {
|
|
title: "Insert row after",
|
|
onclick: e("mceTableInsertRowAfter")
|
|
}),
|
|
n.addButton("tabledeleterow", {
|
|
title: "Delete row",
|
|
onclick: e("mceTableDeleteRow")
|
|
}),
|
|
n.addButton("tablerowprops", {
|
|
title: "Row properties",
|
|
onclick: e("mceTableRowProps")
|
|
}),
|
|
n.addButton("tablecutrow", {
|
|
title: "Cut row",
|
|
onclick: e("mceTableCutRow")
|
|
}),
|
|
n.addButton("tablecopyrow", {
|
|
title: "Copy row",
|
|
onclick: e("mceTableCopyRow")
|
|
}),
|
|
n.addButton("tablepasterowbefore", {
|
|
title: "Paste row before",
|
|
onclick: e("mceTablePasteRowBefore")
|
|
}),
|
|
n.addButton("tablepasterowafter", {
|
|
title: "Paste row after",
|
|
onclick: e("mceTablePasteRowAfter")
|
|
}),
|
|
n.addButton("tableinsertcolbefore", {
|
|
title: "Insert column before",
|
|
onclick: e("mceTableInsertColBefore")
|
|
}),
|
|
n.addButton("tableinsertcolafter", {
|
|
title: "Insert column after",
|
|
onclick: e("mceTableInsertColAfter")
|
|
}),
|
|
n.addButton("tabledeletecol", {
|
|
title: "Delete column",
|
|
onclick: e("mceTableDeleteCol")
|
|
});
|
|
},
|
|
addToolbars: function(n) {
|
|
var t = n.settings.table_toolbar;
|
|
"" !== t &&
|
|
!1 !== t &&
|
|
(t ||
|
|
(t =
|
|
"tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol"),
|
|
n.addContextToolbar(function(t) {
|
|
return n.dom.is(t, "table") && n.getBody().contains(t);
|
|
}, t));
|
|
}
|
|
},
|
|
Ls = {
|
|
addMenuItems: function(n, t) {
|
|
var e = w.none(),
|
|
r = [],
|
|
o = [],
|
|
i = [],
|
|
u = [],
|
|
a = function(n) {
|
|
n.disabled(!0);
|
|
},
|
|
c = function(n) {
|
|
n.disabled(!1);
|
|
},
|
|
l = function() {
|
|
var n = this;
|
|
r.push(n),
|
|
e.fold(
|
|
function() {
|
|
a(n);
|
|
},
|
|
function(t) {
|
|
c(n);
|
|
}
|
|
);
|
|
},
|
|
s = function() {
|
|
var n = this;
|
|
o.push(n),
|
|
e.fold(
|
|
function() {
|
|
a(n);
|
|
},
|
|
function(t) {
|
|
c(n);
|
|
}
|
|
);
|
|
};
|
|
n.on("init", function() {
|
|
n.on("nodechange", function(l) {
|
|
var s = w.from(n.dom.getParent(n.selection.getStart(), "th,td"));
|
|
(e = s.bind(function(n) {
|
|
var e = en.fromDom(n);
|
|
return Vt(e).map(function(n) {
|
|
return kr.forMenu(t, n, e);
|
|
});
|
|
})).fold(
|
|
function() {
|
|
B.each(r, a), B.each(o, a), B.each(i, a), B.each(u, a);
|
|
},
|
|
function(n) {
|
|
B.each(r, c),
|
|
B.each(o, c),
|
|
B.each(i, function(t) {
|
|
t.disabled(n.mergable().isNone());
|
|
}),
|
|
B.each(u, function(t) {
|
|
t.disabled(n.unmergable().isNone());
|
|
});
|
|
}
|
|
);
|
|
});
|
|
});
|
|
var f = function(n, t, e, r) {
|
|
var o,
|
|
i,
|
|
u,
|
|
a,
|
|
c,
|
|
l = r.getEl().getElementsByTagName("table")[0],
|
|
s = r.isRtl() || "tl-tr" === r.parent().rel;
|
|
for (
|
|
l.nextSibling.innerHTML = t + 1 + " x " + (e + 1),
|
|
s && (t = 9 - t),
|
|
i = 0;
|
|
i < 10;
|
|
i++
|
|
)
|
|
for (o = 0; o < 10; o++)
|
|
(a = l.rows[i].childNodes[o].firstChild),
|
|
(c = (s ? o >= t : o <= t) && i <= e),
|
|
n.dom.toggleClass(a, "mce-active", c),
|
|
c && (u = a);
|
|
return u.parentNode;
|
|
},
|
|
d =
|
|
!1 === n.settings.table_grid
|
|
? {
|
|
text: "Table",
|
|
icon: "table",
|
|
context: "table",
|
|
onclick: m.curry(Ta, n)
|
|
}
|
|
: {
|
|
text: "Table",
|
|
icon: "table",
|
|
context: "table",
|
|
ariaHideMenu: !0,
|
|
onclick: function(t) {
|
|
t.aria &&
|
|
(this.parent().hideAll(),
|
|
t.stopImmediatePropagation(),
|
|
Ta(n));
|
|
},
|
|
onshow: function() {
|
|
f(n, 0, 0, this.menu.items()[0]);
|
|
},
|
|
onhide: function() {
|
|
var t = this.menu
|
|
.items()[0]
|
|
.getEl()
|
|
.getElementsByTagName("a");
|
|
n.dom.removeClass(t, "mce-active"),
|
|
n.dom.addClass(t[0], "mce-active");
|
|
},
|
|
menu: [
|
|
{
|
|
type: "container",
|
|
html: (function() {
|
|
var n = "";
|
|
n =
|
|
'<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';
|
|
for (var t = 0; t < 10; t++) {
|
|
n += "<tr>";
|
|
for (var e = 0; e < 10; e++)
|
|
n +=
|
|
'<td role="gridcell" tabindex="-1"><a id="mcegrid' +
|
|
(10 * t + e) +
|
|
'" href="#" data-mce-x="' +
|
|
e +
|
|
'" data-mce-y="' +
|
|
t +
|
|
'"></a></td>';
|
|
n += "</tr>";
|
|
}
|
|
return (
|
|
(n += "</table>"),
|
|
(n +=
|
|
'<div class="mce-text-center" role="presentation">1 x 1</div>')
|
|
);
|
|
})(),
|
|
onPostRender: function() {
|
|
this.lastX = this.lastY = 0;
|
|
},
|
|
onmousemove: function(t) {
|
|
var e,
|
|
r,
|
|
o = t.target;
|
|
"A" === o.tagName.toUpperCase() &&
|
|
((e = parseInt(o.getAttribute("data-mce-x"), 10)),
|
|
(r = parseInt(o.getAttribute("data-mce-y"), 10)),
|
|
(this.isRtl() || "tl-tr" === this.parent().rel) &&
|
|
(e = 9 - e),
|
|
(e === this.lastX && r === this.lastY) ||
|
|
(f(n, e, r, t.control),
|
|
(this.lastX = e),
|
|
(this.lastY = r)));
|
|
},
|
|
onclick: function(t) {
|
|
var e = this;
|
|
"A" === t.target.tagName.toUpperCase() &&
|
|
(t.preventDefault(),
|
|
t.stopPropagation(),
|
|
e.parent().cancel(),
|
|
n.undoManager.transact(function() {
|
|
Pr.insert(n, e.lastX + 1, e.lastY + 1);
|
|
}),
|
|
n.addVisual());
|
|
}
|
|
}
|
|
]
|
|
};
|
|
function g(t) {
|
|
return function() {
|
|
n.execCommand(t);
|
|
};
|
|
}
|
|
var p = {
|
|
text: "Table properties",
|
|
context: "table",
|
|
onPostRender: l,
|
|
onclick: m.curry(Ta, n, !0)
|
|
},
|
|
h = {
|
|
text: "Delete table",
|
|
context: "table",
|
|
onPostRender: l,
|
|
cmd: "mceTableDelete"
|
|
},
|
|
v = {
|
|
text: "Row",
|
|
context: "table",
|
|
menu: [
|
|
{
|
|
text: "Insert row before",
|
|
onclick: g("mceTableInsertRowBefore"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Insert row after",
|
|
onclick: g("mceTableInsertRowAfter"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Delete row",
|
|
onclick: g("mceTableDeleteRow"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Row properties",
|
|
onclick: g("mceTableRowProps"),
|
|
onPostRender: s
|
|
},
|
|
{ text: "-" },
|
|
{
|
|
text: "Cut row",
|
|
onclick: g("mceTableCutRow"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Copy row",
|
|
onclick: g("mceTableCopyRow"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Paste row before",
|
|
onclick: g("mceTablePasteRowBefore"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Paste row after",
|
|
onclick: g("mceTablePasteRowAfter"),
|
|
onPostRender: s
|
|
}
|
|
]
|
|
},
|
|
b = {
|
|
text: "Column",
|
|
context: "table",
|
|
menu: [
|
|
{
|
|
text: "Insert column before",
|
|
onclick: g("mceTableInsertColBefore"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Insert column after",
|
|
onclick: g("mceTableInsertColAfter"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Delete column",
|
|
onclick: g("mceTableDeleteCol"),
|
|
onPostRender: s
|
|
}
|
|
]
|
|
},
|
|
y = {
|
|
separator: "before",
|
|
text: "Cell",
|
|
context: "table",
|
|
menu: [
|
|
{
|
|
text: "Cell properties",
|
|
onclick: g("mceTableCellProps"),
|
|
onPostRender: s
|
|
},
|
|
{
|
|
text: "Merge cells",
|
|
onclick: g("mceTableMergeCells"),
|
|
onPostRender: function() {
|
|
var n = this;
|
|
i.push(n),
|
|
e.fold(
|
|
function() {
|
|
a(n);
|
|
},
|
|
function(t) {
|
|
n.disabled(t.mergable().isNone());
|
|
}
|
|
);
|
|
}
|
|
},
|
|
{
|
|
text: "Split cell",
|
|
onclick: g("mceTableSplitCells"),
|
|
onPostRender: function() {
|
|
var n = this;
|
|
u.push(n),
|
|
e.fold(
|
|
function() {
|
|
a(n);
|
|
},
|
|
function(t) {
|
|
n.disabled(t.unmergable().isNone());
|
|
}
|
|
);
|
|
}
|
|
}
|
|
]
|
|
};
|
|
n.addMenuItem("inserttable", d),
|
|
n.addMenuItem("tableprops", p),
|
|
n.addMenuItem("deletetable", h),
|
|
n.addMenuItem("row", v),
|
|
n.addMenuItem("column", b),
|
|
n.addMenuItem("cell", y);
|
|
}
|
|
};
|
|
f.add("table", function(n) {
|
|
var t = oc(n),
|
|
e = Ps(n, t.lazyResize),
|
|
r = ha(n, t.lazyWire),
|
|
o = Ws(n);
|
|
Ia.registerCommands(n, r, e, o),
|
|
Nr.registerEvents(n, o, r, e),
|
|
Ls.addMenuItems(n, o),
|
|
Ms.addButtons(n),
|
|
Ms.addToolbars(n),
|
|
n.on("PreInit", function() {
|
|
n.serializer.addTempAttr(br.firstSelected()),
|
|
n.serializer.addTempAttr(br.lastSelected());
|
|
}),
|
|
!1 !== n.settings.table_tab_navigation &&
|
|
n.on("keydown", function(e) {
|
|
ml.handle(e, n, r, t.lazyWire);
|
|
}),
|
|
n.on("remove", function() {
|
|
t.destroy(), e.destroy();
|
|
}),
|
|
(this.insertTable = function(t, e) {
|
|
return Pr.insert(n, t, e);
|
|
}),
|
|
(this.setClipboardRows = Ia.setClipboardRows),
|
|
(this.getClipboardRows = Ia.getClipboardRows);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
n = tinymce.util.Tools.resolve("tinymce.EditorManager"),
|
|
i = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
o = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
l = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
u = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
r = {
|
|
getTabFocus: function(e) {
|
|
return e.getParam(
|
|
"tab_focus",
|
|
e.getParam("tabfocus_elements", ":prev,:next")
|
|
);
|
|
}
|
|
},
|
|
c = t.DOM,
|
|
s = function(e) {
|
|
e.keyCode !== u.TAB ||
|
|
e.ctrlKey ||
|
|
e.altKey ||
|
|
e.metaKey ||
|
|
e.preventDefault();
|
|
},
|
|
a = function(e) {
|
|
function t(t) {
|
|
var s, a, y, f;
|
|
if (
|
|
!(
|
|
t.keyCode !== u.TAB ||
|
|
t.ctrlKey ||
|
|
t.altKey ||
|
|
t.metaKey ||
|
|
t.isDefaultPrevented()
|
|
) &&
|
|
(1 === (y = l.explode(r.getTabFocus(e))).length &&
|
|
((y[1] = y[0]), (y[0] = ":prev")),
|
|
(a = t.shiftKey
|
|
? ":prev" === y[0]
|
|
? m(-1)
|
|
: c.get(y[0])
|
|
: ":next" === y[1]
|
|
? m(1)
|
|
: c.get(y[1])))
|
|
) {
|
|
var d = n.get(a.id || a.name);
|
|
a.id && d
|
|
? d.focus()
|
|
: o.setTimeout(function() {
|
|
i.webkit || window.focus(), a.focus();
|
|
}, 10),
|
|
t.preventDefault();
|
|
}
|
|
function m(i) {
|
|
function o(e) {
|
|
return (
|
|
/INPUT|TEXTAREA|BUTTON/.test(e.tagName) &&
|
|
n.get(t.id) &&
|
|
-1 !== e.tabIndex &&
|
|
(function i(e) {
|
|
return (
|
|
"BODY" === e.nodeName ||
|
|
("hidden" !== e.type &&
|
|
"none" !== e.style.display &&
|
|
"hidden" !== e.style.visibility &&
|
|
i(e.parentNode))
|
|
);
|
|
})(e)
|
|
);
|
|
}
|
|
if (
|
|
((a = c.select(":input:enabled,*[tabindex]:not(iframe)")),
|
|
l.each(a, function(t, n) {
|
|
if (t.id === e.id) return (s = n), !1;
|
|
}),
|
|
i > 0)
|
|
) {
|
|
for (f = s + 1; f < a.length; f++) if (o(a[f])) return a[f];
|
|
} else for (f = s - 1; f >= 0; f--) if (o(a[f])) return a[f];
|
|
return null;
|
|
}
|
|
}
|
|
e.on("init", function() {
|
|
e.inline && c.setAttrib(e.getBody(), "tabIndex", null),
|
|
e.on("keyup", s),
|
|
i.gecko ? e.on("keypress keydown", t) : e.on("keydown", t);
|
|
});
|
|
};
|
|
e.add("tabfocus", function(e) {
|
|
a(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var n = t,
|
|
r = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: r,
|
|
set: function(e) {
|
|
n = e;
|
|
},
|
|
clone: function() {
|
|
return e(r());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = function(e) {
|
|
return !(
|
|
!/(^|[ ,])tinymcespellchecker([, ]|$)/.test(e.settings.plugins) ||
|
|
!t.get("tinymcespellchecker") ||
|
|
("undefined" != typeof window.console &&
|
|
window.console.log &&
|
|
window.console.log(
|
|
"Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."
|
|
),
|
|
0)
|
|
);
|
|
},
|
|
r = function(e) {
|
|
return e.getParam(
|
|
"spellchecker_languages",
|
|
"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv"
|
|
);
|
|
},
|
|
o = function(e) {
|
|
var t = e.getParam("language", "en");
|
|
return e.getParam("spellchecker_language", t);
|
|
},
|
|
i = function(e) {
|
|
return e.getParam("spellchecker_rpc_url");
|
|
},
|
|
c = function(e) {
|
|
return e.getParam("spellchecker_callback");
|
|
},
|
|
a = function(e) {
|
|
var t = new RegExp(
|
|
'[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',
|
|
"g"
|
|
);
|
|
return e.getParam("spellchecker_wordchar_pattern", t);
|
|
},
|
|
l = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
s = tinymce.util.Tools.resolve("tinymce.util.URI"),
|
|
u = tinymce.util.Tools.resolve("tinymce.util.XHR"),
|
|
d = function(e) {
|
|
return e.fire("SpellcheckStart");
|
|
},
|
|
f = function(e) {
|
|
return e.fire("SpellcheckEnd");
|
|
};
|
|
function h(e) {
|
|
return e && 1 === e.nodeType && "false" === e.contentEditable;
|
|
}
|
|
var g,
|
|
m = function(e, t) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i,
|
|
c,
|
|
a = [],
|
|
l = t.dom;
|
|
function s(e, t) {
|
|
if (!e[0])
|
|
throw new Error(
|
|
"findAndReplaceDOMText cannot handle zero-length matches"
|
|
);
|
|
return {
|
|
start: e.index,
|
|
end: e.index + e[0].length,
|
|
text: e[0],
|
|
data: t
|
|
};
|
|
}
|
|
function u(t) {
|
|
var n = e.getElementsByTagName("*"),
|
|
r = [];
|
|
t = "number" == typeof t ? "" + t : null;
|
|
for (var o = 0; o < n.length; o++) {
|
|
var i = n[o],
|
|
c = i.getAttribute("data-mce-index");
|
|
null !== c &&
|
|
c.length &&
|
|
-1 !== i.className.indexOf("mce-spellchecker-word") &&
|
|
((c !== t && null !== t) || r.push(i));
|
|
}
|
|
return r;
|
|
}
|
|
function d(e) {
|
|
for (var t = a.length; t--; ) if (a[t] === e) return t;
|
|
return -1;
|
|
}
|
|
function f(e) {
|
|
for (var t = 0, n = a.length; t < n && !1 !== e(a[t], t); t++);
|
|
return this;
|
|
}
|
|
function g(e) {
|
|
var t,
|
|
n,
|
|
r = u(e ? d(e) : null);
|
|
for (t = r.length; t--; )
|
|
(n = r[t]).parentNode.insertBefore(n.firstChild, n),
|
|
n.parentNode.removeChild(n);
|
|
return this;
|
|
}
|
|
function m(e) {
|
|
var n = u(d(e)),
|
|
r = t.dom.createRng();
|
|
return r.setStartBefore(n[0]), r.setEndAfter(n[n.length - 1]), r;
|
|
}
|
|
return (
|
|
(o = t.schema.getBlockElements()),
|
|
(i = t.schema.getWhiteSpaceElements()),
|
|
(c = t.schema.getShortEndedElements()),
|
|
{
|
|
text: (r = (function p(e) {
|
|
var t;
|
|
if (3 === e.nodeType) return e.data;
|
|
if (i[e.nodeName] && !o[e.nodeName]) return "";
|
|
if (h(e)) return "\n";
|
|
if (
|
|
((t = ""),
|
|
(o[e.nodeName] || c[e.nodeName]) && (t += "\n"),
|
|
(e = e.firstChild))
|
|
)
|
|
do {
|
|
t += p(e);
|
|
} while ((e = e.nextSibling));
|
|
return t;
|
|
})(e)),
|
|
matches: a,
|
|
each: f,
|
|
filter: function(e) {
|
|
var t = [];
|
|
return (
|
|
f(function(n, r) {
|
|
e(n, r) && t.push(n);
|
|
}),
|
|
(a = t),
|
|
this
|
|
);
|
|
},
|
|
reset: function() {
|
|
return a.splice(0, a.length), g(), this;
|
|
},
|
|
matchFromElement: function(e) {
|
|
return a[e.getAttribute("data-mce-index")];
|
|
},
|
|
elementFromMatch: function(e) {
|
|
return u(d(e))[0];
|
|
},
|
|
find: function(e, t) {
|
|
if (r && e.global) for (; (n = e.exec(r)); ) a.push(s(n, t));
|
|
return this;
|
|
},
|
|
add: function(e, t, n) {
|
|
return (
|
|
a.push({ start: e, end: e + t, text: r.substr(e, t), data: n }),
|
|
this
|
|
);
|
|
},
|
|
wrap: function(t) {
|
|
return (
|
|
a.length &&
|
|
(function(e, t, n) {
|
|
var r,
|
|
a,
|
|
l,
|
|
s,
|
|
u,
|
|
d = [],
|
|
f = 0,
|
|
g = e,
|
|
m = 0;
|
|
(t = t.slice(0)).sort(function(e, t) {
|
|
return e.start - t.start;
|
|
}),
|
|
(u = t.shift());
|
|
e: for (;;) {
|
|
if (
|
|
((o[g.nodeName] || c[g.nodeName] || h(g)) && f++,
|
|
3 === g.nodeType &&
|
|
(!a && g.length + f >= u.end
|
|
? ((a = g), (s = u.end - f))
|
|
: r && d.push(g),
|
|
!r &&
|
|
g.length + f > u.start &&
|
|
((r = g), (l = u.start - f)),
|
|
(f += g.length)),
|
|
r && a)
|
|
) {
|
|
if (
|
|
((g = n({
|
|
startNode: r,
|
|
startNodeIndex: l,
|
|
endNode: a,
|
|
endNodeIndex: s,
|
|
innerNodes: d,
|
|
match: u.text,
|
|
matchIndex: m
|
|
})),
|
|
(f -= a.length - s),
|
|
(r = null),
|
|
(a = null),
|
|
(d = []),
|
|
m++,
|
|
!(u = t.shift()))
|
|
)
|
|
break;
|
|
} else if (
|
|
(i[g.nodeName] && !o[g.nodeName]) ||
|
|
!g.firstChild
|
|
) {
|
|
if (g.nextSibling) {
|
|
g = g.nextSibling;
|
|
continue;
|
|
}
|
|
} else if (!h(g)) {
|
|
g = g.firstChild;
|
|
continue;
|
|
}
|
|
for (;;) {
|
|
if (g.nextSibling) {
|
|
g = g.nextSibling;
|
|
break;
|
|
}
|
|
if (g.parentNode === e) break e;
|
|
g = g.parentNode;
|
|
}
|
|
}
|
|
})(
|
|
e,
|
|
a,
|
|
(function(e) {
|
|
function t(t, n) {
|
|
var r = a[n];
|
|
r.stencil || (r.stencil = e(r));
|
|
var o = r.stencil.cloneNode(!1);
|
|
return (
|
|
o.setAttribute("data-mce-index", n),
|
|
t && o.appendChild(l.doc.createTextNode(t)),
|
|
o
|
|
);
|
|
}
|
|
return function(e) {
|
|
var n,
|
|
r,
|
|
o,
|
|
i = e.startNode,
|
|
c = e.endNode,
|
|
a = e.matchIndex,
|
|
s = l.doc;
|
|
if (i === c) {
|
|
var u = i;
|
|
(o = u.parentNode),
|
|
e.startNodeIndex > 0 &&
|
|
((n = s.createTextNode(
|
|
u.data.substring(0, e.startNodeIndex)
|
|
)),
|
|
o.insertBefore(n, u));
|
|
var d = t(e.match, a);
|
|
return (
|
|
o.insertBefore(d, u),
|
|
e.endNodeIndex < u.length &&
|
|
((r = s.createTextNode(
|
|
u.data.substring(e.endNodeIndex)
|
|
)),
|
|
o.insertBefore(r, u)),
|
|
u.parentNode.removeChild(u),
|
|
d
|
|
);
|
|
}
|
|
(n = s.createTextNode(
|
|
i.data.substring(0, e.startNodeIndex)
|
|
)),
|
|
(r = s.createTextNode(
|
|
c.data.substring(e.endNodeIndex)
|
|
));
|
|
for (
|
|
var f = t(i.data.substring(e.startNodeIndex), a),
|
|
h = [],
|
|
g = 0,
|
|
m = e.innerNodes.length;
|
|
g < m;
|
|
++g
|
|
) {
|
|
var p = e.innerNodes[g],
|
|
v = t(p.data, a);
|
|
p.parentNode.replaceChild(v, p), h.push(v);
|
|
}
|
|
var x = t(c.data.substring(0, e.endNodeIndex), a);
|
|
return (
|
|
(o = i.parentNode).insertBefore(n, i),
|
|
o.insertBefore(f, i),
|
|
o.removeChild(i),
|
|
(o = c.parentNode).insertBefore(x, c),
|
|
o.insertBefore(r, c),
|
|
o.removeChild(c),
|
|
x
|
|
);
|
|
};
|
|
})(t)
|
|
),
|
|
this
|
|
);
|
|
},
|
|
unwrap: g,
|
|
replace: function(e, n) {
|
|
var r = m(e);
|
|
return (
|
|
r.deleteContents(),
|
|
n.length > 0 && r.insertNode(t.dom.doc.createTextNode(n)),
|
|
r
|
|
);
|
|
},
|
|
rangeFromMatch: m,
|
|
indexOf: d
|
|
}
|
|
);
|
|
},
|
|
p = function(e, t) {
|
|
if (!t.get()) {
|
|
var n = m(e.getBody(), e);
|
|
t.set(n);
|
|
}
|
|
return t.get();
|
|
},
|
|
v = function(e, t, n, r, o, a, d) {
|
|
var f,
|
|
h,
|
|
g,
|
|
m = c(e);
|
|
(
|
|
m ||
|
|
((f = e),
|
|
(h = t),
|
|
(g = n),
|
|
function(e, t, n, r) {
|
|
var o = { method: e, lang: g.get() },
|
|
c = "";
|
|
(o["addToDictionary" === e ? "word" : "text"] = t),
|
|
l.each(o, function(e, t) {
|
|
c && (c += "&"), (c += t + "=" + encodeURIComponent(e));
|
|
}),
|
|
u.send({
|
|
url: new s(h).toAbsolute(i(f)),
|
|
type: "post",
|
|
content_type: "application/x-www-form-urlencoded",
|
|
data: c,
|
|
success: function(e) {
|
|
if ((e = JSON.parse(e))) e.error ? r(e.error) : n(e);
|
|
else {
|
|
var t = f.translate("Server response wasn't proper JSON.");
|
|
r(t);
|
|
}
|
|
},
|
|
error: function() {
|
|
var e =
|
|
f.translate("The spelling service was not found: (") +
|
|
i(f) +
|
|
f.translate(")");
|
|
r(e);
|
|
}
|
|
});
|
|
})
|
|
).call(e.plugins.spellchecker, r, o, a, d);
|
|
},
|
|
x = function(e, t, n) {
|
|
e.dom.select("span.mce-spellchecker-word").length || N(e, t, n);
|
|
},
|
|
N = function(e, t, n) {
|
|
if ((p(e, n).reset(), n.set(null), t.get())) return t.set(!1), f(e), !0;
|
|
},
|
|
k = function(e) {
|
|
var t = e.getAttribute("data-mce-index");
|
|
return "number" == typeof t ? "" + t : t;
|
|
},
|
|
y = function(e, t, n, r, o) {
|
|
var i, c;
|
|
if (
|
|
(o.words ? ((c = !!o.dictionary), (i = o.words)) : (i = o),
|
|
e.setProgressState(!1),
|
|
(function(e) {
|
|
for (var t in e) return !1;
|
|
return !0;
|
|
})(i))
|
|
) {
|
|
var l = e.translate("No misspellings found.");
|
|
return (
|
|
e.notificationManager.open({ text: l, type: "info" }), void t.set(!1)
|
|
);
|
|
}
|
|
r.set({ suggestions: i, hasDictionarySupport: c }),
|
|
p(e, n)
|
|
.find(a(e))
|
|
.filter(function(e) {
|
|
return !!i[e.text];
|
|
})
|
|
.wrap(function(t) {
|
|
return e.dom.create("span", {
|
|
class: "mce-spellchecker-word",
|
|
"data-mce-bogus": 1,
|
|
"data-mce-word": t.text
|
|
});
|
|
}),
|
|
t.set(!0),
|
|
d(e);
|
|
},
|
|
S = {
|
|
spellcheck: function(e, t, n, r, o, i) {
|
|
N(e, n, r) ||
|
|
(e.setProgressState(!0),
|
|
v(
|
|
e,
|
|
t,
|
|
i,
|
|
"spellcheck",
|
|
p(e, r).text,
|
|
function(t) {
|
|
y(e, n, r, o, t);
|
|
},
|
|
function(t) {
|
|
e.notificationManager.open({ text: t, type: "error" }),
|
|
e.setProgressState(!1),
|
|
N(e, n, r);
|
|
}
|
|
),
|
|
e.focus());
|
|
},
|
|
checkIfFinished: x,
|
|
addToDictionary: function(e, t, n, r, o, i) {
|
|
e.setProgressState(!0),
|
|
v(
|
|
e,
|
|
t,
|
|
"addToDictionary",
|
|
o,
|
|
function() {
|
|
e.setProgressState(!1), e.dom.remove(i, !0), x(e, n, r);
|
|
},
|
|
function(t) {
|
|
e.notificationManager.open({ text: t, type: "error" }),
|
|
e.setProgressState(!1);
|
|
}
|
|
);
|
|
},
|
|
ignoreWord: function(e, t, n, r, o, i) {
|
|
e.selection.collapse(),
|
|
i
|
|
? l.each(e.dom.select("span.mce-spellchecker-word"), function(t) {
|
|
t.getAttribute("data-mce-word") === r && e.dom.remove(t, !0);
|
|
})
|
|
: e.dom.remove(o, !0),
|
|
x(e, t, n);
|
|
},
|
|
findSpansByIndex: function(e, t) {
|
|
var n,
|
|
r = [];
|
|
if ((n = l.toArray(e.getBody().getElementsByTagName("span"))).length)
|
|
for (var o = 0; o < n.length; o++) {
|
|
var i = k(n[o]);
|
|
null !== i && i.length && i === t.toString() && r.push(n[o]);
|
|
}
|
|
return r;
|
|
},
|
|
getElmIndex: k,
|
|
markErrors: y
|
|
},
|
|
w = function(e, t, n, r, i) {
|
|
return {
|
|
getTextMatcher: function() {
|
|
return r.get();
|
|
},
|
|
getWordCharPattern: function() {
|
|
return a(e);
|
|
},
|
|
markErrors: function(o) {
|
|
S.markErrors(e, t, r, n, o);
|
|
},
|
|
getLanguage: function() {
|
|
return o(e);
|
|
}
|
|
};
|
|
},
|
|
b = function(e, t, n, r, o, i) {
|
|
e.addCommand("mceSpellCheck", function() {
|
|
S.spellcheck(e, t, n, r, o, i);
|
|
});
|
|
},
|
|
T = function(e, t, n, i, c, a) {
|
|
var s,
|
|
u,
|
|
d,
|
|
f,
|
|
h = ((d = e),
|
|
(s = l.map(r(d).split(","), function(e) {
|
|
return { name: (e = e.split("="))[0], value: e[1] };
|
|
})),
|
|
(u = []),
|
|
l.each(s, function(e) {
|
|
u.push({ selectable: !0, text: e.name, data: e.value });
|
|
}),
|
|
u),
|
|
g = function() {
|
|
S.spellcheck(e, t, n, i, a, c);
|
|
},
|
|
m = {
|
|
tooltip: "Spellcheck",
|
|
onclick: g,
|
|
onPostRender: function(t) {
|
|
var r = t.control;
|
|
e.on("SpellcheckStart SpellcheckEnd", function() {
|
|
r.active(n.get());
|
|
});
|
|
}
|
|
};
|
|
h.length > 1 &&
|
|
((m.type = "splitbutton"),
|
|
(m.menu = h),
|
|
(m.onshow = ((f = e),
|
|
function(e) {
|
|
var t = o(f);
|
|
e.control.items().each(function(e) {
|
|
e.active(e.settings.data === t);
|
|
});
|
|
})),
|
|
(m.onselect = function(e) {
|
|
c.set(e.control.settings.data);
|
|
})),
|
|
e.addButton("spellchecker", m),
|
|
e.addMenuItem("spellchecker", {
|
|
text: "Spellcheck",
|
|
context: "tools",
|
|
onclick: g,
|
|
selectable: !0,
|
|
onPostRender: function() {
|
|
var t = this;
|
|
t.active(n.get()),
|
|
e.on("SpellcheckStart SpellcheckEnd", function() {
|
|
t.active(n.get());
|
|
});
|
|
}
|
|
});
|
|
},
|
|
I = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
E = tinymce.util.Tools.resolve("tinymce.ui.Factory"),
|
|
P = function(e, t, n, r, o) {
|
|
e.on("click", function(i) {
|
|
var c = i.target;
|
|
if ("mce-spellchecker-word" === c.className) {
|
|
i.preventDefault();
|
|
var a = S.findSpansByIndex(e, S.getElmIndex(c));
|
|
if (a.length > 0) {
|
|
var s = e.dom.createRng();
|
|
s.setStartBefore(a[0]),
|
|
s.setEndAfter(a[a.length - 1]),
|
|
e.selection.setRng(s),
|
|
(function(e, t, n, r, o, i, c) {
|
|
var a = [],
|
|
s = n.get().suggestions[i];
|
|
l.each(s, function(t) {
|
|
a.push({
|
|
text: t,
|
|
onclick: function() {
|
|
e.insertContent(e.dom.encode(t)),
|
|
e.dom.remove(c),
|
|
S.checkIfFinished(e, r, o);
|
|
}
|
|
});
|
|
}),
|
|
a.push({ text: "-" }),
|
|
n.get().hasDictionarySupport &&
|
|
a.push({
|
|
text: "Add to Dictionary",
|
|
onclick: function() {
|
|
S.addToDictionary(e, t, r, o, i, c);
|
|
}
|
|
}),
|
|
a.push.apply(a, [
|
|
{
|
|
text: "Ignore",
|
|
onclick: function() {
|
|
S.ignoreWord(e, r, o, i, c);
|
|
}
|
|
},
|
|
{
|
|
text: "Ignore all",
|
|
onclick: function() {
|
|
S.ignoreWord(e, r, o, i, c, !0);
|
|
}
|
|
}
|
|
]),
|
|
(g = E.create("menu", {
|
|
items: a,
|
|
context: "contextmenu",
|
|
onautohide: function(e) {
|
|
-1 !== e.target.className.indexOf("spellchecker") &&
|
|
e.preventDefault();
|
|
},
|
|
onhide: function() {
|
|
g.remove(), (g = null);
|
|
}
|
|
})).renderTo(document.body);
|
|
var u = I.DOM.getPos(e.getContentAreaContainer()),
|
|
d = e.dom.getPos(c[0]),
|
|
f = e.dom.getRoot();
|
|
"BODY" === f.nodeName
|
|
? ((d.x -=
|
|
f.ownerDocument.documentElement.scrollLeft ||
|
|
f.scrollLeft),
|
|
(d.y -=
|
|
f.ownerDocument.documentElement.scrollTop || f.scrollTop))
|
|
: ((d.x -= f.scrollLeft), (d.y -= f.scrollTop)),
|
|
(u.x += d.x),
|
|
(u.y += d.y),
|
|
g.moveTo(u.x, u.y + c[0].offsetHeight);
|
|
})(e, t, n, r, o, c.getAttribute("data-mce-word"), a);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
t.add("spellchecker", function(t, r) {
|
|
if (!1 === n(t)) {
|
|
var i = e(!1),
|
|
c = e(o(t)),
|
|
a = e(null),
|
|
l = e({});
|
|
return (
|
|
T(t, r, i, a, c, l),
|
|
P(t, r, l, i, a),
|
|
b(t, r, i, a, l, c),
|
|
w(t, i, l, a, r)
|
|
);
|
|
}
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var n = t,
|
|
r = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: r,
|
|
set: function(e) {
|
|
n = e;
|
|
},
|
|
clone: function() {
|
|
return e(r());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = tinymce.util.Tools.resolve("tinymce.util.Tools");
|
|
function r(e) {
|
|
return e && 1 === e.nodeType && "false" === e.contentEditable;
|
|
}
|
|
var a = {
|
|
findAndReplaceDOMText: function(e, t, n, a, i) {
|
|
var o,
|
|
d,
|
|
c,
|
|
l,
|
|
s,
|
|
u,
|
|
f = [],
|
|
p = 0;
|
|
function g(e, t) {
|
|
if (((t = t || 0), !e[0]))
|
|
throw new Error(
|
|
"findAndReplaceDOMText cannot handle zero-length matches"
|
|
);
|
|
var n = e.index;
|
|
if (t > 0) {
|
|
var r = e[t];
|
|
if (!r) throw new Error("Invalid capture group");
|
|
(n += e[0].indexOf(r)), (e[0] = r);
|
|
}
|
|
return [n, n + e[0].length, [e[0]]];
|
|
}
|
|
if (
|
|
((c = t.ownerDocument),
|
|
(l = i.getBlockElements()),
|
|
(s = i.getWhiteSpaceElements()),
|
|
(u = i.getShortEndedElements()),
|
|
(d = (function h(e) {
|
|
var t;
|
|
if (3 === e.nodeType) return e.data;
|
|
if (s[e.nodeName] && !l[e.nodeName]) return "";
|
|
if (((t = ""), r(e))) return "\n";
|
|
if (
|
|
((l[e.nodeName] || u[e.nodeName]) && (t += "\n"),
|
|
(e = e.firstChild))
|
|
)
|
|
do {
|
|
t += h(e);
|
|
} while ((e = e.nextSibling));
|
|
return t;
|
|
})(t)))
|
|
) {
|
|
if (e.global) for (; (o = e.exec(d)); ) f.push(g(o, a));
|
|
else (o = d.match(e)), f.push(g(o, a));
|
|
return (
|
|
f.length &&
|
|
((p = f.length),
|
|
(function(e, t, n) {
|
|
var a,
|
|
i,
|
|
o,
|
|
d,
|
|
c = [],
|
|
f = 0,
|
|
p = e,
|
|
g = t.shift(),
|
|
h = 0;
|
|
e: for (;;) {
|
|
if (
|
|
((l[p.nodeName] || u[p.nodeName] || r(p)) && f++,
|
|
3 === p.nodeType &&
|
|
(!i && p.length + f >= g[1]
|
|
? ((i = p), (d = g[1] - f))
|
|
: a && c.push(p),
|
|
!a && p.length + f > g[0] && ((a = p), (o = g[0] - f)),
|
|
(f += p.length)),
|
|
a && i)
|
|
) {
|
|
if (
|
|
((p = n({
|
|
startNode: a,
|
|
startNodeIndex: o,
|
|
endNode: i,
|
|
endNodeIndex: d,
|
|
innerNodes: c,
|
|
match: g[2],
|
|
matchIndex: h
|
|
})),
|
|
(f -= i.length - d),
|
|
(a = null),
|
|
(i = null),
|
|
(c = []),
|
|
h++,
|
|
!(g = t.shift()))
|
|
)
|
|
break;
|
|
} else if (
|
|
(s[p.nodeName] && !l[p.nodeName]) ||
|
|
!p.firstChild
|
|
) {
|
|
if (p.nextSibling) {
|
|
p = p.nextSibling;
|
|
continue;
|
|
}
|
|
} else if (!r(p)) {
|
|
p = p.firstChild;
|
|
continue;
|
|
}
|
|
for (;;) {
|
|
if (p.nextSibling) {
|
|
p = p.nextSibling;
|
|
break;
|
|
}
|
|
if (p.parentNode === e) break e;
|
|
p = p.parentNode;
|
|
}
|
|
}
|
|
})(
|
|
t,
|
|
f,
|
|
(function(e) {
|
|
var t;
|
|
if ("function" != typeof e) {
|
|
var n = e.nodeType ? e : c.createElement(e);
|
|
t = function(e, t) {
|
|
var r = n.cloneNode(!1);
|
|
return (
|
|
r.setAttribute("data-mce-index", t),
|
|
e && r.appendChild(c.createTextNode(e)),
|
|
r
|
|
);
|
|
};
|
|
} else t = e;
|
|
return function(e) {
|
|
var n,
|
|
r,
|
|
a,
|
|
i = e.startNode,
|
|
o = e.endNode,
|
|
d = e.matchIndex;
|
|
if (i === o) {
|
|
var l = i;
|
|
(a = l.parentNode),
|
|
e.startNodeIndex > 0 &&
|
|
((n = c.createTextNode(
|
|
l.data.substring(0, e.startNodeIndex)
|
|
)),
|
|
a.insertBefore(n, l));
|
|
var s = t(e.match[0], d);
|
|
return (
|
|
a.insertBefore(s, l),
|
|
e.endNodeIndex < l.length &&
|
|
((r = c.createTextNode(
|
|
l.data.substring(e.endNodeIndex)
|
|
)),
|
|
a.insertBefore(r, l)),
|
|
l.parentNode.removeChild(l),
|
|
s
|
|
);
|
|
}
|
|
(n = c.createTextNode(
|
|
i.data.substring(0, e.startNodeIndex)
|
|
)),
|
|
(r = c.createTextNode(o.data.substring(e.endNodeIndex)));
|
|
for (
|
|
var u = t(i.data.substring(e.startNodeIndex), d),
|
|
f = [],
|
|
p = 0,
|
|
g = e.innerNodes.length;
|
|
p < g;
|
|
++p
|
|
) {
|
|
var h = e.innerNodes[p],
|
|
m = t(h.data, d);
|
|
h.parentNode.replaceChild(m, h), f.push(m);
|
|
}
|
|
var v = t(o.data.substring(0, e.endNodeIndex), d);
|
|
return (
|
|
(a = i.parentNode).insertBefore(n, i),
|
|
a.insertBefore(u, i),
|
|
a.removeChild(i),
|
|
(a = o.parentNode).insertBefore(v, o),
|
|
a.insertBefore(r, o),
|
|
a.removeChild(o),
|
|
v
|
|
);
|
|
};
|
|
})(n)
|
|
)),
|
|
p
|
|
);
|
|
}
|
|
}
|
|
},
|
|
i = function(e) {
|
|
var t = e.getAttribute("data-mce-index");
|
|
return "number" == typeof t ? "" + t : t;
|
|
},
|
|
o = function(e) {
|
|
var t = e.parentNode;
|
|
e.firstChild && t.insertBefore(e.firstChild, e),
|
|
e.parentNode.removeChild(e);
|
|
},
|
|
d = function(e, t) {
|
|
var r,
|
|
a = [];
|
|
if ((r = n.toArray(e.getBody().getElementsByTagName("span"))).length)
|
|
for (var o = 0; o < r.length; o++) {
|
|
var d = i(r[o]);
|
|
null !== d && d.length && d === t.toString() && a.push(r[o]);
|
|
}
|
|
return a;
|
|
},
|
|
c = function(e, t, n) {
|
|
var r = t.get(),
|
|
a = e.dom;
|
|
(n = !1 !== n) ? r++ : r--,
|
|
a.removeClass(d(e, t.get()), "mce-match-marker-selected");
|
|
var i = d(e, r);
|
|
return i.length
|
|
? (a.addClass(d(e, r), "mce-match-marker-selected"),
|
|
e.selection.scrollIntoView(i[0]),
|
|
r)
|
|
: -1;
|
|
},
|
|
l = function(e, t) {
|
|
var n = t.parentNode;
|
|
e.remove(t), e.isEmpty(n) && e.remove(n);
|
|
},
|
|
s = function(e, t) {
|
|
var n = c(e, t, !0);
|
|
-1 !== n && t.set(n);
|
|
},
|
|
u = function(e, t) {
|
|
var n = c(e, t, !1);
|
|
-1 !== n && t.set(n);
|
|
},
|
|
f = function(e) {
|
|
var t = i(e);
|
|
return null !== t && t.length > 0;
|
|
},
|
|
p = function(e, t, r) {
|
|
var a, d, c, l;
|
|
for (
|
|
d = n.toArray(e.getBody().getElementsByTagName("span")), a = 0;
|
|
a < d.length;
|
|
a++
|
|
) {
|
|
var s = i(d[a]);
|
|
null !== s &&
|
|
s.length &&
|
|
(s === t.get().toString() &&
|
|
(c || (c = d[a].firstChild), (l = d[a].firstChild)),
|
|
o(d[a]));
|
|
}
|
|
if (c && l) {
|
|
var u = e.dom.createRng();
|
|
return (
|
|
u.setStart(c, 0),
|
|
u.setEnd(l, l.data.length),
|
|
!1 !== r && e.selection.setRng(u),
|
|
u
|
|
);
|
|
}
|
|
},
|
|
g = function(e, t) {
|
|
return d(e, t.get() + 1).length > 0;
|
|
},
|
|
h = function(e, t) {
|
|
return d(e, t.get() - 1).length > 0;
|
|
},
|
|
m = {
|
|
done: p,
|
|
find: function(e, t, n, r, i) {
|
|
(n = (n = n.replace(
|
|
/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,
|
|
"\\$&"
|
|
)).replace(/\s/g, "\\s")),
|
|
(n = i ? "\\b" + n + "\\b" : n);
|
|
var o,
|
|
d,
|
|
l,
|
|
s,
|
|
u,
|
|
f = ((o = e),
|
|
(d = t),
|
|
(l = new RegExp(n, r ? "g" : "gi")),
|
|
((u = o.dom.create("span", { "data-mce-bogus": 1 })).className =
|
|
"mce-match-marker"),
|
|
(s = o.getBody()),
|
|
p(o, d, !1),
|
|
a.findAndReplaceDOMText(l, s, u, !1, o.schema));
|
|
return f && (t.set(-1), t.set(c(e, t, !0))), f;
|
|
},
|
|
next: s,
|
|
prev: u,
|
|
replace: function(e, t, r, a, d) {
|
|
var c,
|
|
p,
|
|
m,
|
|
v,
|
|
x,
|
|
b,
|
|
N = t.get();
|
|
for (
|
|
a = !1 !== a,
|
|
m = e.getBody(),
|
|
p = n.grep(n.toArray(m.getElementsByTagName("span")), f),
|
|
c = 0;
|
|
c < p.length;
|
|
c++
|
|
) {
|
|
var y = i(p[c]);
|
|
if (((v = x = parseInt(y, 10)), d || v === t.get())) {
|
|
for (
|
|
r.length
|
|
? ((p[c].firstChild.nodeValue = r), o(p[c]))
|
|
: l(e.dom, p[c]);
|
|
p[++c];
|
|
|
|
) {
|
|
if ((v = parseInt(i(p[c]), 10)) !== x) {
|
|
c--;
|
|
break;
|
|
}
|
|
l(e.dom, p[c]);
|
|
}
|
|
a && N--;
|
|
} else x > t.get() && p[c].setAttribute("data-mce-index", x - 1);
|
|
}
|
|
return (
|
|
t.set(N),
|
|
a ? ((b = g(e, t)), s(e, t)) : ((b = h(e, t)), u(e, t)),
|
|
!d && b
|
|
);
|
|
},
|
|
hasNext: g,
|
|
hasPrev: h
|
|
},
|
|
v = function(e, t) {
|
|
return {
|
|
done: function(n) {
|
|
return m.done(e, t, n);
|
|
},
|
|
find: function(n, r, a) {
|
|
return m.find(e, t, n, r, a);
|
|
},
|
|
next: function() {
|
|
return m.next(e, t);
|
|
},
|
|
prev: function() {
|
|
return m.prev(e, t);
|
|
},
|
|
replace: function(n, r, a) {
|
|
return m.replace(e, t, n, r, a);
|
|
}
|
|
};
|
|
},
|
|
x = function(e, t) {
|
|
var r,
|
|
a = {};
|
|
function i() {
|
|
d.statusbar.find("#next").disabled(!1 === m.hasNext(e, t)),
|
|
d.statusbar.find("#prev").disabled(!1 === m.hasPrev(e, t));
|
|
}
|
|
function o() {
|
|
e.windowManager.alert(
|
|
"Could not find the specified string.",
|
|
function() {
|
|
d.find("#find")[0].focus();
|
|
}
|
|
);
|
|
}
|
|
e.undoManager.add(),
|
|
(r = n.trim(e.selection.getContent({ format: "text" })));
|
|
var d = e.windowManager.open({
|
|
layout: "flex",
|
|
pack: "center",
|
|
align: "center",
|
|
onClose: function() {
|
|
e.focus(), m.done(e, t), e.undoManager.add();
|
|
},
|
|
onSubmit: function(n) {
|
|
var r, c, l, s;
|
|
return (
|
|
n.preventDefault(),
|
|
(c = d.find("#case").checked()),
|
|
(s = d.find("#words").checked()),
|
|
(l = d.find("#find").value()).length
|
|
? a.text === l && a.caseState === c && a.wholeWord === s
|
|
? m.hasNext(e, t)
|
|
? (m.next(e, t), void i())
|
|
: void o()
|
|
: ((r = m.find(e, t, l, c, s)) || o(),
|
|
d.statusbar
|
|
.items()
|
|
.slice(1)
|
|
.disabled(0 === r),
|
|
i(),
|
|
void (a = { text: l, caseState: c, wholeWord: s }))
|
|
: (m.done(e, t, !1),
|
|
void d.statusbar
|
|
.items()
|
|
.slice(1)
|
|
.disabled(!0))
|
|
);
|
|
},
|
|
buttons: [
|
|
{
|
|
text: "Find",
|
|
subtype: "primary",
|
|
onclick: function() {
|
|
d.submit();
|
|
}
|
|
},
|
|
{
|
|
text: "Replace",
|
|
disabled: !0,
|
|
onclick: function() {
|
|
m.replace(e, t, d.find("#replace").value()) ||
|
|
(d.statusbar
|
|
.items()
|
|
.slice(1)
|
|
.disabled(!0),
|
|
t.set(-1),
|
|
(a = {}));
|
|
}
|
|
},
|
|
{
|
|
text: "Replace all",
|
|
disabled: !0,
|
|
onclick: function() {
|
|
m.replace(e, t, d.find("#replace").value(), !0, !0),
|
|
d.statusbar
|
|
.items()
|
|
.slice(1)
|
|
.disabled(!0),
|
|
(a = {});
|
|
}
|
|
},
|
|
{ type: "spacer", flex: 1 },
|
|
{
|
|
text: "Prev",
|
|
name: "prev",
|
|
disabled: !0,
|
|
onclick: function() {
|
|
m.prev(e, t), i();
|
|
}
|
|
},
|
|
{
|
|
text: "Next",
|
|
name: "next",
|
|
disabled: !0,
|
|
onclick: function() {
|
|
m.next(e, t), i();
|
|
}
|
|
}
|
|
],
|
|
title: "Find and replace",
|
|
items: {
|
|
type: "form",
|
|
padding: 20,
|
|
labelGap: 30,
|
|
spacing: 10,
|
|
items: [
|
|
{
|
|
type: "textbox",
|
|
name: "find",
|
|
size: 40,
|
|
label: "Find",
|
|
value: r
|
|
},
|
|
{
|
|
type: "textbox",
|
|
name: "replace",
|
|
size: 40,
|
|
label: "Replace with"
|
|
},
|
|
{ type: "checkbox", name: "case", text: "Match case", label: " " },
|
|
{ type: "checkbox", name: "words", text: "Whole words", label: " " }
|
|
]
|
|
}
|
|
});
|
|
},
|
|
b = function(e, t) {
|
|
e.addCommand("SearchReplace", function() {
|
|
x(e, t);
|
|
});
|
|
},
|
|
N = function(e, t) {
|
|
return function() {
|
|
x(e, t);
|
|
};
|
|
},
|
|
y = function(e, t) {
|
|
e.addMenuItem("searchreplace", {
|
|
text: "Find and replace",
|
|
shortcut: "Meta+F",
|
|
onclick: N(e, t),
|
|
separator: "before",
|
|
context: "edit"
|
|
}),
|
|
e.addButton("searchreplace", {
|
|
tooltip: "Find and replace",
|
|
onclick: N(e, t)
|
|
}),
|
|
e.shortcuts.add("Meta+F", "", N(e, t));
|
|
};
|
|
t.add("searchreplace", function(t) {
|
|
var n = e(-1);
|
|
return b(t, n), y(t, n), v(t, n);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var n = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
t = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
a = function(n) {
|
|
return n.getParam("save_enablewhendirty", !0);
|
|
},
|
|
o = function(n) {
|
|
return !!n.getParam("save_onsavecallback");
|
|
},
|
|
c = function(n) {
|
|
return !!n.getParam("save_oncancelcallback");
|
|
},
|
|
i = function(n, e) {
|
|
n.notificationManager.open({ text: n.translate(e), type: "error" });
|
|
},
|
|
r = function(n) {
|
|
var t;
|
|
if (((t = e.DOM.getParent(n.id, "form")), !a(n) || n.isDirty())) {
|
|
if ((n.save(), o(n)))
|
|
return n.execCallback("save_onsavecallback", n), void n.nodeChanged();
|
|
t
|
|
? (n.setDirty(!1),
|
|
(t.onsubmit && !t.onsubmit()) ||
|
|
("function" == typeof t.submit
|
|
? t.submit()
|
|
: i(n, "Error: Form submit field collision.")),
|
|
n.nodeChanged())
|
|
: i(n, "Error: No form element found.");
|
|
}
|
|
},
|
|
l = function(n) {
|
|
var e = t.trim(n.startContent);
|
|
c(n)
|
|
? n.execCallback("save_oncancelcallback", n)
|
|
: (n.setContent(e), n.undoManager.clear(), n.nodeChanged());
|
|
},
|
|
d = function(n) {
|
|
n.addCommand("mceSave", function() {
|
|
r(n);
|
|
}),
|
|
n.addCommand("mceCancel", function() {
|
|
l(n);
|
|
});
|
|
},
|
|
s = function(n) {
|
|
return function(e) {
|
|
var t = e.control;
|
|
n.on("nodeChange dirty", function() {
|
|
t.disabled(a(n) && !n.isDirty());
|
|
});
|
|
};
|
|
},
|
|
u = function(n) {
|
|
n.addButton("save", {
|
|
icon: "save",
|
|
text: "Save",
|
|
cmd: "mceSave",
|
|
disabled: !0,
|
|
onPostRender: s(n)
|
|
}),
|
|
n.addButton("cancel", {
|
|
text: "Cancel",
|
|
icon: !1,
|
|
cmd: "mceCancel",
|
|
disabled: !0,
|
|
onPostRender: s(n)
|
|
}),
|
|
n.addShortcut("Meta+S", "", "mceSave");
|
|
};
|
|
n.add("save", function(n) {
|
|
u(n), d(n);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = function(t) {
|
|
t.addCommand("mcePrint", function() {
|
|
t.getWin().print();
|
|
});
|
|
},
|
|
n = function(t) {
|
|
t.addButton("print", { title: "Print", cmd: "mcePrint" }),
|
|
t.addMenuItem("print", {
|
|
text: "Print",
|
|
cmd: "mcePrint",
|
|
icon: "print"
|
|
});
|
|
};
|
|
tinymce.util.Tools.resolve("tinymce.PluginManager").add("print", function(i) {
|
|
t(i), n(i), i.addShortcut("Meta+P", "", "mcePrint");
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
n = function(e) {
|
|
return parseInt(e.getParam("plugin_preview_width", "650"), 10);
|
|
},
|
|
i = function(e) {
|
|
return parseInt(e.getParam("plugin_preview_height", "500"), 10);
|
|
},
|
|
o = function(e) {
|
|
return e.getParam("content_style", "");
|
|
},
|
|
r = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
c = function(e) {
|
|
var t = "",
|
|
n = e.dom.encode,
|
|
i = o(e);
|
|
(t += '<base href="' + n(e.documentBaseURI.getURI()) + '">'),
|
|
i && (t += '<style type="text/css">' + i + "</style>"),
|
|
r.each(e.contentCSS, function(i) {
|
|
t +=
|
|
'<link type="text/css" rel="stylesheet" href="' +
|
|
n(e.documentBaseURI.toAbsolute(i)) +
|
|
'">';
|
|
});
|
|
var c = e.settings.body_id || "tinymce";
|
|
-1 !== c.indexOf("=") &&
|
|
(c = (c = e.getParam("body_id", "", "hash"))[e.id] || c);
|
|
var a = e.settings.body_class || "";
|
|
-1 !== a.indexOf("=") &&
|
|
(a = (a = e.getParam("body_class", "", "hash"))[e.id] || "");
|
|
var s = e.settings.directionality
|
|
? ' dir="' + e.settings.directionality + '"'
|
|
: "";
|
|
return (
|
|
"<!DOCTYPE html><html><head>" +
|
|
t +
|
|
'</head><body id="' +
|
|
n(c) +
|
|
'" class="mce-content-body ' +
|
|
n(a) +
|
|
'"' +
|
|
n(s) +
|
|
">" +
|
|
e.getContent() +
|
|
'<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A") {e.preventDefault();}}}, false);</script> </body></html>'
|
|
);
|
|
},
|
|
a = function(e, t, n) {
|
|
var i = c(e);
|
|
if (n) t.src = "data:text/html;charset=utf-8," + encodeURIComponent(i);
|
|
else {
|
|
var o = t.contentWindow.document;
|
|
o.open(), o.write(i), o.close();
|
|
}
|
|
},
|
|
s = function(e) {
|
|
var o = !t.ie,
|
|
r =
|
|
'<iframe src="javascript:\'\'" frameborder="0"' +
|
|
(o ? ' sandbox="allow-scripts"' : "") +
|
|
"></iframe>",
|
|
c = n(e),
|
|
s = i(e);
|
|
e.windowManager.open({
|
|
title: "Preview",
|
|
width: c,
|
|
height: s,
|
|
html: r,
|
|
buttons: {
|
|
text: "Close",
|
|
onclick: function(e) {
|
|
e.control
|
|
.parent()
|
|
.parent()
|
|
.close();
|
|
}
|
|
},
|
|
onPostRender: function(t) {
|
|
var n = t.control.getEl("body").firstChild;
|
|
a(e, n, o);
|
|
}
|
|
});
|
|
},
|
|
d = function(e) {
|
|
e.addCommand("mcePreview", function() {
|
|
s(e);
|
|
});
|
|
},
|
|
l = function(e) {
|
|
e.addButton("preview", { title: "Preview", cmd: "mcePreview" }),
|
|
e.addMenuItem("preview", {
|
|
text: "Preview",
|
|
cmd: "mcePreview",
|
|
context: "view"
|
|
});
|
|
};
|
|
e.add("preview", function(e) {
|
|
d(e), l(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var n = t,
|
|
r = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: r,
|
|
set: function(e) {
|
|
n = e;
|
|
},
|
|
clone: function() {
|
|
return e(r());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = function(e) {
|
|
return !(
|
|
!/(^|[ ,])powerpaste([, ]|$)/.test(e.settings.plugins) ||
|
|
!t.get("powerpaste") ||
|
|
("undefined" != typeof window.console &&
|
|
window.console.log &&
|
|
window.console.log(
|
|
"PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."
|
|
),
|
|
0)
|
|
);
|
|
},
|
|
r = function(e, t) {
|
|
return { clipboard: e, quirks: t };
|
|
},
|
|
a = {
|
|
firePastePreProcess: function(e, t, n, r) {
|
|
return e.fire("PastePreProcess", {
|
|
content: t,
|
|
internal: n,
|
|
wordContent: r
|
|
});
|
|
},
|
|
firePastePostProcess: function(e, t, n, r) {
|
|
return e.fire("PastePostProcess", {
|
|
node: t,
|
|
internal: n,
|
|
wordContent: r
|
|
});
|
|
},
|
|
firePastePlainTextToggle: function(e, t) {
|
|
return e.fire("PastePlainTextToggle", { state: t });
|
|
},
|
|
firePaste: function(e, t) {
|
|
return e.fire("paste", { ieFake: t });
|
|
}
|
|
},
|
|
i = {
|
|
shouldPlainTextInform: function(e) {
|
|
return e.getParam("paste_plaintext_inform", !0);
|
|
},
|
|
shouldBlockDrop: function(e) {
|
|
return e.getParam("paste_block_drop", !1);
|
|
},
|
|
shouldPasteDataImages: function(e) {
|
|
return e.getParam("paste_data_images", !1);
|
|
},
|
|
shouldFilterDrop: function(e) {
|
|
return e.getParam("paste_filter_drop", !0);
|
|
},
|
|
getPreProcess: function(e) {
|
|
return e.getParam("paste_preprocess");
|
|
},
|
|
getPostProcess: function(e) {
|
|
return e.getParam("paste_postprocess");
|
|
},
|
|
getWebkitStyles: function(e) {
|
|
return e.getParam("paste_webkit_styles");
|
|
},
|
|
shouldRemoveWebKitStyles: function(e) {
|
|
return e.getParam("paste_remove_styles_if_webkit", !0);
|
|
},
|
|
shouldMergeFormats: function(e) {
|
|
return e.getParam("paste_merge_formats", !0);
|
|
},
|
|
isSmartPasteEnabled: function(e) {
|
|
return e.getParam("smart_paste", !0);
|
|
},
|
|
isPasteAsTextEnabled: function(e) {
|
|
return e.getParam("paste_as_text", !1);
|
|
},
|
|
getRetainStyleProps: function(e) {
|
|
return e.getParam("paste_retain_style_properties");
|
|
},
|
|
getWordValidElements: function(e) {
|
|
return e.getParam(
|
|
"paste_word_valid_elements",
|
|
"-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody"
|
|
);
|
|
},
|
|
shouldConvertWordFakeLists: function(e) {
|
|
return e.getParam("paste_convert_word_fake_lists", !0);
|
|
},
|
|
shouldUseDefaultFilters: function(e) {
|
|
return e.getParam("paste_enable_default_filters", !0);
|
|
}
|
|
},
|
|
o = function(e, t, n) {
|
|
var r, o, s;
|
|
"text" === t.pasteFormat
|
|
? ((t.pasteFormat = "html"), a.firePastePlainTextToggle(e, !1))
|
|
: ((t.pasteFormat = "text"),
|
|
a.firePastePlainTextToggle(e, !0),
|
|
(s = e),
|
|
!1 === n.get() &&
|
|
i.shouldPlainTextInform(s) &&
|
|
((o =
|
|
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),
|
|
(r = e).notificationManager.open({
|
|
text: r.translate(o),
|
|
type: "info"
|
|
}),
|
|
n.set(!0))),
|
|
e.focus();
|
|
},
|
|
s = function(e, t, n) {
|
|
e.addCommand("mceTogglePlainTextPaste", function() {
|
|
o(e, t, n);
|
|
}),
|
|
e.addCommand("mceInsertClipboardContent", function(e, n) {
|
|
n.content && t.pasteHtml(n.content, n.internal),
|
|
n.text && t.pasteText(n.text);
|
|
});
|
|
},
|
|
l = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
u = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
c = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
f = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
d = "x-tinymce/html",
|
|
m = "\x3c!-- " + d + " --\x3e",
|
|
p = {
|
|
mark: function(e) {
|
|
return m + e;
|
|
},
|
|
unmark: function(e) {
|
|
return e.replace(m, "");
|
|
},
|
|
isMarked: function(e) {
|
|
return -1 !== e.indexOf(m);
|
|
},
|
|
internalHtmlMime: function() {
|
|
return d;
|
|
}
|
|
},
|
|
g = tinymce.util.Tools.resolve("tinymce.html.Entities"),
|
|
v = function(e) {
|
|
return e.replace(/\r?\n/g, "<br>");
|
|
},
|
|
h = function(e, t, n) {
|
|
var r = e.split(/\n\n/),
|
|
a = (function(e, t) {
|
|
var n,
|
|
r = [],
|
|
a = "<" + e;
|
|
if ("object" == typeof t) {
|
|
for (n in t)
|
|
t.hasOwnProperty(n) &&
|
|
r.push(n + '="' + g.encodeAllRaw(t[n]) + '"');
|
|
r.length && (a += " " + r.join(" "));
|
|
}
|
|
return a + ">";
|
|
})(t, n),
|
|
i = "</" + t + ">",
|
|
o = c.map(r, function(e) {
|
|
return e.split(/\n/).join("<br />");
|
|
});
|
|
return 1 === o.length
|
|
? o[0]
|
|
: c
|
|
.map(o, function(e) {
|
|
return a + e + i;
|
|
})
|
|
.join("");
|
|
},
|
|
P = {
|
|
isPlainText: function(e) {
|
|
return !/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(
|
|
e
|
|
);
|
|
},
|
|
convert: function(e, t, n) {
|
|
return t ? h(e, t, n) : v(e);
|
|
},
|
|
toBRs: v,
|
|
toBlockElements: h
|
|
},
|
|
y = tinymce.util.Tools.resolve("tinymce.html.DomParser"),
|
|
b = tinymce.util.Tools.resolve("tinymce.html.Node"),
|
|
x = tinymce.util.Tools.resolve("tinymce.html.Schema"),
|
|
w = tinymce.util.Tools.resolve("tinymce.html.Serializer");
|
|
function T(e, t) {
|
|
return (
|
|
c.each(t, function(t) {
|
|
e = t.constructor === RegExp ? e.replace(t, "") : e.replace(t[0], t[1]);
|
|
}),
|
|
e
|
|
);
|
|
}
|
|
var C = {
|
|
filter: T,
|
|
innerText: function(e) {
|
|
var t = x(),
|
|
n = y({}, t),
|
|
r = "",
|
|
a = t.getShortEndedElements(),
|
|
i = c.makeMap(
|
|
"script noscript style textarea video audio iframe object",
|
|
" "
|
|
),
|
|
o = t.getBlockElements();
|
|
return (
|
|
(e = T(e, [/<!\[[^\]]+\]>/g])),
|
|
(function s(e) {
|
|
var t = e.name,
|
|
n = e;
|
|
if ("br" !== t)
|
|
if ((a[t] && (r += " "), i[t])) r += " ";
|
|
else {
|
|
if (
|
|
(3 === e.type && (r += e.value),
|
|
!e.shortEnded && (e = e.firstChild))
|
|
)
|
|
do {
|
|
s(e);
|
|
} while ((e = e.next));
|
|
o[t] && n.next && ((r += "\n"), "p" === t && (r += "\n"));
|
|
}
|
|
else r += "\n";
|
|
})(n.parse(e)),
|
|
r
|
|
);
|
|
},
|
|
trimHtml: function(e) {
|
|
return (e = T(e, [
|
|
/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,
|
|
/<!--StartFragment-->|<!--EndFragment-->/g,
|
|
[
|
|
/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,
|
|
function(e, t, n) {
|
|
return t || n ? "\xa0" : " ";
|
|
}
|
|
],
|
|
/<br class="Apple-interchange-newline">/g,
|
|
/<br>$/i
|
|
]));
|
|
},
|
|
createIdGenerator: function(e) {
|
|
var t = 0;
|
|
return function() {
|
|
return e + t++;
|
|
};
|
|
},
|
|
isMsEdge: function() {
|
|
return -1 !== navigator.userAgent.indexOf(" Edge/");
|
|
}
|
|
};
|
|
function _(e) {
|
|
var t, n;
|
|
return (
|
|
(n = [
|
|
/^[IVXLMCD]{1,2}\.[ \u00a0]/,
|
|
/^[ivxlmcd]{1,2}\.[ \u00a0]/,
|
|
/^[a-z]{1,2}[\.\)][ \u00a0]/,
|
|
/^[A-Z]{1,2}[\.\)][ \u00a0]/,
|
|
/^[0-9]+\.[ \u00a0]/,
|
|
/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,
|
|
/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/
|
|
]),
|
|
(e = e.replace(/^[\u00a0 ]+/, "")),
|
|
c.each(n, function(n) {
|
|
if (n.test(e)) return (t = !0), !1;
|
|
}),
|
|
t
|
|
);
|
|
}
|
|
function D(e) {
|
|
var t,
|
|
n,
|
|
r = 1;
|
|
function a(e) {
|
|
var t = "";
|
|
if (3 === e.type) return e.value;
|
|
if ((e = e.firstChild))
|
|
do {
|
|
t += a(e);
|
|
} while ((e = e.next));
|
|
return t;
|
|
}
|
|
function i(e, t) {
|
|
if (3 === e.type && t.test(e.value))
|
|
return (e.value = e.value.replace(t, "")), !1;
|
|
if ((e = e.firstChild))
|
|
do {
|
|
if (!i(e, t)) return !1;
|
|
} while ((e = e.next));
|
|
return !0;
|
|
}
|
|
function o(e, a, o) {
|
|
var s = e._listLevel || r;
|
|
s !== r && (s < r ? t && (t = t.parent.parent) : ((n = t), (t = null))),
|
|
t && t.name === a
|
|
? t.append(e)
|
|
: ((n = n || t),
|
|
(t = new b(a, 1)),
|
|
o > 1 && t.attr("start", "" + o),
|
|
e.wrap(t)),
|
|
(e.name = "li"),
|
|
s > r && n && n.lastChild.append(t),
|
|
(r = s),
|
|
(function l(e) {
|
|
if (e._listIgnore) e.remove();
|
|
else if ((e = e.firstChild))
|
|
do {
|
|
l(e);
|
|
} while ((e = e.next));
|
|
})(e),
|
|
i(e, /^\u00a0+/),
|
|
i(e, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),
|
|
i(e, /^\u00a0+/);
|
|
}
|
|
for (var s = [], l = e.firstChild; void 0 !== l && null !== l; )
|
|
if ((s.push(l), null !== (l = l.walk())))
|
|
for (; void 0 !== l && l.parent !== e; ) l = l.walk();
|
|
for (var u = 0; u < s.length; u++)
|
|
if ("p" === (e = s[u]).name && e.firstChild) {
|
|
var c = a(e);
|
|
if (/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)) {
|
|
o(e, "ul");
|
|
continue;
|
|
}
|
|
if (_(c)) {
|
|
var f = /([0-9]+)\./.exec(c),
|
|
d = 1;
|
|
f && (d = parseInt(f[1], 10)), o(e, "ol", d);
|
|
continue;
|
|
}
|
|
if (e._listLevel) {
|
|
o(e, "ul", 1);
|
|
continue;
|
|
}
|
|
t = null;
|
|
} else (n = t), (t = null);
|
|
}
|
|
function k(e, t, n, r) {
|
|
var a,
|
|
o = {},
|
|
s = e.dom.parseStyle(r);
|
|
return (
|
|
c.each(s, function(s, l) {
|
|
switch (l) {
|
|
case "mso-list":
|
|
(a = /\w+ \w+([0-9]+)/i.exec(r)) &&
|
|
(n._listLevel = parseInt(a[1], 10)),
|
|
/Ignore/i.test(s) &&
|
|
n.firstChild &&
|
|
((n._listIgnore = !0), (n.firstChild._listIgnore = !0));
|
|
break;
|
|
case "horiz-align":
|
|
l = "text-align";
|
|
break;
|
|
case "vert-align":
|
|
l = "vertical-align";
|
|
break;
|
|
case "font-color":
|
|
case "mso-foreground":
|
|
l = "color";
|
|
break;
|
|
case "mso-background":
|
|
case "mso-highlight":
|
|
l = "background";
|
|
break;
|
|
case "font-weight":
|
|
case "font-style":
|
|
return void ("normal" !== s && (o[l] = s));
|
|
case "mso-element":
|
|
if (/^(comment|comment-list)$/i.test(s)) return void n.remove();
|
|
}
|
|
0 !== l.indexOf("mso-comment")
|
|
? 0 !== l.indexOf("mso-") &&
|
|
("all" === i.getRetainStyleProps(e) || (t && t[l])) &&
|
|
(o[l] = s)
|
|
: n.remove();
|
|
}),
|
|
/(bold)/i.test(o["font-weight"]) &&
|
|
(delete o["font-weight"], n.wrap(new b("b", 1))),
|
|
/(italic)/i.test(o["font-style"]) &&
|
|
(delete o["font-style"], n.wrap(new b("i", 1))),
|
|
(o = e.dom.serializeStyle(o, n.name)) || null
|
|
);
|
|
}
|
|
var R = {
|
|
preProcess: function(e, t) {
|
|
return i.shouldUseDefaultFilters(e)
|
|
? (function(e, t) {
|
|
var n, r;
|
|
(n = i.getRetainStyleProps(e)) &&
|
|
(r = c.makeMap(n.split(/[, ]/))),
|
|
(t = C.filter(t, [
|
|
/<br class="?Apple-interchange-newline"?>/gi,
|
|
/<b[^>]+id="?docs-internal-[^>]*>/gi,
|
|
/<!--[\s\S]+?-->/gi,
|
|
/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
|
|
[/<(\/?)s>/gi, "<$1strike>"],
|
|
[/ /gi, "\xa0"],
|
|
[
|
|
/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
|
|
function(e, t) {
|
|
return t.length > 0
|
|
? t
|
|
.replace(/./, " ")
|
|
.slice(Math.floor(t.length / 2))
|
|
.split("")
|
|
.join("\xa0")
|
|
: "";
|
|
}
|
|
]
|
|
]));
|
|
var a = i.getWordValidElements(e),
|
|
o = x({ valid_elements: a, valid_children: "-li[p]" });
|
|
c.each(o.elements, function(e) {
|
|
e.attributes["class"] ||
|
|
((e.attributes["class"] = {}),
|
|
e.attributesOrder.push("class")),
|
|
e.attributes.style ||
|
|
((e.attributes.style = {}),
|
|
e.attributesOrder.push("style"));
|
|
});
|
|
var s = y({}, o);
|
|
s.addAttributeFilter("style", function(t) {
|
|
for (var n, a = t.length; a--; )
|
|
(n = t[a]).attr("style", k(e, r, n, n.attr("style"))),
|
|
"span" === n.name &&
|
|
n.parent &&
|
|
!n.attributes.length &&
|
|
n.unwrap();
|
|
}),
|
|
s.addAttributeFilter("class", function(e) {
|
|
for (var t, n, r = e.length; r--; )
|
|
(n = (t = e[r]).attr("class")),
|
|
/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(
|
|
n
|
|
) && t.remove(),
|
|
t.attr("class", null);
|
|
}),
|
|
s.addNodeFilter("del", function(e) {
|
|
for (var t = e.length; t--; ) e[t].remove();
|
|
}),
|
|
s.addNodeFilter("a", function(e) {
|
|
for (var t, n, r, a = e.length; a--; )
|
|
if (
|
|
((n = (t = e[a]).attr("href")),
|
|
(r = t.attr("name")),
|
|
n && -1 !== n.indexOf("#_msocom_"))
|
|
)
|
|
t.remove();
|
|
else if (
|
|
(n &&
|
|
0 === n.indexOf("file://") &&
|
|
(n = n.split("#")[1]) &&
|
|
(n = "#" + n),
|
|
n || r)
|
|
) {
|
|
if (r && !/^_?(?:toc|edn|ftn)/i.test(r)) {
|
|
t.unwrap();
|
|
continue;
|
|
}
|
|
t.attr({ href: n, name: r });
|
|
} else t.unwrap();
|
|
});
|
|
var l = s.parse(t);
|
|
return (
|
|
i.shouldConvertWordFakeLists(e) && D(l),
|
|
(t = w({ validate: e.settings.validate }, o).serialize(l))
|
|
);
|
|
})(e, t)
|
|
: t;
|
|
},
|
|
isWordContent: function(e) {
|
|
return (
|
|
/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(
|
|
e
|
|
) ||
|
|
/class="OutlineElement/.test(e) ||
|
|
/id="?docs\-internal\-guid\-/.test(e)
|
|
);
|
|
}
|
|
},
|
|
E = function(e, t) {
|
|
return { content: e, cancelled: t };
|
|
},
|
|
F = function(e, t, n, r) {
|
|
var i,
|
|
o,
|
|
s,
|
|
l,
|
|
u,
|
|
c,
|
|
f = a.firePastePreProcess(e, t, n, r);
|
|
return e.hasEventListeners("PastePostProcess") && !f.isDefaultPrevented()
|
|
? ((i = e),
|
|
(o = f.content),
|
|
(s = n),
|
|
(l = r),
|
|
(u = i.dom.create("div", { style: "display:none" }, o)),
|
|
(c = a.firePastePostProcess(i, u, s, l)),
|
|
E(c.node.innerHTML, c.isDefaultPrevented()))
|
|
: E(f.content, f.isDefaultPrevented());
|
|
},
|
|
M = {
|
|
process: function(e, t, n) {
|
|
var r = R.isWordContent(t),
|
|
a = r ? R.preProcess(e, t) : t;
|
|
return F(e, a, n, r);
|
|
}
|
|
},
|
|
S = function(e) {
|
|
return /^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(e);
|
|
},
|
|
I = function(e) {
|
|
return S(e) && /.(gif|jpe?g|png)$/.test(e);
|
|
},
|
|
A = function(e, t, n) {
|
|
return !(
|
|
!1 !== e.selection.isCollapsed() ||
|
|
!S(t) ||
|
|
((a = t),
|
|
(i = n),
|
|
(r = e).undoManager.extra(
|
|
function() {
|
|
i(r, a);
|
|
},
|
|
function() {
|
|
r.execCommand("mceInsertLink", !1, a);
|
|
}
|
|
),
|
|
0)
|
|
);
|
|
var r, a, i;
|
|
},
|
|
O = function(e, t, n) {
|
|
return (
|
|
!!I(t) &&
|
|
((a = t),
|
|
(i = n),
|
|
(r = e).undoManager.extra(
|
|
function() {
|
|
i(r, a);
|
|
},
|
|
function() {
|
|
r.insertContent('<img src="' + a + '">');
|
|
}
|
|
),
|
|
!0)
|
|
);
|
|
var r, a, i;
|
|
},
|
|
B = function(e, t) {
|
|
return (
|
|
e.insertContent(t, { merge: i.shouldMergeFormats(e), paste: !0 }), !0
|
|
);
|
|
},
|
|
H = {
|
|
isImageUrl: I,
|
|
isAbsoluteUrl: S,
|
|
insertContent: function(e, t) {
|
|
var n, r;
|
|
!1 === i.isSmartPasteEnabled(e)
|
|
? B(e, t)
|
|
: ((n = e),
|
|
(r = t),
|
|
c.each([A, O, B], function(e) {
|
|
return !0 !== e(n, r, B);
|
|
}));
|
|
}
|
|
},
|
|
N = function(e) {
|
|
var t,
|
|
n,
|
|
r,
|
|
o,
|
|
s,
|
|
d,
|
|
m = this,
|
|
g = 0,
|
|
v = ((t = e),
|
|
(r = "%MCEPASTEBIN%"),
|
|
{
|
|
create: function() {
|
|
var e,
|
|
a,
|
|
i = t.dom,
|
|
o = t.getBody(),
|
|
s = t.dom.getViewPort(t.getWin()).y,
|
|
u = 20;
|
|
if (
|
|
((n = t.selection.getRng()),
|
|
t.inline &&
|
|
(a = t.selection.getScrollContainer()) &&
|
|
a.scrollTop > 0 &&
|
|
(s = a.scrollTop),
|
|
n.getClientRects)
|
|
) {
|
|
var c = (function(e) {
|
|
var t,
|
|
r,
|
|
a,
|
|
o = e.startContainer;
|
|
if ((t = e.getClientRects()).length) return t[0];
|
|
if (e.collapsed && 1 === o.nodeType) {
|
|
for (
|
|
a = o.childNodes[n.startOffset];
|
|
a && 3 === a.nodeType && !a.data.length;
|
|
|
|
)
|
|
a = a.nextSibling;
|
|
if (a)
|
|
return (
|
|
"BR" === a.tagName &&
|
|
((r = i.doc.createTextNode("\ufeff")),
|
|
a.parentNode.insertBefore(r, a),
|
|
(e = i.createRng()).setStartBefore(r),
|
|
e.setEndAfter(r),
|
|
(t = e.getClientRects()),
|
|
i.remove(r)),
|
|
t.length ? t[0] : void 0
|
|
);
|
|
}
|
|
})(n);
|
|
if (c) u = s + (c.top - i.getPos(o).y);
|
|
else {
|
|
u = s;
|
|
var f = n.startContainer;
|
|
f &&
|
|
(3 === f.nodeType && f.parentNode !== o && (f = f.parentNode),
|
|
1 === f.nodeType && (u = i.getPos(f, a || o).y));
|
|
}
|
|
}
|
|
(e = t.dom.add(
|
|
t.getBody(),
|
|
"div",
|
|
{
|
|
id: "mcepastebin",
|
|
contentEditable: !0,
|
|
"data-mce-bogus": "all",
|
|
style:
|
|
"position: absolute; top: " +
|
|
u +
|
|
"px; width: 10px; height: 10px; overflow: hidden; opacity: 0"
|
|
},
|
|
r
|
|
)),
|
|
(l.ie || l.gecko) &&
|
|
i.setStyle(
|
|
e,
|
|
"left",
|
|
"rtl" === i.getStyle(o, "direction", !0) ? 65535 : -65535
|
|
),
|
|
i.bind(e, "beforedeactivate focusin focusout", function(e) {
|
|
e.stopPropagation();
|
|
}),
|
|
e.focus(),
|
|
t.selection.select(e, !0);
|
|
},
|
|
remove: function() {
|
|
if (o()) {
|
|
for (var e = void 0; (e = t.dom.get("mcepastebin")); )
|
|
t.dom.remove(e), t.dom.unbind(e);
|
|
n && t.selection.setRng(n);
|
|
}
|
|
n = null;
|
|
},
|
|
getEl: (o = function() {
|
|
return t.dom.get("mcepastebin");
|
|
}),
|
|
getHtml: function() {
|
|
var e,
|
|
n,
|
|
r,
|
|
a,
|
|
i,
|
|
o = function(e, n) {
|
|
e.appendChild(n), t.dom.remove(n, !0);
|
|
};
|
|
for (
|
|
n = c.grep(t.getBody().childNodes, function(e) {
|
|
return "mcepastebin" === e.id;
|
|
}),
|
|
e = n.shift(),
|
|
c.each(n, function(t) {
|
|
o(e, t);
|
|
}),
|
|
r = (a = t.dom.select("div[id=mcepastebin]", e)).length - 1;
|
|
r >= 0;
|
|
r--
|
|
)
|
|
(i = t.dom.create("div")), e.insertBefore(i, a[r]), o(i, a[r]);
|
|
return e ? e.innerHTML : "";
|
|
},
|
|
getLastRng: function() {
|
|
return n;
|
|
},
|
|
isDefault: function() {
|
|
var e,
|
|
t = o();
|
|
return (e = t) && "mcepastebin" === e.id && s(t.innerHTML);
|
|
},
|
|
isDefaultContent: (s = function(e) {
|
|
return e === r;
|
|
})
|
|
}),
|
|
h = "data:text/mce-internal,",
|
|
y = C.createIdGenerator("mceclip");
|
|
function b(t, n) {
|
|
var r = n || p.isMarked(t),
|
|
a = M.process(e, p.unmark(t), r);
|
|
!1 === a.cancelled && H.insertContent(e, a.content);
|
|
}
|
|
function x(t) {
|
|
(t = e.dom.encode(t).replace(/\r\n/g, "\n")),
|
|
b(
|
|
(t = P.convert(
|
|
t,
|
|
e.settings.forced_root_block,
|
|
e.settings.forced_root_block_attrs
|
|
)),
|
|
!1
|
|
);
|
|
}
|
|
function w(e) {
|
|
var t = {};
|
|
if (e) {
|
|
if (e.getData) {
|
|
var n = e.getData("Text");
|
|
n && n.length > 0 && -1 === n.indexOf(h) && (t["text/plain"] = n);
|
|
}
|
|
if (e.types)
|
|
for (var r = 0; r < e.types.length; r++) {
|
|
var a = e.types[r];
|
|
try {
|
|
t[a] = e.getData(a);
|
|
} catch (i) {
|
|
t[a] = "";
|
|
}
|
|
}
|
|
}
|
|
return t;
|
|
}
|
|
function T(e) {
|
|
return k(e, "text/html") || k(e, "text/plain");
|
|
}
|
|
function _(t, n, r) {
|
|
t && (e.selection.setRng(t), (t = null));
|
|
var a,
|
|
i,
|
|
o,
|
|
s,
|
|
l,
|
|
u,
|
|
c = n.result,
|
|
f = -1 !== (i = (a = c).indexOf(",")) ? a.substr(i + 1) : null,
|
|
d = y(),
|
|
m =
|
|
e.settings.images_reuse_filename && r.name
|
|
? ((o = r.name),
|
|
(s = o.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))
|
|
? e.dom.encode(s[1])
|
|
: null)
|
|
: d,
|
|
p = new Image();
|
|
if (
|
|
((p.src = c),
|
|
(l = e.settings),
|
|
(u = p),
|
|
!l.images_dataimg_filter || l.images_dataimg_filter(u))
|
|
) {
|
|
var g,
|
|
v = e.editorUpload.blobCache,
|
|
h = void 0;
|
|
(g = v.findFirst(function(e) {
|
|
return e.base64() === f;
|
|
}))
|
|
? (h = g)
|
|
: ((h = v.create(d, r, f, m)), v.add(h)),
|
|
b('<img src="' + h.blobUri() + '">', !1);
|
|
} else b('<img src="' + c + '">', !1);
|
|
}
|
|
function D(t, n) {
|
|
var r = t.clipboardData || t.dataTransfer;
|
|
function a(e) {
|
|
var r,
|
|
a,
|
|
i,
|
|
o = !1;
|
|
if (e)
|
|
for (r = 0; r < e.length; r++)
|
|
if (((a = e[r]), /^image\/(jpeg|png|gif|bmp)$/.test(a.type))) {
|
|
var s = a.getAsFile ? a.getAsFile() : a;
|
|
((i = new window.FileReader()).onload = _.bind(null, n, i, s)),
|
|
i.readAsDataURL(s),
|
|
t.preventDefault(),
|
|
(o = !0);
|
|
}
|
|
return o;
|
|
}
|
|
if (e.settings.paste_data_images && r) return a(r.items) || a(r.files);
|
|
}
|
|
function k(e, t) {
|
|
return t in e && e[t].length > 0;
|
|
}
|
|
function R(e) {
|
|
return (
|
|
(f.metaKeyPressed(e) && 86 === e.keyCode) ||
|
|
(e.shiftKey && 45 === e.keyCode)
|
|
);
|
|
}
|
|
function E() {
|
|
function t(t, n, r, a) {
|
|
var i, o;
|
|
k(t, "text/html")
|
|
? (i = t["text/html"])
|
|
: ((i = v.getHtml()),
|
|
(a = a || p.isMarked(i)),
|
|
v.isDefaultContent(i) && (r = !0)),
|
|
(i = C.trimHtml(i)),
|
|
v.remove(),
|
|
(o = !1 === a && P.isPlainText(i)),
|
|
(i.length && !o) || (r = !0),
|
|
r &&
|
|
(i = k(t, "text/plain") && o ? t["text/plain"] : C.innerText(i)),
|
|
v.isDefaultContent(i)
|
|
? n ||
|
|
e.windowManager.alert(
|
|
"Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."
|
|
)
|
|
: r
|
|
? x(i)
|
|
: b(i, a);
|
|
}
|
|
e.on("keydown", function(t) {
|
|
function n(e) {
|
|
R(e) && !e.isDefaultPrevented() && v.remove();
|
|
}
|
|
if (R(t) && !t.isDefaultPrevented()) {
|
|
if (
|
|
(d = t.shiftKey && 86 === t.keyCode) &&
|
|
l.webkit &&
|
|
-1 !== navigator.userAgent.indexOf("Version/")
|
|
)
|
|
return;
|
|
if (
|
|
(t.stopImmediatePropagation(),
|
|
(g = new Date().getTime()),
|
|
l.ie && d)
|
|
)
|
|
return t.preventDefault(), void a.firePaste(e, !0);
|
|
v.remove(),
|
|
v.create(),
|
|
e.once("keyup", n),
|
|
e.once("paste", function() {
|
|
e.off("keyup", n);
|
|
});
|
|
}
|
|
}),
|
|
e.on("paste", function(n) {
|
|
var r,
|
|
a,
|
|
i = new Date().getTime(),
|
|
o = ((r = w(n.clipboardData || e.getDoc().dataTransfer)),
|
|
C.isMsEdge() ? c.extend(r, { "text/html": "" }) : r),
|
|
s = new Date().getTime() - i,
|
|
f = new Date().getTime() - g - s < 1e3,
|
|
h = "text" === m.pasteFormat || d,
|
|
P = k(o, p.internalHtmlMime());
|
|
(d = !1),
|
|
n.isDefaultPrevented() ||
|
|
((a = n.clipboardData),
|
|
-1 !== navigator.userAgent.indexOf("Android") &&
|
|
a &&
|
|
a.items &&
|
|
0 === a.items.length)
|
|
? v.remove()
|
|
: T(o) || !D(n, v.getLastRng() || e.selection.getRng())
|
|
? (f || n.preventDefault(),
|
|
!l.ie ||
|
|
(f && !n.ieFake) ||
|
|
k(o, "text/html") ||
|
|
(v.create(),
|
|
e.dom.bind(v.getEl(), "paste", function(e) {
|
|
e.stopPropagation();
|
|
}),
|
|
e.getDoc().execCommand("Paste", !1, null),
|
|
(o["text/html"] = v.getHtml())),
|
|
k(o, "text/html")
|
|
? (n.preventDefault(),
|
|
P || (P = p.isMarked(o["text/html"])),
|
|
t(o, f, h, P))
|
|
: u.setEditorTimeout(
|
|
e,
|
|
function() {
|
|
t(o, f, h, P);
|
|
},
|
|
0
|
|
))
|
|
: v.remove();
|
|
});
|
|
}
|
|
(m.pasteFormat = i.isPasteAsTextEnabled(e) ? "text" : "html"),
|
|
(m.pasteHtml = b),
|
|
(m.pasteText = x),
|
|
(m.pasteImageData = D),
|
|
(m.getDataTransferItems = w),
|
|
(m.hasHtmlOrText = T),
|
|
(m.hasContentType = k),
|
|
e.on("preInit", function() {
|
|
var t;
|
|
E(),
|
|
e.parser.addNodeFilter("img", function(n, r, a) {
|
|
function i(e) {
|
|
e.attr("data-mce-object") ||
|
|
t === l.transparentSrc ||
|
|
e.remove();
|
|
}
|
|
if (
|
|
!e.settings.paste_data_images &&
|
|
(s = a).data &&
|
|
!0 === s.data.paste
|
|
)
|
|
for (var o = n.length; o--; )
|
|
(t = n[o].attributes.map.src) &&
|
|
(0 === t.indexOf("webkit-fake-url")
|
|
? i(n[o])
|
|
: e.settings.allow_html_data_urls ||
|
|
0 !== t.indexOf("data:") ||
|
|
i(n[o]));
|
|
var s;
|
|
});
|
|
});
|
|
},
|
|
L = function() {},
|
|
$ = function(e, t, n) {
|
|
if (
|
|
((r = e),
|
|
!1 !== l.iOS ||
|
|
r === undefined ||
|
|
"function" != typeof r.setData ||
|
|
!0 === C.isMsEdge())
|
|
)
|
|
return !1;
|
|
try {
|
|
return (
|
|
e.clearData(),
|
|
e.setData("text/html", t),
|
|
e.setData("text/plain", n),
|
|
e.setData(p.internalHtmlMime(), t),
|
|
!0
|
|
);
|
|
} catch (a) {
|
|
return !1;
|
|
}
|
|
var r;
|
|
},
|
|
W = function(e, t, n, r) {
|
|
$(e.clipboardData, t.html, t.text)
|
|
? (e.preventDefault(), r())
|
|
: n(t.html, r);
|
|
},
|
|
j = function(e) {
|
|
return function(t, n) {
|
|
var r = p.mark(t),
|
|
a = e.dom.create("div", {
|
|
contenteditable: "false",
|
|
"data-mce-bogus": "all"
|
|
}),
|
|
i = e.dom.create("div", { contenteditable: "true" }, r);
|
|
e.dom.setStyles(a, {
|
|
position: "fixed",
|
|
left: "-3000px",
|
|
width: "1000px",
|
|
overflow: "hidden"
|
|
}),
|
|
a.appendChild(i),
|
|
e.dom.add(e.getBody(), a);
|
|
var o = e.selection.getRng();
|
|
i.focus();
|
|
var s = e.dom.createRng();
|
|
s.selectNodeContents(i),
|
|
e.selection.setRng(s),
|
|
setTimeout(function() {
|
|
a.parentNode.removeChild(a), e.selection.setRng(o), n();
|
|
}, 0);
|
|
};
|
|
},
|
|
U = function(e) {
|
|
return {
|
|
html: e.selection.getContent({ contextual: !0 }),
|
|
text: e.selection.getContent({ format: "text" })
|
|
};
|
|
},
|
|
V = function(e) {
|
|
var t, n;
|
|
e.on(
|
|
"cut",
|
|
((t = e),
|
|
function(e) {
|
|
!1 === t.selection.isCollapsed() &&
|
|
W(e, U(t), j(t), function() {
|
|
setTimeout(function() {
|
|
t.execCommand("Delete");
|
|
}, 0);
|
|
});
|
|
})
|
|
),
|
|
e.on(
|
|
"copy",
|
|
((n = e),
|
|
function(e) {
|
|
!1 === n.selection.isCollapsed() && W(e, U(n), j(n), L);
|
|
})
|
|
);
|
|
},
|
|
z = tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),
|
|
K = function(e, t) {
|
|
return z.getCaretRangeFromPoint(t.clientX, t.clientY, e.getDoc());
|
|
},
|
|
G = function(e, t) {
|
|
e.focus(), e.selection.setRng(t);
|
|
},
|
|
X = function(e, t, n) {
|
|
i.shouldBlockDrop(e) &&
|
|
e.on("dragend dragover draggesture dragdrop drop drag", function(e) {
|
|
e.preventDefault(), e.stopPropagation();
|
|
}),
|
|
i.shouldPasteDataImages(e) ||
|
|
e.on("drop", function(e) {
|
|
var t = e.dataTransfer;
|
|
t && t.files && t.files.length > 0 && e.preventDefault();
|
|
}),
|
|
e.on("drop", function(r) {
|
|
var a, o;
|
|
if (((o = K(e, r)), !r.isDefaultPrevented() && !n.get())) {
|
|
a = t.getDataTransferItems(r.dataTransfer);
|
|
var s,
|
|
l = t.hasContentType(a, p.internalHtmlMime());
|
|
if (
|
|
((t.hasHtmlOrText(a) &&
|
|
(!(s = a["text/plain"]) || 0 !== s.indexOf("file://"))) ||
|
|
!t.pasteImageData(r, o)) &&
|
|
o &&
|
|
i.shouldFilterDrop(e)
|
|
) {
|
|
var c = a["mce-internal"] || a["text/html"] || a["text/plain"];
|
|
c &&
|
|
(r.preventDefault(),
|
|
u.setEditorTimeout(e, function() {
|
|
e.undoManager.transact(function() {
|
|
a["mce-internal"] && e.execCommand("Delete"),
|
|
G(e, o),
|
|
(c = C.trimHtml(c)),
|
|
a["text/html"] ? t.pasteHtml(c, l) : t.pasteText(c);
|
|
});
|
|
}));
|
|
}
|
|
}
|
|
}),
|
|
e.on("dragstart", function(e) {
|
|
n.set(!0);
|
|
}),
|
|
e.on("dragover dragend", function(t) {
|
|
i.shouldPasteDataImages(e) &&
|
|
!1 === n.get() &&
|
|
(t.preventDefault(), G(e, K(e, t))),
|
|
"dragend" === t.type && n.set(!1);
|
|
});
|
|
},
|
|
q = function(e) {
|
|
var t = e.plugins.paste,
|
|
n = i.getPreProcess(e);
|
|
n &&
|
|
e.on("PastePreProcess", function(e) {
|
|
n.call(t, t, e);
|
|
});
|
|
var r = i.getPostProcess(e);
|
|
r &&
|
|
e.on("PastePostProcess", function(e) {
|
|
r.call(t, t, e);
|
|
});
|
|
};
|
|
function Y(e, t) {
|
|
e.on("PastePreProcess", function(n) {
|
|
n.content = t(e, n.content, n.internal, n.wordContent);
|
|
});
|
|
}
|
|
function Z(e, t) {
|
|
if (!R.isWordContent(t)) return t;
|
|
var n = [];
|
|
c.each(e.schema.getBlockElements(), function(e, t) {
|
|
n.push(t);
|
|
});
|
|
var r = new RegExp(
|
|
"(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?(" +
|
|
n.join("|") +
|
|
")[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*",
|
|
"g"
|
|
);
|
|
return (
|
|
(t = C.filter(t, [[r, "$1"]])),
|
|
(t = C.filter(t, [
|
|
[/<br><br>/g, "<BR><BR>"],
|
|
[/<br>/g, " "],
|
|
[/<BR><BR>/g, "<br>"]
|
|
]))
|
|
);
|
|
}
|
|
function J(e, t, n, r) {
|
|
if (r || n) return t;
|
|
var a = i.getWebkitStyles(e);
|
|
if (!1 === i.shouldRemoveWebKitStyles(e) || "all" === a) return t;
|
|
if ((a && (a = a.split(/[, ]/)), a)) {
|
|
var o = e.dom,
|
|
s = e.selection.getNode();
|
|
t = t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function(e, t, n, r) {
|
|
var i = o.parseStyle(o.decode(n), "span"),
|
|
l = {};
|
|
if ("none" === a) return t + r;
|
|
for (var u = 0; u < a.length; u++) {
|
|
var c = i[a[u]],
|
|
f = o.getStyle(s, a[u], !0);
|
|
/color/.test(a[u]) && ((c = o.toHex(c)), (f = o.toHex(f))),
|
|
f !== c && (l[a[u]] = c);
|
|
}
|
|
return (l = o.serializeStyle(l, "span"))
|
|
? t + ' style="' + l + '"' + r
|
|
: t + r;
|
|
});
|
|
} else t = t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, "$1$3");
|
|
return (t = t.replace(
|
|
/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,
|
|
function(e, t, n, r) {
|
|
return t + ' style="' + n + '"' + r;
|
|
}
|
|
));
|
|
}
|
|
function Q(e, t) {
|
|
e.$("a", t)
|
|
.find("font,u")
|
|
.each(function(t, n) {
|
|
e.dom.remove(n, !0);
|
|
});
|
|
}
|
|
var ee = function(e) {
|
|
var t, n;
|
|
l.webkit && Y(e, J),
|
|
l.ie &&
|
|
(Y(e, Z),
|
|
(n = Q),
|
|
(t = e).on("PastePostProcess", function(e) {
|
|
n(t, e.node);
|
|
}));
|
|
},
|
|
te = function(e) {
|
|
return function() {
|
|
return e;
|
|
};
|
|
},
|
|
ne = function(e) {
|
|
for (
|
|
var t = new Array(arguments.length - 1), n = 1;
|
|
n < arguments.length;
|
|
n++
|
|
)
|
|
t[n - 1] = arguments[n];
|
|
return function() {
|
|
for (var n = new Array(arguments.length), r = 0; r < n.length; r++)
|
|
n[r] = arguments[r];
|
|
var a = t.concat(n);
|
|
return e.apply(null, a);
|
|
};
|
|
},
|
|
re = (te(!1),
|
|
te(!0),
|
|
function(e, t) {
|
|
var n = ne(
|
|
(te(!1),
|
|
te(!0),
|
|
function(e, t, n) {
|
|
var r = n.control;
|
|
r.active("text" === t.pasteFormat),
|
|
e.on("PastePlainTextToggle", function(e) {
|
|
r.active(e.state);
|
|
});
|
|
}),
|
|
e,
|
|
t
|
|
);
|
|
e.addButton("pastetext", {
|
|
active: !1,
|
|
icon: "pastetext",
|
|
tooltip: "Paste as text",
|
|
cmd: "mceTogglePlainTextPaste",
|
|
onPostRender: n
|
|
}),
|
|
e.addMenuItem("pastetext", {
|
|
text: "Paste as text",
|
|
selectable: !0,
|
|
active: t.pasteFormat,
|
|
cmd: "mceTogglePlainTextPaste",
|
|
onPostRender: n
|
|
});
|
|
}),
|
|
ae = e(!1);
|
|
t.add("paste", function(t) {
|
|
if (!1 === n(t)) {
|
|
var a = new N(t),
|
|
i = ee(t),
|
|
o = e(!1);
|
|
return re(t, a), s(t, a, ae), q(t), V(t), X(t, a, o), r(a, i);
|
|
}
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
a = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
n = function(e) {
|
|
return e.getParam("pagebreak_separator", "\x3c!-- pagebreak --\x3e");
|
|
},
|
|
t = function(e) {
|
|
return e.getParam("pagebreak_split_block", !1);
|
|
},
|
|
r = function() {
|
|
return "mce-pagebreak";
|
|
},
|
|
c = function() {
|
|
return (
|
|
'<img src="' +
|
|
a.transparentSrc +
|
|
'" class="mce-pagebreak" data-mce-resize="false" data-mce-placeholder />'
|
|
);
|
|
},
|
|
o = function(e) {
|
|
var a = n(e),
|
|
r = new RegExp(
|
|
a.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(e) {
|
|
return "\\" + e;
|
|
}),
|
|
"gi"
|
|
);
|
|
e.on("BeforeSetContent", function(e) {
|
|
e.content = e.content.replace(r, c());
|
|
}),
|
|
e.on("PreInit", function() {
|
|
e.serializer.addNodeFilter("img", function(n) {
|
|
for (var r, c, o = n.length; o--; )
|
|
if (
|
|
(c = (r = n[o]).attr("class")) &&
|
|
-1 !== c.indexOf("mce-pagebreak")
|
|
) {
|
|
var i = r.parent;
|
|
if (e.schema.getBlockElements()[i.name] && t(e)) {
|
|
(i.type = 3), (i.value = a), (i.raw = !0), r.remove();
|
|
continue;
|
|
}
|
|
(r.type = 3), (r.value = a), (r.raw = !0);
|
|
}
|
|
});
|
|
});
|
|
},
|
|
i = c,
|
|
g = r,
|
|
u = function(e) {
|
|
e.addCommand("mcePageBreak", function() {
|
|
e.settings.pagebreak_split_block
|
|
? e.insertContent("<p>" + i() + "</p>")
|
|
: e.insertContent(i());
|
|
});
|
|
},
|
|
m = function(e) {
|
|
e.on("ResolveName", function(a) {
|
|
"IMG" === a.target.nodeName &&
|
|
e.dom.hasClass(a.target, g()) &&
|
|
(a.name = "pagebreak");
|
|
});
|
|
},
|
|
s = function(e) {
|
|
e.addButton("pagebreak", { title: "Page break", cmd: "mcePageBreak" }),
|
|
e.addMenuItem("pagebreak", {
|
|
text: "Page break",
|
|
icon: "pagebreak",
|
|
cmd: "mcePageBreak",
|
|
context: "insert"
|
|
});
|
|
};
|
|
e.add("pagebreak", function(e) {
|
|
u(e), s(e), o(e), m(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
e = function(t) {
|
|
return t.getParam("noneditable_noneditable_class", "mceNonEditable");
|
|
},
|
|
r = function(t) {
|
|
return t.getParam("noneditable_editable_class", "mceEditable");
|
|
},
|
|
a = function(t) {
|
|
var n = t.getParam("noneditable_regexp", []);
|
|
return n && n.constructor === RegExp ? [n] : n;
|
|
},
|
|
i = function(t) {
|
|
return function(n) {
|
|
return -1 !== (" " + n.attr("class") + " ").indexOf(t);
|
|
};
|
|
},
|
|
o = function(t, n, e) {
|
|
return function(r) {
|
|
var a = arguments,
|
|
i = a[a.length - 2],
|
|
o = i > 0 ? n.charAt(i - 1) : "";
|
|
if ('"' === o) return r;
|
|
if (">" === o) {
|
|
var c = n.lastIndexOf("<", i);
|
|
if (
|
|
-1 !== c &&
|
|
-1 !== n.substring(c, i).indexOf('contenteditable="false"')
|
|
)
|
|
return r;
|
|
}
|
|
return (
|
|
'<span class="' +
|
|
e +
|
|
'" data-mce-content="' +
|
|
t.dom.encode(a[0]) +
|
|
'">' +
|
|
t.dom.encode("string" == typeof a[1] ? a[1] : a[0]) +
|
|
"</span>"
|
|
);
|
|
};
|
|
},
|
|
c = function(t) {
|
|
var c,
|
|
l,
|
|
u = "contenteditable";
|
|
(c = " " + n.trim(r(t)) + " "), (l = " " + n.trim(e(t)) + " ");
|
|
var f = i(c),
|
|
s = i(l),
|
|
d = a(t);
|
|
t.on("PreInit", function() {
|
|
d.length > 0 &&
|
|
t.on("BeforeSetContent", function(n) {
|
|
!(function(t, n, r) {
|
|
var a = n.length,
|
|
i = r.content;
|
|
if ("raw" !== r.format) {
|
|
for (; a--; ) i = i.replace(n[a], o(t, i, e(t)));
|
|
r.content = i;
|
|
}
|
|
})(t, d, n);
|
|
}),
|
|
t.parser.addAttributeFilter("class", function(t) {
|
|
for (var n, e = t.length; e--; )
|
|
(n = t[e]), f(n) ? n.attr(u, "true") : s(n) && n.attr(u, "false");
|
|
}),
|
|
t.serializer.addAttributeFilter(u, function(t) {
|
|
for (var n, e = t.length; e--; )
|
|
(n = t[e]),
|
|
(f(n) || s(n)) &&
|
|
(d.length > 0 && n.attr("data-mce-content")
|
|
? ((n.name = "#text"),
|
|
(n.type = 3),
|
|
(n.raw = !0),
|
|
(n.value = n.attr("data-mce-content")))
|
|
: n.attr(u, null));
|
|
});
|
|
});
|
|
};
|
|
t.add("noneditable", function(t) {
|
|
c(t);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var n = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = function(n, e) {
|
|
var t,
|
|
a =
|
|
(t = n).plugins.visualchars && t.plugins.visualchars.isEnabled()
|
|
? '<span class="mce-nbsp"> </span>'
|
|
: " ";
|
|
n.insertContent(
|
|
(function(n, e) {
|
|
for (var t = "", a = 0; a < e; a++) t += n;
|
|
return t;
|
|
})(a, e)
|
|
),
|
|
n.dom.setAttrib(n.dom.select("span.mce-nbsp"), "data-mce-bogus", "1");
|
|
},
|
|
t = function(n) {
|
|
n.addCommand("mceNonBreaking", function() {
|
|
e(n, 1);
|
|
});
|
|
},
|
|
a = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
i = function(n) {
|
|
var e = n.getParam("nonbreaking_force_tab", 0);
|
|
return "boolean" == typeof e ? (!0 === e ? 3 : 0) : e;
|
|
},
|
|
o = function(n) {
|
|
var t = i(n);
|
|
t > 0 &&
|
|
n.on("keydown", function(i) {
|
|
if (i.keyCode === a.TAB && !i.isDefaultPrevented()) {
|
|
if (i.shiftKey) return;
|
|
i.preventDefault(), i.stopImmediatePropagation(), e(n, t);
|
|
}
|
|
});
|
|
},
|
|
r = function(n) {
|
|
n.addButton("nonbreaking", {
|
|
title: "Nonbreaking space",
|
|
cmd: "mceNonBreaking"
|
|
}),
|
|
n.addMenuItem("nonbreaking", {
|
|
text: "Nonbreaking space",
|
|
cmd: "mceNonBreaking",
|
|
context: "insert"
|
|
});
|
|
};
|
|
n.add("nonbreaking", function(n) {
|
|
t(n), r(n), o(n);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
r = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
i = function(e) {
|
|
return e.getParam("media_scripts");
|
|
},
|
|
a = function(e) {
|
|
return e.getParam("audio_template_callback");
|
|
},
|
|
o = function(e) {
|
|
return e.getParam("video_template_callback");
|
|
},
|
|
n = function(e) {
|
|
return e.getParam("media_live_embeds", !0);
|
|
},
|
|
c = function(e) {
|
|
return e.getParam("media_filter_html", !0);
|
|
},
|
|
s = function(e) {
|
|
return e.getParam("media_url_resolver");
|
|
},
|
|
u = function(e) {
|
|
return e.getParam("media_alt_source", !0);
|
|
},
|
|
l = function(e) {
|
|
return e.getParam("media_poster", !0);
|
|
},
|
|
m = function(e) {
|
|
return e.getParam("media_dimensions", !0);
|
|
},
|
|
d = tinymce.util.Tools.resolve("tinymce.html.SaxParser"),
|
|
h = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
p = function(e, t) {
|
|
if (e)
|
|
for (var r = 0; r < e.length; r++)
|
|
if (-1 !== t.indexOf(e[r].filter)) return e[r];
|
|
},
|
|
f = function(e) {
|
|
return function(t) {
|
|
return t ? t.style[e].replace(/px$/, "") : "";
|
|
};
|
|
},
|
|
g = function(e) {
|
|
return function(t, r) {
|
|
var i;
|
|
t && (t.style[e] = /^[0-9.]+$/.test((i = r)) ? i + "px" : i);
|
|
};
|
|
},
|
|
w = {
|
|
getMaxWidth: f("maxWidth"),
|
|
getMaxHeight: f("maxHeight"),
|
|
setMaxWidth: g("maxWidth"),
|
|
setMaxHeight: g("maxHeight")
|
|
},
|
|
v = h.DOM,
|
|
b = function(e) {
|
|
return v.getAttrib(e, "data-ephox-embed-iri");
|
|
},
|
|
y = function(e, t) {
|
|
return (
|
|
(s = t),
|
|
(u = v.createFragment(s)),
|
|
"" !== b(u.firstChild)
|
|
? ((n = t),
|
|
(c = v.createFragment(n).firstChild),
|
|
{
|
|
type: "ephox-embed-iri",
|
|
source1: b(c),
|
|
source2: "",
|
|
poster: "",
|
|
width: w.getMaxWidth(c),
|
|
height: w.getMaxHeight(c)
|
|
})
|
|
: ((i = e),
|
|
(a = t),
|
|
(o = {}),
|
|
new d({
|
|
validate: !1,
|
|
allow_conditional_comments: !0,
|
|
special: "script,noscript",
|
|
start: function(e, t) {
|
|
if (
|
|
(o.source1 || "param" !== e || (o.source1 = t.map.movie),
|
|
("iframe" !== e &&
|
|
"object" !== e &&
|
|
"embed" !== e &&
|
|
"video" !== e &&
|
|
"audio" !== e) ||
|
|
(o.type || (o.type = e), (o = r.extend(t.map, o))),
|
|
"script" === e)
|
|
) {
|
|
var a = p(i, t.map.src);
|
|
if (!a) return;
|
|
o = {
|
|
type: "script",
|
|
source1: t.map.src,
|
|
width: a.width,
|
|
height: a.height
|
|
};
|
|
}
|
|
"source" === e &&
|
|
(o.source1
|
|
? o.source2 || (o.source2 = t.map.src)
|
|
: (o.source1 = t.map.src)),
|
|
"img" !== e || o.poster || (o.poster = t.map.src);
|
|
}
|
|
}).parse(a),
|
|
(o.source1 = o.source1 || o.src || o.data),
|
|
(o.source2 = o.source2 || ""),
|
|
(o.poster = o.poster || ""),
|
|
o)
|
|
);
|
|
var i, a, o, n, c, s, u;
|
|
},
|
|
x = tinymce.util.Tools.resolve("tinymce.util.Promise"),
|
|
j = function(e) {
|
|
var t = {
|
|
mp3: "audio/mpeg",
|
|
wav: "audio/wav",
|
|
mp4: "video/mp4",
|
|
webm: "video/webm",
|
|
ogg: "video/ogg",
|
|
swf: "application/x-shockwave-flash"
|
|
}[
|
|
e
|
|
.toLowerCase()
|
|
.split(".")
|
|
.pop()
|
|
];
|
|
return t || "";
|
|
},
|
|
M = tinymce.util.Tools.resolve("tinymce.html.Writer"),
|
|
_ = tinymce.util.Tools.resolve("tinymce.html.Schema"),
|
|
C = h.DOM,
|
|
S = function(e, t) {
|
|
var r, i, a, o;
|
|
for (r in t)
|
|
if (((a = "" + t[r]), e.map[r]))
|
|
for (i = e.length; i--; )
|
|
(o = e[i]).name === r &&
|
|
(a
|
|
? ((e.map[r] = a), (o.value = a))
|
|
: (delete e.map[r], e.splice(i, 1)));
|
|
else a && (e.push({ name: r, value: a }), (e.map[r] = a));
|
|
},
|
|
k = function(e, t) {
|
|
var r,
|
|
i,
|
|
a = C.createFragment(e).firstChild;
|
|
return (
|
|
w.setMaxWidth(a, t.width),
|
|
w.setMaxHeight(a, t.height),
|
|
(r = a.outerHTML),
|
|
(i = M()),
|
|
new d(i).parse(r),
|
|
i.getContent()
|
|
);
|
|
},
|
|
A = function(e, t, r) {
|
|
return (
|
|
(u = e),
|
|
(l = C.createFragment(u)),
|
|
"" !== C.getAttrib(l.firstChild, "data-ephox-embed-iri")
|
|
? k(e, t)
|
|
: ((i = e),
|
|
(a = t),
|
|
(o = r),
|
|
(c = M()),
|
|
(s = 0),
|
|
new d(
|
|
{
|
|
validate: !1,
|
|
allow_conditional_comments: !0,
|
|
special: "script,noscript",
|
|
comment: function(e) {
|
|
c.comment(e);
|
|
},
|
|
cdata: function(e) {
|
|
c.cdata(e);
|
|
},
|
|
text: function(e, t) {
|
|
c.text(e, t);
|
|
},
|
|
start: function(e, t, r) {
|
|
switch (e) {
|
|
case "video":
|
|
case "object":
|
|
case "embed":
|
|
case "img":
|
|
case "iframe":
|
|
a.height !== undefined &&
|
|
a.width !== undefined &&
|
|
S(t, { width: a.width, height: a.height });
|
|
}
|
|
if (o)
|
|
switch (e) {
|
|
case "video":
|
|
S(t, { poster: a.poster, src: "" }),
|
|
a.source2 && S(t, { src: "" });
|
|
break;
|
|
case "iframe":
|
|
S(t, { src: a.source1 });
|
|
break;
|
|
case "source":
|
|
if (
|
|
++s <= 2 &&
|
|
(S(t, {
|
|
src: a["source" + s],
|
|
type: a["source" + s + "mime"]
|
|
}),
|
|
!a["source" + s])
|
|
)
|
|
return;
|
|
break;
|
|
case "img":
|
|
if (!a.poster) return;
|
|
n = !0;
|
|
}
|
|
c.start(e, t, r);
|
|
},
|
|
end: function(e) {
|
|
if ("video" === e && o)
|
|
for (var t = 1; t <= 2; t++)
|
|
if (a["source" + t]) {
|
|
var r = [];
|
|
(r.map = {}),
|
|
s < t &&
|
|
(S(r, {
|
|
src: a["source" + t],
|
|
type: a["source" + t + "mime"]
|
|
}),
|
|
c.start("source", r, !0));
|
|
}
|
|
if (a.poster && "object" === e && o && !n) {
|
|
var i = [];
|
|
(i.map = {}),
|
|
S(i, { src: a.poster, width: a.width, height: a.height }),
|
|
c.start("img", i, !0);
|
|
}
|
|
c.end(e);
|
|
}
|
|
},
|
|
_({})
|
|
).parse(i),
|
|
c.getContent())
|
|
);
|
|
var i, a, o, n, c, s, u, l;
|
|
},
|
|
F = [
|
|
{
|
|
regex: /youtu\.be\/([\w\-.]+)/,
|
|
type: "iframe",
|
|
w: 560,
|
|
h: 314,
|
|
url: "//www.youtube.com/embed/$1",
|
|
allowFullscreen: !0
|
|
},
|
|
{
|
|
regex: /youtube\.com(.+)v=([^&]+)/,
|
|
type: "iframe",
|
|
w: 560,
|
|
h: 314,
|
|
url: "//www.youtube.com/embed/$2",
|
|
allowFullscreen: !0
|
|
},
|
|
{
|
|
regex: /youtube.com\/embed\/([a-z0-9\-_]+(?:\?.+)?)/i,
|
|
type: "iframe",
|
|
w: 560,
|
|
h: 314,
|
|
url: "//www.youtube.com/embed/$1",
|
|
allowFullscreen: !0
|
|
},
|
|
{
|
|
regex: /vimeo\.com\/([0-9]+)/,
|
|
type: "iframe",
|
|
w: 425,
|
|
h: 350,
|
|
url:
|
|
"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",
|
|
allowfullscreen: !0
|
|
},
|
|
{
|
|
regex: /vimeo\.com\/(.*)\/([0-9]+)/,
|
|
type: "iframe",
|
|
w: 425,
|
|
h: 350,
|
|
url: "//player.vimeo.com/video/$2?title=0&byline=0",
|
|
allowfullscreen: !0
|
|
},
|
|
{
|
|
regex: /maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,
|
|
type: "iframe",
|
|
w: 425,
|
|
h: 350,
|
|
url: '//maps.google.com/maps/ms?msid=$2&output=embed"',
|
|
allowFullscreen: !1
|
|
},
|
|
{
|
|
regex: /dailymotion\.com\/video\/([^_]+)/,
|
|
type: "iframe",
|
|
w: 480,
|
|
h: 270,
|
|
url: "//www.dailymotion.com/embed/video/$1",
|
|
allowFullscreen: !0
|
|
},
|
|
{
|
|
regex: /dai\.ly\/([^_]+)/,
|
|
type: "iframe",
|
|
w: 480,
|
|
h: 270,
|
|
url: "//www.dailymotion.com/embed/video/$1",
|
|
allowFullscreen: !0
|
|
}
|
|
],
|
|
N = function(e, t) {
|
|
var n = r.extend({}, t);
|
|
if (!n.source1 && (r.extend(n, y(i(e), n.embed)), !n.source1)) return "";
|
|
if (
|
|
(n.source2 || (n.source2 = ""),
|
|
n.poster || (n.poster = ""),
|
|
(n.source1 = e.convertURL(n.source1, "source")),
|
|
(n.source2 = e.convertURL(n.source2, "source")),
|
|
(n.source1mime = j(n.source1)),
|
|
(n.source2mime = j(n.source2)),
|
|
(n.poster = e.convertURL(n.poster, "poster")),
|
|
r.each(F, function(e) {
|
|
var t,
|
|
r,
|
|
i = e.regex.exec(n.source1);
|
|
if (i) {
|
|
for (r = e.url, t = 0; i[t]; t++)
|
|
r = r.replace("$" + t, function() {
|
|
return i[t];
|
|
});
|
|
(n.source1 = r),
|
|
(n.type = e.type),
|
|
(n.allowFullscreen = e.allowFullscreen),
|
|
(n.width = n.width || e.w),
|
|
(n.height = n.height || e.h);
|
|
}
|
|
}),
|
|
n.embed)
|
|
)
|
|
return A(n.embed, n, !0);
|
|
var c = p(i(e), n.source1);
|
|
c && ((n.type = "script"), (n.width = c.width), (n.height = c.height));
|
|
var s,
|
|
u,
|
|
l,
|
|
m,
|
|
d,
|
|
h,
|
|
f,
|
|
g,
|
|
w = a(e),
|
|
v = o(e);
|
|
return (
|
|
(n.width = n.width || 300),
|
|
(n.height = n.height || 150),
|
|
r.each(n, function(t, r) {
|
|
n[r] = e.dom.encode(t);
|
|
}),
|
|
"iframe" === n.type
|
|
? ((g = (f = n).allowFullscreen ? ' allowFullscreen="1"' : ""),
|
|
'<iframe src="' +
|
|
f.source1 +
|
|
'" width="' +
|
|
f.width +
|
|
'" height="' +
|
|
f.height +
|
|
'"' +
|
|
g +
|
|
"></iframe>")
|
|
: "application/x-shockwave-flash" === n.source1mime
|
|
? ((h =
|
|
'<object data="' +
|
|
(d = n).source1 +
|
|
'" width="' +
|
|
d.width +
|
|
'" height="' +
|
|
d.height +
|
|
'" type="application/x-shockwave-flash">'),
|
|
d.poster &&
|
|
(h +=
|
|
'<img src="' +
|
|
d.poster +
|
|
'" width="' +
|
|
d.width +
|
|
'" height="' +
|
|
d.height +
|
|
'" />'),
|
|
(h += "</object>"))
|
|
: -1 !== n.source1mime.indexOf("audio")
|
|
? ((l = n),
|
|
(m = w)
|
|
? m(l)
|
|
: '<audio controls="controls" src="' +
|
|
l.source1 +
|
|
'">' +
|
|
(l.source2
|
|
? '\n<source src="' +
|
|
l.source2 +
|
|
'"' +
|
|
(l.source2mime ? ' type="' + l.source2mime + '"' : "") +
|
|
" />\n"
|
|
: "") +
|
|
"</audio>")
|
|
: "script" === n.type
|
|
? '<script src="' + n.source1 + '"></script>'
|
|
: ((s = n),
|
|
(u = v)
|
|
? u(s)
|
|
: '<video width="' +
|
|
s.width +
|
|
'" height="' +
|
|
s.height +
|
|
'"' +
|
|
(s.poster ? ' poster="' + s.poster + '"' : "") +
|
|
' controls="controls">\n<source src="' +
|
|
s.source1 +
|
|
'"' +
|
|
(s.source1mime ? ' type="' + s.source1mime + '"' : "") +
|
|
" />\n" +
|
|
(s.source2
|
|
? '<source src="' +
|
|
s.source2 +
|
|
'"' +
|
|
(s.source2mime ? ' type="' + s.source2mime + '"' : "") +
|
|
" />\n"
|
|
: "") +
|
|
"</video>")
|
|
);
|
|
},
|
|
O = {},
|
|
P = function(e) {
|
|
return function(t) {
|
|
return N(e, t);
|
|
};
|
|
},
|
|
T = function(e, t) {
|
|
var r,
|
|
i,
|
|
a,
|
|
o,
|
|
n,
|
|
c = s(e);
|
|
return c
|
|
? ((a = t),
|
|
(o = P(e)),
|
|
(n = c),
|
|
new x(function(e, t) {
|
|
var r = function(t) {
|
|
return (
|
|
t.html && (O[a.source1] = t),
|
|
e({ url: a.source1, html: t.html ? t.html : o(a) })
|
|
);
|
|
};
|
|
O[a.source1] ? r(O[a.source1]) : n({ url: a.source1 }, r, t);
|
|
}))
|
|
: ((r = t),
|
|
(i = P(e)),
|
|
new x(function(e) {
|
|
e({ html: i(r), url: r.source1 });
|
|
}));
|
|
},
|
|
z = function(e) {
|
|
return O.hasOwnProperty(e);
|
|
},
|
|
$ = function(e, t) {
|
|
e.state.set("oldVal", e.value()), t.state.set("oldVal", t.value());
|
|
},
|
|
L = function(e, t) {
|
|
var r = e.find("#width")[0],
|
|
i = e.find("#height")[0],
|
|
a = e.find("#constrain")[0];
|
|
r && i && a && t(r, i, a.checked());
|
|
},
|
|
H = function(e, t, r) {
|
|
var i = e.state.get("oldVal"),
|
|
a = t.state.get("oldVal"),
|
|
o = e.value(),
|
|
n = t.value();
|
|
r &&
|
|
i &&
|
|
a &&
|
|
o &&
|
|
n &&
|
|
(o !== i
|
|
? ((n = Math.round((o / i) * n)), isNaN(n) || t.value(n))
|
|
: ((o = Math.round((n / a) * o)), isNaN(o) || e.value(o))),
|
|
$(e, t);
|
|
},
|
|
W = function(e) {
|
|
L(e, H);
|
|
},
|
|
J = function(e) {
|
|
var t = function() {
|
|
e(function(e) {
|
|
W(e);
|
|
});
|
|
};
|
|
return {
|
|
type: "container",
|
|
label: "Dimensions",
|
|
layout: "flex",
|
|
align: "center",
|
|
spacing: 5,
|
|
items: [
|
|
{
|
|
name: "width",
|
|
type: "textbox",
|
|
maxLength: 5,
|
|
size: 5,
|
|
onchange: t,
|
|
ariaLabel: "Width"
|
|
},
|
|
{ type: "label", text: "x" },
|
|
{
|
|
name: "height",
|
|
type: "textbox",
|
|
maxLength: 5,
|
|
size: 5,
|
|
onchange: t,
|
|
ariaLabel: "Height"
|
|
},
|
|
{
|
|
name: "constrain",
|
|
type: "checkbox",
|
|
checked: !0,
|
|
text: "Constrain proportions"
|
|
}
|
|
]
|
|
};
|
|
},
|
|
R = function(e) {
|
|
L(e, $);
|
|
},
|
|
D = W,
|
|
E = t.ie && t.ie <= 8 ? "onChange" : "onInput",
|
|
I = function(e) {
|
|
return function(t) {
|
|
var r =
|
|
t && t.msg
|
|
? "Media embed handler error: " + t.msg
|
|
: "Media embed handler threw unknown error.";
|
|
e.notificationManager.open({ type: "error", text: r });
|
|
};
|
|
},
|
|
U = function(e, t) {
|
|
return function(a) {
|
|
var o = a.html,
|
|
n = e.find("#embed")[0],
|
|
c = r.extend(y(i(t), o), { source1: a.url });
|
|
e.fromJSON(c), n && (n.value(o), D(e));
|
|
};
|
|
},
|
|
V = function(e, t) {
|
|
var r = e.dom.select("img[data-mce-object]");
|
|
e.insertContent(t),
|
|
(function(e, t) {
|
|
var r,
|
|
i,
|
|
a = e.dom.select("img[data-mce-object]");
|
|
for (r = 0; r < t.length; r++)
|
|
for (i = a.length - 1; i >= 0; i--) t[r] === a[i] && a.splice(i, 1);
|
|
e.selection.select(a[0]);
|
|
})(e, r),
|
|
e.nodeChanged();
|
|
},
|
|
B = function(e) {
|
|
var t,
|
|
a,
|
|
o,
|
|
n,
|
|
c,
|
|
s = [
|
|
{
|
|
name: "source1",
|
|
type: "filepicker",
|
|
filetype: "media",
|
|
size: 40,
|
|
autofocus: !0,
|
|
label: "Source",
|
|
onpaste: function() {
|
|
setTimeout(function() {
|
|
T(e, t.toJSON())
|
|
.then(U(t, e))
|
|
["catch"](I(e));
|
|
}, 1);
|
|
},
|
|
onchange: function(i) {
|
|
var a, o;
|
|
T(e, t.toJSON())
|
|
.then(U(t, e))
|
|
["catch"](I(e)),
|
|
(a = t),
|
|
(o = i.meta),
|
|
r.each(o, function(e, t) {
|
|
a.find("#" + t).value(e);
|
|
});
|
|
},
|
|
onbeforecall: function(e) {
|
|
e.meta = t.toJSON();
|
|
}
|
|
}
|
|
],
|
|
d = [];
|
|
if (
|
|
(u(e) &&
|
|
d.push({
|
|
name: "source2",
|
|
type: "filepicker",
|
|
filetype: "media",
|
|
size: 40,
|
|
label: "Alternative source"
|
|
}),
|
|
l(e) &&
|
|
d.push({
|
|
name: "poster",
|
|
type: "filepicker",
|
|
filetype: "image",
|
|
size: 40,
|
|
label: "Poster"
|
|
}),
|
|
m(e))
|
|
) {
|
|
var h = J(function(e) {
|
|
e(t), (a = t.toJSON()), t.find("#embed").value(A(a.embed, a));
|
|
});
|
|
s.push(h);
|
|
}
|
|
(n = (o = e).selection.getNode()),
|
|
(c = n.getAttribute("data-ephox-embed-iri")),
|
|
(a = c
|
|
? {
|
|
source1: c,
|
|
"data-ephox-embed-iri": c,
|
|
width: w.getMaxWidth(n),
|
|
height: w.getMaxHeight(n)
|
|
}
|
|
: n.getAttribute("data-mce-object")
|
|
? y(i(o), o.serializer.serialize(n, { selection: !0 }))
|
|
: {});
|
|
var p = {
|
|
id: "mcemediasource",
|
|
type: "textbox",
|
|
flex: 1,
|
|
name: "embed",
|
|
value: (function(e) {
|
|
var t = e.selection.getNode();
|
|
if (
|
|
t.getAttribute("data-mce-object") ||
|
|
t.getAttribute("data-ephox-embed-iri")
|
|
)
|
|
return e.selection.getContent();
|
|
})(e),
|
|
multiline: !0,
|
|
rows: 5,
|
|
label: "Source"
|
|
};
|
|
(p[E] = function() {
|
|
(a = r.extend({}, y(i(e), this.value()))),
|
|
this.parent()
|
|
.parent()
|
|
.fromJSON(a);
|
|
}),
|
|
(t = e.windowManager.open({
|
|
title: "Insert/edit media",
|
|
data: a,
|
|
bodyType: "tabpanel",
|
|
body: [
|
|
{ title: "General", type: "form", items: s },
|
|
{
|
|
title: "Embed",
|
|
type: "container",
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "stretch",
|
|
padding: 10,
|
|
spacing: 10,
|
|
items: [
|
|
{
|
|
type: "label",
|
|
text: "Paste your embed code below:",
|
|
forId: "mcemediasource"
|
|
},
|
|
p
|
|
]
|
|
},
|
|
{ title: "Advanced", type: "form", items: d }
|
|
],
|
|
onSubmit: function() {
|
|
var r, i;
|
|
D(t),
|
|
(r = e),
|
|
((i = t.toJSON()).embed = A(i.embed, i)),
|
|
i.embed && z(i.source1)
|
|
? V(r, i.embed)
|
|
: T(r, i)
|
|
.then(function(e) {
|
|
V(r, e.html);
|
|
})
|
|
["catch"](I(r));
|
|
}
|
|
})),
|
|
R(t);
|
|
},
|
|
G = function(e) {
|
|
return {
|
|
showDialog: function() {
|
|
B(e);
|
|
}
|
|
};
|
|
},
|
|
q = function(e) {
|
|
e.addCommand("mceMedia", function() {
|
|
B(e);
|
|
});
|
|
},
|
|
K = tinymce.util.Tools.resolve("tinymce.html.Node"),
|
|
Q = function(e, t) {
|
|
if (!1 === c(e)) return t;
|
|
var r,
|
|
i = M();
|
|
return (
|
|
new d(
|
|
{
|
|
validate: !1,
|
|
allow_conditional_comments: !1,
|
|
special: "script,noscript",
|
|
comment: function(e) {
|
|
i.comment(e);
|
|
},
|
|
cdata: function(e) {
|
|
i.cdata(e);
|
|
},
|
|
text: function(e, t) {
|
|
i.text(e, t);
|
|
},
|
|
start: function(t, a, o) {
|
|
if (((r = !0), "script" !== t && "noscript" !== t)) {
|
|
for (var n = 0; n < a.length; n++) {
|
|
if (0 === a[n].name.indexOf("on")) return;
|
|
"style" === a[n].name &&
|
|
(a[n].value = e.dom.serializeStyle(
|
|
e.dom.parseStyle(a[n].value),
|
|
t
|
|
));
|
|
}
|
|
i.start(t, a, o), (r = !1);
|
|
}
|
|
},
|
|
end: function(e) {
|
|
r || i.end(e);
|
|
}
|
|
},
|
|
_({})
|
|
).parse(t),
|
|
i.getContent()
|
|
);
|
|
},
|
|
X = function(e, r) {
|
|
var i,
|
|
a = r.name;
|
|
return (
|
|
((i = new K("img", 1)).shortEnded = !0),
|
|
Z(e, r, i),
|
|
i.attr({
|
|
width: r.attr("width") || "300",
|
|
height: r.attr("height") || ("audio" === a ? "30" : "150"),
|
|
style: r.attr("style"),
|
|
src: t.transparentSrc,
|
|
"data-mce-object": a,
|
|
class: "mce-object mce-object-" + a
|
|
}),
|
|
i
|
|
);
|
|
},
|
|
Y = function(e, t) {
|
|
var r,
|
|
i,
|
|
a,
|
|
o = t.name;
|
|
return (
|
|
(r = new K("span", 1)).attr({
|
|
contentEditable: "false",
|
|
style: t.attr("style"),
|
|
"data-mce-object": o,
|
|
class: "mce-preview-object mce-object-" + o
|
|
}),
|
|
Z(e, t, r),
|
|
(i = new K(o, 1)).attr({
|
|
src: t.attr("src"),
|
|
allowfullscreen: t.attr("allowfullscreen"),
|
|
width: t.attr("width") || "300",
|
|
height: t.attr("height") || ("audio" === o ? "30" : "150"),
|
|
frameborder: "0"
|
|
}),
|
|
(a = new K("span", 1)).attr("class", "mce-shim"),
|
|
r.append(i),
|
|
r.append(a),
|
|
r
|
|
);
|
|
},
|
|
Z = function(e, t, r) {
|
|
var i, a, o, n, c;
|
|
for (n = (o = t.attributes).length; n--; )
|
|
(i = o[n].name),
|
|
(a = o[n].value),
|
|
"width" !== i &&
|
|
"height" !== i &&
|
|
"style" !== i &&
|
|
(("data" !== i && "src" !== i) || (a = e.convertURL(a, i)),
|
|
r.attr("data-mce-p-" + i, a));
|
|
(c = t.firstChild && t.firstChild.value) &&
|
|
(r.attr("data-mce-html", escape(Q(e, c))), (r.firstChild = null));
|
|
},
|
|
ee = function(e) {
|
|
for (; (e = e.parent); ) if (e.attr("data-ephox-embed-iri")) return !0;
|
|
return !1;
|
|
},
|
|
te = function(e) {
|
|
return function(r) {
|
|
for (var a, o, c = r.length; c--; )
|
|
(a = r[c]).parent &&
|
|
(a.parent.attr("data-mce-object") ||
|
|
(("script" !== a.name || (o = p(i(e), a.attr("src")))) &&
|
|
(o &&
|
|
(o.width && a.attr("width", o.width.toString()),
|
|
o.height && a.attr("height", o.height.toString())),
|
|
"iframe" === a.name && n(e) && t.ceFalse
|
|
? ee(a) || a.replace(Y(e, a))
|
|
: ee(a) || a.replace(X(e, a)))));
|
|
};
|
|
},
|
|
re = function(e) {
|
|
e.on("preInit", function() {
|
|
var t = e.schema.getSpecialElements();
|
|
r.each("video audio iframe object".split(" "), function(e) {
|
|
t[e] = new RegExp("</" + e + "[^>]*>", "gi");
|
|
});
|
|
var i = e.schema.getBoolAttrs();
|
|
r.each(
|
|
"webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),
|
|
function(e) {
|
|
i[e] = {};
|
|
}
|
|
),
|
|
e.parser.addNodeFilter(
|
|
"iframe,video,audio,object,embed,script",
|
|
te(e)
|
|
),
|
|
e.serializer.addAttributeFilter("data-mce-object", function(t, r) {
|
|
for (var i, a, o, n, c, s, u, l, m = t.length; m--; )
|
|
if ((i = t[m]).parent) {
|
|
for (
|
|
u = i.attr(r),
|
|
a = new K(u, 1),
|
|
"audio" !== u &&
|
|
"script" !== u &&
|
|
((l = i.attr("class")) &&
|
|
-1 !== l.indexOf("mce-preview-object")
|
|
? a.attr({
|
|
width: i.firstChild.attr("width"),
|
|
height: i.firstChild.attr("height")
|
|
})
|
|
: a.attr({
|
|
width: i.attr("width"),
|
|
height: i.attr("height")
|
|
})),
|
|
a.attr({ style: i.attr("style") }),
|
|
o = (n = i.attributes).length;
|
|
o--;
|
|
|
|
) {
|
|
var d = n[o].name;
|
|
0 === d.indexOf("data-mce-p-") &&
|
|
a.attr(d.substr(11), n[o].value);
|
|
}
|
|
"script" === u && a.attr("type", "text/javascript"),
|
|
(c = i.attr("data-mce-html")) &&
|
|
(((s = new K("#text", 3)).raw = !0),
|
|
(s.value = Q(e, unescape(c))),
|
|
a.append(s)),
|
|
i.replace(a);
|
|
}
|
|
});
|
|
}),
|
|
e.on("setContent", function() {
|
|
e.$("span.mce-preview-object").each(function(t, r) {
|
|
var i = e.$(r);
|
|
0 === i.find("span.mce-shim", r).length &&
|
|
i.append('<span class="mce-shim"></span>');
|
|
});
|
|
});
|
|
},
|
|
ie = function(e) {
|
|
e.on("ResolveName", function(e) {
|
|
var t;
|
|
1 === e.target.nodeType &&
|
|
(t = e.target.getAttribute("data-mce-object")) &&
|
|
(e.name = t);
|
|
});
|
|
},
|
|
ae = function(e) {
|
|
e.on("click keyup", function() {
|
|
var t = e.selection.getNode();
|
|
t &&
|
|
e.dom.hasClass(t, "mce-preview-object") &&
|
|
e.dom.getAttrib(t, "data-mce-selected") &&
|
|
t.setAttribute("data-mce-selected", "2");
|
|
}),
|
|
e.on("ObjectSelected", function(e) {
|
|
var t = e.target.getAttribute("data-mce-object");
|
|
("audio" !== t && "script" !== t) || e.preventDefault();
|
|
}),
|
|
e.on("objectResized", function(e) {
|
|
var t,
|
|
r = e.target;
|
|
r.getAttribute("data-mce-object") &&
|
|
(t = r.getAttribute("data-mce-html")) &&
|
|
((t = unescape(t)),
|
|
r.setAttribute(
|
|
"data-mce-html",
|
|
escape(A(t, { width: e.width, height: e.height }))
|
|
));
|
|
});
|
|
},
|
|
oe = function(e) {
|
|
e.addButton("media", {
|
|
tooltip: "Insert/edit media",
|
|
cmd: "mceMedia",
|
|
stateSelector: [
|
|
"img[data-mce-object]",
|
|
"span[data-mce-object]",
|
|
"div[data-ephox-embed-iri]"
|
|
]
|
|
}),
|
|
e.addMenuItem("media", {
|
|
icon: "media",
|
|
text: "Media",
|
|
cmd: "mceMedia",
|
|
context: "insert",
|
|
prependToContext: !0
|
|
});
|
|
};
|
|
e.add("media", function(e) {
|
|
return q(e), oe(e), ie(e), re(e), ae(e), G(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),
|
|
n = tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),
|
|
o = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
r = tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),
|
|
i = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
a = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
s = function(e) {
|
|
return e && "BR" === e.nodeName;
|
|
},
|
|
d = function(e) {
|
|
return e && 3 === e.nodeType;
|
|
},
|
|
l = function(e) {
|
|
return e && /^(OL|UL|DL)$/.test(e.nodeName);
|
|
},
|
|
c = function(e) {
|
|
return e && /^(LI|DT|DD)$/.test(e.nodeName);
|
|
},
|
|
f = function(e) {
|
|
return e && /^(TH|TD)$/.test(e.nodeName);
|
|
},
|
|
u = s,
|
|
m = function(e) {
|
|
return e.parentNode.firstChild === e;
|
|
},
|
|
g = function(e) {
|
|
return e.parentNode.lastChild === e;
|
|
},
|
|
p = function(e, t) {
|
|
return t && !!e.schema.getTextBlockElements()[t.nodeName];
|
|
},
|
|
v = function(e, t) {
|
|
return e && e.nodeName in t;
|
|
},
|
|
h = function(e, t) {
|
|
return !!s(t) && !(!e.isBlock(t.nextSibling) || s(t.previousSibling));
|
|
},
|
|
C = function(e, t, n) {
|
|
var o = e.isEmpty(t);
|
|
return (
|
|
!(n && e.select("span[data-mce-type=bookmark]", t).length > 0) && o
|
|
);
|
|
},
|
|
y = function(e, t) {
|
|
return e.isChildOf(t, e.getRoot());
|
|
},
|
|
N = function(e, n) {
|
|
var o = t.getNode(e, n);
|
|
return c(e) && d(o)
|
|
? { container: o, offset: n >= e.childNodes.length ? o.data.length : 0 }
|
|
: { container: e, offset: n };
|
|
},
|
|
L = function(e) {
|
|
var t = e.cloneRange(),
|
|
n = N(e.startContainer, e.startOffset);
|
|
t.setStart(n.container, n.offset);
|
|
var o = N(e.endContainer, e.endOffset);
|
|
return t.setEnd(o.container, o.offset), t;
|
|
},
|
|
S = a.DOM,
|
|
b = function(e) {
|
|
var t = {},
|
|
n = function(n) {
|
|
var o, r, i;
|
|
(r = e[n ? "startContainer" : "endContainer"]),
|
|
(i = e[n ? "startOffset" : "endOffset"]),
|
|
1 === r.nodeType &&
|
|
((o = S.create("span", { "data-mce-type": "bookmark" })),
|
|
r.hasChildNodes()
|
|
? ((i = Math.min(i, r.childNodes.length - 1)),
|
|
n
|
|
? r.insertBefore(o, r.childNodes[i])
|
|
: S.insertAfter(o, r.childNodes[i]))
|
|
: r.appendChild(o),
|
|
(r = o),
|
|
(i = 0)),
|
|
(t[n ? "startContainer" : "endContainer"] = r),
|
|
(t[n ? "startOffset" : "endOffset"] = i);
|
|
};
|
|
return n(!0), e.collapsed || n(), t;
|
|
},
|
|
D = function(e) {
|
|
function t(t) {
|
|
var n, o, r;
|
|
(n = r = e[t ? "startContainer" : "endContainer"]),
|
|
(o = e[t ? "startOffset" : "endOffset"]),
|
|
n &&
|
|
(1 === n.nodeType &&
|
|
((o = (function(e) {
|
|
for (var t = e.parentNode.firstChild, n = 0; t; ) {
|
|
if (t === e) return n;
|
|
(1 === t.nodeType &&
|
|
"bookmark" === t.getAttribute("data-mce-type")) ||
|
|
n++,
|
|
(t = t.nextSibling);
|
|
}
|
|
return -1;
|
|
})(n)),
|
|
(n = n.parentNode),
|
|
S.remove(r),
|
|
!n.hasChildNodes() &&
|
|
S.isBlock(n) &&
|
|
n.appendChild(S.create("br"))),
|
|
(e[t ? "startContainer" : "endContainer"] = n),
|
|
(e[t ? "startOffset" : "endOffset"] = o));
|
|
}
|
|
t(!0), t();
|
|
var n = S.createRng();
|
|
return (
|
|
n.setStart(e.startContainer, e.startOffset),
|
|
e.endContainer && n.setEnd(e.endContainer, e.endOffset),
|
|
L(n)
|
|
);
|
|
},
|
|
k = a.DOM,
|
|
T = function(e, t) {
|
|
var n,
|
|
o = t.parentNode;
|
|
"LI" === o.nodeName &&
|
|
o.firstChild === t &&
|
|
((n = o.previousSibling) && "LI" === n.nodeName
|
|
? (n.appendChild(t), C(e, o) && k.remove(o))
|
|
: k.setStyle(o, "listStyleType", "none")),
|
|
l(o) &&
|
|
(n = o.previousSibling) &&
|
|
"LI" === n.nodeName &&
|
|
n.appendChild(t);
|
|
},
|
|
I = function(e, t) {
|
|
i.each(i.grep(e.select("ol,ul", t)), function(t) {
|
|
T(e, t);
|
|
});
|
|
},
|
|
B = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),
|
|
R = function(e) {
|
|
var t = e.selection.getStart(!0);
|
|
return e.dom.getParent(t, "OL,UL,DL", O(e, t));
|
|
},
|
|
O = function(e, t) {
|
|
var n = e.dom.getParents(t, "TD,TH");
|
|
return n.length > 0 ? n[0] : e.getBody();
|
|
},
|
|
E = {
|
|
getParentList: R,
|
|
getSelectedSubLists: function(e) {
|
|
var t,
|
|
n,
|
|
o,
|
|
r = R(e),
|
|
a = e.selection.getSelectedBlocks();
|
|
return (
|
|
(o = a),
|
|
(n = r) && 1 === o.length && o[0] === n
|
|
? ((t = r),
|
|
i.grep(t.querySelectorAll("ol,ul,dl"), function(e) {
|
|
return l(e);
|
|
}))
|
|
: i.grep(a, function(e) {
|
|
return l(e) && r !== e;
|
|
})
|
|
);
|
|
},
|
|
getSelectedListItems: function(e) {
|
|
var t,
|
|
n,
|
|
o,
|
|
r = e.selection.getSelectedBlocks();
|
|
return i.grep(
|
|
((t = e),
|
|
(n = r),
|
|
(o = i.map(n, function(e) {
|
|
var n = t.dom.getParent(e, "li,dd,dt", O(t, e));
|
|
return n || e;
|
|
})),
|
|
B.unique(o)),
|
|
function(e) {
|
|
return c(e);
|
|
}
|
|
);
|
|
},
|
|
getClosestListRootElm: O
|
|
},
|
|
A = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
P = a.DOM,
|
|
x = function(e, t, n) {
|
|
var o,
|
|
r,
|
|
i,
|
|
a = P.createFragment(),
|
|
s = e.schema.getBlockElements();
|
|
if (
|
|
(e.settings.forced_root_block &&
|
|
(n = n || e.settings.forced_root_block),
|
|
n &&
|
|
((r = P.create(n)).tagName === e.settings.forced_root_block &&
|
|
P.setAttribs(r, e.settings.forced_root_block_attrs),
|
|
v(t.firstChild, s) || a.appendChild(r)),
|
|
t)
|
|
)
|
|
for (; (o = t.firstChild); ) {
|
|
var d = o.nodeName;
|
|
i ||
|
|
("SPAN" === d && "bookmark" === o.getAttribute("data-mce-type")) ||
|
|
(i = !0),
|
|
v(o, s)
|
|
? (a.appendChild(o), (r = null))
|
|
: n
|
|
? (r || ((r = P.create(n)), a.appendChild(r)), r.appendChild(o))
|
|
: a.appendChild(o);
|
|
}
|
|
return (
|
|
e.settings.forced_root_block
|
|
? i ||
|
|
(A.ie && !(A.ie > 10)) ||
|
|
r.appendChild(P.create("br", { "data-mce-bogus": "1" }))
|
|
: a.appendChild(P.create("br")),
|
|
a
|
|
);
|
|
},
|
|
_ = a.DOM,
|
|
M = function(e, t, n, o) {
|
|
var r, a, s, d, l;
|
|
for (
|
|
s = _.select('span[data-mce-type="bookmark"]', t),
|
|
o = o || x(e, n),
|
|
(r = _.createRng()).setStartAfter(n),
|
|
r.setEndAfter(t),
|
|
d = (a = r.extractContents()).firstChild;
|
|
d;
|
|
d = d.firstChild
|
|
)
|
|
if ("LI" === d.nodeName && e.dom.isEmpty(d)) {
|
|
_.remove(d);
|
|
break;
|
|
}
|
|
e.dom.isEmpty(a) || _.insertAfter(a, t),
|
|
_.insertAfter(o, t),
|
|
C(e.dom, n.parentNode) &&
|
|
((l = n.parentNode),
|
|
i.each(s, function(e) {
|
|
l.parentNode.insertBefore(e, n.parentNode);
|
|
}),
|
|
_.remove(l)),
|
|
_.remove(n),
|
|
C(e.dom, t) && _.remove(t);
|
|
},
|
|
U = a.DOM,
|
|
H = function(e, t) {
|
|
C(e, t) && U.remove(t);
|
|
},
|
|
$ = function(e, t) {
|
|
var n,
|
|
o = t.parentNode,
|
|
r = o.parentNode;
|
|
return !(
|
|
o !== e.getBody() &&
|
|
("DD" === t.nodeName
|
|
? (U.rename(t, "DT"), 0)
|
|
: m(t) && g(t)
|
|
? ("LI" === r.nodeName
|
|
? (U.insertAfter(t, r), H(e.dom, r), U.remove(o))
|
|
: l(r)
|
|
? U.remove(o, !0)
|
|
: (r.insertBefore(x(e, t), o), U.remove(o)),
|
|
0)
|
|
: m(t)
|
|
? ("LI" === r.nodeName
|
|
? (U.insertAfter(t, r), t.appendChild(o), H(e.dom, r))
|
|
: l(r)
|
|
? r.insertBefore(t, o)
|
|
: (r.insertBefore(x(e, t), o), U.remove(t)),
|
|
0)
|
|
: g(t)
|
|
? ("LI" === r.nodeName
|
|
? U.insertAfter(t, r)
|
|
: l(r)
|
|
? U.insertAfter(t, o)
|
|
: (U.insertAfter(x(e, t), o), U.remove(t)),
|
|
0)
|
|
: ("LI" === r.nodeName
|
|
? ((o = r), (n = x(e, t, "LI")))
|
|
: (n = l(r) ? x(e, t, "LI") : x(e, t)),
|
|
M(e, o, t, n),
|
|
I(e.dom, o.parentNode),
|
|
0))
|
|
);
|
|
},
|
|
w = $,
|
|
K = function(e) {
|
|
var t = E.getSelectedListItems(e);
|
|
if (t.length) {
|
|
var n = b(e.selection.getRng(!0)),
|
|
o = void 0,
|
|
r = void 0,
|
|
i = E.getClosestListRootElm(e, e.selection.getStart(!0));
|
|
for (o = t.length; o--; )
|
|
for (var a = t[o].parentNode; a && a !== i; ) {
|
|
for (r = t.length; r--; )
|
|
if (t[r] === a) {
|
|
t.splice(o, 1);
|
|
break;
|
|
}
|
|
a = a.parentNode;
|
|
}
|
|
for (o = 0; o < t.length && ($(e, t[o]) || 0 !== o); o++);
|
|
return e.selection.setRng(D(n)), e.nodeChanged(), !0;
|
|
}
|
|
},
|
|
Q = function(e, t) {
|
|
i.each(t, function(t, n) {
|
|
e.setAttribute(n, t);
|
|
});
|
|
},
|
|
W = function(e, t, n) {
|
|
var o, r, a, s, d, l, c;
|
|
(o = e),
|
|
(r = t),
|
|
(s = (a = n)["list-style-type"] ? a["list-style-type"] : null),
|
|
o.setStyle(r, "list-style-type", s),
|
|
(d = e),
|
|
Q((l = t), (c = n)["list-attributes"]),
|
|
i.each(d.select("li", l), function(e) {
|
|
Q(e, c["list-item-attributes"]);
|
|
});
|
|
},
|
|
j = function(e, t, n, o) {
|
|
var r, i;
|
|
for (
|
|
r = t[n ? "startContainer" : "endContainer"],
|
|
i = t[n ? "startOffset" : "endOffset"],
|
|
1 === r.nodeType &&
|
|
(r = r.childNodes[Math.min(i, r.childNodes.length - 1)] || r),
|
|
!n && u(r.nextSibling) && (r = r.nextSibling);
|
|
r.parentNode !== o;
|
|
|
|
) {
|
|
if (p(e, r)) return r;
|
|
if (/^(TD|TH)$/.test(r.parentNode.nodeName)) return r;
|
|
r = r.parentNode;
|
|
}
|
|
return r;
|
|
},
|
|
q = function(e, t, n) {
|
|
var o,
|
|
a = e.selection.getRng(!0),
|
|
s = "LI",
|
|
d = E.getClosestListRootElm(e, e.selection.getStart(!0)),
|
|
c = e.dom;
|
|
(n = n || {}),
|
|
"false" !== c.getContentEditable(e.selection.getNode()) &&
|
|
("DL" === (t = t.toUpperCase()) && (s = "DT"),
|
|
(o = b(a)),
|
|
i.each(
|
|
(function(e, t, n) {
|
|
for (
|
|
var o,
|
|
a = [],
|
|
s = e.dom,
|
|
d = j(e, t, !0, n),
|
|
l = j(e, t, !1, n),
|
|
c = [],
|
|
f = d;
|
|
f && (c.push(f), f !== l);
|
|
f = f.nextSibling
|
|
);
|
|
return (
|
|
i.each(c, function(t) {
|
|
if (p(e, t)) return a.push(t), void (o = null);
|
|
if (s.isBlock(t) || u(t))
|
|
return u(t) && s.remove(t), void (o = null);
|
|
var i = t.nextSibling;
|
|
r.isBookmarkNode(t) && (p(e, i) || (!i && t.parentNode === n))
|
|
? (o = null)
|
|
: (o ||
|
|
((o = s.create("p")),
|
|
t.parentNode.insertBefore(o, t),
|
|
a.push(o)),
|
|
o.appendChild(t));
|
|
}),
|
|
a
|
|
);
|
|
})(e, a, d),
|
|
function(o) {
|
|
var r, i, a, d, f, u;
|
|
(i = o.previousSibling) &&
|
|
l(i) &&
|
|
i.nodeName === t &&
|
|
((a = i),
|
|
(d = n),
|
|
(f = c.getStyle(a, "list-style-type")),
|
|
(u = d ? d["list-style-type"] : ""),
|
|
f === (u = null === u ? "" : u))
|
|
? ((r = i), (o = c.rename(o, s)), i.appendChild(o))
|
|
: ((r = c.create(t)),
|
|
o.parentNode.insertBefore(r, o),
|
|
r.appendChild(o),
|
|
(o = c.rename(o, s))),
|
|
W(c, r, n),
|
|
z(e.dom, r);
|
|
}
|
|
),
|
|
e.selection.setRng(D(o)));
|
|
},
|
|
F = function(e) {
|
|
var t = b(e.selection.getRng(!0)),
|
|
n = E.getClosestListRootElm(e, e.selection.getStart(!0)),
|
|
o = E.getSelectedListItems(e),
|
|
r = i.grep(o, function(t) {
|
|
return e.dom.isEmpty(t);
|
|
});
|
|
(o = i.grep(o, function(t) {
|
|
return !e.dom.isEmpty(t);
|
|
})),
|
|
i.each(r, function(t) {
|
|
C(e.dom, t) && w(e, t);
|
|
}),
|
|
i.each(o, function(t) {
|
|
var o, r;
|
|
if (t.parentNode !== e.getBody()) {
|
|
for (o = t; o && o !== n; o = o.parentNode) l(o) && (r = o);
|
|
M(e, r, t), I(e.dom, r.parentNode);
|
|
}
|
|
}),
|
|
e.selection.setRng(D(t));
|
|
},
|
|
V = function(e, t, n) {
|
|
return (
|
|
(d = n),
|
|
(s = t) &&
|
|
d &&
|
|
l(s) &&
|
|
s.nodeName === d.nodeName &&
|
|
((i = t),
|
|
(a = n),
|
|
(r = e).getStyle(i, "list-style-type", !0) ===
|
|
r.getStyle(a, "list-style-type", !0)) &&
|
|
((o = n), t.className === o.className)
|
|
);
|
|
var o, r, i, a, s, d;
|
|
},
|
|
z = function(e, t) {
|
|
var n, o;
|
|
if (((n = t.nextSibling), V(e, t, n))) {
|
|
for (; (o = n.firstChild); ) t.appendChild(o);
|
|
e.remove(n);
|
|
}
|
|
if (((n = t.previousSibling), V(e, t, n))) {
|
|
for (; (o = n.lastChild); ) t.insertBefore(o, t.firstChild);
|
|
e.remove(n);
|
|
}
|
|
},
|
|
G = function(e, t, n, o, r) {
|
|
if (t.nodeName !== o || J(r)) {
|
|
var a = b(e.selection.getRng(!0));
|
|
i.each([t].concat(n), function(t) {
|
|
!(function(e, t, n, o) {
|
|
if (t.nodeName !== n) {
|
|
var r = e.rename(t, n);
|
|
W(e, r, o);
|
|
} else W(e, t, o);
|
|
})(e.dom, t, o, r);
|
|
}),
|
|
e.selection.setRng(D(a));
|
|
} else F(e);
|
|
},
|
|
J = function(e) {
|
|
return "list-style-type" in e;
|
|
},
|
|
X = {
|
|
toggleList: function(e, t, n) {
|
|
var o = E.getParentList(e),
|
|
r = E.getSelectedSubLists(e);
|
|
(n = n || {}),
|
|
o && r.length > 0
|
|
? G(e, o, r, t, n)
|
|
: (function(e, t, n, o) {
|
|
if (t !== e.getBody())
|
|
if (t)
|
|
if (t.nodeName !== n || J(o)) {
|
|
var r = b(e.selection.getRng(!0));
|
|
W(e.dom, t, o),
|
|
z(e.dom, e.dom.rename(t, n)),
|
|
e.selection.setRng(D(r));
|
|
} else F(e);
|
|
else q(e, n, o);
|
|
})(e, o, t, n);
|
|
},
|
|
removeList: F,
|
|
mergeWithAdjacentLists: z
|
|
},
|
|
Y = function(e, o, r, i) {
|
|
var a,
|
|
s,
|
|
d = o.startContainer,
|
|
l = o.startOffset;
|
|
if (3 === d.nodeType && (r ? l < d.data.length : l > 0)) return d;
|
|
for (
|
|
a = e.schema.getNonEmptyElements(),
|
|
1 === d.nodeType && (d = t.getNode(d, l)),
|
|
s = new n(d, i),
|
|
r && h(e.dom, d) && s.next();
|
|
(d = s[r ? "next" : "prev2"]());
|
|
|
|
) {
|
|
if ("LI" === d.nodeName && !d.hasChildNodes()) return d;
|
|
if (a[d.nodeName]) return d;
|
|
if (3 === d.nodeType && d.data.length > 0) return d;
|
|
}
|
|
},
|
|
Z = function(e, t) {
|
|
var n = t.childNodes;
|
|
return 1 === n.length && !l(n[0]) && e.isBlock(n[0]);
|
|
},
|
|
ee = function(e, t, n) {
|
|
var o, r, i, a;
|
|
if (
|
|
((r = Z(e, n) ? n.firstChild : n),
|
|
Z((i = e), (a = t)) && i.remove(a.firstChild, !0),
|
|
!C(e, t, !0))
|
|
)
|
|
for (; (o = t.firstChild); ) r.appendChild(o);
|
|
},
|
|
te = function(e, t, n) {
|
|
var o,
|
|
r,
|
|
i = t.parentNode;
|
|
y(e, t) &&
|
|
y(e, n) &&
|
|
(l(n.lastChild) && (r = n.lastChild),
|
|
i === n.lastChild &&
|
|
u(i.previousSibling) &&
|
|
e.remove(i.previousSibling),
|
|
(o = n.lastChild) && u(o) && t.hasChildNodes() && e.remove(o),
|
|
C(e, n, !0) && e.$(n).empty(),
|
|
ee(e, t, n),
|
|
r && n.appendChild(r),
|
|
e.remove(t),
|
|
C(e, i) && i !== e.getRoot() && e.remove(i));
|
|
},
|
|
ne = function(e, t, n, o) {
|
|
var r,
|
|
i,
|
|
a,
|
|
s = e.dom;
|
|
if (s.isEmpty(o))
|
|
(i = n),
|
|
(a = o),
|
|
(r = e).dom.$(a).empty(),
|
|
te(r.dom, i, a),
|
|
r.selection.setCursorLocation(a);
|
|
else {
|
|
var d = b(t);
|
|
te(s, n, o), e.selection.setRng(D(d));
|
|
}
|
|
},
|
|
oe = function(e, t) {
|
|
var n,
|
|
o,
|
|
r,
|
|
i = e.dom,
|
|
a = e.selection,
|
|
s = a.getStart(),
|
|
d = E.getClosestListRootElm(e, s),
|
|
l = i.getParent(a.getStart(), "LI", d);
|
|
if (l) {
|
|
if ((n = l.parentNode) === e.getBody() && C(i, n)) return !0;
|
|
if (
|
|
((o = L(a.getRng(!0))),
|
|
(r = i.getParent(Y(e, o, t, d), "LI", d)) && r !== l)
|
|
)
|
|
return (
|
|
t
|
|
? ne(e, o, r, l)
|
|
: (function(e, t, n, o) {
|
|
var r = b(t);
|
|
te(e.dom, n, o);
|
|
var i = D(r);
|
|
e.selection.setRng(i);
|
|
})(e, o, l, r),
|
|
!0
|
|
);
|
|
if (!r && !t && X.removeList(e)) return !0;
|
|
}
|
|
return !1;
|
|
},
|
|
re = function(e, t) {
|
|
return (
|
|
oe(e, t) ||
|
|
(function(e, t) {
|
|
var n = e.dom,
|
|
o = e.selection.getStart(),
|
|
r = E.getClosestListRootElm(e, o),
|
|
i = n.getParent(o, n.isBlock, r);
|
|
if (i && n.isEmpty(i)) {
|
|
var a = L(e.selection.getRng(!0)),
|
|
s = n.getParent(Y(e, a, t, r), "LI", r);
|
|
if (s)
|
|
return (
|
|
e.undoManager.transact(function() {
|
|
var o, a, d, l;
|
|
(a = i),
|
|
(d = r),
|
|
(l = (o = n).getParent(a.parentNode, o.isBlock, d)),
|
|
o.remove(a),
|
|
l && o.isEmpty(l) && o.remove(l),
|
|
X.mergeWithAdjacentLists(n, s.parentNode),
|
|
e.selection.select(s, !0),
|
|
e.selection.collapse(t);
|
|
}),
|
|
!0
|
|
);
|
|
}
|
|
return !1;
|
|
})(e, t)
|
|
);
|
|
},
|
|
ie = function(e, t) {
|
|
return e.selection.isCollapsed()
|
|
? re(e, t)
|
|
: ((o = (n = e).selection.getStart()),
|
|
(r = E.getClosestListRootElm(n, o)),
|
|
!!(
|
|
n.dom.getParent(o, "LI,DT,DD", r) ||
|
|
E.getSelectedListItems(n).length > 0
|
|
) &&
|
|
(n.undoManager.transact(function() {
|
|
n.execCommand("Delete"), I(n.dom, n.getBody());
|
|
}),
|
|
!0));
|
|
var n, o, r;
|
|
},
|
|
ae = function(e) {
|
|
e.on("keydown", function(t) {
|
|
t.keyCode === o.BACKSPACE
|
|
? ie(e, !1) && t.preventDefault()
|
|
: t.keyCode === o.DELETE && ie(e, !0) && t.preventDefault();
|
|
});
|
|
},
|
|
se = ie,
|
|
de = function(e) {
|
|
return {
|
|
backspaceDelete: function(t) {
|
|
se(e, t);
|
|
}
|
|
};
|
|
},
|
|
le = a.DOM,
|
|
ce = function(e, t) {
|
|
var n;
|
|
if (l(e)) {
|
|
for (; (n = e.firstChild); ) t.appendChild(n);
|
|
le.remove(e);
|
|
}
|
|
},
|
|
fe = function(e) {
|
|
var t,
|
|
n,
|
|
o,
|
|
r,
|
|
i = E.getSelectedListItems(e);
|
|
if (i.length) {
|
|
for (
|
|
var a = b(e.selection.getRng(!0)), s = 0;
|
|
s < i.length &&
|
|
((t = i[s]),
|
|
(n = void 0),
|
|
(o = void 0),
|
|
(r = void 0),
|
|
("DT" === t.nodeName
|
|
? (le.rename(t, "DD"), 1)
|
|
: (n = t.previousSibling) && l(n)
|
|
? (n.appendChild(t), 1)
|
|
: n && "LI" === n.nodeName && l(n.lastChild)
|
|
? (n.lastChild.appendChild(t), ce(t.lastChild, n.lastChild), 1)
|
|
: (n = t.nextSibling) && l(n)
|
|
? (n.insertBefore(t, n.firstChild), 1)
|
|
: (n = t.previousSibling) &&
|
|
"LI" === n.nodeName &&
|
|
((o = le.create(t.parentNode.nodeName)),
|
|
(r = le.getStyle(t.parentNode, "listStyleType")) &&
|
|
le.setStyle(o, "listStyleType", r),
|
|
n.appendChild(o),
|
|
o.appendChild(t),
|
|
ce(t.lastChild, o),
|
|
1)) || 0 !== s);
|
|
s++
|
|
);
|
|
return e.selection.setRng(D(a)), e.nodeChanged(), !0;
|
|
}
|
|
},
|
|
ue = function(e, t) {
|
|
return function() {
|
|
var n = e.dom.getParent(e.selection.getStart(), "UL,OL,DL");
|
|
return n && n.nodeName === t;
|
|
};
|
|
},
|
|
me = function(e) {
|
|
e.on("BeforeExecCommand", function(t) {
|
|
var n,
|
|
o = t.command.toLowerCase();
|
|
if (
|
|
("indent" === o
|
|
? fe(e) && (n = !0)
|
|
: "outdent" === o && K(e) && (n = !0),
|
|
n)
|
|
)
|
|
return (
|
|
e.fire("ExecCommand", { command: t.command }),
|
|
t.preventDefault(),
|
|
!0
|
|
);
|
|
}),
|
|
e.addCommand("InsertUnorderedList", function(t, n) {
|
|
X.toggleList(e, "UL", n);
|
|
}),
|
|
e.addCommand("InsertOrderedList", function(t, n) {
|
|
X.toggleList(e, "OL", n);
|
|
}),
|
|
e.addCommand("InsertDefinitionList", function(t, n) {
|
|
X.toggleList(e, "DL", n);
|
|
}),
|
|
e.addQueryStateHandler("InsertUnorderedList", ue(e, "UL")),
|
|
e.addQueryStateHandler("InsertOrderedList", ue(e, "OL")),
|
|
e.addQueryStateHandler("InsertDefinitionList", ue(e, "DL"));
|
|
},
|
|
ge = function(e) {
|
|
return e.getParam("lists_indent_on_tab", !0);
|
|
},
|
|
pe = function(e) {
|
|
var t;
|
|
ge(e) &&
|
|
(t = e).on("keydown", function(e) {
|
|
e.keyCode !== o.TAB ||
|
|
o.metaKeyPressed(e) ||
|
|
(t.dom.getParent(t.selection.getStart(), "LI,DT,DD") &&
|
|
(e.preventDefault(), e.shiftKey ? K(t) : fe(t)));
|
|
}),
|
|
ae(e);
|
|
},
|
|
ve = function(e, t) {
|
|
return function(n) {
|
|
var o = n.control;
|
|
e.on("NodeChange", function(e) {
|
|
var n = (function(e, t) {
|
|
for (var n = 0; n < e.length; n++) if (t(e[n])) return n;
|
|
return -1;
|
|
})(e.parents, f),
|
|
r = -1 !== n ? e.parents.slice(0, n) : e.parents,
|
|
a = i.grep(r, l);
|
|
o.active(a.length > 0 && a[0].nodeName === t);
|
|
});
|
|
};
|
|
},
|
|
he = function(e) {
|
|
var t, n, o, r;
|
|
(n = "advlist"),
|
|
(o = (t = e).settings.plugins ? t.settings.plugins : ""),
|
|
-1 === i.inArray(o.split(/[ ,]/), n) &&
|
|
(e.addButton("numlist", {
|
|
active: !1,
|
|
title: "Numbered list",
|
|
cmd: "InsertOrderedList",
|
|
onPostRender: ve(e, "OL")
|
|
}),
|
|
e.addButton("bullist", {
|
|
active: !1,
|
|
title: "Bullet list",
|
|
cmd: "InsertUnorderedList",
|
|
onPostRender: ve(e, "UL")
|
|
})),
|
|
e.addButton("indent", {
|
|
icon: "indent",
|
|
title: "Increase indent",
|
|
cmd: "Indent",
|
|
onPostRender: ((r = e),
|
|
function(e) {
|
|
var t = e.control;
|
|
r.on("nodechange", function() {
|
|
var e = E.getSelectedListItems(r),
|
|
n = e.length > 0 && m(e[0]);
|
|
t.disabled(n);
|
|
});
|
|
})
|
|
});
|
|
};
|
|
e.add("lists", function(e) {
|
|
return pe(e), he(e), me(e), de(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
n = function(t) {
|
|
return t.target_list;
|
|
},
|
|
o = function(t) {
|
|
return t.rel_list;
|
|
},
|
|
i = function(t) {
|
|
return t.link_class_list;
|
|
},
|
|
r = function(t) {
|
|
return (
|
|
"boolean" == typeof t.link_assume_external_targets &&
|
|
t.link_assume_external_targets
|
|
);
|
|
},
|
|
a = function(t) {
|
|
return (
|
|
"boolean" == typeof t.link_context_toolbar && t.link_context_toolbar
|
|
);
|
|
},
|
|
l = function(t) {
|
|
return t.link_list;
|
|
},
|
|
u = function(t) {
|
|
return "string" == typeof t.default_link_target;
|
|
},
|
|
c = function(t) {
|
|
return t.default_link_target;
|
|
},
|
|
s = n,
|
|
f = function(t, e) {
|
|
t.settings.target_list = e;
|
|
},
|
|
d = function(t) {
|
|
return !1 !== n(t);
|
|
},
|
|
m = o,
|
|
v = function(t) {
|
|
return o(t) !== undefined;
|
|
},
|
|
g = i,
|
|
h = function(t) {
|
|
return i(t) !== undefined;
|
|
},
|
|
x = function(t) {
|
|
return !1 !== t.link_title;
|
|
},
|
|
p = function(t) {
|
|
return (
|
|
"boolean" == typeof t.allow_unsafe_link_target &&
|
|
t.allow_unsafe_link_target
|
|
);
|
|
},
|
|
y = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
k = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
b = function(t) {
|
|
if (!k.ie || k.ie > 10) {
|
|
var e = document.createElement("a");
|
|
(e.target = "_blank"), (e.href = t), (e.rel = "noreferrer noopener");
|
|
var n = document.createEvent("MouseEvents");
|
|
n.initMouseEvent(
|
|
"click",
|
|
!0,
|
|
!0,
|
|
window,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
!1,
|
|
!1,
|
|
!1,
|
|
!1,
|
|
0,
|
|
null
|
|
),
|
|
(r = e),
|
|
(a = n),
|
|
document.body.appendChild(r),
|
|
r.dispatchEvent(a),
|
|
document.body.removeChild(r);
|
|
} else {
|
|
var o = window.open("", "_blank");
|
|
if (o) {
|
|
o.opener = null;
|
|
var i = o.document;
|
|
i.open(),
|
|
i.write(
|
|
'<meta http-equiv="refresh" content="0; url=' +
|
|
y.DOM.encode(t) +
|
|
'">'
|
|
),
|
|
i.close();
|
|
}
|
|
}
|
|
var r, a;
|
|
},
|
|
_ = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
w = function(t, e) {
|
|
var n,
|
|
o,
|
|
i = ["noopener"],
|
|
r = t ? t.split(/\s+/) : [],
|
|
a = function(t) {
|
|
return t.filter(function(t) {
|
|
return -1 === _.inArray(i, t);
|
|
});
|
|
};
|
|
return (r = e ? ((n = a((n = r))).length ? n.concat(i) : i) : a(r)).length
|
|
? ((o = r), _.trim(o.sort().join(" ")))
|
|
: null;
|
|
},
|
|
T = function(t, e) {
|
|
return (
|
|
(e = e || t.selection.getNode()),
|
|
M(e) ? t.dom.select("a[href]", e)[0] : t.dom.getParent(e, "a[href]")
|
|
);
|
|
},
|
|
C = function(t) {
|
|
return t && "A" === t.nodeName && t.href;
|
|
},
|
|
M = function(t) {
|
|
return t && "FIGURE" === t.nodeName && /\bimage\b/i.test(t.className);
|
|
},
|
|
O = function(t, e) {
|
|
var n, o;
|
|
(o = t.dom.select("img", e)[0]) &&
|
|
(n = t.dom.getParents(o, "a[href]", e)[0]) &&
|
|
(n.parentNode.insertBefore(o, n), t.dom.remove(n));
|
|
},
|
|
N = function(t, e, n) {
|
|
var o, i;
|
|
(i = t.dom.select("img", e)[0]) &&
|
|
((o = t.dom.create("a", n)),
|
|
i.parentNode.insertBefore(o, i),
|
|
o.appendChild(i));
|
|
},
|
|
R = function(t, e) {
|
|
return function(n) {
|
|
t.undoManager.transact(function() {
|
|
var o = t.selection.getNode(),
|
|
i = T(t, o),
|
|
r = {
|
|
href: n.href,
|
|
target: n.target ? n.target : null,
|
|
rel: n.rel ? n.rel : null,
|
|
class: n["class"] ? n["class"] : null,
|
|
title: n.title ? n.title : null
|
|
};
|
|
v(t.settings) ||
|
|
!1 !== p(t.settings) ||
|
|
(r.rel = w(r.rel, "_blank" === r.target)),
|
|
n.href === e.href && (e.attach(), (e = {})),
|
|
i
|
|
? (t.focus(),
|
|
n.hasOwnProperty("text") &&
|
|
("innerText" in i
|
|
? (i.innerText = n.text)
|
|
: (i.textContent = n.text)),
|
|
t.dom.setAttribs(i, r),
|
|
t.selection.select(i),
|
|
t.undoManager.add())
|
|
: M(o)
|
|
? N(t, o, r)
|
|
: n.hasOwnProperty("text")
|
|
? t.insertContent(t.dom.createHTML("a", r, t.dom.encode(n.text)))
|
|
: t.execCommand("mceInsertLink", !1, r);
|
|
});
|
|
};
|
|
},
|
|
A = function(t) {
|
|
return function() {
|
|
t.undoManager.transact(function() {
|
|
var e = t.selection.getNode();
|
|
M(e) ? O(t, e) : t.execCommand("unlink");
|
|
});
|
|
};
|
|
},
|
|
L = C,
|
|
P = function(t) {
|
|
return _.grep(t, C).length > 0;
|
|
},
|
|
E = function(t) {
|
|
return !(
|
|
/</.test(t) &&
|
|
(!/^<a [^>]+>[^<]+<\/a>$/.test(t) || -1 === t.indexOf("href="))
|
|
);
|
|
},
|
|
K = T,
|
|
S = function(t, e) {
|
|
var n = e
|
|
? e.innerText || e.textContent
|
|
: t.getContent({ format: "text" });
|
|
return n.replace(/\uFEFF/g, "");
|
|
},
|
|
U = w,
|
|
D = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
I = tinymce.util.Tools.resolve("tinymce.util.XHR"),
|
|
B = {},
|
|
F = function(t, e, n) {
|
|
var o = function(t, n) {
|
|
return (
|
|
(n = n || []),
|
|
_.each(t, function(t) {
|
|
var i = { text: t.text || t.title };
|
|
t.menu ? (i.menu = o(t.menu)) : ((i.value = t.value), e && e(i)),
|
|
n.push(i);
|
|
}),
|
|
n
|
|
);
|
|
};
|
|
return o(t, n || []);
|
|
},
|
|
q = function(t, e, n) {
|
|
var o = t.selection.getRng();
|
|
D.setEditorTimeout(t, function() {
|
|
t.windowManager.confirm(e, function(e) {
|
|
t.selection.setRng(o), n(e);
|
|
});
|
|
});
|
|
},
|
|
V = function(t, e) {
|
|
var n,
|
|
o,
|
|
i,
|
|
a,
|
|
l,
|
|
y,
|
|
k,
|
|
b,
|
|
w,
|
|
T,
|
|
C,
|
|
M = {},
|
|
O = t.selection,
|
|
N = t.dom,
|
|
L = function(t) {
|
|
var e = i.find("#text");
|
|
(!e.value() ||
|
|
(t.lastControl && e.value() === t.lastControl.text())) &&
|
|
e.value(t.control.text()),
|
|
i.find("#href").value(t.control.value());
|
|
},
|
|
P = function() {
|
|
o ||
|
|
!a ||
|
|
M.text ||
|
|
this.parent()
|
|
.parent()
|
|
.find("#text")[0]
|
|
.value(this.value());
|
|
};
|
|
(a = E(O.getContent())),
|
|
(n = K(t)),
|
|
(M.text = o = S(t.selection, n)),
|
|
(M.href = n ? N.getAttrib(n, "href") : ""),
|
|
n
|
|
? (M.target = N.getAttrib(n, "target"))
|
|
: u(t.settings) && (M.target = c(t.settings)),
|
|
(C = N.getAttrib(n, "rel")) && (M.rel = C),
|
|
(C = N.getAttrib(n, "class")) && (M["class"] = C),
|
|
(C = N.getAttrib(n, "title")) && (M.title = C),
|
|
a &&
|
|
(l = {
|
|
name: "text",
|
|
type: "textbox",
|
|
size: 40,
|
|
label: "Text to display",
|
|
onchange: function() {
|
|
M.text = this.value();
|
|
}
|
|
}),
|
|
e &&
|
|
(y = {
|
|
type: "listbox",
|
|
label: "Link list",
|
|
values: F(
|
|
e,
|
|
function(e) {
|
|
e.value = t.convertURL(e.value || e.url, "href");
|
|
},
|
|
[{ text: "None", value: "" }]
|
|
),
|
|
onselect: L,
|
|
value: t.convertURL(M.href, "href"),
|
|
onPostRender: function() {
|
|
y = this;
|
|
}
|
|
}),
|
|
d(t.settings) &&
|
|
(s(t.settings) === undefined &&
|
|
f(t, [
|
|
{ text: "None", value: "" },
|
|
{ text: "New window", value: "_blank" }
|
|
]),
|
|
(b = {
|
|
name: "target",
|
|
type: "listbox",
|
|
label: "Target",
|
|
values: F(s(t.settings))
|
|
})),
|
|
v(t.settings) &&
|
|
(k = {
|
|
name: "rel",
|
|
type: "listbox",
|
|
label: "Rel",
|
|
values: F(m(t.settings), function(e) {
|
|
!1 === p(t.settings) &&
|
|
(e.value = U(e.value, "_blank" === M.target));
|
|
})
|
|
}),
|
|
h(t.settings) &&
|
|
(w = {
|
|
name: "class",
|
|
type: "listbox",
|
|
label: "Class",
|
|
values: F(g(t.settings), function(e) {
|
|
e.value &&
|
|
(e.textStyle = function() {
|
|
return t.formatter.getCssText({
|
|
inline: "a",
|
|
classes: [e.value]
|
|
});
|
|
});
|
|
})
|
|
}),
|
|
x(t.settings) &&
|
|
(T = {
|
|
name: "title",
|
|
type: "textbox",
|
|
label: "Title",
|
|
value: M.title
|
|
}),
|
|
(i = t.windowManager.open({
|
|
title: "Insert link",
|
|
data: M,
|
|
body: [
|
|
{
|
|
name: "href",
|
|
type: "filepicker",
|
|
filetype: "file",
|
|
size: 40,
|
|
autofocus: !0,
|
|
label: "Url",
|
|
onchange: function(e) {
|
|
var n = e.meta || {};
|
|
y && y.value(t.convertURL(this.value(), "href")),
|
|
_.each(e.meta, function(t, e) {
|
|
var n = i.find("#" + e);
|
|
"text" === e
|
|
? 0 === o.length && (n.value(t), (M.text = t))
|
|
: n.value(t);
|
|
}),
|
|
n.attach && (B = { href: this.value(), attach: n.attach }),
|
|
n.text || P.call(this);
|
|
},
|
|
onkeyup: P,
|
|
onbeforecall: function(t) {
|
|
t.meta = i.toJSON();
|
|
}
|
|
},
|
|
l,
|
|
T,
|
|
(function(e) {
|
|
var n = [];
|
|
if (
|
|
(_.each(t.dom.select("a:not([href])"), function(t) {
|
|
var o = t.name || t.id;
|
|
o &&
|
|
n.push({
|
|
text: o,
|
|
value: "#" + o,
|
|
selected: -1 !== e.indexOf("#" + o)
|
|
});
|
|
}),
|
|
n.length)
|
|
)
|
|
return (
|
|
n.unshift({ text: "None", value: "" }),
|
|
{
|
|
name: "anchor",
|
|
type: "listbox",
|
|
label: "Anchors",
|
|
values: n,
|
|
onselect: L
|
|
}
|
|
);
|
|
})(M.href),
|
|
y,
|
|
k,
|
|
b,
|
|
w
|
|
],
|
|
onSubmit: function(e) {
|
|
var n = r(t.settings),
|
|
i = R(t, B),
|
|
l = A(t),
|
|
u = _.extend({}, M, e.data),
|
|
c = u.href;
|
|
c
|
|
? ((a && u.text !== o) || delete u.text,
|
|
c.indexOf("@") > 0 &&
|
|
-1 === c.indexOf("//") &&
|
|
-1 === c.indexOf("mailto:")
|
|
? q(
|
|
t,
|
|
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
|
|
function(t) {
|
|
t && (u.href = "mailto:" + c), i(u);
|
|
}
|
|
)
|
|
: (!0 === n && !/^\w+:/i.test(c)) ||
|
|
(!1 === n && /^\s*www[\.|\d\.]/i.test(c))
|
|
? q(
|
|
t,
|
|
"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",
|
|
function(t) {
|
|
t && (u.href = "http://" + c), i(u);
|
|
}
|
|
)
|
|
: i(u))
|
|
: l();
|
|
}
|
|
}));
|
|
},
|
|
z = function(t) {
|
|
var e, n, o;
|
|
(n = V),
|
|
"string" == typeof (o = l((e = t).settings))
|
|
? I.send({
|
|
url: o,
|
|
success: function(t) {
|
|
n(e, JSON.parse(t));
|
|
}
|
|
})
|
|
: "function" == typeof o
|
|
? o(function(t) {
|
|
n(e, t);
|
|
})
|
|
: n(e, o);
|
|
},
|
|
H = function(t, e) {
|
|
return t.dom.getParent(e, "a[href]");
|
|
},
|
|
J = function(t) {
|
|
return H(t, t.selection.getStart());
|
|
},
|
|
$ = function(t, e) {
|
|
if (e) {
|
|
var n = (i = e).getAttribute("data-mce-href") || i.getAttribute("href");
|
|
if (/^#/.test(n)) {
|
|
var o = t.$(n);
|
|
o.length && t.selection.scrollIntoView(o[0], !0);
|
|
} else b(e.href);
|
|
}
|
|
var i;
|
|
},
|
|
j = function(t) {
|
|
return function() {
|
|
z(t);
|
|
};
|
|
},
|
|
G = function(t) {
|
|
return function() {
|
|
$(t, J(t));
|
|
};
|
|
},
|
|
X = function(t) {
|
|
return function(e) {
|
|
var n, o, i, r, l;
|
|
return !!(
|
|
a(t.settings) &&
|
|
((r = t),
|
|
(l = r.plugins.contextmenu),
|
|
!l || !l.isContextMenuVisible()) &&
|
|
L(e) &&
|
|
3 ===
|
|
(i = (o = (n = t.selection).getRng()).startContainer).nodeType &&
|
|
n.isCollapsed() &&
|
|
o.startOffset > 0 &&
|
|
o.startOffset < i.data.length
|
|
);
|
|
};
|
|
},
|
|
Q = function(t) {
|
|
t.on("click", function(n) {
|
|
var o = H(t, n.target);
|
|
o && e.metaKeyPressed(n) && (n.preventDefault(), $(t, o));
|
|
}),
|
|
t.on("keydown", function(e) {
|
|
var n,
|
|
o = J(t);
|
|
o &&
|
|
13 === e.keyCode &&
|
|
!0 === (n = e).altKey &&
|
|
!1 === n.shiftKey &&
|
|
!1 === n.ctrlKey &&
|
|
!1 === n.metaKey &&
|
|
(e.preventDefault(), $(t, o));
|
|
});
|
|
},
|
|
W = function(t) {
|
|
return function() {
|
|
var e = this;
|
|
t.on("nodechange", function(n) {
|
|
e.active(!t.readonly && !!K(t, n.element));
|
|
});
|
|
};
|
|
},
|
|
Y = function(t) {
|
|
return function() {
|
|
var e = this,
|
|
n = function(t) {
|
|
P(t.parents) ? e.show() : e.hide();
|
|
};
|
|
P(t.dom.getParents(t.selection.getStart())) || e.hide(),
|
|
t.on("nodechange", n),
|
|
e.on("remove", function() {
|
|
t.off("nodechange", n);
|
|
});
|
|
};
|
|
},
|
|
Z = function(t) {
|
|
t.addCommand("mceLink", j(t));
|
|
},
|
|
tt = function(t) {
|
|
t.addShortcut("Meta+K", "", j(t));
|
|
},
|
|
et = function(t) {
|
|
t.addButton("link", {
|
|
active: !1,
|
|
icon: "link",
|
|
tooltip: "Insert/edit link",
|
|
onclick: j(t),
|
|
onpostrender: W(t)
|
|
}),
|
|
t.addButton("unlink", {
|
|
active: !1,
|
|
icon: "unlink",
|
|
tooltip: "Remove link",
|
|
onclick: A(t),
|
|
onpostrender: W(t)
|
|
}),
|
|
t.addContextToolbar &&
|
|
t.addButton("openlink", {
|
|
icon: "newtab",
|
|
tooltip: "Open link",
|
|
onclick: G(t)
|
|
});
|
|
},
|
|
nt = function(t) {
|
|
t.addMenuItem("openlink", {
|
|
text: "Open link",
|
|
icon: "newtab",
|
|
onclick: G(t),
|
|
onPostRender: Y(t),
|
|
prependToContext: !0
|
|
}),
|
|
t.addMenuItem("link", {
|
|
icon: "link",
|
|
text: "Link",
|
|
shortcut: "Meta+K",
|
|
onclick: j(t),
|
|
stateSelector: "a[href]",
|
|
context: "insert",
|
|
prependToContext: !0
|
|
});
|
|
},
|
|
ot = function(t) {
|
|
t.addContextToolbar &&
|
|
t.addContextToolbar(X(t), "openlink | link unlink");
|
|
};
|
|
t.add("link", function(t) {
|
|
et(t), nt(t), ot(t), Q(t), Z(t), tt(t);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
n = function(e) {
|
|
(e.settings.inline_styles = !1),
|
|
e.on("init", function() {
|
|
var n, i, a, o;
|
|
(n = e),
|
|
(i = "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img"),
|
|
(a = t.explode(n.settings.font_size_style_values)),
|
|
(o = n.schema),
|
|
n.formatter.register({
|
|
alignleft: { selector: i, attributes: { align: "left" } },
|
|
aligncenter: { selector: i, attributes: { align: "center" } },
|
|
alignright: { selector: i, attributes: { align: "right" } },
|
|
alignjustify: { selector: i, attributes: { align: "justify" } },
|
|
bold: [
|
|
{ inline: "b", remove: "all" },
|
|
{ inline: "strong", remove: "all" },
|
|
{ inline: "span", styles: { fontWeight: "bold" } }
|
|
],
|
|
italic: [
|
|
{ inline: "i", remove: "all" },
|
|
{ inline: "em", remove: "all" },
|
|
{ inline: "span", styles: { fontStyle: "italic" } }
|
|
],
|
|
underline: [
|
|
{ inline: "u", remove: "all" },
|
|
{
|
|
inline: "span",
|
|
styles: { textDecoration: "underline" },
|
|
exact: !0
|
|
}
|
|
],
|
|
strikethrough: [
|
|
{ inline: "strike", remove: "all" },
|
|
{
|
|
inline: "span",
|
|
styles: { textDecoration: "line-through" },
|
|
exact: !0
|
|
}
|
|
],
|
|
fontname: { inline: "font", attributes: { face: "%value" } },
|
|
fontsize: {
|
|
inline: "font",
|
|
attributes: {
|
|
size: function(e) {
|
|
return t.inArray(a, e.value) + 1;
|
|
}
|
|
}
|
|
},
|
|
forecolor: { inline: "font", attributes: { color: "%value" } },
|
|
hilitecolor: {
|
|
inline: "font",
|
|
styles: { backgroundColor: "%value" }
|
|
}
|
|
}),
|
|
t.each("b,i,u,strike".split(","), function(e) {
|
|
o.addValidElements(e + "[*]");
|
|
}),
|
|
o.getElementRule("font") ||
|
|
o.addValidElements("font[face|size|color|style]"),
|
|
t.each(i.split(","), function(e) {
|
|
var t = o.getElementRule(e);
|
|
t &&
|
|
(t.attributes.align ||
|
|
((t.attributes.align = {}), t.attributesOrder.push("align")));
|
|
});
|
|
});
|
|
},
|
|
i = function(e) {
|
|
e.addButton("fontsizeselect", function() {
|
|
var t = [],
|
|
n =
|
|
e.settings.fontsizeFormats ||
|
|
"8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7";
|
|
return (
|
|
e.$.each(n.split(" "), function(e, n) {
|
|
var i = n,
|
|
a = n,
|
|
o = n.split("=");
|
|
o.length > 1 && ((i = o[0]), (a = o[1])),
|
|
t.push({ text: i, value: a });
|
|
}),
|
|
{
|
|
type: "listbox",
|
|
text: "Font Sizes",
|
|
tooltip: "Font Sizes",
|
|
values: t,
|
|
fixedWidth: !0,
|
|
onPostRender: function() {
|
|
var t = this;
|
|
e.on("NodeChange", function() {
|
|
var n;
|
|
(n = e.dom.getParent(e.selection.getNode(), "font"))
|
|
? t.value(n.size)
|
|
: t.value("");
|
|
});
|
|
},
|
|
onclick: function(t) {
|
|
t.control.settings.value &&
|
|
e.execCommand("FontSize", !1, t.control.settings.value);
|
|
}
|
|
}
|
|
);
|
|
}),
|
|
e.addButton("fontselect", function() {
|
|
var t = [],
|
|
n = (function(e) {
|
|
for (var t = (e = e.replace(/;$/, "").split(";")).length; t--; )
|
|
e[t] = e[t].split("=");
|
|
return e;
|
|
})(
|
|
e.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"
|
|
);
|
|
return (
|
|
e.$.each(n, function(e, n) {
|
|
t.push({
|
|
text: { raw: n[0] },
|
|
value: n[1],
|
|
textStyle:
|
|
-1 === n[1].indexOf("dings") ? "font-family:" + n[1] : ""
|
|
});
|
|
}),
|
|
{
|
|
type: "listbox",
|
|
text: "Font Family",
|
|
tooltip: "Font Family",
|
|
values: t,
|
|
fixedWidth: !0,
|
|
onPostRender: function() {
|
|
var t = this;
|
|
e.on("NodeChange", function() {
|
|
var n;
|
|
(n = e.dom.getParent(e.selection.getNode(), "font"))
|
|
? t.value(n.face)
|
|
: t.value("");
|
|
});
|
|
},
|
|
onselect: function(t) {
|
|
t.control.settings.value &&
|
|
e.execCommand("FontName", !1, t.control.settings.value);
|
|
}
|
|
}
|
|
);
|
|
});
|
|
};
|
|
e.add("legacyoutput", function(e) {
|
|
n(e), i(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var n = t,
|
|
r = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: r,
|
|
set: function(e) {
|
|
n = e;
|
|
},
|
|
clone: function() {
|
|
return e(r());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = function(e) {
|
|
return e.getParam("insertdatetime_timeformat", e.translate("%H:%M:%S"));
|
|
},
|
|
r = function(e) {
|
|
return e.getParam("insertdatetime_formats", [
|
|
"%H:%M:%S",
|
|
"%Y-%m-%d",
|
|
"%I:%M:%S %p",
|
|
"%D"
|
|
]);
|
|
},
|
|
a = function(e) {
|
|
return e.getParam("insertdatetime_dateformat", e.translate("%Y-%m-%d"));
|
|
},
|
|
i = n,
|
|
o = r,
|
|
u = function(e) {
|
|
var t = r(e);
|
|
return t.length > 0 ? t[0] : n(e);
|
|
},
|
|
c = function(e) {
|
|
return e.getParam("insertdatetime_element", !1);
|
|
},
|
|
l = "Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),
|
|
m = "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(
|
|
" "
|
|
),
|
|
s = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
|
|
d = "January February March April May June July August September October November December".split(
|
|
" "
|
|
),
|
|
p = function(e, t) {
|
|
if ((e = "" + e).length < t)
|
|
for (var n = 0; n < t - e.length; n++) e = "0" + e;
|
|
return e;
|
|
},
|
|
f = function(e, t, n) {
|
|
return (
|
|
(n = n || new Date()),
|
|
(t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = t.replace(
|
|
"%D",
|
|
"%m/%d/%Y"
|
|
)).replace("%r", "%I:%M:%S %p")).replace(
|
|
"%Y",
|
|
"" + n.getFullYear()
|
|
)).replace("%y", "" + n.getYear())).replace(
|
|
"%m",
|
|
p(n.getMonth() + 1, 2)
|
|
)).replace("%d", p(n.getDate(), 2))).replace(
|
|
"%H",
|
|
"" + p(n.getHours(), 2)
|
|
)).replace("%M", "" + p(n.getMinutes(), 2))).replace(
|
|
"%S",
|
|
"" + p(n.getSeconds(), 2)
|
|
)).replace("%I", "" + (((n.getHours() + 11) % 12) + 1))).replace(
|
|
"%p",
|
|
n.getHours() < 12 ? "AM" : "PM"
|
|
)).replace("%B", "" + e.translate(d[n.getMonth()]))).replace(
|
|
"%b",
|
|
"" + e.translate(s[n.getMonth()])
|
|
)).replace("%A", "" + e.translate(m[n.getDay()]))).replace(
|
|
"%a",
|
|
"" + e.translate(l[n.getDay()])
|
|
)).replace("%%", "%"))
|
|
);
|
|
},
|
|
g = function(e, t) {
|
|
if (c(e)) {
|
|
var n = f(e, t),
|
|
r = void 0;
|
|
r = /%[HMSIp]/.test(t) ? f(e, "%Y-%m-%dT%H:%M") : f(e, "%Y-%m-%d");
|
|
var a = e.dom.getParent(e.selection.getStart(), "time");
|
|
a
|
|
? ((o = a),
|
|
(u = r),
|
|
(l = n),
|
|
(m = (i = e).dom.create("time", { datetime: u }, l)),
|
|
o.parentNode.insertBefore(m, o),
|
|
i.dom.remove(o),
|
|
i.selection.select(m, !0),
|
|
i.selection.collapse(!1))
|
|
: e.insertContent('<time datetime="' + r + '">' + n + "</time>");
|
|
} else e.insertContent(f(e, t));
|
|
var i, o, u, l, m;
|
|
},
|
|
y = f,
|
|
M = function(e) {
|
|
e.addCommand("mceInsertDate", function() {
|
|
g(e, a(e));
|
|
}),
|
|
e.addCommand("mceInsertTime", function() {
|
|
g(e, i(e));
|
|
});
|
|
},
|
|
v = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
S = function(e, t) {
|
|
var n,
|
|
r,
|
|
a,
|
|
i = ((r = t),
|
|
(a = o((n = e))),
|
|
v.map(a, function(e) {
|
|
return {
|
|
text: y(n, e),
|
|
onclick: function() {
|
|
r.set(e), g(n, e);
|
|
}
|
|
};
|
|
}));
|
|
e.addButton("insertdatetime", {
|
|
type: "splitbutton",
|
|
title: "Insert date/time",
|
|
menu: i,
|
|
onclick: function() {
|
|
var n = t.get();
|
|
g(e, n || u(e));
|
|
}
|
|
}),
|
|
e.addMenuItem("insertdatetime", {
|
|
icon: "date",
|
|
text: "Date/time",
|
|
menu: i,
|
|
context: "insert"
|
|
});
|
|
};
|
|
t.add("insertdatetime", function(t) {
|
|
var n = e(null);
|
|
M(t), S(t, n);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
n = tinymce.util.Tools.resolve("tinymce.EditorManager"),
|
|
r = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
i = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
c = function(e) {
|
|
return e.getParam("importcss_merge_classes");
|
|
},
|
|
o = function(e) {
|
|
return e.getParam("importcss_exclusive");
|
|
},
|
|
s = function(e) {
|
|
return e.getParam("importcss_selector_converter");
|
|
},
|
|
u = function(e) {
|
|
return e.getParam("importcss_selector_filter");
|
|
},
|
|
l = function(e) {
|
|
return e.getParam("importcss_groups");
|
|
},
|
|
a = function(e) {
|
|
return e.getParam("importcss_append");
|
|
},
|
|
f = function(e) {
|
|
return e.getParam("importcss_file_filter");
|
|
},
|
|
m = function(e) {
|
|
var t = r.cacheSuffix;
|
|
return (
|
|
"string" == typeof e &&
|
|
(e = e.replace("?" + t, "").replace("&" + t, "")),
|
|
e
|
|
);
|
|
},
|
|
g = function(e, t) {
|
|
var r = e.settings,
|
|
i = !1 !== r.skin && (r.skin || "lightgray");
|
|
return (
|
|
!!i &&
|
|
t ===
|
|
(r.skin_url
|
|
? e.documentBaseURI.toAbsolute(r.skin_url)
|
|
: n.baseURL + "/skins/" + i) +
|
|
"/content" +
|
|
(e.inline ? ".inline" : "") +
|
|
".min.css"
|
|
);
|
|
},
|
|
p = function(e) {
|
|
return "string" == typeof e
|
|
? function(t) {
|
|
return -1 !== t.indexOf(e);
|
|
}
|
|
: e instanceof RegExp
|
|
? function(t) {
|
|
return e.test(t);
|
|
}
|
|
: e;
|
|
},
|
|
v = function(e, t, n) {
|
|
var r = [],
|
|
c = {};
|
|
i.each(e.contentCSS, function(e) {
|
|
c[e] = !0;
|
|
}),
|
|
n ||
|
|
(n = function(e, t) {
|
|
return t || c[e];
|
|
});
|
|
try {
|
|
i.each(t.styleSheets, function(t) {
|
|
!(function c(t, o) {
|
|
var s,
|
|
u = t.href;
|
|
if ((u = m(u)) && n(u, o) && !g(e, u)) {
|
|
i.each(t.imports, function(e) {
|
|
c(e, !0);
|
|
});
|
|
try {
|
|
s = t.cssRules || t.rules;
|
|
} catch (l) {}
|
|
i.each(s, function(e) {
|
|
e.styleSheet
|
|
? c(e.styleSheet, !0)
|
|
: e.selectorText &&
|
|
i.each(e.selectorText.split(","), function(e) {
|
|
r.push(i.trim(e));
|
|
});
|
|
});
|
|
}
|
|
})(t);
|
|
});
|
|
} catch (o) {}
|
|
return r;
|
|
},
|
|
h = function(e, t) {
|
|
var n,
|
|
r = /^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);
|
|
if (r) {
|
|
var o = r[1],
|
|
s = r[2]
|
|
.substr(1)
|
|
.split(".")
|
|
.join(" "),
|
|
u = i.makeMap("a,img");
|
|
return (
|
|
r[1]
|
|
? ((n = { title: t }),
|
|
e.schema.getTextBlockElements()[o]
|
|
? (n.block = o)
|
|
: e.schema.getBlockElements()[o] || u[o.toLowerCase()]
|
|
? (n.selector = o)
|
|
: (n.inline = o))
|
|
: r[2] && (n = { inline: "span", title: t.substr(1), classes: s }),
|
|
!1 !== c(e) ? (n.classes = s) : (n.attributes = { class: s }),
|
|
n
|
|
);
|
|
}
|
|
},
|
|
d = function(e, t) {
|
|
return null === t || !1 !== o(e);
|
|
},
|
|
y = h,
|
|
_ = function(e) {
|
|
e.on("renderFormatsMenu", function(n) {
|
|
var r,
|
|
c = {},
|
|
o = p(u(e)),
|
|
m = n.control,
|
|
g = ((r = l(e)),
|
|
i.map(r, function(e) {
|
|
return i.extend({}, e, {
|
|
original: e,
|
|
selectors: {},
|
|
filter: p(e.filter),
|
|
item: { text: e.title, menu: [] }
|
|
});
|
|
})),
|
|
y = function(n, r) {
|
|
if (
|
|
((_ = n), (T = c), !(d(e, (x = r)) ? _ in T : _ in x.selectors))
|
|
) {
|
|
(p = n),
|
|
(y = c),
|
|
d(e, (v = r)) ? (y[p] = !0) : (v.selectors[p] = !0);
|
|
var o = ((l = e),
|
|
(a = e.plugins.importcss),
|
|
(f = n),
|
|
((g = r) && g.selector_converter
|
|
? g.selector_converter
|
|
: s(l)
|
|
? s(l)
|
|
: function() {
|
|
return h(l, f);
|
|
}
|
|
).call(a, f, g));
|
|
if (o) {
|
|
var u = o.name || t.DOM.uniqueId();
|
|
return (
|
|
e.formatter.register(u, o),
|
|
i.extend({}, m.settings.itemDefaults, {
|
|
text: o.title,
|
|
format: u
|
|
})
|
|
);
|
|
}
|
|
}
|
|
var l, a, f, g, p, v, y, _, x, T;
|
|
return null;
|
|
};
|
|
a(e) || m.items().remove(),
|
|
i.each(v(e, n.doc || e.getDoc(), p(f(e))), function(e) {
|
|
if (-1 === e.indexOf(".mce-") && (!o || o(e))) {
|
|
var t = ((r = g),
|
|
(c = e),
|
|
i.grep(r, function(e) {
|
|
return !e.filter || e.filter(c);
|
|
}));
|
|
if (t.length > 0)
|
|
i.each(t, function(t) {
|
|
var n = y(e, t);
|
|
n && t.item.menu.push(n);
|
|
});
|
|
else {
|
|
var n = y(e, null);
|
|
n && m.add(n);
|
|
}
|
|
}
|
|
var r, c;
|
|
}),
|
|
i.each(g, function(e) {
|
|
e.item.menu.length > 0 && m.add(e.item);
|
|
}),
|
|
n.control.renderNew();
|
|
});
|
|
},
|
|
x = function(e) {
|
|
return {
|
|
convertSelectorToFormat: function(t) {
|
|
return y(e, t);
|
|
}
|
|
};
|
|
};
|
|
e.add("importcss", function(e) {
|
|
return _(e), x(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = function(e) {
|
|
var n = e,
|
|
o = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: o,
|
|
set: function(t) {
|
|
n = t;
|
|
},
|
|
clone: function() {
|
|
return t(o());
|
|
}
|
|
};
|
|
},
|
|
e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = tinymce.util.Tools.resolve("tinymce.util.Tools");
|
|
function o(t, e) {
|
|
return i(document.createElement("canvas"), t, e);
|
|
}
|
|
function r(t) {
|
|
return t.getContext("2d");
|
|
}
|
|
function i(t, e, n) {
|
|
return (t.width = e), (t.height = n), t;
|
|
}
|
|
var a,
|
|
u,
|
|
c,
|
|
l,
|
|
s = {
|
|
create: o,
|
|
clone: function(t) {
|
|
var e;
|
|
return r((e = o(t.width, t.height))).drawImage(t, 0, 0), e;
|
|
},
|
|
resize: i,
|
|
get2dContext: r,
|
|
get3dContext: function(t) {
|
|
var e = null;
|
|
try {
|
|
e = t.getContext("webgl") || t.getContext("experimental-webgl");
|
|
} catch (n) {}
|
|
return e || (e = null), e;
|
|
}
|
|
},
|
|
f = {
|
|
getWidth: function(t) {
|
|
return t.naturalWidth || t.width;
|
|
},
|
|
getHeight: function(t) {
|
|
return t.naturalHeight || t.height;
|
|
}
|
|
},
|
|
d = window.Promise
|
|
? window.Promise
|
|
: (function() {
|
|
var t = function(t) {
|
|
if ("object" != typeof this)
|
|
throw new TypeError("Promises must be constructed via new");
|
|
if ("function" != typeof t) throw new TypeError("not a function");
|
|
(this._state = null),
|
|
(this._value = null),
|
|
(this._deferreds = []),
|
|
c(t, n(i, this), n(a, this));
|
|
},
|
|
e =
|
|
t.immediateFn ||
|
|
("function" == typeof setImmediate && setImmediate) ||
|
|
function(t) {
|
|
setTimeout(t, 1);
|
|
};
|
|
function n(t, e) {
|
|
return function() {
|
|
t.apply(e, arguments);
|
|
};
|
|
}
|
|
var o =
|
|
Array.isArray ||
|
|
function(t) {
|
|
return "[object Array]" === Object.prototype.toString.call(t);
|
|
};
|
|
function r(t) {
|
|
var n = this;
|
|
null !== this._state
|
|
? e(function() {
|
|
var e = n._state ? t.onFulfilled : t.onRejected;
|
|
if (null !== e) {
|
|
var o;
|
|
try {
|
|
o = e(n._value);
|
|
} catch (r) {
|
|
return void t.reject(r);
|
|
}
|
|
t.resolve(o);
|
|
} else (n._state ? t.resolve : t.reject)(n._value);
|
|
})
|
|
: this._deferreds.push(t);
|
|
}
|
|
function i(t) {
|
|
try {
|
|
if (t === this)
|
|
throw new TypeError(
|
|
"A promise cannot be resolved with itself."
|
|
);
|
|
if (t && ("object" == typeof t || "function" == typeof t)) {
|
|
var e = t.then;
|
|
if ("function" == typeof e)
|
|
return void c(n(e, t), n(i, this), n(a, this));
|
|
}
|
|
(this._state = !0), (this._value = t), u.call(this);
|
|
} catch (o) {
|
|
a.call(this, o);
|
|
}
|
|
}
|
|
function a(t) {
|
|
(this._state = !1), (this._value = t), u.call(this);
|
|
}
|
|
function u() {
|
|
for (var t = 0, e = this._deferreds.length; t < e; t++)
|
|
r.call(this, this._deferreds[t]);
|
|
this._deferreds = null;
|
|
}
|
|
function c(t, e, n) {
|
|
var o = !1;
|
|
try {
|
|
t(
|
|
function(t) {
|
|
o || ((o = !0), e(t));
|
|
},
|
|
function(t) {
|
|
o || ((o = !0), n(t));
|
|
}
|
|
);
|
|
} catch (r) {
|
|
if (o) return;
|
|
(o = !0), n(r);
|
|
}
|
|
}
|
|
return (
|
|
(t.prototype["catch"] = function(t) {
|
|
return this.then(null, t);
|
|
}),
|
|
(t.prototype.then = function(e, n) {
|
|
var o = this;
|
|
return new t(function(t, i) {
|
|
r.call(
|
|
o,
|
|
new function(t, e, n, o) {
|
|
(this.onFulfilled = "function" == typeof t ? t : null),
|
|
(this.onRejected = "function" == typeof e ? e : null),
|
|
(this.resolve = n),
|
|
(this.reject = o);
|
|
}(e, n, t, i)
|
|
);
|
|
});
|
|
}),
|
|
(t.all = function() {
|
|
var e = Array.prototype.slice.call(
|
|
1 === arguments.length && o(arguments[0])
|
|
? arguments[0]
|
|
: arguments
|
|
);
|
|
return new t(function(t, n) {
|
|
if (0 === e.length) return t([]);
|
|
var o = e.length;
|
|
function r(i, a) {
|
|
try {
|
|
if (a && ("object" == typeof a || "function" == typeof a)) {
|
|
var u = a.then;
|
|
if ("function" == typeof u)
|
|
return void u.call(
|
|
a,
|
|
function(t) {
|
|
r(i, t);
|
|
},
|
|
n
|
|
);
|
|
}
|
|
(e[i] = a), 0 == --o && t(e);
|
|
} catch (c) {
|
|
n(c);
|
|
}
|
|
}
|
|
for (var i = 0; i < e.length; i++) r(i, e[i]);
|
|
});
|
|
}),
|
|
(t.resolve = function(e) {
|
|
return e && "object" == typeof e && e.constructor === t
|
|
? e
|
|
: new t(function(t) {
|
|
t(e);
|
|
});
|
|
}),
|
|
(t.reject = function(e) {
|
|
return new t(function(t, n) {
|
|
n(e);
|
|
});
|
|
}),
|
|
(t.race = function(e) {
|
|
return new t(function(t, n) {
|
|
for (var o = 0, r = e.length; o < r; o++) e[o].then(t, n);
|
|
});
|
|
}),
|
|
t
|
|
);
|
|
})(),
|
|
h = function(t) {
|
|
return function() {
|
|
return t;
|
|
};
|
|
},
|
|
p = {
|
|
noop: function() {},
|
|
noarg: function(t) {
|
|
return function() {
|
|
return t();
|
|
};
|
|
},
|
|
compose: function(t, e) {
|
|
return function() {
|
|
return t(e.apply(null, arguments));
|
|
};
|
|
},
|
|
constant: h,
|
|
identity: function(t) {
|
|
return t;
|
|
},
|
|
tripleEquals: function(t, e) {
|
|
return t === e;
|
|
},
|
|
curry: function(t) {
|
|
for (
|
|
var e = new Array(arguments.length - 1), n = 1;
|
|
n < arguments.length;
|
|
n++
|
|
)
|
|
e[n - 1] = arguments[n];
|
|
return function() {
|
|
for (var n = new Array(arguments.length), o = 0; o < n.length; o++)
|
|
n[o] = arguments[o];
|
|
var r = e.concat(n);
|
|
return t.apply(null, r);
|
|
};
|
|
},
|
|
not: function(t) {
|
|
return function() {
|
|
return !t.apply(null, arguments);
|
|
};
|
|
},
|
|
die: function(t) {
|
|
return function() {
|
|
throw new Error(t);
|
|
};
|
|
},
|
|
apply: function(t) {
|
|
return t();
|
|
},
|
|
call: function(t) {
|
|
t();
|
|
},
|
|
never: h(!1),
|
|
always: h(!0)
|
|
},
|
|
m = p.never,
|
|
g = p.always,
|
|
v = function() {
|
|
return y;
|
|
},
|
|
y = ((l = {
|
|
fold: function(t, e) {
|
|
return t();
|
|
},
|
|
is: m,
|
|
isSome: m,
|
|
isNone: g,
|
|
getOr: (c = function(t) {
|
|
return t;
|
|
}),
|
|
getOrThunk: (u = function(t) {
|
|
return t();
|
|
}),
|
|
getOrDie: function(t) {
|
|
throw new Error(t || "error: getOrDie called on none.");
|
|
},
|
|
or: c,
|
|
orThunk: u,
|
|
map: v,
|
|
ap: v,
|
|
each: function() {},
|
|
bind: v,
|
|
flatten: v,
|
|
exists: m,
|
|
forall: g,
|
|
filter: v,
|
|
equals: (a = function(t) {
|
|
return t.isNone();
|
|
}),
|
|
equals_: a,
|
|
toArray: function() {
|
|
return [];
|
|
},
|
|
toString: p.constant("none()")
|
|
}),
|
|
Object.freeze && Object.freeze(l),
|
|
l),
|
|
b = function(t) {
|
|
var e = function() {
|
|
return t;
|
|
},
|
|
n = function() {
|
|
return r;
|
|
},
|
|
o = function(e) {
|
|
return e(t);
|
|
},
|
|
r = {
|
|
fold: function(e, n) {
|
|
return n(t);
|
|
},
|
|
is: function(e) {
|
|
return t === e;
|
|
},
|
|
isSome: g,
|
|
isNone: m,
|
|
getOr: e,
|
|
getOrThunk: e,
|
|
getOrDie: e,
|
|
or: n,
|
|
orThunk: n,
|
|
map: function(e) {
|
|
return b(e(t));
|
|
},
|
|
ap: function(e) {
|
|
return e.fold(v, function(e) {
|
|
return b(e(t));
|
|
});
|
|
},
|
|
each: function(e) {
|
|
e(t);
|
|
},
|
|
bind: o,
|
|
flatten: e,
|
|
exists: o,
|
|
forall: o,
|
|
filter: function(e) {
|
|
return e(t) ? r : y;
|
|
},
|
|
equals: function(e) {
|
|
return e.is(t);
|
|
},
|
|
equals_: function(e, n) {
|
|
return e.fold(m, function(e) {
|
|
return n(t, e);
|
|
});
|
|
},
|
|
toArray: function() {
|
|
return [t];
|
|
},
|
|
toString: function() {
|
|
return "some(" + t + ")";
|
|
}
|
|
};
|
|
return r;
|
|
},
|
|
w = {
|
|
some: b,
|
|
none: v,
|
|
from: function(t) {
|
|
return null === t || t === undefined ? y : b(t);
|
|
}
|
|
},
|
|
x = "undefined" != typeof window ? window : Function("return this;")(),
|
|
R = function(t, e) {
|
|
for (
|
|
var n = e !== undefined && null !== e ? e : x, o = 0;
|
|
o < t.length && n !== undefined && null !== n;
|
|
++o
|
|
)
|
|
n = n[t[o]];
|
|
return n;
|
|
},
|
|
I = function(t, e) {
|
|
var n = t.split(".");
|
|
return R(n, e);
|
|
},
|
|
T = function(t, e) {
|
|
var n = I(t, e);
|
|
if (n === undefined || null === n)
|
|
throw t + " not available on this browser";
|
|
return n;
|
|
},
|
|
k = function(t, e) {
|
|
return new (T("Blob"))(t, e);
|
|
},
|
|
C = function() {
|
|
return new (T("FileReader"))();
|
|
},
|
|
B = function(t) {
|
|
return new (T("Uint8Array"))(t);
|
|
},
|
|
U = {
|
|
atob: function(t) {
|
|
return T("atob")(t);
|
|
},
|
|
requestAnimationFrame: function(t) {
|
|
T("requestAnimationFrame")(t);
|
|
}
|
|
};
|
|
function M(t) {
|
|
return new d(function(e, n) {
|
|
var o = URL.createObjectURL(t),
|
|
r = new Image(),
|
|
i = function() {
|
|
r.removeEventListener("load", a), r.removeEventListener("error", u);
|
|
};
|
|
function a() {
|
|
i(), e(r);
|
|
}
|
|
function u() {
|
|
i(), n("Unable to load data of type " + t.type + ": " + o);
|
|
}
|
|
r.addEventListener("load", a),
|
|
r.addEventListener("error", u),
|
|
(r.src = o),
|
|
r.complete && a();
|
|
});
|
|
}
|
|
function j(t) {
|
|
return new d(function(e) {
|
|
var n = new XMLHttpRequest();
|
|
n.open("GET", t, !0),
|
|
(n.responseType = "blob"),
|
|
(n.onload = function() {
|
|
200 == this.status && e(this.response);
|
|
}),
|
|
n.send();
|
|
});
|
|
}
|
|
function A(t) {
|
|
var e = t.split(","),
|
|
n = /data:([^;]+)/.exec(e[0]);
|
|
if (!n) return w.none();
|
|
for (
|
|
var o = n[1],
|
|
r = e[1],
|
|
i = U.atob(r),
|
|
a = i.length,
|
|
u = Math.ceil(a / 1024),
|
|
c = new Array(u),
|
|
l = 0;
|
|
l < u;
|
|
++l
|
|
) {
|
|
for (
|
|
var s = 1024 * l,
|
|
f = Math.min(s + 1024, a),
|
|
d = new Array(f - s),
|
|
h = s,
|
|
p = 0;
|
|
h < f;
|
|
++p, ++h
|
|
)
|
|
d[p] = i[h].charCodeAt(0);
|
|
c[l] = B(d);
|
|
}
|
|
return w.some(k(c, { type: o }));
|
|
}
|
|
function z(t) {
|
|
return new d(function(e, n) {
|
|
A(t).fold(function() {
|
|
n("uri is not base64: " + t);
|
|
}, e);
|
|
});
|
|
}
|
|
function E(t) {
|
|
return new d(function(e) {
|
|
var n = new C();
|
|
(n.onloadend = function() {
|
|
e(n.result);
|
|
}),
|
|
n.readAsDataURL(t);
|
|
});
|
|
}
|
|
var S = {
|
|
blobToImage: M,
|
|
imageToBlob: function(t) {
|
|
return ((e = t),
|
|
new d(function(t) {
|
|
e.complete
|
|
? t(e)
|
|
: e.addEventListener("load", function n() {
|
|
e.removeEventListener("load", n), t(e);
|
|
});
|
|
})).then(function(t) {
|
|
var e = t.src;
|
|
return 0 === e.indexOf("blob:")
|
|
? j(e)
|
|
: 0 === e.indexOf("data:")
|
|
? z(e)
|
|
: j(e);
|
|
});
|
|
var e;
|
|
},
|
|
blobToDataUri: E,
|
|
blobToBase64: function(t) {
|
|
return E(t).then(function(t) {
|
|
return t.split(",")[1];
|
|
});
|
|
},
|
|
dataUriToBlobSync: A,
|
|
canvasToBlob: function(t, e, n) {
|
|
return (
|
|
(e = e || "image/png"),
|
|
HTMLCanvasElement.prototype.toBlob
|
|
? new d(function(o) {
|
|
t.toBlob(
|
|
function(t) {
|
|
o(t);
|
|
},
|
|
e,
|
|
n
|
|
);
|
|
})
|
|
: z(t.toDataURL(e, n))
|
|
);
|
|
},
|
|
canvasToDataURL: function(t, e, n) {
|
|
return (
|
|
(e = e || "image/png"),
|
|
t.then(function(t) {
|
|
return t.toDataURL(e, n);
|
|
})
|
|
);
|
|
},
|
|
blobToCanvas: function(t) {
|
|
return M(t).then(function(t) {
|
|
var e, n;
|
|
return (
|
|
(e = t),
|
|
URL.revokeObjectURL(e.src),
|
|
(n = s.create(f.getWidth(t), f.getHeight(t))),
|
|
s.get2dContext(n).drawImage(t, 0, 0),
|
|
n
|
|
);
|
|
});
|
|
},
|
|
uriToBlob: function(t) {
|
|
return 0 === t.indexOf("blob:")
|
|
? j(t)
|
|
: 0 === t.indexOf("data:")
|
|
? z(t)
|
|
: null;
|
|
}
|
|
},
|
|
L = function(t) {
|
|
return S.blobToImage(t);
|
|
},
|
|
H = function(t) {
|
|
return S.imageToBlob(t);
|
|
};
|
|
function O(t, e, n) {
|
|
var o = e.type;
|
|
function r(e, n) {
|
|
return t.then(function(t) {
|
|
return S.canvasToDataURL(t, e, n);
|
|
});
|
|
}
|
|
return {
|
|
getType: p.constant(o),
|
|
toBlob: function() {
|
|
return d.resolve(e);
|
|
},
|
|
toDataURL: function() {
|
|
return n;
|
|
},
|
|
toBase64: function() {
|
|
return n.split(",")[1];
|
|
},
|
|
toAdjustedBlob: function(e, n) {
|
|
return t.then(function(t) {
|
|
return S.canvasToBlob(t, e, n);
|
|
});
|
|
},
|
|
toAdjustedDataURL: r,
|
|
toAdjustedBase64: function(t, e) {
|
|
return r(t, e).then(function(t) {
|
|
return t.split(",")[1];
|
|
});
|
|
},
|
|
toCanvas: function() {
|
|
return t.then(s.clone);
|
|
}
|
|
};
|
|
}
|
|
function _(t) {
|
|
return S.blobToDataUri(t).then(function(e) {
|
|
return O(S.blobToCanvas(t), t, e);
|
|
});
|
|
}
|
|
var D = {
|
|
fromBlob: _,
|
|
fromCanvas: function(t, e) {
|
|
return S.canvasToBlob(t, e).then(function(e) {
|
|
return O(d.resolve(t), e, t.toDataURL());
|
|
});
|
|
},
|
|
fromImage: function(t) {
|
|
return S.imageToBlob(t).then(function(t) {
|
|
return _(t);
|
|
});
|
|
},
|
|
fromBlobAndUrlSync: function(t, e) {
|
|
return O(S.blobToCanvas(t), t, e);
|
|
}
|
|
};
|
|
function F(t, e, n) {
|
|
return (t = parseFloat(t)) > n ? (t = n) : t < e && (t = e), t;
|
|
}
|
|
var P = [
|
|
0,
|
|
0.01,
|
|
0.02,
|
|
0.04,
|
|
0.05,
|
|
0.06,
|
|
0.07,
|
|
0.08,
|
|
0.1,
|
|
0.11,
|
|
0.12,
|
|
0.14,
|
|
0.15,
|
|
0.16,
|
|
0.17,
|
|
0.18,
|
|
0.2,
|
|
0.21,
|
|
0.22,
|
|
0.24,
|
|
0.25,
|
|
0.27,
|
|
0.28,
|
|
0.3,
|
|
0.32,
|
|
0.34,
|
|
0.36,
|
|
0.38,
|
|
0.4,
|
|
0.42,
|
|
0.44,
|
|
0.46,
|
|
0.48,
|
|
0.5,
|
|
0.53,
|
|
0.56,
|
|
0.59,
|
|
0.62,
|
|
0.65,
|
|
0.68,
|
|
0.71,
|
|
0.74,
|
|
0.77,
|
|
0.8,
|
|
0.83,
|
|
0.86,
|
|
0.89,
|
|
0.92,
|
|
0.95,
|
|
0.98,
|
|
1,
|
|
1.06,
|
|
1.12,
|
|
1.18,
|
|
1.24,
|
|
1.3,
|
|
1.36,
|
|
1.42,
|
|
1.48,
|
|
1.54,
|
|
1.6,
|
|
1.66,
|
|
1.72,
|
|
1.78,
|
|
1.84,
|
|
1.9,
|
|
1.96,
|
|
2,
|
|
2.12,
|
|
2.25,
|
|
2.37,
|
|
2.5,
|
|
2.62,
|
|
2.75,
|
|
2.87,
|
|
3,
|
|
3.2,
|
|
3.4,
|
|
3.6,
|
|
3.8,
|
|
4,
|
|
4.3,
|
|
4.7,
|
|
4.9,
|
|
5,
|
|
5.5,
|
|
6,
|
|
6.5,
|
|
6.8,
|
|
7,
|
|
7.3,
|
|
7.5,
|
|
7.8,
|
|
8,
|
|
8.4,
|
|
8.7,
|
|
9,
|
|
9.4,
|
|
9.6,
|
|
9.8,
|
|
10
|
|
];
|
|
function W(t, e) {
|
|
var n,
|
|
o,
|
|
r,
|
|
i,
|
|
a = [],
|
|
u = new Array(10);
|
|
for (n = 0; n < 5; n++) {
|
|
for (o = 0; o < 5; o++) a[o] = e[o + 5 * n];
|
|
for (o = 0; o < 5; o++) {
|
|
for (i = 0, r = 0; r < 5; r++) i += t[o + 5 * r] * a[r];
|
|
u[o + 5 * n] = i;
|
|
}
|
|
}
|
|
return u;
|
|
}
|
|
function q(t, e) {
|
|
return (
|
|
(e = F(e, 0, 1)),
|
|
t.map(function(t, n) {
|
|
return n % 6 == 0 ? (t = 1 - (1 - t) * e) : (t *= e), F(t, 0, 1);
|
|
})
|
|
);
|
|
}
|
|
var V = {
|
|
identity: function() {
|
|
return [
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
];
|
|
},
|
|
adjust: q,
|
|
multiply: W,
|
|
adjustContrast: function(t, e) {
|
|
var n;
|
|
return (
|
|
(e = F(e, -1, 1)),
|
|
W(t, [
|
|
(n =
|
|
(e *= 100) < 0
|
|
? 127 + (e / 100) * 127
|
|
: 127 *
|
|
(n =
|
|
0 == (n = e % 1)
|
|
? P[e]
|
|
: P[Math.floor(e)] * (1 - n) + P[Math.floor(e) + 1] * n) +
|
|
127) / 127,
|
|
0,
|
|
0,
|
|
0,
|
|
0.5 * (127 - n),
|
|
0,
|
|
n / 127,
|
|
0,
|
|
0,
|
|
0.5 * (127 - n),
|
|
0,
|
|
0,
|
|
n / 127,
|
|
0,
|
|
0.5 * (127 - n),
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
])
|
|
);
|
|
},
|
|
adjustBrightness: function(t, e) {
|
|
return W(t, [
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
(e = F(255 * e, -255, 255)),
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
e,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
e,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
]);
|
|
},
|
|
adjustSaturation: function(t, e) {
|
|
var n, o, r;
|
|
return W(t, [
|
|
(o = 0.3086) * (1 - (n = 1 + ((e = F(e, -1, 1)) > 0 ? 3 * e : e))) + n,
|
|
(r = 0.6094) * (1 - n),
|
|
0.082 * (1 - n),
|
|
0,
|
|
0,
|
|
o * (1 - n),
|
|
r * (1 - n) + n,
|
|
0.082 * (1 - n),
|
|
0,
|
|
0,
|
|
o * (1 - n),
|
|
r * (1 - n),
|
|
0.082 * (1 - n) + n,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
]);
|
|
},
|
|
adjustHue: function(t, e) {
|
|
var n, o, r, i, a;
|
|
return (
|
|
(e = (F(e, -180, 180) / 180) * Math.PI),
|
|
(n = Math.cos(e)),
|
|
(o = Math.sin(e)),
|
|
W(t, [
|
|
(r = 0.213) + 0.787 * n + o * -r,
|
|
(i = 0.715) + n * -i + o * -i,
|
|
(a = 0.072) + n * -a + 0.928 * o,
|
|
0,
|
|
0,
|
|
r + n * -r + 0.143 * o,
|
|
i + n * (1 - i) + 0.14 * o,
|
|
a + n * -a + -0.283 * o,
|
|
0,
|
|
0,
|
|
r + n * -r + -0.787 * o,
|
|
i + n * -i + o * i,
|
|
a + 0.928 * n + o * a,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
])
|
|
);
|
|
},
|
|
adjustColors: function(t, e, n, o) {
|
|
return W(t, [
|
|
(e = F(e, 0, 2)),
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
(n = F(n, 0, 2)),
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
(o = F(o, 0, 2)),
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
]);
|
|
},
|
|
adjustSepia: function(t, e) {
|
|
return W(
|
|
t,
|
|
q(
|
|
[
|
|
0.393,
|
|
0.769,
|
|
0.189,
|
|
0,
|
|
0,
|
|
0.349,
|
|
0.686,
|
|
0.168,
|
|
0,
|
|
0,
|
|
0.272,
|
|
0.534,
|
|
0.131,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
],
|
|
(e = F(e, 0, 1))
|
|
)
|
|
);
|
|
},
|
|
adjustGrayscale: function(t, e) {
|
|
return W(
|
|
t,
|
|
q(
|
|
[
|
|
0.33,
|
|
0.34,
|
|
0.33,
|
|
0,
|
|
0,
|
|
0.33,
|
|
0.34,
|
|
0.33,
|
|
0,
|
|
0,
|
|
0.33,
|
|
0.34,
|
|
0.33,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
1
|
|
],
|
|
(e = F(e, 0, 1))
|
|
)
|
|
);
|
|
}
|
|
};
|
|
function N(t, e) {
|
|
return t.toCanvas().then(function(n) {
|
|
return (
|
|
(o = n),
|
|
(r = t.getType()),
|
|
(i = e),
|
|
(u = s.get2dContext(o)),
|
|
(a = (function(t, e) {
|
|
var n,
|
|
o,
|
|
r,
|
|
i,
|
|
a,
|
|
u = t.data,
|
|
c = e[0],
|
|
l = e[1],
|
|
s = e[2],
|
|
f = e[3],
|
|
d = e[4],
|
|
h = e[5],
|
|
p = e[6],
|
|
m = e[7],
|
|
g = e[8],
|
|
v = e[9],
|
|
y = e[10],
|
|
b = e[11],
|
|
w = e[12],
|
|
x = e[13],
|
|
R = e[14],
|
|
I = e[15],
|
|
T = e[16],
|
|
k = e[17],
|
|
C = e[18],
|
|
B = e[19];
|
|
for (a = 0; a < u.length; a += 4)
|
|
(n = u[a]),
|
|
(o = u[a + 1]),
|
|
(r = u[a + 2]),
|
|
(i = u[a + 3]),
|
|
(u[a] = n * c + o * l + r * s + i * f + d),
|
|
(u[a + 1] = n * h + o * p + r * m + i * g + v),
|
|
(u[a + 2] = n * y + o * b + r * w + i * x + R),
|
|
(u[a + 3] = n * I + o * T + r * k + i * C + B);
|
|
return t;
|
|
})(u.getImageData(0, 0, o.width, o.height), i)),
|
|
u.putImageData(a, 0, 0),
|
|
D.fromCanvas(o, r)
|
|
);
|
|
var o, r, i, a, u;
|
|
});
|
|
}
|
|
function X(t, e) {
|
|
return t.toCanvas().then(function(n) {
|
|
return (
|
|
(o = n),
|
|
(r = t.getType()),
|
|
(i = e),
|
|
(c = s.get2dContext(o)),
|
|
(a = c.getImageData(0, 0, o.width, o.height)),
|
|
(u = c.getImageData(0, 0, o.width, o.height)),
|
|
(u = (function(t, e, n) {
|
|
var o, r, i, a, u, c, l, s, f, d, h, p, m, g, v, y, b;
|
|
function w(t, e, n) {
|
|
return t > n ? (t = n) : t < e && (t = e), t;
|
|
}
|
|
for (
|
|
i = Math.round(Math.sqrt(n.length)),
|
|
a = Math.floor(i / 2),
|
|
o = t.data,
|
|
r = e.data,
|
|
y = t.width,
|
|
b = t.height,
|
|
c = 0;
|
|
c < b;
|
|
c++
|
|
)
|
|
for (u = 0; u < y; u++) {
|
|
for (l = s = f = 0, h = 0; h < i; h++)
|
|
for (d = 0; d < i; d++)
|
|
(p = w(u + d - a, 0, y - 1)),
|
|
(m = w(c + h - a, 0, b - 1)),
|
|
(g = 4 * (m * y + p)),
|
|
(v = n[h * i + d]),
|
|
(l += o[g] * v),
|
|
(s += o[g + 1] * v),
|
|
(f += o[g + 2] * v);
|
|
(r[(g = 4 * (c * y + u))] = w(l, 0, 255)),
|
|
(r[g + 1] = w(s, 0, 255)),
|
|
(r[g + 2] = w(f, 0, 255));
|
|
}
|
|
return e;
|
|
})(a, u, i)),
|
|
c.putImageData(u, 0, 0),
|
|
D.fromCanvas(o, r)
|
|
);
|
|
var o, r, i, a, u, c;
|
|
});
|
|
}
|
|
function $(t) {
|
|
return function(e, n) {
|
|
return e.toCanvas().then(function(o) {
|
|
return (function(e, n, o) {
|
|
var r,
|
|
i,
|
|
a = s.get2dContext(e),
|
|
u = new Array(256);
|
|
for (i = 0; i < u.length; i++) u[i] = t(i, o);
|
|
return (
|
|
(r = (function(t, e) {
|
|
var n,
|
|
o = t.data;
|
|
for (n = 0; n < o.length; n += 4)
|
|
(o[n] = e[o[n]]),
|
|
(o[n + 1] = e[o[n + 1]]),
|
|
(o[n + 2] = e[o[n + 2]]);
|
|
return t;
|
|
})(a.getImageData(0, 0, e.width, e.height), u)),
|
|
a.putImageData(r, 0, 0),
|
|
D.fromCanvas(e, n)
|
|
);
|
|
})(o, e.getType(), n);
|
|
});
|
|
};
|
|
}
|
|
function G(t) {
|
|
return function(e, n) {
|
|
return N(e, t(V.identity(), n));
|
|
};
|
|
}
|
|
function Y(t) {
|
|
return function(e) {
|
|
return X(e, t);
|
|
};
|
|
}
|
|
var J,
|
|
K = {
|
|
invert: ((J = [
|
|
-1,
|
|
0,
|
|
0,
|
|
0,
|
|
255,
|
|
0,
|
|
-1,
|
|
0,
|
|
0,
|
|
255,
|
|
0,
|
|
0,
|
|
-1,
|
|
0,
|
|
255,
|
|
0,
|
|
0,
|
|
0,
|
|
1,
|
|
0
|
|
]),
|
|
function(t) {
|
|
return N(t, J);
|
|
}),
|
|
brightness: G(V.adjustBrightness),
|
|
hue: G(V.adjustHue),
|
|
saturate: G(V.adjustSaturation),
|
|
contrast: G(V.adjustContrast),
|
|
grayscale: G(V.adjustGrayscale),
|
|
sepia: G(V.adjustSepia),
|
|
colorize: function(t, e, n, o) {
|
|
return N(t, V.adjustColors(V.identity(), e, n, o));
|
|
},
|
|
sharpen: Y([0, -1, 0, -1, 5, -1, 0, -1, 0]),
|
|
emboss: Y([-2, -1, 0, -1, 1, 1, 0, 1, 2]),
|
|
gamma: $(function(t, e) {
|
|
return 255 * Math.pow(t / 255, 1 - e);
|
|
}),
|
|
exposure: $(function(t, e) {
|
|
return 255 * (1 - Math.exp((-t / 255) * e));
|
|
}),
|
|
colorFilter: N,
|
|
convoluteFilter: X
|
|
},
|
|
Z = {
|
|
scale: function te(t, e, n) {
|
|
var o = f.getWidth(t),
|
|
r = f.getHeight(t),
|
|
i = e / o,
|
|
a = n / r,
|
|
u = !1;
|
|
(i < 0.5 || i > 2) && ((i = i < 0.5 ? 0.5 : 2), (u = !0)),
|
|
(a < 0.5 || a > 2) && ((a = a < 0.5 ? 0.5 : 2), (u = !0));
|
|
var c,
|
|
l,
|
|
h,
|
|
p = ((c = t),
|
|
(l = i),
|
|
(h = a),
|
|
new d(function(t) {
|
|
var e = f.getWidth(c),
|
|
n = f.getHeight(c),
|
|
o = Math.floor(e * l),
|
|
r = Math.floor(n * h),
|
|
i = s.create(o, r),
|
|
a = s.get2dContext(i);
|
|
a.drawImage(c, 0, 0, e, n, 0, 0, o, r), t(i);
|
|
}));
|
|
return u
|
|
? p.then(function(t) {
|
|
return te(t, e, n);
|
|
})
|
|
: p;
|
|
}
|
|
},
|
|
Q = {
|
|
rotate: function(t, e) {
|
|
return t.toCanvas().then(function(n) {
|
|
return (
|
|
(o = n),
|
|
(r = t.getType()),
|
|
(i = e),
|
|
(a = s.create(o.width, o.height)),
|
|
(u = s.get2dContext(a)),
|
|
(c = 0),
|
|
(l = 0),
|
|
(90 != (i = i < 0 ? 360 + i : i) && 270 != i) ||
|
|
s.resize(a, a.height, a.width),
|
|
(90 != i && 180 != i) || (c = a.width),
|
|
(270 != i && 180 != i) || (l = a.height),
|
|
u.translate(c, l),
|
|
u.rotate((i * Math.PI) / 180),
|
|
u.drawImage(o, 0, 0),
|
|
D.fromCanvas(a, r)
|
|
);
|
|
var o, r, i, a, u, c, l;
|
|
});
|
|
},
|
|
flip: function(t, e) {
|
|
return t.toCanvas().then(function(n) {
|
|
return (
|
|
(o = n),
|
|
(r = t.getType()),
|
|
(i = e),
|
|
(a = s.create(o.width, o.height)),
|
|
(u = s.get2dContext(a)),
|
|
"v" == i
|
|
? (u.scale(1, -1), u.drawImage(o, 0, -a.height))
|
|
: (u.scale(-1, 1), u.drawImage(o, -a.width, 0)),
|
|
D.fromCanvas(a, r)
|
|
);
|
|
var o, r, i, a, u;
|
|
});
|
|
},
|
|
crop: function(t, e, n, o, r) {
|
|
return t.toCanvas().then(function(i) {
|
|
return (
|
|
(a = i),
|
|
(u = t.getType()),
|
|
(c = e),
|
|
(l = n),
|
|
(f = o),
|
|
(d = r),
|
|
(h = s.create(f, d)),
|
|
s.get2dContext(h).drawImage(a, -c, -l),
|
|
D.fromCanvas(h, u)
|
|
);
|
|
var a, u, c, l, f, d, h;
|
|
});
|
|
},
|
|
resize: function(t, e, n) {
|
|
return t.toCanvas().then(function(o) {
|
|
return Z.scale(o, e, n).then(function(e) {
|
|
return D.fromCanvas(e, t.getType());
|
|
});
|
|
});
|
|
}
|
|
},
|
|
tt = {
|
|
invert: function(t) {
|
|
return K.invert(t);
|
|
},
|
|
sharpen: function(t) {
|
|
return K.sharpen(t);
|
|
},
|
|
emboss: function(t) {
|
|
return K.emboss(t);
|
|
},
|
|
brightness: function(t, e) {
|
|
return K.brightness(t, e);
|
|
},
|
|
hue: function(t, e) {
|
|
return K.hue(t, e);
|
|
},
|
|
saturate: function(t, e) {
|
|
return K.saturate(t, e);
|
|
},
|
|
contrast: function(t, e) {
|
|
return K.contrast(t, e);
|
|
},
|
|
grayscale: function(t, e) {
|
|
return K.grayscale(t, e);
|
|
},
|
|
sepia: function(t, e) {
|
|
return K.sepia(t, e);
|
|
},
|
|
colorize: function(t, e, n, o) {
|
|
return K.colorize(t, e, n, o);
|
|
},
|
|
gamma: function(t, e) {
|
|
return K.gamma(t, e);
|
|
},
|
|
exposure: function(t, e) {
|
|
return K.exposure(t, e);
|
|
},
|
|
flip: function(t, e) {
|
|
return Q.flip(t, e);
|
|
},
|
|
crop: function(t, e, n, o, r) {
|
|
return Q.crop(t, e, n, o, r);
|
|
},
|
|
resize: function(t, e, n) {
|
|
return Q.resize(t, e, n);
|
|
},
|
|
rotate: function(t, e) {
|
|
return Q.rotate(t, e);
|
|
}
|
|
},
|
|
et = function(t) {
|
|
return t.toBlob();
|
|
},
|
|
nt = {
|
|
blobToImageResult: function(t) {
|
|
return D.fromBlob(t);
|
|
},
|
|
fromBlobAndUrlSync: function(t, e) {
|
|
return D.fromBlobAndUrlSync(t, e);
|
|
},
|
|
imageToImageResult: function(t) {
|
|
return D.fromImage(t);
|
|
},
|
|
imageResultToBlob: function(t, e, n) {
|
|
return e === undefined && n === undefined
|
|
? et(t)
|
|
: t.toAdjustedBlob(e, n);
|
|
},
|
|
imageResultToOriginalBlob: et,
|
|
imageResultToDataURL: function(t) {
|
|
return t.toDataURL();
|
|
}
|
|
},
|
|
ot = function() {
|
|
return T("URL");
|
|
},
|
|
rt = {
|
|
createObjectURL: function(t) {
|
|
return ot().createObjectURL(t);
|
|
},
|
|
revokeObjectURL: function(t) {
|
|
ot().revokeObjectURL(t);
|
|
}
|
|
},
|
|
it = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
at = tinymce.util.Tools.resolve("tinymce.util.Promise"),
|
|
ut = tinymce.util.Tools.resolve("tinymce.util.URI"),
|
|
ct = function(t) {
|
|
return t.getParam(
|
|
"imagetools_toolbar",
|
|
"rotateleft rotateright | flipv fliph | crop editimage imageoptions"
|
|
);
|
|
},
|
|
lt = function(t) {
|
|
return t.getParam("imagetools_proxy");
|
|
},
|
|
st = {
|
|
getImageSize: function(t) {
|
|
var e, n;
|
|
function o(t) {
|
|
return /^[0-9\.]+px$/.test(t);
|
|
}
|
|
return (
|
|
(e = t.style.width),
|
|
(n = t.style.height),
|
|
e || n
|
|
? o(e) && o(n)
|
|
? { w: parseInt(e, 10), h: parseInt(n, 10) }
|
|
: null
|
|
: ((e = t.width),
|
|
(n = t.height),
|
|
e && n ? { w: parseInt(e, 10), h: parseInt(n, 10) } : null)
|
|
);
|
|
},
|
|
setImageSize: function(t, e) {
|
|
var n, o;
|
|
e &&
|
|
((n = t.style.width),
|
|
(o = t.style.height),
|
|
(n || o) &&
|
|
((t.style.width = e.w + "px"),
|
|
(t.style.height = e.h + "px"),
|
|
t.removeAttribute("data-mce-style")),
|
|
(n = t.width),
|
|
(o = t.height),
|
|
(n || o) &&
|
|
(t.setAttribute("width", e.w), t.setAttribute("height", e.h)));
|
|
},
|
|
getNaturalImageSize: function(t) {
|
|
return { w: t.naturalWidth, h: t.naturalHeight };
|
|
}
|
|
},
|
|
ft = (Array.prototype.indexOf,
|
|
undefined,
|
|
Array.prototype.push,
|
|
Array.prototype.slice,
|
|
function(t, e) {
|
|
for (var n = 0, o = t.length; n < o; n++) {
|
|
var r = t[n];
|
|
if (e(r, n, t)) return w.some(r);
|
|
}
|
|
return w.none();
|
|
}),
|
|
dt = function(t) {
|
|
return null !== t && t !== undefined;
|
|
},
|
|
ht = {
|
|
traverse: function(t, e) {
|
|
var n;
|
|
return (
|
|
(n = e.reduce(function(t, e) {
|
|
return dt(t) ? t[e] : undefined;
|
|
}, t)),
|
|
dt(n) ? n : null
|
|
);
|
|
},
|
|
readBlob: function(t) {
|
|
return new at(function(e) {
|
|
var n = new C();
|
|
(n.onload = function(t) {
|
|
var n = t.target;
|
|
e(n.result);
|
|
}),
|
|
n.readAsText(t);
|
|
});
|
|
},
|
|
requestUrlAsBlob: function(t, e) {
|
|
return new at(function(o) {
|
|
var r;
|
|
((r = new function() {
|
|
return new (T("XMLHttpRequest"))();
|
|
}()).onreadystatechange = function() {
|
|
4 === r.readyState && o({ status: r.status, blob: this.response });
|
|
}),
|
|
r.open("GET", t, !0),
|
|
n.each(e, function(t, e) {
|
|
r.setRequestHeader(e, t);
|
|
}),
|
|
(r.responseType = "blob"),
|
|
r.send();
|
|
});
|
|
},
|
|
parseJson: function(t) {
|
|
var e;
|
|
try {
|
|
e = JSON.parse(t);
|
|
} catch (n) {}
|
|
return e;
|
|
}
|
|
},
|
|
pt = [
|
|
{ code: 404, message: "Could not find Image Proxy" },
|
|
{ code: 403, message: "Rejected request" },
|
|
{ code: 0, message: "Incorrect Image Proxy URL" }
|
|
],
|
|
mt = [
|
|
{
|
|
type: "key_missing",
|
|
message: "The request did not include an api key."
|
|
},
|
|
{
|
|
type: "key_not_found",
|
|
message: "The provided api key could not be found."
|
|
},
|
|
{
|
|
type: "domain_not_trusted",
|
|
message: "The api key is not valid for the request origins."
|
|
}
|
|
],
|
|
gt = function(t) {
|
|
return (
|
|
"ImageProxy HTTP error: " +
|
|
ft(pt, function(e) {
|
|
return t === e.code;
|
|
}).fold(p.constant("Unknown ImageProxy error"), function(t) {
|
|
return t.message;
|
|
})
|
|
);
|
|
},
|
|
vt = function(t) {
|
|
var e = gt(t);
|
|
return at.reject(e);
|
|
},
|
|
yt = function(t) {
|
|
return ft(mt, function(e) {
|
|
return e.type === t;
|
|
}).fold(p.constant("Unknown service error"), function(t) {
|
|
return t.message;
|
|
});
|
|
},
|
|
bt = function(t, e) {
|
|
return ht.readBlob(e).then(function(t) {
|
|
var e,
|
|
n,
|
|
o,
|
|
r = ((e = t),
|
|
(n = ht.parseJson(e)),
|
|
"ImageProxy Service error: " +
|
|
((o = ht.traverse(n, ["error", "type"]))
|
|
? yt(o)
|
|
: "Invalid JSON in service error message"));
|
|
return at.reject(r);
|
|
});
|
|
},
|
|
wt = {
|
|
handleServiceErrorResponse: function(t, e) {
|
|
return 400 === (n = t) || 403 === n || 500 === n ? bt(0, e) : vt(t);
|
|
var n;
|
|
},
|
|
handleHttpError: vt,
|
|
getHttpErrorMsg: gt,
|
|
getServiceErrorMsg: yt
|
|
},
|
|
xt = function(t, e) {
|
|
return ht
|
|
.requestUrlAsBlob(
|
|
((n = t),
|
|
(o = e),
|
|
(r = -1 === n.indexOf("?") ? "?" : "&"),
|
|
/[?&]apiKey=/.test(n) || !o
|
|
? n
|
|
: n + r + "apiKey=" + encodeURIComponent(o)),
|
|
{
|
|
"Content-Type": "application/json;charset=UTF-8",
|
|
"tiny-api-key": e
|
|
}
|
|
)
|
|
.then(function(t) {
|
|
return t.status < 200 || t.status >= 300
|
|
? wt.handleServiceErrorResponse(t.status, t.blob)
|
|
: at.resolve(t.blob);
|
|
});
|
|
var n, o, r;
|
|
},
|
|
Rt = function(t, e) {
|
|
return e
|
|
? xt(t, e)
|
|
: ((n = t),
|
|
ht.requestUrlAsBlob(n, {}).then(function(t) {
|
|
return t.status < 200 || t.status >= 300
|
|
? wt.handleHttpError(t.status)
|
|
: at.resolve(t.blob);
|
|
}));
|
|
var n;
|
|
},
|
|
It = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
Tt = tinymce.util.Tools.resolve("tinymce.ui.Factory"),
|
|
kt = function() {
|
|
var t = [],
|
|
e = -1;
|
|
function n() {
|
|
return e > 0;
|
|
}
|
|
function o() {
|
|
return -1 !== e && e < t.length - 1;
|
|
}
|
|
return {
|
|
data: t,
|
|
add: function(n) {
|
|
var o;
|
|
return (o = t.splice(++e)), t.push(n), { state: n, removed: o };
|
|
},
|
|
undo: function() {
|
|
if (n()) return t[--e];
|
|
},
|
|
redo: function() {
|
|
if (o()) return t[++e];
|
|
},
|
|
canUndo: n,
|
|
canRedo: o
|
|
};
|
|
},
|
|
Ct = tinymce.util.Tools.resolve("tinymce.geom.Rect"),
|
|
Bt = function(t) {
|
|
return new at(function(e) {
|
|
var n = function() {
|
|
t.removeEventListener("load", n), e(t);
|
|
};
|
|
t.complete ? e(t) : t.addEventListener("load", n);
|
|
});
|
|
},
|
|
Ut = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),
|
|
Mt = tinymce.util.Tools.resolve("tinymce.util.Observable"),
|
|
jt = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
At = 0,
|
|
zt = function(t, e, o, r, i) {
|
|
var a,
|
|
u,
|
|
c,
|
|
l,
|
|
s = "mce-",
|
|
f = s + "crid-" + At++;
|
|
function d(t, e) {
|
|
return { x: e.x - t.x, y: e.y - t.y, w: e.w, h: e.h };
|
|
}
|
|
function h(e, n, r, i) {
|
|
var u, c, l, s, f;
|
|
(u = n.x),
|
|
(c = n.y),
|
|
(l = n.w),
|
|
(s = n.h),
|
|
(u += r * e.deltaX),
|
|
(c += i * e.deltaY),
|
|
(l += r * e.deltaW),
|
|
(s += i * e.deltaH),
|
|
l < 20 && (l = 20),
|
|
s < 20 && (s = 20),
|
|
(f = t = Ct.clamp({ x: u, y: c, w: l, h: s }, o, "move" === e.name)),
|
|
(f = d(o, f)),
|
|
a.fire("updateRect", { rect: f }),
|
|
g(f);
|
|
}
|
|
function p(t) {
|
|
function o(t, e) {
|
|
e.h < 0 && (e.h = 0),
|
|
e.w < 0 && (e.w = 0),
|
|
Ut("#" + f + "-" + t, r).css({
|
|
left: e.x,
|
|
top: e.y,
|
|
width: e.w,
|
|
height: e.h
|
|
});
|
|
}
|
|
n.each(u, function(e) {
|
|
Ut("#" + f + "-" + e.name, r).css({
|
|
left: t.w * e.xMul + t.x,
|
|
top: t.h * e.yMul + t.y
|
|
});
|
|
}),
|
|
o("top", { x: e.x, y: e.y, w: e.w, h: t.y - e.y }),
|
|
o("right", {
|
|
x: t.x + t.w,
|
|
y: t.y,
|
|
w: e.w - t.x - t.w + e.x,
|
|
h: t.h
|
|
}),
|
|
o("bottom", {
|
|
x: e.x,
|
|
y: t.y + t.h,
|
|
w: e.w,
|
|
h: e.h - t.y - t.h + e.y
|
|
}),
|
|
o("left", { x: e.x, y: t.y, w: t.x - e.x, h: t.h }),
|
|
o("move", t);
|
|
}
|
|
function m(e) {
|
|
p((t = e));
|
|
}
|
|
function g(t) {
|
|
var e, n;
|
|
m(((e = o), { x: (n = t).x + e.x, y: n.y + e.y, w: n.w, h: n.h }));
|
|
}
|
|
return (
|
|
(u = [
|
|
{
|
|
name: "move",
|
|
xMul: 0,
|
|
yMul: 0,
|
|
deltaX: 1,
|
|
deltaY: 1,
|
|
deltaW: 0,
|
|
deltaH: 0,
|
|
label: "Crop Mask"
|
|
},
|
|
{
|
|
name: "nw",
|
|
xMul: 0,
|
|
yMul: 0,
|
|
deltaX: 1,
|
|
deltaY: 1,
|
|
deltaW: -1,
|
|
deltaH: -1,
|
|
label: "Top Left Crop Handle"
|
|
},
|
|
{
|
|
name: "ne",
|
|
xMul: 1,
|
|
yMul: 0,
|
|
deltaX: 0,
|
|
deltaY: 1,
|
|
deltaW: 1,
|
|
deltaH: -1,
|
|
label: "Top Right Crop Handle"
|
|
},
|
|
{
|
|
name: "sw",
|
|
xMul: 0,
|
|
yMul: 1,
|
|
deltaX: 1,
|
|
deltaY: 0,
|
|
deltaW: -1,
|
|
deltaH: 1,
|
|
label: "Bottom Left Crop Handle"
|
|
},
|
|
{
|
|
name: "se",
|
|
xMul: 1,
|
|
yMul: 1,
|
|
deltaX: 0,
|
|
deltaY: 0,
|
|
deltaW: 1,
|
|
deltaH: 1,
|
|
label: "Bottom Right Crop Handle"
|
|
}
|
|
]),
|
|
(l = ["top", "right", "bottom", "left"]),
|
|
Ut(
|
|
'<div id="' +
|
|
f +
|
|
'" class="' +
|
|
s +
|
|
'croprect-container" role="grid" aria-dropeffect="execute">'
|
|
).appendTo(r),
|
|
n.each(l, function(t) {
|
|
Ut("#" + f, r).append(
|
|
'<div id="' +
|
|
f +
|
|
"-" +
|
|
t +
|
|
'"class="' +
|
|
s +
|
|
'croprect-block" style="display: none" data-mce-bogus="all">'
|
|
);
|
|
}),
|
|
n.each(u, function(t) {
|
|
Ut("#" + f, r).append(
|
|
'<div id="' +
|
|
f +
|
|
"-" +
|
|
t.name +
|
|
'" class="' +
|
|
s +
|
|
"croprect-handle " +
|
|
s +
|
|
"croprect-handle-" +
|
|
t.name +
|
|
'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="' +
|
|
t.label +
|
|
'" aria-grabbed="false">'
|
|
);
|
|
}),
|
|
(c = n.map(u, function(e) {
|
|
var n;
|
|
return new (Tt.get("DragHelper"))(f, {
|
|
document: r.ownerDocument,
|
|
handle: f + "-" + e.name,
|
|
start: function() {
|
|
n = t;
|
|
},
|
|
drag: function(t) {
|
|
h(e, n, t.deltaX, t.deltaY);
|
|
}
|
|
});
|
|
})),
|
|
p(t),
|
|
Ut(r).on("focusin focusout", function(t) {
|
|
Ut(t.target).attr("aria-grabbed", "focus" === t.type);
|
|
}),
|
|
Ut(r).on("keydown", function(e) {
|
|
var o;
|
|
function r(t, e, n, r, i) {
|
|
t.stopPropagation(), t.preventDefault(), h(o, n, r, i);
|
|
}
|
|
switch (
|
|
(n.each(u, function(t) {
|
|
if (e.target.id === f + "-" + t.name) return (o = t), !1;
|
|
}),
|
|
e.keyCode)
|
|
) {
|
|
case jt.LEFT:
|
|
r(e, 0, t, -10, 0);
|
|
break;
|
|
case jt.RIGHT:
|
|
r(e, 0, t, 10, 0);
|
|
break;
|
|
case jt.UP:
|
|
r(e, 0, t, 0, -10);
|
|
break;
|
|
case jt.DOWN:
|
|
r(e, 0, t, 0, 10);
|
|
break;
|
|
case jt.ENTER:
|
|
case jt.SPACEBAR:
|
|
e.preventDefault(), i();
|
|
}
|
|
}),
|
|
(a = n.extend(
|
|
{
|
|
toggleVisibility: function(t) {
|
|
var e;
|
|
(e = n
|
|
.map(u, function(t) {
|
|
return "#" + f + "-" + t.name;
|
|
})
|
|
.concat(
|
|
n.map(l, function(t) {
|
|
return "#" + f + "-" + t;
|
|
})
|
|
)
|
|
.join(",")),
|
|
t ? Ut(e, r).show() : Ut(e, r).hide();
|
|
},
|
|
setClampRect: function(e) {
|
|
(o = e), p(t);
|
|
},
|
|
setRect: m,
|
|
getInnerRect: function() {
|
|
return d(o, t);
|
|
},
|
|
setInnerRect: g,
|
|
setViewPortRect: function(n) {
|
|
(e = n), p(t);
|
|
},
|
|
destroy: function() {
|
|
n.each(c, function(t) {
|
|
t.destroy();
|
|
}),
|
|
(c = []);
|
|
}
|
|
},
|
|
Mt
|
|
))
|
|
);
|
|
},
|
|
Et = {
|
|
create: function(t) {
|
|
return new (Tt.get("Control").extend({
|
|
Defaults: { classes: "imagepanel" },
|
|
selection: function(t) {
|
|
return arguments.length
|
|
? (this.state.set("rect", t), this)
|
|
: this.state.get("rect");
|
|
},
|
|
imageSize: function() {
|
|
var t = this.state.get("viewRect");
|
|
return { w: t.w, h: t.h };
|
|
},
|
|
toggleCropRect: function(t) {
|
|
this.state.set("cropEnabled", t);
|
|
},
|
|
imageSrc: function(t) {
|
|
var e = this,
|
|
n = new Image();
|
|
(n.src = t),
|
|
Bt(n).then(function() {
|
|
var t,
|
|
o,
|
|
r = e.state.get("viewRect");
|
|
if ((o = e.$el.find("img"))[0]) o.replaceWith(n);
|
|
else {
|
|
var i = document.createElement("div");
|
|
(i.className = "mce-imagepanel-bg"),
|
|
e.getEl().appendChild(i),
|
|
e.getEl().appendChild(n);
|
|
}
|
|
(t = { x: 0, y: 0, w: n.naturalWidth, h: n.naturalHeight }),
|
|
e.state.set("viewRect", t),
|
|
e.state.set("rect", Ct.inflate(t, -20, -20)),
|
|
(r && r.w === t.w && r.h === t.h) || e.zoomFit(),
|
|
e.repaintImage(),
|
|
e.fire("load");
|
|
});
|
|
},
|
|
zoom: function(t) {
|
|
return arguments.length
|
|
? (this.state.set("zoom", t), this)
|
|
: this.state.get("zoom");
|
|
},
|
|
postRender: function() {
|
|
return this.imageSrc(this.settings.imageSrc), this._super();
|
|
},
|
|
zoomFit: function() {
|
|
var t, e, n, o, r, i;
|
|
(t = this.$el.find("img")),
|
|
(e = this.getEl().clientWidth),
|
|
(n = this.getEl().clientHeight),
|
|
(o = t[0].naturalWidth),
|
|
(r = t[0].naturalHeight),
|
|
(i = Math.min((e - 10) / o, (n - 10) / r)) >= 1 && (i = 1),
|
|
this.zoom(i);
|
|
},
|
|
repaintImage: function() {
|
|
var t, e, n, o, r, i, a, u, c, l, s;
|
|
(s = this.getEl()),
|
|
(c = this.zoom()),
|
|
(l = this.state.get("rect")),
|
|
(a = this.$el.find("img")),
|
|
(u = this.$el.find(".mce-imagepanel-bg")),
|
|
(r = s.offsetWidth),
|
|
(i = s.offsetHeight),
|
|
(n = a[0].naturalWidth * c),
|
|
(o = a[0].naturalHeight * c),
|
|
(t = Math.max(0, r / 2 - n / 2)),
|
|
(e = Math.max(0, i / 2 - o / 2)),
|
|
a.css({ left: t, top: e, width: n, height: o }),
|
|
u.css({ left: t, top: e, width: n, height: o }),
|
|
this.cropRect &&
|
|
(this.cropRect.setRect({
|
|
x: l.x * c + t,
|
|
y: l.y * c + e,
|
|
w: l.w * c,
|
|
h: l.h * c
|
|
}),
|
|
this.cropRect.setClampRect({ x: t, y: e, w: n, h: o }),
|
|
this.cropRect.setViewPortRect({ x: 0, y: 0, w: r, h: i }));
|
|
},
|
|
bindStates: function() {
|
|
var t = this;
|
|
t.state.on("change:cropEnabled", function(e) {
|
|
t.cropRect.toggleVisibility(e.value), t.repaintImage();
|
|
}),
|
|
t.state.on("change:zoom", function() {
|
|
t.repaintImage();
|
|
}),
|
|
t.state.on("change:rect", function(e) {
|
|
var n,
|
|
o = e.value;
|
|
t.cropRect ||
|
|
((n = o),
|
|
(t.cropRect = zt(
|
|
n,
|
|
t.state.get("viewRect"),
|
|
t.state.get("viewRect"),
|
|
t.getEl(),
|
|
function() {
|
|
t.fire("crop");
|
|
}
|
|
)),
|
|
t.cropRect.on("updateRect", function(e) {
|
|
var n = e.rect,
|
|
o = t.zoom();
|
|
(n = {
|
|
x: Math.round(n.x / o),
|
|
y: Math.round(n.y / o),
|
|
w: Math.round(n.w / o),
|
|
h: Math.round(n.h / o)
|
|
}),
|
|
t.state.set("rect", n);
|
|
}),
|
|
t.on("remove", t.cropRect.destroy)),
|
|
t.cropRect.setRect(o);
|
|
});
|
|
}
|
|
}))(t);
|
|
}
|
|
};
|
|
function St(t) {
|
|
return { blob: t, url: rt.createObjectURL(t) };
|
|
}
|
|
function Lt(t) {
|
|
t && rt.revokeObjectURL(t.url);
|
|
}
|
|
function Ht(t) {
|
|
n.each(t, Lt);
|
|
}
|
|
function Ot(t, e, o, r) {
|
|
var i,
|
|
a,
|
|
u,
|
|
c,
|
|
l,
|
|
s,
|
|
f,
|
|
d,
|
|
h,
|
|
p,
|
|
m,
|
|
g,
|
|
v,
|
|
y,
|
|
b,
|
|
w,
|
|
x,
|
|
R,
|
|
I,
|
|
T,
|
|
k,
|
|
C,
|
|
B,
|
|
U,
|
|
M,
|
|
j,
|
|
A,
|
|
z = kt();
|
|
function E(t) {
|
|
var e, n, o, r;
|
|
(e = i.find("#w")[0]),
|
|
(n = i.find("#h")[0]),
|
|
(o = parseInt(e.value(), 10)),
|
|
(r = parseInt(n.value(), 10)),
|
|
i.find("#constrain")[0].checked() &&
|
|
U &&
|
|
M &&
|
|
o &&
|
|
r &&
|
|
("w" === t.control.settings.name
|
|
? ((r = Math.round(o * j)), n.value(r))
|
|
: ((o = Math.round(r * A)), e.value(o))),
|
|
(U = o),
|
|
(M = r);
|
|
}
|
|
function S(t) {
|
|
return Math.round(100 * t) + "%";
|
|
}
|
|
function L() {
|
|
i.find("#undo").disabled(!z.canUndo()),
|
|
i.find("#redo").disabled(!z.canRedo()),
|
|
i.statusbar.find("#save").disabled(!z.canUndo());
|
|
}
|
|
function H() {
|
|
i.find("#undo").disabled(!0), i.find("#redo").disabled(!0);
|
|
}
|
|
function O(t) {
|
|
t && d.imageSrc(t.url);
|
|
}
|
|
function _(t) {
|
|
return function() {
|
|
var e = n.grep(B, function(e) {
|
|
return e.settings.name !== t;
|
|
});
|
|
n.each(e, function(t) {
|
|
t.hide();
|
|
}),
|
|
t.show(),
|
|
t.focus();
|
|
};
|
|
}
|
|
function D(t) {
|
|
O((c = St(t)));
|
|
}
|
|
function F(t) {
|
|
O((e = St(t))), Ht(z.add(e).removed), L();
|
|
}
|
|
function P() {
|
|
var t = d.selection();
|
|
nt.blobToImageResult(e.blob).then(function(e) {
|
|
tt.crop(e, t.x, t.y, t.w, t.h)
|
|
.then(X)
|
|
.then(function(t) {
|
|
F(t), q();
|
|
});
|
|
});
|
|
}
|
|
var W = function(t) {
|
|
var n = [].slice.call(arguments, 1);
|
|
return function() {
|
|
var o = c || e;
|
|
nt.blobToImageResult(o.blob).then(function(e) {
|
|
t.apply(this, [e].concat(n))
|
|
.then(X)
|
|
.then(D);
|
|
});
|
|
};
|
|
};
|
|
function q() {
|
|
O(e), Lt(c), _(a)(), L();
|
|
}
|
|
function V() {
|
|
c
|
|
? (F(c.blob), q())
|
|
: (function e(n, o) {
|
|
c
|
|
? o()
|
|
: setTimeout(function() {
|
|
n-- > 0
|
|
? e(n, o)
|
|
: t.windowManager.alert(
|
|
"Error: failed to apply image operation."
|
|
);
|
|
}, 10);
|
|
})(100, V);
|
|
}
|
|
function N(t) {
|
|
return Tt.create("Form", {
|
|
layout: "flex",
|
|
direction: "row",
|
|
labelGap: 5,
|
|
border: "0 0 1 0",
|
|
align: "center",
|
|
pack: "center",
|
|
padding: "0 10 0 10",
|
|
spacing: 5,
|
|
flex: 0,
|
|
minHeight: 60,
|
|
defaults: { classes: "imagetool", type: "button" },
|
|
items: t
|
|
});
|
|
}
|
|
var X = function(t) {
|
|
return t.toBlob();
|
|
};
|
|
function $(t, n) {
|
|
return N([
|
|
{ text: "Back", onclick: q },
|
|
{ type: "spacer", flex: 1 },
|
|
{ text: "Apply", subtype: "primary", onclick: V }
|
|
])
|
|
.hide()
|
|
.on("show", function() {
|
|
H(),
|
|
nt
|
|
.blobToImageResult(e.blob)
|
|
.then(function(t) {
|
|
return n(t);
|
|
})
|
|
.then(X)
|
|
.then(function(t) {
|
|
var e = St(t);
|
|
O(e), Lt(c), (c = e);
|
|
});
|
|
});
|
|
}
|
|
function G(t, n, o, r, i) {
|
|
return N([
|
|
{ text: "Back", onclick: q },
|
|
{ type: "spacer", flex: 1 },
|
|
{
|
|
type: "slider",
|
|
flex: 1,
|
|
ondragend: function(t) {
|
|
var o;
|
|
(o = t.value),
|
|
nt
|
|
.blobToImageResult(e.blob)
|
|
.then(function(t) {
|
|
return n(t, o);
|
|
})
|
|
.then(X)
|
|
.then(function(t) {
|
|
var e = St(t);
|
|
O(e), Lt(c), (c = e);
|
|
});
|
|
},
|
|
minValue: r,
|
|
maxValue: i,
|
|
value: o,
|
|
previewFilter: S
|
|
},
|
|
{ type: "spacer", flex: 1 },
|
|
{ text: "Apply", subtype: "primary", onclick: V }
|
|
])
|
|
.hide()
|
|
.on("show", function() {
|
|
this.find("slider").value(o), H();
|
|
});
|
|
}
|
|
(l = N([
|
|
{ text: "Back", onclick: q },
|
|
{ type: "spacer", flex: 1 },
|
|
{ text: "Apply", subtype: "primary", onclick: P }
|
|
])
|
|
.hide()
|
|
.on("show hide", function(t) {
|
|
d.toggleCropRect("show" === t.type);
|
|
})
|
|
.on("show", H)),
|
|
(s = N([
|
|
{ text: "Back", onclick: q },
|
|
{ type: "spacer", flex: 1 },
|
|
{ type: "textbox", name: "w", label: "Width", size: 4, onkeyup: E },
|
|
{ type: "textbox", name: "h", label: "Height", size: 4, onkeyup: E },
|
|
{
|
|
type: "checkbox",
|
|
name: "constrain",
|
|
text: "Constrain proportions",
|
|
checked: !0,
|
|
onchange: function(t) {
|
|
!0 === t.control.value() && ((j = M / U), (A = U / M));
|
|
}
|
|
},
|
|
{ type: "spacer", flex: 1 },
|
|
{ text: "Apply", subtype: "primary", onclick: "submit" }
|
|
])
|
|
.hide()
|
|
.on("submit", function(t) {
|
|
var n = parseInt(i.find("#w").value(), 10),
|
|
o = parseInt(i.find("#h").value(), 10);
|
|
t.preventDefault(),
|
|
(function(t) {
|
|
for (var n = [], o = 1; o < arguments.length; o++)
|
|
n[o - 1] = arguments[o];
|
|
var r = [].slice.call(arguments, 1);
|
|
return function() {
|
|
nt.blobToImageResult(e.blob).then(function(e) {
|
|
t.apply(this, [e].concat(r))
|
|
.then(X)
|
|
.then(F);
|
|
});
|
|
};
|
|
})(tt.resize, n, o)(),
|
|
q();
|
|
})
|
|
.on("show", H)),
|
|
(f = N([
|
|
{ text: "Back", onclick: q },
|
|
{ type: "spacer", flex: 1 },
|
|
{
|
|
icon: "fliph",
|
|
tooltip: "Flip horizontally",
|
|
onclick: W(tt.flip, "h")
|
|
},
|
|
{ icon: "flipv", tooltip: "Flip vertically", onclick: W(tt.flip, "v") },
|
|
{
|
|
icon: "rotateleft",
|
|
tooltip: "Rotate counterclockwise",
|
|
onclick: W(tt.rotate, -90)
|
|
},
|
|
{
|
|
icon: "rotateright",
|
|
tooltip: "Rotate clockwise",
|
|
onclick: W(tt.rotate, 90)
|
|
},
|
|
{ type: "spacer", flex: 1 },
|
|
{ text: "Apply", subtype: "primary", onclick: V }
|
|
])
|
|
.hide()
|
|
.on("show", H)),
|
|
(m = $(0, tt.invert)),
|
|
(I = $(0, tt.sharpen)),
|
|
(T = $(0, tt.emboss)),
|
|
(g = G(0, tt.brightness, 0, -1, 1)),
|
|
(v = G(0, tt.hue, 180, 0, 360)),
|
|
(y = G(0, tt.saturate, 0, -1, 1)),
|
|
(b = G(0, tt.contrast, 0, -1, 1)),
|
|
(w = G(0, tt.grayscale, 0, 0, 1)),
|
|
(x = G(0, tt.sepia, 0, 0, 1)),
|
|
(R = (function(t, n) {
|
|
function o() {
|
|
var t, o, r;
|
|
(t = i.find("#r")[0].value()),
|
|
(o = i.find("#g")[0].value()),
|
|
(r = i.find("#b")[0].value()),
|
|
nt
|
|
.blobToImageResult(e.blob)
|
|
.then(function(e) {
|
|
return n(e, t, o, r);
|
|
})
|
|
.then(X)
|
|
.then(function(t) {
|
|
var e = St(t);
|
|
O(e), Lt(c), (c = e);
|
|
});
|
|
}
|
|
return N([
|
|
{ text: "Back", onclick: q },
|
|
{ type: "spacer", flex: 1 },
|
|
{
|
|
type: "slider",
|
|
label: "R",
|
|
name: "r",
|
|
minValue: 0,
|
|
value: 1,
|
|
maxValue: 2,
|
|
ondragend: o,
|
|
previewFilter: S
|
|
},
|
|
{
|
|
type: "slider",
|
|
label: "G",
|
|
name: "g",
|
|
minValue: 0,
|
|
value: 1,
|
|
maxValue: 2,
|
|
ondragend: o,
|
|
previewFilter: S
|
|
},
|
|
{
|
|
type: "slider",
|
|
label: "B",
|
|
name: "b",
|
|
minValue: 0,
|
|
value: 1,
|
|
maxValue: 2,
|
|
ondragend: o,
|
|
previewFilter: S
|
|
},
|
|
{ type: "spacer", flex: 1 },
|
|
{ text: "Apply", subtype: "primary", onclick: V }
|
|
])
|
|
.hide()
|
|
.on("show", function() {
|
|
i.find("#r,#g,#b").value(1), H();
|
|
});
|
|
})(0, tt.colorize)),
|
|
(k = G(0, tt.gamma, 0, -1, 1)),
|
|
(C = G(0, tt.exposure, 1, 0, 2)),
|
|
(u = N([
|
|
{ text: "Back", onclick: q },
|
|
{ type: "spacer", flex: 1 },
|
|
{ text: "hue", icon: "hue", onclick: _(v) },
|
|
{ text: "saturate", icon: "saturate", onclick: _(y) },
|
|
{ text: "sepia", icon: "sepia", onclick: _(x) },
|
|
{ text: "emboss", icon: "emboss", onclick: _(T) },
|
|
{ text: "exposure", icon: "exposure", onclick: _(C) },
|
|
{ type: "spacer", flex: 1 }
|
|
]).hide()),
|
|
(a = N([
|
|
{ tooltip: "Crop", icon: "crop", onclick: _(l) },
|
|
{ tooltip: "Resize", icon: "resize2", onclick: _(s) },
|
|
{ tooltip: "Orientation", icon: "orientation", onclick: _(f) },
|
|
{ tooltip: "Brightness", icon: "sun", onclick: _(g) },
|
|
{ tooltip: "Sharpen", icon: "sharpen", onclick: _(I) },
|
|
{ tooltip: "Contrast", icon: "contrast", onclick: _(b) },
|
|
{ tooltip: "Color levels", icon: "drop", onclick: _(R) },
|
|
{ tooltip: "Gamma", icon: "gamma", onclick: _(k) },
|
|
{ tooltip: "Invert", icon: "invert", onclick: _(m) }
|
|
])),
|
|
(d = Et.create({ flex: 1, imageSrc: e.url })),
|
|
(h = Tt.create("Container", {
|
|
layout: "flex",
|
|
direction: "column",
|
|
border: "0 1 0 0",
|
|
padding: 5,
|
|
spacing: 5,
|
|
items: [
|
|
{
|
|
type: "button",
|
|
icon: "undo",
|
|
tooltip: "Undo",
|
|
name: "undo",
|
|
onclick: function() {
|
|
O((e = z.undo())), L();
|
|
}
|
|
},
|
|
{
|
|
type: "button",
|
|
icon: "redo",
|
|
tooltip: "Redo",
|
|
name: "redo",
|
|
onclick: function() {
|
|
O((e = z.redo())), L();
|
|
}
|
|
},
|
|
{
|
|
type: "button",
|
|
icon: "zoomin",
|
|
tooltip: "Zoom in",
|
|
onclick: function() {
|
|
var t = d.zoom();
|
|
t < 2 && (t += 0.1), d.zoom(t);
|
|
}
|
|
},
|
|
{
|
|
type: "button",
|
|
icon: "zoomout",
|
|
tooltip: "Zoom out",
|
|
onclick: function() {
|
|
var t = d.zoom();
|
|
t > 0.1 && (t -= 0.1), d.zoom(t);
|
|
}
|
|
}
|
|
]
|
|
})),
|
|
(p = Tt.create("Container", {
|
|
type: "container",
|
|
layout: "flex",
|
|
direction: "row",
|
|
align: "stretch",
|
|
flex: 1,
|
|
items: [h, d]
|
|
})),
|
|
(B = [a, l, s, f, u, m, g, v, y, b, w, x, R, I, T, k, C]),
|
|
(i = t.windowManager.open({
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "stretch",
|
|
minWidth: Math.min(It.DOM.getViewPort().w, 800),
|
|
minHeight: Math.min(It.DOM.getViewPort().h, 650),
|
|
title: "Edit image",
|
|
items: B.concat([p]),
|
|
buttons: [
|
|
{
|
|
text: "Save",
|
|
name: "save",
|
|
subtype: "primary",
|
|
onclick: function() {
|
|
o(e.blob), i.close();
|
|
}
|
|
},
|
|
{ text: "Cancel", onclick: "close" }
|
|
]
|
|
})).on("close", function() {
|
|
r(), Ht(z.data), (z = null), (c = null);
|
|
}),
|
|
z.add(e),
|
|
L(),
|
|
d.on("load", function() {
|
|
(U = d.imageSize().w),
|
|
(M = d.imageSize().h),
|
|
(j = M / U),
|
|
(A = U / M),
|
|
i.find("#w").value(U),
|
|
i.find("#h").value(M);
|
|
}),
|
|
d.on("crop", P);
|
|
}
|
|
var _t = {
|
|
edit: function(t, e) {
|
|
return new at(function(n, o) {
|
|
return e.toBlob().then(function(e) {
|
|
Ot(t, St(e), n, o);
|
|
});
|
|
});
|
|
}
|
|
},
|
|
Dt = 0,
|
|
Ft = function(t, e) {
|
|
t.notificationManager.open({ text: e, type: "error" });
|
|
},
|
|
Pt = function(t) {
|
|
return t.selection.getNode();
|
|
},
|
|
Wt = function(t, e) {
|
|
var n = e.src;
|
|
return (
|
|
0 === n.indexOf("data:") ||
|
|
0 === n.indexOf("blob:") ||
|
|
new ut(n).host === t.documentBaseURI.host
|
|
);
|
|
},
|
|
qt = function(t, e) {
|
|
return (
|
|
-1 !== n.inArray(t.settings.imagetools_cors_hosts, new ut(e.src).host)
|
|
);
|
|
},
|
|
Vt = function(t) {
|
|
var e, n, o, r, i, a;
|
|
return (e = t.editorUpload.blobCache.getByUri(Pt(t).src))
|
|
? at.resolve(e.blob())
|
|
: ((n = t),
|
|
(o = Pt(t)),
|
|
(a = o.src),
|
|
qt(n, o)
|
|
? Rt(o.src, null)
|
|
: Wt(n, o)
|
|
? H(o)
|
|
: ((a = lt(n)),
|
|
(a +=
|
|
(-1 === a.indexOf("?") ? "?" : "&") +
|
|
"url=" +
|
|
encodeURIComponent(o.src)),
|
|
(r = (i = n).settings.api_key || i.settings.imagetools_api_key),
|
|
Rt(a, r)));
|
|
},
|
|
Nt = function(t, e) {
|
|
var n = it.setEditorTimeout(
|
|
t,
|
|
function() {
|
|
t.editorUpload.uploadImagesAuto();
|
|
},
|
|
t.settings.images_upload_timeout || 3e4
|
|
);
|
|
e.set(n);
|
|
},
|
|
Xt = function(t) {
|
|
clearTimeout(t.get());
|
|
},
|
|
$t = function(t, e, n, o) {
|
|
return e.toBlob().then(function(r) {
|
|
var i, a, u, c, l, s, f;
|
|
return (
|
|
(u = t.editorUpload.blobCache),
|
|
(i = (l = Pt(t)).src),
|
|
t.settings.images_reuse_filename &&
|
|
((c = u.getByUri(i))
|
|
? ((i = c.uri()), (a = c.name()))
|
|
: ((s = t),
|
|
(a = (f = i.match(
|
|
/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i
|
|
))
|
|
? s.dom.encode(f[1])
|
|
: null))),
|
|
(c = u.create({
|
|
id: "imagetools" + Dt++,
|
|
blob: r,
|
|
base64: e.toBase64(),
|
|
uri: i,
|
|
name: a
|
|
})),
|
|
u.add(c),
|
|
t.undoManager.transact(function() {
|
|
t.$(l).on("load", function e() {
|
|
t.$(l).off("load", e),
|
|
t.nodeChanged(),
|
|
n ? t.editorUpload.uploadImagesAuto() : (Xt(o), Nt(t, o));
|
|
}),
|
|
t
|
|
.$(l)
|
|
.attr({ src: c.blobUri() })
|
|
.removeAttr("data-mce-src");
|
|
}),
|
|
c
|
|
);
|
|
});
|
|
},
|
|
Gt = function(t, e, n) {
|
|
return function() {
|
|
return t
|
|
._scanForImages()
|
|
.then(p.curry(Vt, t))
|
|
.then(nt.blobToImageResult)
|
|
.then(n)
|
|
.then(
|
|
function(n) {
|
|
return $t(t, n, !1, e);
|
|
},
|
|
function(e) {
|
|
Ft(t, e);
|
|
}
|
|
);
|
|
};
|
|
},
|
|
Yt = {
|
|
rotate: function(t, e, n) {
|
|
return function() {
|
|
return Gt(t, e, function(e) {
|
|
var o = st.getImageSize(Pt(t));
|
|
return (
|
|
o && st.setImageSize(Pt(t), { w: o.h, h: o.w }), tt.rotate(e, n)
|
|
);
|
|
})();
|
|
};
|
|
},
|
|
flip: function(t, e, n) {
|
|
return function() {
|
|
return Gt(t, e, function(t) {
|
|
return tt.flip(t, n);
|
|
})();
|
|
};
|
|
},
|
|
editImageDialog: function(t, e) {
|
|
return function() {
|
|
var n = Pt(t),
|
|
o = st.getNaturalImageSize(n),
|
|
r = function(t) {
|
|
return new at(function(e) {
|
|
L(t).then(function(r) {
|
|
var i = st.getNaturalImageSize(r);
|
|
(o.w === i.w && o.h === i.h) ||
|
|
(st.getImageSize(n) && st.setImageSize(n, i)),
|
|
rt.revokeObjectURL(r.src),
|
|
e(t);
|
|
});
|
|
});
|
|
};
|
|
Vt(t)
|
|
.then(nt.blobToImageResult)
|
|
.then(
|
|
p.curry(function(t, n) {
|
|
return _t
|
|
.edit(t, n)
|
|
.then(r)
|
|
.then(nt.blobToImageResult)
|
|
.then(
|
|
function(n) {
|
|
return $t(t, n, !0, e);
|
|
},
|
|
function() {}
|
|
);
|
|
}, t),
|
|
function(e) {
|
|
Ft(t, e);
|
|
}
|
|
);
|
|
};
|
|
},
|
|
isEditableImage: function(t, e) {
|
|
return (
|
|
t.dom.is(e, "img:not([data-mce-object],[data-mce-placeholder])") &&
|
|
(Wt(t, e) || qt(t, e) || t.settings.imagetools_proxy)
|
|
);
|
|
},
|
|
cancelTimedUpload: Xt
|
|
},
|
|
Jt = function(t, e) {
|
|
n.each(
|
|
{
|
|
mceImageRotateLeft: Yt.rotate(t, e, -90),
|
|
mceImageRotateRight: Yt.rotate(t, e, 90),
|
|
mceImageFlipVertical: Yt.flip(t, e, "v"),
|
|
mceImageFlipHorizontal: Yt.flip(t, e, "h"),
|
|
mceEditImage: Yt.editImageDialog(t, e)
|
|
},
|
|
function(e, n) {
|
|
t.addCommand(n, e);
|
|
}
|
|
);
|
|
},
|
|
Kt = function(t, e, n) {
|
|
t.on("NodeChange", function(o) {
|
|
var r = n.get();
|
|
r &&
|
|
r.src !== o.element.src &&
|
|
(Yt.cancelTimedUpload(e),
|
|
t.editorUpload.uploadImagesAuto(),
|
|
n.set(null)),
|
|
Yt.isEditableImage(t, o.element) && n.set(o.element);
|
|
});
|
|
},
|
|
Zt = function(t) {
|
|
t.addButton("rotateleft", {
|
|
title: "Rotate counterclockwise",
|
|
cmd: "mceImageRotateLeft"
|
|
}),
|
|
t.addButton("rotateright", {
|
|
title: "Rotate clockwise",
|
|
cmd: "mceImageRotateRight"
|
|
}),
|
|
t.addButton("flipv", {
|
|
title: "Flip vertically",
|
|
cmd: "mceImageFlipVertical"
|
|
}),
|
|
t.addButton("fliph", {
|
|
title: "Flip horizontally",
|
|
cmd: "mceImageFlipHorizontal"
|
|
}),
|
|
t.addButton("editimage", { title: "Edit image", cmd: "mceEditImage" }),
|
|
t.addButton("imageoptions", {
|
|
title: "Image options",
|
|
icon: "options",
|
|
cmd: "mceImage"
|
|
});
|
|
},
|
|
Qt = function(t) {
|
|
t.addContextToolbar(p.curry(Yt.isEditableImage, t), ct(t));
|
|
};
|
|
e.add("imagetools", function(e) {
|
|
var n = t(0),
|
|
o = t(null);
|
|
Jt(e, n), Zt(e), Qt(e), Kt(e, n, o);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
n = {
|
|
hasDimensions: function(e) {
|
|
return !1 !== e.settings.image_dimensions;
|
|
},
|
|
hasAdvTab: function(e) {
|
|
return !0 === e.settings.image_advtab;
|
|
},
|
|
getPrependUrl: function(e) {
|
|
return e.getParam("image_prepend_url", "");
|
|
},
|
|
getClassList: function(e) {
|
|
return e.getParam("image_class_list");
|
|
},
|
|
hasDescription: function(e) {
|
|
return !1 !== e.settings.image_description;
|
|
},
|
|
hasImageTitle: function(e) {
|
|
return !0 === e.settings.image_title;
|
|
},
|
|
hasImageCaption: function(e) {
|
|
return !0 === e.settings.image_caption;
|
|
},
|
|
getImageList: function(e) {
|
|
return e.getParam("image_list", !1);
|
|
},
|
|
hasUploadUrl: function(e) {
|
|
return e.getParam("images_upload_url", !1);
|
|
},
|
|
hasUploadHandler: function(e) {
|
|
return e.getParam("images_upload_handler", !1);
|
|
},
|
|
getUploadUrl: function(e) {
|
|
return e.getParam("images_upload_url");
|
|
},
|
|
getUploadHandler: function(e) {
|
|
return e.getParam("images_upload_handler");
|
|
},
|
|
getUploadBasePath: function(e) {
|
|
return e.getParam("images_upload_base_path");
|
|
},
|
|
getUploadCredentials: function(e) {
|
|
return e.getParam("images_upload_credentials");
|
|
}
|
|
},
|
|
a = "undefined" != typeof window ? window : Function("return this;")(),
|
|
i = function(e, t) {
|
|
for (
|
|
var n = t !== undefined && null !== t ? t : a, i = 0;
|
|
i < e.length && n !== undefined && null !== n;
|
|
++i
|
|
)
|
|
n = n[e[i]];
|
|
return n;
|
|
},
|
|
r = function(e, t) {
|
|
var n = e.split(".");
|
|
return i(n, t);
|
|
},
|
|
o = function(e, t) {
|
|
var n = r(e, t);
|
|
if (n === undefined || null === n)
|
|
throw e + " not available on this browser";
|
|
return n;
|
|
},
|
|
l = function() {
|
|
return new (o("FileReader"))();
|
|
},
|
|
s = tinymce.util.Tools.resolve("tinymce.util.Promise"),
|
|
c = tinymce.util.Tools.resolve("tinymce.util.XHR"),
|
|
u = function(e, t) {
|
|
return Math.max(parseInt(e, 10), parseInt(t, 10));
|
|
},
|
|
g = {
|
|
getImageSize: function(e, t) {
|
|
var n = document.createElement("img");
|
|
function a(e, a) {
|
|
n.parentNode && n.parentNode.removeChild(n),
|
|
t({ width: e, height: a });
|
|
}
|
|
(n.onload = function() {
|
|
a(u(n.width, n.clientWidth), u(n.height, n.clientHeight));
|
|
}),
|
|
(n.onerror = function() {
|
|
a(0, 0);
|
|
});
|
|
var i = n.style;
|
|
(i.visibility = "hidden"),
|
|
(i.position = "fixed"),
|
|
(i.bottom = i.left = "0px"),
|
|
(i.width = i.height = "auto"),
|
|
document.body.appendChild(n),
|
|
(n.src = e);
|
|
},
|
|
buildListItems: function(e, n, a) {
|
|
return (function i(e, a) {
|
|
return (
|
|
(a = a || []),
|
|
t.each(e, function(e) {
|
|
var t = { text: e.text || e.title };
|
|
e.menu ? (t.menu = i(e.menu)) : ((t.value = e.value), n(t)),
|
|
a.push(t);
|
|
}),
|
|
a
|
|
);
|
|
})(e, a || []);
|
|
},
|
|
removePixelSuffix: function(e) {
|
|
return e && (e = e.replace(/px$/, "")), e;
|
|
},
|
|
addPixelSuffix: function(e) {
|
|
return e.length > 0 && /^[0-9]+$/.test(e) && (e += "px"), e;
|
|
},
|
|
mergeMargins: function(e) {
|
|
if (e.margin) {
|
|
var t = 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;
|
|
},
|
|
createImageList: function(e, t) {
|
|
var a = n.getImageList(e);
|
|
"string" == typeof a
|
|
? c.send({
|
|
url: a,
|
|
success: function(e) {
|
|
t(JSON.parse(e));
|
|
}
|
|
})
|
|
: "function" == typeof a
|
|
? a(t)
|
|
: t(a);
|
|
},
|
|
waitLoadImage: function(e, t, a) {
|
|
function i() {
|
|
(a.onload = a.onerror = null),
|
|
e.selection && (e.selection.select(a), e.nodeChanged());
|
|
}
|
|
(a.onload = function() {
|
|
t.width ||
|
|
t.height ||
|
|
!n.hasDimensions(e) ||
|
|
e.dom.setAttribs(a, {
|
|
width: a.clientWidth,
|
|
height: a.clientHeight
|
|
}),
|
|
i();
|
|
}),
|
|
(a.onerror = i);
|
|
},
|
|
blobToDataUri: function(e) {
|
|
return new s(function(t, n) {
|
|
var a = new l();
|
|
(a.onload = function() {
|
|
t(a.result);
|
|
}),
|
|
(a.onerror = function() {
|
|
n(l.error.message);
|
|
}),
|
|
a.readAsDataURL(e);
|
|
});
|
|
}
|
|
},
|
|
d = {
|
|
makeTab: function(e, t) {
|
|
return {
|
|
title: "Advanced",
|
|
type: "form",
|
|
pack: "start",
|
|
items: [
|
|
{
|
|
label: "Style",
|
|
name: "style",
|
|
type: "textbox",
|
|
onchange: ((a = e),
|
|
function(e) {
|
|
var t = a.dom,
|
|
i = e.control.rootControl;
|
|
if (n.hasAdvTab(a)) {
|
|
var r = i.toJSON(),
|
|
o = t.parseStyle(r.style);
|
|
i.find("#vspace").value(""),
|
|
i.find("#hspace").value(""),
|
|
(((o = g.mergeMargins(o))["margin-top"] &&
|
|
o["margin-bottom"]) ||
|
|
(o["margin-right"] && o["margin-left"])) &&
|
|
(o["margin-top"] === o["margin-bottom"]
|
|
? i
|
|
.find("#vspace")
|
|
.value(g.removePixelSuffix(o["margin-top"]))
|
|
: i.find("#vspace").value(""),
|
|
o["margin-right"] === o["margin-left"]
|
|
? i
|
|
.find("#hspace")
|
|
.value(g.removePixelSuffix(o["margin-right"]))
|
|
: i.find("#hspace").value("")),
|
|
o["border-width"] &&
|
|
i
|
|
.find("#border")
|
|
.value(g.removePixelSuffix(o["border-width"])),
|
|
i
|
|
.find("#style")
|
|
.value(
|
|
t.serializeStyle(t.parseStyle(t.serializeStyle(o)))
|
|
);
|
|
}
|
|
})
|
|
},
|
|
{
|
|
type: "form",
|
|
layout: "grid",
|
|
packV: "start",
|
|
columns: 2,
|
|
padding: 0,
|
|
alignH: ["left", "right"],
|
|
defaults: {
|
|
type: "textbox",
|
|
maxWidth: 50,
|
|
onchange: function(n) {
|
|
t(e, n.control.rootControl);
|
|
}
|
|
},
|
|
items: [
|
|
{ label: "Vertical space", name: "vspace" },
|
|
{ label: "Horizontal space", name: "hspace" },
|
|
{ label: "Border", name: "border" }
|
|
]
|
|
}
|
|
]
|
|
};
|
|
var a;
|
|
}
|
|
},
|
|
m = function(e, t) {
|
|
e.state.set("oldVal", e.value()), t.state.set("oldVal", t.value());
|
|
},
|
|
f = function(e, t) {
|
|
var n = e.find("#width")[0],
|
|
a = e.find("#height")[0],
|
|
i = e.find("#constrain")[0];
|
|
n && a && i && t(n, a, i.checked());
|
|
},
|
|
p = function(e, t, n) {
|
|
var a = e.state.get("oldVal"),
|
|
i = t.state.get("oldVal"),
|
|
r = e.value(),
|
|
o = t.value();
|
|
n &&
|
|
a &&
|
|
i &&
|
|
r &&
|
|
o &&
|
|
(r !== a
|
|
? ((o = Math.round((r / a) * o)), isNaN(o) || t.value(o))
|
|
: ((r = Math.round((o / i) * r)), isNaN(r) || e.value(r))),
|
|
m(e, t);
|
|
},
|
|
h = function(e) {
|
|
f(e, p);
|
|
},
|
|
b = {
|
|
createUi: function() {
|
|
var e = function(e) {
|
|
h(e.control.rootControl);
|
|
};
|
|
return {
|
|
type: "container",
|
|
label: "Dimensions",
|
|
layout: "flex",
|
|
align: "center",
|
|
spacing: 5,
|
|
items: [
|
|
{
|
|
name: "width",
|
|
type: "textbox",
|
|
maxLength: 5,
|
|
size: 5,
|
|
onchange: e,
|
|
ariaLabel: "Width"
|
|
},
|
|
{ type: "label", text: "x" },
|
|
{
|
|
name: "height",
|
|
type: "textbox",
|
|
maxLength: 5,
|
|
size: 5,
|
|
onchange: e,
|
|
ariaLabel: "Height"
|
|
},
|
|
{
|
|
name: "constrain",
|
|
type: "checkbox",
|
|
checked: !0,
|
|
text: "Constrain proportions"
|
|
}
|
|
]
|
|
};
|
|
},
|
|
syncSize: function(e) {
|
|
f(e, m);
|
|
},
|
|
updateSize: h
|
|
},
|
|
v = function(e) {
|
|
e.meta = e.control.rootControl.toJSON();
|
|
},
|
|
y = function(e, a) {
|
|
var i = [
|
|
{
|
|
name: "src",
|
|
type: "filepicker",
|
|
filetype: "image",
|
|
label: "Source",
|
|
autofocus: !0,
|
|
onchange: function(a) {
|
|
var i, r, o, l, s, c, u, d, m;
|
|
(r = e),
|
|
(c = (i = a).meta || {}),
|
|
(u = i.control),
|
|
(d = u.rootControl),
|
|
(m = d.find("#image-list")[0]) &&
|
|
m.value(r.convertURL(u.value(), "src")),
|
|
t.each(c, function(e, t) {
|
|
d.find("#" + t).value(e);
|
|
}),
|
|
c.width ||
|
|
c.height ||
|
|
((o = r.convertURL(u.value(), "src")),
|
|
(l = n.getPrependUrl(r)),
|
|
(s = new RegExp("^(?:[a-z]+:)?//", "i")),
|
|
l &&
|
|
!s.test(o) &&
|
|
o.substring(0, l.length) !== l &&
|
|
(o = l + o),
|
|
u.value(o),
|
|
g.getImageSize(
|
|
r.documentBaseURI.toAbsolute(u.value()),
|
|
function(e) {
|
|
e.width &&
|
|
e.height &&
|
|
n.hasDimensions(r) &&
|
|
(d.find("#width").value(e.width),
|
|
d.find("#height").value(e.height),
|
|
b.updateSize(d));
|
|
}
|
|
));
|
|
},
|
|
onbeforecall: v
|
|
},
|
|
a
|
|
];
|
|
return (
|
|
n.hasDescription(e) &&
|
|
i.push({ name: "alt", type: "textbox", label: "Image description" }),
|
|
n.hasImageTitle(e) &&
|
|
i.push({ name: "title", type: "textbox", label: "Image Title" }),
|
|
n.hasDimensions(e) && i.push(b.createUi()),
|
|
n.getClassList(e) &&
|
|
i.push({
|
|
name: "class",
|
|
type: "listbox",
|
|
label: "Class",
|
|
values: g.buildListItems(n.getClassList(e), function(t) {
|
|
t.value &&
|
|
(t.textStyle = function() {
|
|
return e.formatter.getCssText({
|
|
inline: "img",
|
|
classes: [t.value]
|
|
});
|
|
});
|
|
})
|
|
}),
|
|
n.hasImageCaption(e) &&
|
|
i.push({ name: "caption", type: "checkbox", label: "Caption" }),
|
|
i
|
|
);
|
|
},
|
|
x = {
|
|
makeTab: function(e, t) {
|
|
return { title: "General", type: "form", items: y(e, t) };
|
|
},
|
|
getGeneralItems: y
|
|
},
|
|
w = function() {
|
|
return o("URL");
|
|
},
|
|
S = function(e) {
|
|
return w().createObjectURL(e);
|
|
},
|
|
U = function(e) {
|
|
w().revokeObjectURL(e);
|
|
},
|
|
T = tinymce.util.Tools.resolve("tinymce.ui.Factory"),
|
|
C = function() {},
|
|
I = function(e) {
|
|
var n = function(t, n, a, i) {
|
|
var r, l;
|
|
(r = new function() {
|
|
return new (o("XMLHttpRequest"))();
|
|
}()).open("POST", e.url),
|
|
(r.withCredentials = e.credentials),
|
|
(r.upload.onprogress = function(e) {
|
|
i((e.loaded / e.total) * 100);
|
|
}),
|
|
(r.onerror = function() {
|
|
a(
|
|
"Image upload failed due to a XHR Transport error. Code: " +
|
|
r.status
|
|
);
|
|
}),
|
|
(r.onload = function() {
|
|
var t, i, o;
|
|
r.status < 200 || r.status >= 300
|
|
? a("HTTP Error: " + r.status)
|
|
: (t = JSON.parse(r.responseText)) &&
|
|
"string" == typeof t.location
|
|
? n(
|
|
((i = e.basePath),
|
|
(o = t.location),
|
|
i ? i.replace(/\/$/, "") + "/" + o.replace(/^\//, "") : o)
|
|
)
|
|
: a("Invalid JSON: " + r.responseText);
|
|
}),
|
|
(l = new FormData()).append("file", t.blob(), t.filename()),
|
|
r.send(l);
|
|
};
|
|
return (
|
|
(e = t.extend({ credentials: !1, handler: n }, e)),
|
|
{
|
|
upload: function(t) {
|
|
return e.url || e.handler !== n
|
|
? ((a = t),
|
|
(i = e.handler),
|
|
new s(function(e, t) {
|
|
try {
|
|
i(a, e, t, C);
|
|
} catch (n) {
|
|
t(n.message);
|
|
}
|
|
}))
|
|
: s.reject("Upload url missing from the settings.");
|
|
var a, i;
|
|
}
|
|
}
|
|
);
|
|
},
|
|
P = function(e) {
|
|
return function(t) {
|
|
var a = T.get("Throbber"),
|
|
i = t.control.rootControl,
|
|
r = new a(i.getEl()),
|
|
o = t.control.value(),
|
|
l = S(o),
|
|
s = I({
|
|
url: n.getUploadUrl(e),
|
|
basePath: n.getUploadBasePath(e),
|
|
credentials: n.getUploadCredentials(e),
|
|
handler: n.getUploadHandler(e)
|
|
}),
|
|
c = function() {
|
|
r.hide(), U(l);
|
|
};
|
|
return (
|
|
r.show(),
|
|
g
|
|
.blobToDataUri(o)
|
|
.then(function(t) {
|
|
var n = e.editorUpload.blobCache.create({
|
|
blob: o,
|
|
blobUri: l,
|
|
name: o.name ? o.name.replace(/\.[^\.]+$/, "") : null,
|
|
base64: t.split(",")[1]
|
|
});
|
|
return s.upload(n).then(function(e) {
|
|
var t = i.find("#src");
|
|
return (
|
|
t.value(e),
|
|
i.find("tabpanel")[0].activateTab(0),
|
|
t.fire("change"),
|
|
c(),
|
|
e
|
|
);
|
|
});
|
|
})
|
|
["catch"](function(t) {
|
|
e.windowManager.alert(t), c();
|
|
})
|
|
);
|
|
};
|
|
},
|
|
L = ".jpg,.jpeg,.png,.gif",
|
|
_ = {
|
|
makeTab: function(e) {
|
|
return {
|
|
title: "Upload",
|
|
type: "form",
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "stretch",
|
|
padding: "20 20 20 20",
|
|
items: [
|
|
{
|
|
type: "container",
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "center",
|
|
spacing: 10,
|
|
items: [
|
|
{
|
|
text: "Browse for an image",
|
|
type: "browsebutton",
|
|
accept: L,
|
|
onchange: P(e)
|
|
},
|
|
{ text: "OR", type: "label" }
|
|
]
|
|
},
|
|
{
|
|
text: "Drop an image here",
|
|
type: "dropzone",
|
|
accept: L,
|
|
height: 100,
|
|
onchange: P(e)
|
|
}
|
|
]
|
|
};
|
|
}
|
|
},
|
|
N = function(e) {
|
|
var a = function(e, t) {
|
|
if (n.hasAdvTab(e)) {
|
|
var a = e.dom,
|
|
i = t.toJSON(),
|
|
r = a.parseStyle(i.style);
|
|
(r = g.mergeMargins(r)),
|
|
i.vspace &&
|
|
(r["margin-top"] = r["margin-bottom"] = g.addPixelSuffix(
|
|
i.vspace
|
|
)),
|
|
i.hspace &&
|
|
(r["margin-left"] = r["margin-right"] = g.addPixelSuffix(
|
|
i.hspace
|
|
)),
|
|
i.border && (r["border-width"] = g.addPixelSuffix(i.border)),
|
|
t
|
|
.find("#style")
|
|
.value(a.serializeStyle(a.parseStyle(a.serializeStyle(r))));
|
|
}
|
|
};
|
|
function i(i) {
|
|
var r,
|
|
o,
|
|
l,
|
|
s,
|
|
c = {},
|
|
u = e.dom;
|
|
function m() {
|
|
var n, i;
|
|
b.updateSize(r),
|
|
a(e, r),
|
|
(c = t.extend(c, r.toJSON())).alt || (c.alt = ""),
|
|
c.title || (c.title = ""),
|
|
"" === c.width && (c.width = null),
|
|
"" === c.height && (c.height = null),
|
|
c.style || (c.style = null),
|
|
(c = {
|
|
src: c.src,
|
|
alt: c.alt,
|
|
title: c.title,
|
|
width: c.width,
|
|
height: c.height,
|
|
style: c.style,
|
|
caption: c.caption,
|
|
class: c["class"]
|
|
}),
|
|
e.undoManager.transact(function() {
|
|
if (c.src) {
|
|
if (
|
|
("" === c.title && (c.title = null),
|
|
o
|
|
? u.setAttribs(o, c)
|
|
: ((c.id = "__mcenew"),
|
|
e.focus(),
|
|
e.selection.setContent(u.createHTML("img", c)),
|
|
(o = u.get("__mcenew")),
|
|
u.setAttrib(o, "id", null)),
|
|
e.editorUpload.uploadImagesAuto(),
|
|
!1 === c.caption &&
|
|
u.is(o.parentNode, "figure.image") &&
|
|
((n = o.parentNode), u.insertAfter(o, n), u.remove(n)),
|
|
!0 !== c.caption)
|
|
)
|
|
g.waitLoadImage(e, c, o);
|
|
else if (!u.is(o.parentNode, "figure.image")) {
|
|
(i = o),
|
|
(o = o.cloneNode(!0)),
|
|
(n = u.create("figure", { class: "image" })).appendChild(o),
|
|
n.appendChild(
|
|
u.create("figcaption", { contentEditable: !0 }, "Caption")
|
|
),
|
|
(n.contentEditable = !1);
|
|
var t = u.getParent(i, function(t) {
|
|
return e.schema.getTextBlockElements()[t.nodeName];
|
|
});
|
|
t ? u.split(t, i, n) : u.replace(n, i), e.selection.select(n);
|
|
}
|
|
} else if (o) {
|
|
var a = u.is(o.parentNode, "figure.image") ? o.parentNode : o;
|
|
u.remove(a),
|
|
e.focus(),
|
|
e.nodeChanged(),
|
|
u.isEmpty(e.getBody()) &&
|
|
(e.setContent(""), e.selection.setCursorLocation());
|
|
}
|
|
});
|
|
}
|
|
if (
|
|
((o = e.selection.getNode()),
|
|
(l = u.getParent(o, "figure.image")) && (o = u.select("img", l)[0]),
|
|
o &&
|
|
("IMG" !== o.nodeName ||
|
|
o.getAttribute("data-mce-object") ||
|
|
o.getAttribute("data-mce-placeholder")) &&
|
|
(o = null),
|
|
o &&
|
|
(c = {
|
|
src: u.getAttrib(o, "src"),
|
|
alt: u.getAttrib(o, "alt"),
|
|
title: u.getAttrib(o, "title"),
|
|
class: u.getAttrib(o, "class"),
|
|
width: u.getAttrib(o, "width"),
|
|
height: u.getAttrib(o, "height"),
|
|
caption: !!l
|
|
}),
|
|
i &&
|
|
(s = {
|
|
type: "listbox",
|
|
label: "Image list",
|
|
name: "image-list",
|
|
values: g.buildListItems(
|
|
i,
|
|
function(t) {
|
|
t.value = e.convertURL(t.value || t.url, "src");
|
|
},
|
|
[{ text: "None", value: "" }]
|
|
),
|
|
value: c.src && e.convertURL(c.src, "src"),
|
|
onselect: function(e) {
|
|
var t = r.find("#alt");
|
|
(!t.value() ||
|
|
(e.lastControl && t.value() === e.lastControl.text())) &&
|
|
t.value(e.control.text()),
|
|
r
|
|
.find("#src")
|
|
.value(e.control.value())
|
|
.fire("change");
|
|
},
|
|
onPostRender: function() {
|
|
s = this;
|
|
}
|
|
}),
|
|
n.hasAdvTab(e) || n.hasUploadUrl(e) || n.hasUploadHandler(e))
|
|
) {
|
|
var f = [x.makeTab(e, s)];
|
|
n.hasAdvTab(e) &&
|
|
(o &&
|
|
(o.style.marginLeft &&
|
|
o.style.marginRight &&
|
|
o.style.marginLeft === o.style.marginRight &&
|
|
(c.hspace = g.removePixelSuffix(o.style.marginLeft)),
|
|
o.style.marginTop &&
|
|
o.style.marginBottom &&
|
|
o.style.marginTop === o.style.marginBottom &&
|
|
(c.vspace = g.removePixelSuffix(o.style.marginTop)),
|
|
o.style.borderWidth &&
|
|
(c.border = g.removePixelSuffix(o.style.borderWidth)),
|
|
(c.style = e.dom.serializeStyle(
|
|
e.dom.parseStyle(e.dom.getAttrib(o, "style"))
|
|
))),
|
|
f.push(d.makeTab(e, a))),
|
|
(n.hasUploadUrl(e) || n.hasUploadHandler(e)) &&
|
|
f.push(_.makeTab(e)),
|
|
(r = e.windowManager.open({
|
|
title: "Insert/edit image",
|
|
data: c,
|
|
bodyType: "tabpanel",
|
|
body: f,
|
|
onSubmit: m
|
|
}));
|
|
} else
|
|
r = e.windowManager.open({
|
|
title: "Insert/edit image",
|
|
data: c,
|
|
body: x.getGeneralItems(e, s),
|
|
onSubmit: m
|
|
});
|
|
b.syncSize(r);
|
|
}
|
|
return {
|
|
open: function() {
|
|
g.createImageList(e, i);
|
|
}
|
|
};
|
|
},
|
|
A = function(e) {
|
|
e.addCommand("mceImage", N(e).open);
|
|
},
|
|
k = function(e) {
|
|
return function(n) {
|
|
for (
|
|
var a,
|
|
i,
|
|
r = n.length,
|
|
o = function(t) {
|
|
t.attr("contenteditable", e ? "true" : null);
|
|
};
|
|
r--;
|
|
|
|
)
|
|
(a = n[r]),
|
|
(i = a.attr("class")) &&
|
|
/\bimage\b/.test(i) &&
|
|
(a.attr("contenteditable", e ? "false" : null),
|
|
t.each(a.getAll("figcaption"), o));
|
|
};
|
|
},
|
|
z = function(e) {
|
|
e.on("preInit", function() {
|
|
e.parser.addNodeFilter("figure", k(!0)),
|
|
e.serializer.addNodeFilter("figure", k(!1));
|
|
});
|
|
},
|
|
R = function(e) {
|
|
e.addButton("image", {
|
|
icon: "image",
|
|
tooltip: "Insert/edit image",
|
|
onclick: N(e).open,
|
|
stateSelector:
|
|
"img:not([data-mce-object],[data-mce-placeholder]),figure.image"
|
|
}),
|
|
e.addMenuItem("image", {
|
|
icon: "image",
|
|
text: "Image",
|
|
onclick: N(e).open,
|
|
context: "insert",
|
|
prependToContext: !0
|
|
});
|
|
};
|
|
e.add("image", function(e) {
|
|
z(e), R(e), A(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var n = function(n) {
|
|
n.addCommand("InsertHorizontalRule", function() {
|
|
n.execCommand("mceInsertContent", !1, "<hr />");
|
|
});
|
|
},
|
|
t = function(n) {
|
|
n.addButton("hr", {
|
|
icon: "hr",
|
|
tooltip: "Horizontal line",
|
|
cmd: "InsertHorizontalRule"
|
|
}),
|
|
n.addMenuItem("hr", {
|
|
icon: "hr",
|
|
text: "Horizontal line",
|
|
cmd: "InsertHorizontalRule",
|
|
context: "insert"
|
|
});
|
|
};
|
|
tinymce.util.Tools.resolve("tinymce.PluginManager").add("hr", function(o) {
|
|
n(o), t(o);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var n = t,
|
|
i = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: i,
|
|
set: function(e) {
|
|
n = e;
|
|
},
|
|
clone: function() {
|
|
return e(i());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = function(e) {
|
|
return {
|
|
isFullscreen: function() {
|
|
return null !== e.get();
|
|
}
|
|
};
|
|
},
|
|
i = function(e, t) {
|
|
e.fire("FullscreenStateChanged", { state: t });
|
|
},
|
|
r = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils").DOM,
|
|
l = function(e, t) {
|
|
var n,
|
|
l,
|
|
o,
|
|
c,
|
|
s,
|
|
u,
|
|
d = document.body,
|
|
a = document.documentElement,
|
|
h = t.get(),
|
|
f = function() {
|
|
var e, t, n, i;
|
|
r.setStyle(
|
|
o,
|
|
"height",
|
|
((n = window),
|
|
(i = document.body),
|
|
i.offsetWidth && ((e = i.offsetWidth), (t = i.offsetHeight)),
|
|
n.innerWidth &&
|
|
n.innerHeight &&
|
|
((e = n.innerWidth), (t = n.innerHeight)),
|
|
{ w: e, h: t }).h -
|
|
(l.clientHeight - o.clientHeight)
|
|
);
|
|
},
|
|
m = function() {
|
|
r.unbind(window, "resize", f);
|
|
};
|
|
if (
|
|
((n = (l = e.getContainer()).style),
|
|
(c = (o = e.getContentAreaContainer().firstChild).style),
|
|
h)
|
|
)
|
|
(c.width = h.iframeWidth),
|
|
(c.height = h.iframeHeight),
|
|
h.containerWidth && (n.width = h.containerWidth),
|
|
h.containerHeight && (n.height = h.containerHeight),
|
|
r.removeClass(d, "mce-fullscreen"),
|
|
r.removeClass(a, "mce-fullscreen"),
|
|
r.removeClass(l, "mce-fullscreen"),
|
|
(s = h.scrollPos),
|
|
window.scrollTo(s.x, s.y),
|
|
r.unbind(window, "resize", h.resizeHandler),
|
|
e.off("remove", h.removeHandler),
|
|
t.set(null),
|
|
i(e, !1);
|
|
else {
|
|
var g = {
|
|
scrollPos: ((u = r.getViewPort()), { x: u.x, y: u.y }),
|
|
containerWidth: n.width,
|
|
containerHeight: n.height,
|
|
iframeWidth: c.width,
|
|
iframeHeight: c.height,
|
|
resizeHandler: f,
|
|
removeHandler: m
|
|
};
|
|
(c.width = c.height = "100%"),
|
|
(n.width = n.height = ""),
|
|
r.addClass(d, "mce-fullscreen"),
|
|
r.addClass(a, "mce-fullscreen"),
|
|
r.addClass(l, "mce-fullscreen"),
|
|
r.bind(window, "resize", f),
|
|
e.on("remove", m),
|
|
f(),
|
|
t.set(g),
|
|
i(e, !0);
|
|
}
|
|
},
|
|
o = function(e, t) {
|
|
e.addCommand("mceFullScreen", function() {
|
|
l(e, t);
|
|
});
|
|
},
|
|
c = function(e) {
|
|
return function(t) {
|
|
var n = t.control;
|
|
e.on("FullscreenStateChanged", function(e) {
|
|
n.active(e.state);
|
|
});
|
|
};
|
|
},
|
|
s = function(e) {
|
|
e.addMenuItem("fullscreen", {
|
|
text: "Fullscreen",
|
|
shortcut: "Ctrl+Shift+F",
|
|
selectable: !0,
|
|
cmd: "mceFullScreen",
|
|
onPostRender: c(e),
|
|
context: "view"
|
|
}),
|
|
e.addButton("fullscreen", {
|
|
active: !1,
|
|
tooltip: "Fullscreen",
|
|
cmd: "mceFullScreen",
|
|
onPostRender: c(e)
|
|
});
|
|
};
|
|
t.add("fullscreen", function(t) {
|
|
var i = e(null);
|
|
return (
|
|
o(t, i), s(t), t.addShortcut("Ctrl+Shift+F", "", "mceFullScreen"), n(i)
|
|
);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var n = t,
|
|
l = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: l,
|
|
set: function(e) {
|
|
n = e;
|
|
},
|
|
clone: function() {
|
|
return e(l());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
l = tinymce.util.Tools.resolve("tinymce.html.DomParser"),
|
|
i = tinymce.util.Tools.resolve("tinymce.html.Node"),
|
|
r = tinymce.util.Tools.resolve("tinymce.html.Serializer"),
|
|
o = function(e) {
|
|
return e.getParam("fullpage_hide_in_source_view");
|
|
},
|
|
a = function(e) {
|
|
return e.getParam("fullpage_default_xml_pi");
|
|
},
|
|
c = function(e) {
|
|
return e.getParam("fullpage_default_encoding");
|
|
},
|
|
s = function(e) {
|
|
return e.getParam("fullpage_default_font_family");
|
|
},
|
|
u = function(e) {
|
|
return e.getParam("fullpage_default_font_size");
|
|
},
|
|
d = function(e) {
|
|
return e.getParam("fullpage_default_text_color");
|
|
},
|
|
f = function(e) {
|
|
return e.getParam("fullpage_default_title");
|
|
},
|
|
g = function(e) {
|
|
return e.getParam("fullpage_default_doctype", "<!DOCTYPE html>");
|
|
},
|
|
m = function(e) {
|
|
return l({ validate: !1, root_name: "#document" }).parse(e);
|
|
},
|
|
h = m,
|
|
p = function(e, t) {
|
|
var l,
|
|
i,
|
|
r = m(t),
|
|
o = {};
|
|
function a(e, t) {
|
|
return e.attr(t) || "";
|
|
}
|
|
return (
|
|
(o.fontface = s(e)),
|
|
(o.fontsize = u(e)),
|
|
7 === (l = r.firstChild).type &&
|
|
((o.xml_pi = !0),
|
|
(i = /encoding="([^"]+)"/.exec(l.value)) && (o.docencoding = i[1])),
|
|
(l = r.getAll("#doctype")[0]) &&
|
|
(o.doctype = "<!DOCTYPE" + l.value + ">"),
|
|
(l = r.getAll("title")[0]) &&
|
|
l.firstChild &&
|
|
(o.title = l.firstChild.value),
|
|
n.each(r.getAll("meta"), function(e) {
|
|
var t,
|
|
n = e.attr("name"),
|
|
l = e.attr("http-equiv");
|
|
n
|
|
? (o[n.toLowerCase()] = e.attr("content"))
|
|
: "Content-Type" === l &&
|
|
(t = /charset\s*=\s*(.*)\s*/gi.exec(e.attr("content"))) &&
|
|
(o.docencoding = t[1]);
|
|
}),
|
|
(l = r.getAll("html")[0]) &&
|
|
(o.langcode = a(l, "lang") || a(l, "xml:lang")),
|
|
(o.stylesheets = []),
|
|
n.each(r.getAll("link"), function(e) {
|
|
"stylesheet" === e.attr("rel") && o.stylesheets.push(e.attr("href"));
|
|
}),
|
|
(l = r.getAll("body")[0]) &&
|
|
((o.langdir = a(l, "dir")),
|
|
(o.style = a(l, "style")),
|
|
(o.visited_color = a(l, "vlink")),
|
|
(o.link_color = a(l, "link")),
|
|
(o.active_color = a(l, "alink"))),
|
|
o
|
|
);
|
|
},
|
|
y = function(e, t, l) {
|
|
var o,
|
|
a,
|
|
c,
|
|
s,
|
|
u,
|
|
d = e.dom;
|
|
function f(e, t, n) {
|
|
e.attr(t, n || undefined);
|
|
}
|
|
function g(e) {
|
|
a.firstChild ? a.insert(e, a.firstChild) : a.append(e);
|
|
}
|
|
(o = m(l)),
|
|
(a = o.getAll("head")[0]) ||
|
|
((s = o.getAll("html")[0]),
|
|
(a = new i("head", 1)),
|
|
s.firstChild ? s.insert(a, s.firstChild, !0) : s.append(a)),
|
|
(s = o.firstChild),
|
|
t.xml_pi
|
|
? ((u = 'version="1.0"'),
|
|
t.docencoding && (u += ' encoding="' + t.docencoding + '"'),
|
|
7 !== s.type &&
|
|
((s = new i("xml", 7)), o.insert(s, o.firstChild, !0)),
|
|
(s.value = u))
|
|
: s && 7 === s.type && s.remove(),
|
|
(s = o.getAll("#doctype")[0]),
|
|
t.doctype
|
|
? (s ||
|
|
((s = new i("#doctype", 10)),
|
|
t.xml_pi ? o.insert(s, o.firstChild) : g(s)),
|
|
(s.value = t.doctype.substring(9, t.doctype.length - 1)))
|
|
: s && s.remove(),
|
|
(s = null),
|
|
n.each(o.getAll("meta"), function(e) {
|
|
"Content-Type" === e.attr("http-equiv") && (s = e);
|
|
}),
|
|
t.docencoding
|
|
? (s ||
|
|
((s = new i("meta", 1)).attr("http-equiv", "Content-Type"),
|
|
(s.shortEnded = !0),
|
|
g(s)),
|
|
s.attr("content", "text/html; charset=" + t.docencoding))
|
|
: s && s.remove(),
|
|
(s = o.getAll("title")[0]),
|
|
t.title
|
|
? (s ? s.empty() : g((s = new i("title", 1))),
|
|
(s.append(new i("#text", 3)).value = t.title))
|
|
: s && s.remove(),
|
|
n.each(
|
|
"keywords,description,author,copyright,robots".split(","),
|
|
function(e) {
|
|
var n,
|
|
l,
|
|
r = o.getAll("meta"),
|
|
a = t[e];
|
|
for (n = 0; n < r.length; n++)
|
|
if ((l = r[n]).attr("name") === e)
|
|
return void (a ? l.attr("content", a) : l.remove());
|
|
a &&
|
|
((s = new i("meta", 1)).attr("name", e),
|
|
s.attr("content", a),
|
|
(s.shortEnded = !0),
|
|
g(s));
|
|
}
|
|
);
|
|
var h = {};
|
|
return (
|
|
n.each(o.getAll("link"), function(e) {
|
|
"stylesheet" === e.attr("rel") && (h[e.attr("href")] = e);
|
|
}),
|
|
n.each(t.stylesheets, function(e) {
|
|
h[e] ||
|
|
((s = new i("link", 1)).attr({
|
|
rel: "stylesheet",
|
|
text: "text/css",
|
|
href: e
|
|
}),
|
|
(s.shortEnded = !0),
|
|
g(s)),
|
|
delete h[e];
|
|
}),
|
|
n.each(h, function(e) {
|
|
e.remove();
|
|
}),
|
|
(s = o.getAll("body")[0]) &&
|
|
(f(s, "dir", t.langdir),
|
|
f(s, "style", t.style),
|
|
f(s, "vlink", t.visited_color),
|
|
f(s, "link", t.link_color),
|
|
f(s, "alink", t.active_color),
|
|
d.setAttribs(e.getBody(), {
|
|
style: t.style,
|
|
dir: t.dir,
|
|
vLink: t.visited_color,
|
|
link: t.link_color,
|
|
aLink: t.active_color
|
|
})),
|
|
(s = o.getAll("html")[0]) &&
|
|
(f(s, "lang", t.langcode), f(s, "xml:lang", t.langcode)),
|
|
a.firstChild || a.remove(),
|
|
(c = r({
|
|
validate: !1,
|
|
indent: !0,
|
|
apply_source_formatting: !0,
|
|
indent_before: "head,html,body,meta,title,script,link,style",
|
|
indent_after: "head,html,body,meta,title,script,link,style"
|
|
}).serialize(o)).substring(0, c.indexOf("</body>"))
|
|
);
|
|
},
|
|
v = function(e, t) {
|
|
var l = p(e, t.get());
|
|
e.windowManager.open({
|
|
title: "Document properties",
|
|
data: l,
|
|
defaults: { type: "textbox", size: 40 },
|
|
body: [
|
|
{ name: "title", label: "Title" },
|
|
{ name: "keywords", label: "Keywords" },
|
|
{ name: "description", label: "Description" },
|
|
{ name: "robots", label: "Robots" },
|
|
{ name: "author", label: "Author" },
|
|
{ name: "docencoding", label: "Encoding" }
|
|
],
|
|
onSubmit: function(i) {
|
|
var r = y(e, n.extend(l, i.data), t.get());
|
|
t.set(r);
|
|
}
|
|
});
|
|
},
|
|
_ = function(e, t) {
|
|
e.addCommand("mceFullPageProperties", function() {
|
|
v(e, t);
|
|
});
|
|
},
|
|
b = function(e, t) {
|
|
return (
|
|
n.each(e, function(e) {
|
|
t = t.replace(e, function(e) {
|
|
return "\x3c!--mce:protected " + escape(e) + "--\x3e";
|
|
});
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
x = function(e) {
|
|
return e.replace(/<!--mce:protected ([\s\S]*?)-->/g, function(e, t) {
|
|
return unescape(t);
|
|
});
|
|
},
|
|
k = n.each,
|
|
C = function(e) {
|
|
return e.replace(/<\/?[A-Z]+/g, function(e) {
|
|
return e.toLowerCase();
|
|
});
|
|
},
|
|
A = function(e) {
|
|
var t,
|
|
n = "",
|
|
l = "";
|
|
if (a(e)) {
|
|
var i = c(e);
|
|
n += '<?xml version="1.0" encoding="' + (i || "ISO-8859-1") + '" ?>\n';
|
|
}
|
|
return (
|
|
(n += g(e)),
|
|
(n += "\n<html>\n<head>\n"),
|
|
(t = f(e)) && (n += "<title>" + t + "</title>\n"),
|
|
(t = c(e)) &&
|
|
(n +=
|
|
'<meta http-equiv="Content-Type" content="text/html; charset=' +
|
|
t +
|
|
'" />\n'),
|
|
(t = s(e)) && (l += "font-family: " + t + ";"),
|
|
(t = u(e)) && (l += "font-size: " + t + ";"),
|
|
(t = d(e)) && (l += "color: " + t + ";"),
|
|
(n += "</head>\n<body" + (l ? ' style="' + l + '"' : "") + ">\n")
|
|
);
|
|
},
|
|
w = function(e, t, l) {
|
|
e.on("BeforeSetContent", function(i) {
|
|
!(function(e, t, l, i) {
|
|
var r,
|
|
a,
|
|
c,
|
|
s,
|
|
u,
|
|
d = "",
|
|
f = e.dom;
|
|
if (
|
|
!(
|
|
i.selection ||
|
|
((c = b(e.settings.protect, i.content)),
|
|
("raw" === i.format && t.get()) || (i.source_view && o(e)))
|
|
)
|
|
) {
|
|
0 !== c.length ||
|
|
i.source_view ||
|
|
(c = n.trim(t.get()) + "\n" + n.trim(c) + "\n" + n.trim(l.get())),
|
|
-1 !==
|
|
(r = (c = c.replace(/<(\/?)BODY/gi, "<$1body")).indexOf("<body"))
|
|
? ((r = c.indexOf(">", r)),
|
|
t.set(C(c.substring(0, r + 1))),
|
|
-1 === (a = c.indexOf("</body", r)) && (a = c.length),
|
|
(i.content = n.trim(c.substring(r + 1, a))),
|
|
l.set(C(c.substring(a))))
|
|
: (t.set(A(e)), l.set("\n</body>\n</html>")),
|
|
(s = h(t.get())),
|
|
k(s.getAll("style"), function(e) {
|
|
e.firstChild && (d += e.firstChild.value);
|
|
}),
|
|
(u = s.getAll("body")[0]) &&
|
|
f.setAttribs(e.getBody(), {
|
|
style: u.attr("style") || "",
|
|
dir: u.attr("dir") || "",
|
|
vLink: u.attr("vlink") || "",
|
|
link: u.attr("link") || "",
|
|
aLink: u.attr("alink") || ""
|
|
}),
|
|
f.remove("fullpage_styles");
|
|
var g = e.getDoc().getElementsByTagName("head")[0];
|
|
d &&
|
|
(f.add(g, "style", { id: "fullpage_styles" }, d),
|
|
(u = f.get("fullpage_styles")).styleSheet &&
|
|
(u.styleSheet.cssText = d));
|
|
var m = {};
|
|
n.each(g.getElementsByTagName("link"), function(e) {
|
|
"stylesheet" === e.rel &&
|
|
e.getAttribute("data-mce-fullpage") &&
|
|
(m[e.href] = e);
|
|
}),
|
|
n.each(s.getAll("link"), function(e) {
|
|
var t = e.attr("href");
|
|
if (!t) return !0;
|
|
m[t] ||
|
|
"stylesheet" !== e.attr("rel") ||
|
|
f.add(g, "link", {
|
|
rel: "stylesheet",
|
|
text: "text/css",
|
|
href: t,
|
|
"data-mce-fullpage": "1"
|
|
}),
|
|
delete m[t];
|
|
}),
|
|
n.each(m, function(e) {
|
|
e.parentNode.removeChild(e);
|
|
});
|
|
}
|
|
})(e, t, l, i);
|
|
}),
|
|
e.on("GetContent", function(i) {
|
|
var r, a, c, s;
|
|
(r = e),
|
|
(a = t.get()),
|
|
(c = l.get()),
|
|
(s = i).selection ||
|
|
(s.source_view && o(r)) ||
|
|
(s.content = x(
|
|
n.trim(a) + "\n" + n.trim(s.content) + "\n" + n.trim(c)
|
|
));
|
|
});
|
|
},
|
|
P = function(e) {
|
|
e.addButton("fullpage", {
|
|
title: "Document properties",
|
|
cmd: "mceFullPageProperties"
|
|
}),
|
|
e.addMenuItem("fullpage", {
|
|
text: "Document properties",
|
|
cmd: "mceFullPageProperties",
|
|
context: "file"
|
|
});
|
|
};
|
|
t.add("fullpage", function(t) {
|
|
var n = e(""),
|
|
l = e("");
|
|
_(t, n), P(t), w(t, n, l);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
i = [
|
|
["cool", "cry", "embarassed", "foot-in-mouth"],
|
|
["frown", "innocent", "kiss", "laughing"],
|
|
["money-mouth", "sealed", "smile", "surprised"],
|
|
["tongue-out", "undecided", "wink", "yell"]
|
|
],
|
|
o = function(t) {
|
|
var o;
|
|
return (
|
|
(o = '<table role="list" class="mce-grid">'),
|
|
e.each(i, function(i) {
|
|
(o += "<tr>"),
|
|
e.each(i, function(e) {
|
|
var i = t + "/img/smiley-" + e + ".gif";
|
|
o +=
|
|
'<td><a href="#" data-mce-url="' +
|
|
i +
|
|
'" data-mce-alt="' +
|
|
e +
|
|
'" tabindex="-1" role="option" aria-label="' +
|
|
e +
|
|
'"><img src="' +
|
|
i +
|
|
'" style="width: 18px; height: 18px" role="presentation" /></a></td>';
|
|
}),
|
|
(o += "</tr>");
|
|
}),
|
|
(o += "</table>")
|
|
);
|
|
},
|
|
n = function(t, e) {
|
|
var i = o(e);
|
|
t.addButton("emoticons", {
|
|
type: "panelbutton",
|
|
panel: {
|
|
role: "application",
|
|
autohide: !0,
|
|
html: i,
|
|
onclick: function(e) {
|
|
var i,
|
|
o,
|
|
n,
|
|
a = t.dom.getParent(e.target, "a");
|
|
a &&
|
|
((i = t),
|
|
(o = a.getAttribute("data-mce-url")),
|
|
(n = a.getAttribute("data-mce-alt")),
|
|
i.insertContent(i.dom.createHTML("img", { src: o, alt: n })),
|
|
this.hide());
|
|
}
|
|
},
|
|
tooltip: "Emoticons"
|
|
});
|
|
};
|
|
t.add("emoticons", function(t, e) {
|
|
n(t, e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
i = function(t, i) {
|
|
var n,
|
|
o = t.dom,
|
|
c = t.selection.getSelectedBlocks();
|
|
c.length &&
|
|
((n = o.getAttrib(c[0], "dir")),
|
|
e.each(c, function(t) {
|
|
o.getParent(t.parentNode, '*[dir="' + i + '"]', o.getRoot()) ||
|
|
o.setAttrib(t, "dir", n !== i ? i : null);
|
|
}),
|
|
t.nodeChanged());
|
|
},
|
|
n = function(t) {
|
|
t.addCommand("mceDirectionLTR", function() {
|
|
i(t, "ltr");
|
|
}),
|
|
t.addCommand("mceDirectionRTL", function() {
|
|
i(t, "rtl");
|
|
});
|
|
},
|
|
o = function(t) {
|
|
var i = [];
|
|
return (
|
|
e.each("h1 h2 h3 h4 h5 h6 div p".split(" "), function(e) {
|
|
i.push(e + "[dir=" + t + "]");
|
|
}),
|
|
i.join(",")
|
|
);
|
|
},
|
|
c = function(t) {
|
|
t.addButton("ltr", {
|
|
title: "Left to right",
|
|
cmd: "mceDirectionLTR",
|
|
stateSelector: o("ltr")
|
|
}),
|
|
t.addButton("rtl", {
|
|
title: "Right to left",
|
|
cmd: "mceDirectionRTL",
|
|
stateSelector: o("rtl")
|
|
});
|
|
};
|
|
t.add("directionality", function(t) {
|
|
n(t), c(t);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = function(n) {
|
|
var e = n,
|
|
o = function() {
|
|
return e;
|
|
};
|
|
return {
|
|
get: o,
|
|
set: function(t) {
|
|
e = t;
|
|
},
|
|
clone: function() {
|
|
return t(o());
|
|
}
|
|
};
|
|
},
|
|
n = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = function(t) {
|
|
return {
|
|
isContextMenuVisible: function() {
|
|
return t.get();
|
|
}
|
|
};
|
|
},
|
|
o = function(t) {
|
|
return t.settings.contextmenu_never_use_native;
|
|
},
|
|
r = function(t) {
|
|
return t.getParam(
|
|
"contextmenu",
|
|
"link openlink image inserttable | cell row column deletetable"
|
|
);
|
|
},
|
|
i = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
u = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
c = function(t, n) {
|
|
return { x: t, y: n };
|
|
},
|
|
l = function(t, n, e) {
|
|
return c(t.x + n, t.y + e);
|
|
},
|
|
s = function(t, n) {
|
|
if (t && "static" !== u.DOM.getStyle(t, "position", !0)) {
|
|
var e = u.DOM.getPos(t),
|
|
o = e.x - t.scrollLeft,
|
|
r = e.y - t.scrollTop;
|
|
return l(n, -o, -r);
|
|
}
|
|
return l(n, 0, 0);
|
|
},
|
|
a = function(t) {
|
|
return i.container;
|
|
},
|
|
f = function(t, n) {
|
|
if (t.inline) return s(a(), c((f = n).pageX, f.pageY));
|
|
var e,
|
|
o,
|
|
r,
|
|
i,
|
|
f,
|
|
m = ((e = t.getContentAreaContainer()),
|
|
(o = c((i = n).clientX, i.clientY)),
|
|
(r = u.DOM.getPos(e)),
|
|
l(o, r.x, r.y));
|
|
return s(a(), m);
|
|
},
|
|
m = tinymce.util.Tools.resolve("tinymce.ui.Factory"),
|
|
v = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
g = function(t, n, e, o) {
|
|
null === o.get()
|
|
? o.set(
|
|
(function(t, n) {
|
|
var e,
|
|
o,
|
|
i = [];
|
|
(o = r(t)),
|
|
v.each(o.split(/[ ,]/), function(n) {
|
|
var e = t.menuItems[n];
|
|
"|" === n && (e = { text: n }),
|
|
e && ((e.shortcut = ""), i.push(e));
|
|
});
|
|
for (var u = 0; u < i.length; u++)
|
|
"|" === i[u].text &&
|
|
((0 !== u && u !== i.length - 1) || i.splice(u, 1));
|
|
return (
|
|
(e = m
|
|
.create("menu", {
|
|
items: i,
|
|
context: "contextmenu",
|
|
classes: "contextmenu"
|
|
})
|
|
.renderTo()).on("hide", function(t) {
|
|
t.control === this && n.set(!1);
|
|
}),
|
|
t.on("remove", function() {
|
|
e.remove(), (e = null);
|
|
}),
|
|
e
|
|
);
|
|
})(t, e)
|
|
)
|
|
: o.get().show(),
|
|
o.get().moveTo(n.x, n.y),
|
|
e.set(!0);
|
|
},
|
|
y = function(t, n, e) {
|
|
t.on("contextmenu", function(r) {
|
|
var i;
|
|
(i = t),
|
|
(!r.ctrlKey || o(i)) && (r.preventDefault(), g(t, f(t, r), n, e));
|
|
});
|
|
};
|
|
n.add("contextmenu", function(n) {
|
|
var o = t(null),
|
|
r = t(!1);
|
|
return y(n, r, o), e(r);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = tinymce.util.Tools.resolve("tinymce.util.Color"),
|
|
i = function(e, n) {
|
|
e.find("#preview")[0].getEl().style.background = n;
|
|
},
|
|
t = function(e, t) {
|
|
var l = n(t),
|
|
a = l.toRgb();
|
|
e.fromJSON({ r: a.r, g: a.g, b: a.b, hex: l.toHex().substr(1) }),
|
|
i(e, l.toHex());
|
|
},
|
|
l = function(e, n, l) {
|
|
var a = e.windowManager.open({
|
|
title: "Color",
|
|
items: {
|
|
type: "container",
|
|
layout: "flex",
|
|
direction: "row",
|
|
align: "stretch",
|
|
padding: 5,
|
|
spacing: 10,
|
|
items: [
|
|
{
|
|
type: "colorpicker",
|
|
value: l,
|
|
onchange: function() {
|
|
var e = this.rgb();
|
|
a &&
|
|
(a.find("#r").value(e.r),
|
|
a.find("#g").value(e.g),
|
|
a.find("#b").value(e.b),
|
|
a.find("#hex").value(this.value().substr(1)),
|
|
i(a, this.value()));
|
|
}
|
|
},
|
|
{
|
|
type: "form",
|
|
padding: 0,
|
|
labelGap: 5,
|
|
defaults: {
|
|
type: "textbox",
|
|
size: 7,
|
|
value: "0",
|
|
flex: 1,
|
|
spellcheck: !1,
|
|
onchange: function() {
|
|
var e,
|
|
n,
|
|
i = a.find("colorpicker")[0];
|
|
if (((e = this.name()), (n = this.value()), "hex" === e))
|
|
return t(a, (n = "#" + n)), void i.value(n);
|
|
(n = {
|
|
r: a.find("#r").value(),
|
|
g: a.find("#g").value(),
|
|
b: a.find("#b").value()
|
|
}),
|
|
i.value(n),
|
|
t(a, n);
|
|
}
|
|
},
|
|
items: [
|
|
{ name: "r", label: "R", autofocus: 1 },
|
|
{ name: "g", label: "G" },
|
|
{ name: "b", label: "B" },
|
|
{ name: "hex", label: "#", value: "000000" },
|
|
{ name: "preview", type: "container", border: 1 }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
onSubmit: function() {
|
|
n("#" + a.toJSON().hex);
|
|
}
|
|
});
|
|
t(a, l);
|
|
};
|
|
e.add("colorpicker", function(e) {
|
|
e.settings.color_picker_callback ||
|
|
(e.settings.color_picker_callback = function(n, i) {
|
|
l(e, n, i);
|
|
});
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = function(t) {
|
|
var a = t,
|
|
n = function() {
|
|
return a;
|
|
};
|
|
return {
|
|
get: n,
|
|
set: function(e) {
|
|
a = e;
|
|
},
|
|
clone: function() {
|
|
return e(n());
|
|
}
|
|
};
|
|
},
|
|
t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
a = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
n = function(e) {
|
|
return e.settings.codesample_content_css;
|
|
},
|
|
i = function(e) {
|
|
return e.settings.codesample_languages;
|
|
},
|
|
r = function(e) {
|
|
return Math.min(
|
|
a.DOM.getViewPort().w,
|
|
e.getParam("codesample_dialog_width", 800)
|
|
);
|
|
},
|
|
s = function(e) {
|
|
return Math.min(
|
|
a.DOM.getViewPort().w,
|
|
e.getParam("codesample_dialog_height", 650)
|
|
);
|
|
},
|
|
o = {},
|
|
l =
|
|
void 0 !== o
|
|
? o
|
|
: "undefined" != typeof WorkerGlobalScope &&
|
|
self instanceof WorkerGlobalScope
|
|
? self
|
|
: {},
|
|
c = (function() {
|
|
var e = /\blang(?:uage)?-(?!\*)(\w+)\b/i,
|
|
t = (l.Prism = {
|
|
util: {
|
|
encode: function(e) {
|
|
return e instanceof a
|
|
? new a(e.type, t.util.encode(e.content), e.alias)
|
|
: "Array" === t.util.type(e)
|
|
? e.map(t.util.encode)
|
|
: e
|
|
.replace(/&/g, "&")
|
|
.replace(/</g, "<")
|
|
.replace(/\u00a0/g, " ");
|
|
},
|
|
type: function(e) {
|
|
return Object.prototype.toString
|
|
.call(e)
|
|
.match(/\[object (\w+)\]/)[1];
|
|
},
|
|
clone: function(e) {
|
|
switch (t.util.type(e)) {
|
|
case "Object":
|
|
var a = {};
|
|
for (var n in e)
|
|
e.hasOwnProperty(n) && (a[n] = t.util.clone(e[n]));
|
|
return a;
|
|
case "Array":
|
|
return (
|
|
e.map &&
|
|
e.map(function(e) {
|
|
return t.util.clone(e);
|
|
})
|
|
);
|
|
}
|
|
return e;
|
|
}
|
|
},
|
|
languages: {
|
|
extend: function(e, a) {
|
|
var n = t.util.clone(t.languages[e]);
|
|
for (var i in a) n[i] = a[i];
|
|
return n;
|
|
},
|
|
insertBefore: function(e, a, n, i) {
|
|
var r = (i = i || t.languages)[e];
|
|
if (2 === arguments.length) {
|
|
for (var s in (n = arguments[1]))
|
|
n.hasOwnProperty(s) && (r[s] = n[s]);
|
|
return r;
|
|
}
|
|
var o = {};
|
|
for (var l in r)
|
|
if (r.hasOwnProperty(l)) {
|
|
if (l === a)
|
|
for (var s in n) n.hasOwnProperty(s) && (o[s] = n[s]);
|
|
o[l] = r[l];
|
|
}
|
|
return (
|
|
t.languages.DFS(t.languages, function(t, a) {
|
|
a === i[e] && t !== e && (this[t] = o);
|
|
}),
|
|
(i[e] = o)
|
|
);
|
|
},
|
|
DFS: function(e, a, n) {
|
|
for (var i in e)
|
|
e.hasOwnProperty(i) &&
|
|
(a.call(e, i, e[i], n || i),
|
|
"Object" === t.util.type(e[i])
|
|
? t.languages.DFS(e[i], a)
|
|
: "Array" === t.util.type(e[i]) &&
|
|
t.languages.DFS(e[i], a, i));
|
|
}
|
|
},
|
|
plugins: {},
|
|
highlightAll: function(e, a) {
|
|
for (
|
|
var n = document.querySelectorAll(
|
|
'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
|
|
),
|
|
i = 0,
|
|
r = void 0;
|
|
(r = n[i++]);
|
|
|
|
)
|
|
t.highlightElement(r, !0 === e, a);
|
|
},
|
|
highlightElement: function(a, n, i) {
|
|
for (var r, s, o = a; o && !e.test(o.className); ) o = o.parentNode;
|
|
o &&
|
|
((r = (o.className.match(e) || [, ""])[1]), (s = t.languages[r])),
|
|
(a.className =
|
|
a.className.replace(e, "").replace(/\s+/g, " ") +
|
|
" language-" +
|
|
r),
|
|
(o = a.parentNode),
|
|
/pre/i.test(o.nodeName) &&
|
|
(o.className =
|
|
o.className.replace(e, "").replace(/\s+/g, " ") +
|
|
" language-" +
|
|
r);
|
|
var c = a.textContent,
|
|
u = { element: a, language: r, grammar: s, code: c };
|
|
if (c && s)
|
|
if ((t.hooks.run("before-highlight", u), n && l.Worker)) {
|
|
var g = new Worker(t.filename);
|
|
(g.onmessage = function(e) {
|
|
(u.highlightedCode = e.data),
|
|
t.hooks.run("before-insert", u),
|
|
(u.element.innerHTML = u.highlightedCode),
|
|
i && i.call(u.element),
|
|
t.hooks.run("after-highlight", u),
|
|
t.hooks.run("complete", u);
|
|
}),
|
|
g.postMessage(
|
|
JSON.stringify({
|
|
language: u.language,
|
|
code: u.code,
|
|
immediateClose: !0
|
|
})
|
|
);
|
|
} else
|
|
(u.highlightedCode = t.highlight(
|
|
u.code,
|
|
u.grammar,
|
|
u.language
|
|
)),
|
|
t.hooks.run("before-insert", u),
|
|
(u.element.innerHTML = u.highlightedCode),
|
|
i && i.call(a),
|
|
t.hooks.run("after-highlight", u),
|
|
t.hooks.run("complete", u);
|
|
else t.hooks.run("complete", u);
|
|
},
|
|
highlight: function(e, n, i) {
|
|
var r = t.tokenize(e, n);
|
|
return a.stringify(t.util.encode(r), i);
|
|
},
|
|
tokenize: function(e, a, n) {
|
|
var i = t.Token,
|
|
r = [e],
|
|
s = a.rest;
|
|
if (s) {
|
|
for (var o in s) a[o] = s[o];
|
|
delete a.rest;
|
|
}
|
|
e: for (var o in a)
|
|
if (a.hasOwnProperty(o) && a[o]) {
|
|
var l = a[o];
|
|
l = "Array" === t.util.type(l) ? l : [l];
|
|
for (var c = 0; c < l.length; ++c) {
|
|
var u = l[c],
|
|
g = u.inside,
|
|
d = !!u.lookbehind,
|
|
p = 0,
|
|
f = u.alias;
|
|
u = u.pattern || u;
|
|
for (var h = 0; h < r.length; h++) {
|
|
var m = r[h];
|
|
if (r.length > e.length) break e;
|
|
if (!(m instanceof i)) {
|
|
u.lastIndex = 0;
|
|
var b = u.exec(m);
|
|
if (b) {
|
|
d && (p = b[1].length);
|
|
var y = b.index - 1 + p,
|
|
v = y + (b = b[0].slice(p)).length,
|
|
k = m.slice(0, y + 1),
|
|
w = m.slice(v + 1),
|
|
x = [h, 1];
|
|
k && x.push(k);
|
|
var S = new i(o, g ? t.tokenize(b, g) : b, f);
|
|
x.push(S),
|
|
w && x.push(w),
|
|
Array.prototype.splice.apply(r, x);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return r;
|
|
},
|
|
hooks: {
|
|
all: {},
|
|
add: function(e, a) {
|
|
var n = t.hooks.all;
|
|
(n[e] = n[e] || []), n[e].push(a);
|
|
},
|
|
run: function(e, a) {
|
|
var n = t.hooks.all[e];
|
|
if (n && n.length)
|
|
for (var i = 0, r = void 0; (r = n[i++]); ) r(a);
|
|
}
|
|
}
|
|
}),
|
|
a = (t.Token = function(e, t, a) {
|
|
(this.type = e), (this.content = t), (this.alias = a);
|
|
});
|
|
if (
|
|
((a.stringify = function(e, n, i) {
|
|
if ("string" == typeof e) return e;
|
|
if ("Array" === t.util.type(e))
|
|
return e
|
|
.map(function(t) {
|
|
return a.stringify(t, n, e);
|
|
})
|
|
.join("");
|
|
var r = {
|
|
type: e.type,
|
|
content: a.stringify(e.content, n, i),
|
|
tag: "span",
|
|
classes: ["token", e.type],
|
|
attributes: {},
|
|
language: n,
|
|
parent: i
|
|
};
|
|
if (
|
|
("comment" === r.type && (r.attributes.spellcheck = "true"),
|
|
e.alias)
|
|
) {
|
|
var s = "Array" === t.util.type(e.alias) ? e.alias : [e.alias];
|
|
Array.prototype.push.apply(r.classes, s);
|
|
}
|
|
t.hooks.run("wrap", r);
|
|
var o = "";
|
|
for (var l in r.attributes)
|
|
o += (o ? " " : "") + l + '="' + (r.attributes[l] || "") + '"';
|
|
return (
|
|
"<" +
|
|
r.tag +
|
|
' class="' +
|
|
r.classes.join(" ") +
|
|
'" ' +
|
|
o +
|
|
">" +
|
|
r.content +
|
|
"</" +
|
|
r.tag +
|
|
">"
|
|
);
|
|
}),
|
|
!l.document)
|
|
)
|
|
return l.addEventListener
|
|
? (l.addEventListener(
|
|
"message",
|
|
function(e) {
|
|
var a = JSON.parse(e.data),
|
|
n = a.language,
|
|
i = a.code,
|
|
r = a.immediateClose;
|
|
l.postMessage(t.highlight(i, t.languages[n], n)),
|
|
r && l.close();
|
|
},
|
|
!1
|
|
),
|
|
l.Prism)
|
|
: l.Prism;
|
|
})();
|
|
"undefined" != typeof module && module.exports && (module.exports = c),
|
|
"undefined" != typeof global && (global.Prism = c),
|
|
(c.languages.markup = {
|
|
comment: /<!--[\w\W]*?-->/,
|
|
prolog: /<\?[\w\W]+?\?>/,
|
|
doctype: /<!DOCTYPE[\w\W]+?>/,
|
|
cdata: /<!\[CDATA\[[\w\W]*?]]>/i,
|
|
tag: {
|
|
pattern: /<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
|
|
inside: {
|
|
tag: {
|
|
pattern: /^<\/?[^\s>\/]+/i,
|
|
inside: { punctuation: /^<\/?/, namespace: /^[^\s>\/:]+:/ }
|
|
},
|
|
"attr-value": {
|
|
pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,
|
|
inside: { punctuation: /[=>"']/ }
|
|
},
|
|
punctuation: /\/?>/,
|
|
"attr-name": {
|
|
pattern: /[^\s>\/]+/,
|
|
inside: { namespace: /^[^\s>\/:]+:/ }
|
|
}
|
|
}
|
|
},
|
|
entity: /&#?[\da-z]{1,8};/i
|
|
}),
|
|
c.hooks.add("wrap", function(e) {
|
|
"entity" === e.type &&
|
|
(e.attributes.title = e.content.replace(/&/, "&"));
|
|
}),
|
|
(c.languages.xml = c.languages.markup),
|
|
(c.languages.html = c.languages.markup),
|
|
(c.languages.mathml = c.languages.markup),
|
|
(c.languages.svg = c.languages.markup),
|
|
(c.languages.css = {
|
|
comment: /\/\*[\w\W]*?\*\//,
|
|
atrule: {
|
|
pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i,
|
|
inside: { rule: /@[\w-]+/ }
|
|
},
|
|
url: /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
|
|
selector: /[^\{\}\s][^\{\};]*?(?=\s*\{)/,
|
|
string: /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,
|
|
property: /(\b|\B)[\w-]+(?=\s*:)/i,
|
|
important: /\B!important\b/i,
|
|
function: /[-a-z0-9]+(?=\()/i,
|
|
punctuation: /[(){};:]/
|
|
}),
|
|
(c.languages.css.atrule.inside.rest = c.util.clone(c.languages.css)),
|
|
c.languages.markup &&
|
|
(c.languages.insertBefore("markup", "tag", {
|
|
style: {
|
|
pattern: /<style[\w\W]*?>[\w\W]*?<\/style>/i,
|
|
inside: {
|
|
tag: {
|
|
pattern: /<style[\w\W]*?>|<\/style>/i,
|
|
inside: c.languages.markup.tag.inside
|
|
},
|
|
rest: c.languages.css
|
|
},
|
|
alias: "language-css"
|
|
}
|
|
}),
|
|
c.languages.insertBefore(
|
|
"inside",
|
|
"attr-value",
|
|
{
|
|
"style-attr": {
|
|
pattern: /\s*style=("|').*?\1/i,
|
|
inside: {
|
|
"attr-name": {
|
|
pattern: /^\s*style/i,
|
|
inside: c.languages.markup.tag.inside
|
|
},
|
|
punctuation: /^\s*=\s*['"]|['"]\s*$/,
|
|
"attr-value": { pattern: /.+/i, inside: c.languages.css }
|
|
},
|
|
alias: "language-css"
|
|
}
|
|
},
|
|
c.languages.markup.tag
|
|
)),
|
|
(c.languages.clike = {
|
|
comment: [
|
|
{ pattern: /(^|[^\\])\/\*[\w\W]*?\*\//, lookbehind: !0 },
|
|
{ pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0 }
|
|
],
|
|
string: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
|
|
"class-name": {
|
|
pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
|
|
lookbehind: !0,
|
|
inside: { punctuation: /(\.|\\)/ }
|
|
},
|
|
keyword: /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
|
|
boolean: /\b(true|false)\b/,
|
|
function: /[a-z0-9_]+(?=\()/i,
|
|
number: /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,
|
|
operator: /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
|
|
punctuation: /[{}[\];(),.:]/
|
|
}),
|
|
(c.languages.javascript = c.languages.extend("clike", {
|
|
keyword: /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,
|
|
number: /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
|
|
function: /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i
|
|
})),
|
|
c.languages.insertBefore("javascript", "keyword", {
|
|
regex: {
|
|
pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
|
|
lookbehind: !0
|
|
}
|
|
}),
|
|
c.languages.insertBefore("javascript", "class-name", {
|
|
"template-string": {
|
|
pattern: /`(?:\\`|\\?[^`])*`/,
|
|
inside: {
|
|
interpolation: {
|
|
pattern: /\$\{[^}]+\}/,
|
|
inside: {
|
|
"interpolation-punctuation": {
|
|
pattern: /^\$\{|\}$/,
|
|
alias: "punctuation"
|
|
},
|
|
rest: c.languages.javascript
|
|
}
|
|
},
|
|
string: /[\s\S]+/
|
|
}
|
|
}
|
|
}),
|
|
c.languages.markup &&
|
|
c.languages.insertBefore("markup", "tag", {
|
|
script: {
|
|
pattern: /<script[\w\W]*?>[\w\W]*?<\/script>/i,
|
|
inside: {
|
|
tag: {
|
|
pattern: /<script[\w\W]*?>|<\/script>/i,
|
|
inside: c.languages.markup.tag.inside
|
|
},
|
|
rest: c.languages.javascript
|
|
},
|
|
alias: "language-javascript"
|
|
}
|
|
}),
|
|
(c.languages.js = c.languages.javascript),
|
|
(c.languages.c = c.languages.extend("clike", {
|
|
keyword: /\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,
|
|
operator: /\-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|?\||[~^%?*\/]/,
|
|
number: /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i
|
|
})),
|
|
c.languages.insertBefore("c", "string", {
|
|
macro: {
|
|
pattern: /(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,
|
|
lookbehind: !0,
|
|
alias: "property",
|
|
inside: {
|
|
string: {
|
|
pattern: /(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,
|
|
lookbehind: !0
|
|
}
|
|
}
|
|
}
|
|
}),
|
|
delete c.languages.c["class-name"],
|
|
delete c.languages.c["boolean"],
|
|
(c.languages.csharp = c.languages.extend("clike", {
|
|
keyword: /\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,
|
|
string: [/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/, /("|')(\\?.)*?\1/],
|
|
number: /\b-?(0x[\da-f]+|\d*\.?\d+)\b/i
|
|
})),
|
|
c.languages.insertBefore("csharp", "keyword", {
|
|
preprocessor: { pattern: /(^\s*)#.*/m, lookbehind: !0 }
|
|
}),
|
|
(c.languages.cpp = c.languages.extend("c", {
|
|
keyword: /\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,
|
|
boolean: /\b(true|false)\b/,
|
|
operator: /[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/
|
|
})),
|
|
c.languages.insertBefore("cpp", "keyword", {
|
|
"class-name": { pattern: /(class\s+)[a-z0-9_]+/i, lookbehind: !0 }
|
|
}),
|
|
(c.languages.java = c.languages.extend("clike", {
|
|
keyword: /\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,
|
|
number: /\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,
|
|
operator: {
|
|
pattern: /(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,
|
|
lookbehind: !0
|
|
}
|
|
})),
|
|
(c.languages.php = c.languages.extend("clike", {
|
|
keyword: /\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,
|
|
constant: /\b[A-Z0-9_]{2,}\b/,
|
|
comment: {
|
|
pattern: /(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,
|
|
lookbehind: !0
|
|
}
|
|
})),
|
|
c.languages.insertBefore("php", "class-name", {
|
|
"shell-comment": {
|
|
pattern: /(^|[^\\])#.*/,
|
|
lookbehind: !0,
|
|
alias: "comment"
|
|
}
|
|
}),
|
|
c.languages.insertBefore("php", "keyword", {
|
|
delimiter: /\?>|<\?(?:php)?/i,
|
|
variable: /\$\w+\b/i,
|
|
package: {
|
|
pattern: /(\\|namespace\s+|use\s+)[\w\\]+/,
|
|
lookbehind: !0,
|
|
inside: { punctuation: /\\/ }
|
|
}
|
|
}),
|
|
c.languages.insertBefore("php", "operator", {
|
|
property: { pattern: /(->)[\w]+/, lookbehind: !0 }
|
|
}),
|
|
c.languages.markup &&
|
|
(c.hooks.add("before-highlight", function(e) {
|
|
"php" === e.language &&
|
|
((e.tokenStack = []),
|
|
(e.backupCode = e.code),
|
|
(e.code = e.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi, function(
|
|
t
|
|
) {
|
|
return e.tokenStack.push(t), "{{{PHP" + e.tokenStack.length + "}}}";
|
|
})));
|
|
}),
|
|
c.hooks.add("before-insert", function(e) {
|
|
"php" === e.language && ((e.code = e.backupCode), delete e.backupCode);
|
|
}),
|
|
c.hooks.add("after-highlight", function(e) {
|
|
if ("php" === e.language) {
|
|
for (var t = 0, a = void 0; (a = e.tokenStack[t]); t++)
|
|
e.highlightedCode = e.highlightedCode.replace(
|
|
"{{{PHP" + (t + 1) + "}}}",
|
|
c.highlight(a, e.grammar, "php").replace(/\$/g, "$$$$")
|
|
);
|
|
e.element.innerHTML = e.highlightedCode;
|
|
}
|
|
}),
|
|
c.hooks.add("wrap", function(e) {
|
|
"php" === e.language &&
|
|
"markup" === e.type &&
|
|
(e.content = e.content.replace(
|
|
/(\{\{\{PHP[0-9]+\}\}\})/g,
|
|
'<span class="token php">$1</span>'
|
|
));
|
|
}),
|
|
c.languages.insertBefore("php", "comment", {
|
|
markup: { pattern: /<[^?]\/?(.*?)>/, inside: c.languages.markup },
|
|
php: /\{\{\{PHP[0-9]+\}\}\}/
|
|
})),
|
|
(c.languages.python = {
|
|
comment: { pattern: /(^|[^\\])#.*/, lookbehind: !0 },
|
|
string: /"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,
|
|
function: {
|
|
pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,
|
|
lookbehind: !0
|
|
},
|
|
"class-name": { pattern: /(\bclass\s+)[a-z0-9_]+/i, lookbehind: !0 },
|
|
keyword: /\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,
|
|
boolean: /\b(?:True|False)\b/,
|
|
number: /\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,
|
|
operator: /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,
|
|
punctuation: /[{}[\];(),.:]/
|
|
}),
|
|
(function(e) {
|
|
e.languages.ruby = e.languages.extend("clike", {
|
|
comment: /#(?!\{[^\r\n]*?\}).*/,
|
|
keyword: /\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/
|
|
});
|
|
var t = {
|
|
pattern: /#\{[^}]+\}/,
|
|
inside: {
|
|
delimiter: { pattern: /^#\{|\}$/, alias: "tag" },
|
|
rest: e.util.clone(e.languages.ruby)
|
|
}
|
|
};
|
|
e.languages.insertBefore("ruby", "keyword", {
|
|
regex: [
|
|
{
|
|
pattern: /%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,
|
|
lookbehind: !0
|
|
}
|
|
],
|
|
variable: /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,
|
|
symbol: /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/
|
|
}),
|
|
e.languages.insertBefore("ruby", "number", {
|
|
builtin: /\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,
|
|
constant: /\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/
|
|
}),
|
|
(e.languages.ruby.string = [
|
|
{
|
|
pattern: /%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,
|
|
inside: { interpolation: t }
|
|
},
|
|
{
|
|
pattern: /("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,
|
|
inside: { interpolation: t }
|
|
}
|
|
]);
|
|
})(c);
|
|
var u = {
|
|
isCodeSample: function(e) {
|
|
return (
|
|
e && "PRE" === e.nodeName && -1 !== e.className.indexOf("language-")
|
|
);
|
|
},
|
|
trimArg: function(e) {
|
|
return function(t, a) {
|
|
return e(a);
|
|
};
|
|
}
|
|
},
|
|
g = function(e) {
|
|
var t = e.selection.getNode();
|
|
return u.isCodeSample(t) ? t : null;
|
|
},
|
|
d = g,
|
|
p = function(e, t, n) {
|
|
e.undoManager.transact(function() {
|
|
var i = g(e);
|
|
(n = a.DOM.encode(n)),
|
|
i
|
|
? (e.dom.setAttrib(i, "class", "language-" + t),
|
|
(i.innerHTML = n),
|
|
c.highlightElement(i),
|
|
e.selection.select(i))
|
|
: (e.insertContent(
|
|
'<pre id="__new" class="language-' + t + '">' + n + "</pre>"
|
|
),
|
|
e.selection.select(e.$("#__new").removeAttr("id")[0]));
|
|
});
|
|
},
|
|
f = function(e) {
|
|
var t = g(e);
|
|
return t ? t.textContent : "";
|
|
},
|
|
h = function(e) {
|
|
var t = i(e);
|
|
return (
|
|
t || [
|
|
{ text: "HTML/XML", value: "markup" },
|
|
{ text: "JavaScript", value: "javascript" },
|
|
{ text: "CSS", value: "css" },
|
|
{ text: "PHP", value: "php" },
|
|
{ text: "Ruby", value: "ruby" },
|
|
{ text: "Python", value: "python" },
|
|
{ text: "Java", value: "java" },
|
|
{ text: "C", value: "c" },
|
|
{ text: "C#", value: "csharp" },
|
|
{ text: "C++", value: "cpp" }
|
|
]
|
|
);
|
|
},
|
|
m = function(e) {
|
|
var t,
|
|
a = d(e);
|
|
return a && (t = a.className.match(/language-(\w+)/)) ? t[1] : "";
|
|
},
|
|
b = function(e) {
|
|
var t = r(e),
|
|
a = s(e),
|
|
n = m(e),
|
|
i = h(e),
|
|
o = f(e);
|
|
e.windowManager.open({
|
|
title: "Insert/Edit code sample",
|
|
minWidth: t,
|
|
minHeight: a,
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "stretch",
|
|
body: [
|
|
{
|
|
type: "listbox",
|
|
name: "language",
|
|
label: "Language",
|
|
maxWidth: 200,
|
|
value: n,
|
|
values: i
|
|
},
|
|
{
|
|
type: "textbox",
|
|
name: "code",
|
|
multiline: !0,
|
|
spellcheck: !1,
|
|
ariaLabel: "Code view",
|
|
flex: 1,
|
|
style: "direction: ltr; text-align: left",
|
|
classes: "monospace",
|
|
value: o,
|
|
autofocus: !0
|
|
}
|
|
],
|
|
onSubmit: function(t) {
|
|
p(e, t.data.language, t.data.code);
|
|
}
|
|
});
|
|
},
|
|
y = function(e) {
|
|
e.addCommand("codesample", function() {
|
|
var t = e.selection.getNode();
|
|
e.selection.isCollapsed() || u.isCodeSample(t)
|
|
? b(e)
|
|
: e.formatter.toggle("code");
|
|
});
|
|
},
|
|
v = function(e) {
|
|
var t = e.$;
|
|
e.on("PreProcess", function(e) {
|
|
t("pre[contenteditable=false]", e.node)
|
|
.filter(u.trimArg(u.isCodeSample))
|
|
.each(function(e, a) {
|
|
var n = t(a),
|
|
i = a.textContent;
|
|
n.attr("class", t.trim(n.attr("class"))),
|
|
n.removeAttr("contentEditable"),
|
|
n.empty().append(
|
|
t("<code></code>").each(function() {
|
|
this.textContent = i;
|
|
})
|
|
);
|
|
});
|
|
}),
|
|
e.on("SetContent", function() {
|
|
var a = t("pre")
|
|
.filter(u.trimArg(u.isCodeSample))
|
|
.filter(function(e, t) {
|
|
return "false" !== t.contentEditable;
|
|
});
|
|
a.length &&
|
|
e.undoManager.transact(function() {
|
|
a.each(function(a, n) {
|
|
t(n)
|
|
.find("br")
|
|
.each(function(t, a) {
|
|
a.parentNode.replaceChild(
|
|
e.getDoc().createTextNode("\n"),
|
|
a
|
|
);
|
|
}),
|
|
(n.contentEditable = !1),
|
|
(n.innerHTML = e.dom.encode(n.textContent)),
|
|
c.highlightElement(n),
|
|
(n.className = t.trim(n.className));
|
|
});
|
|
});
|
|
});
|
|
},
|
|
k = function(e, t, a, i) {
|
|
var r,
|
|
s = n(e);
|
|
(e.inline && a.get()) ||
|
|
(!e.inline && i.get()) ||
|
|
(e.inline ? a.set(!0) : i.set(!0),
|
|
!1 !== s &&
|
|
((r = e.dom.create("link", {
|
|
rel: "stylesheet",
|
|
href: s || t + "/css/prism.css"
|
|
})),
|
|
e
|
|
.getDoc()
|
|
.getElementsByTagName("head")[0]
|
|
.appendChild(r)));
|
|
},
|
|
w = function(e) {
|
|
e.addButton("codesample", {
|
|
cmd: "codesample",
|
|
title: "Insert/Edit code sample"
|
|
}),
|
|
e.addMenuItem("codesample", {
|
|
cmd: "codesample",
|
|
text: "Code sample",
|
|
icon: "codesample"
|
|
});
|
|
},
|
|
x = e(!1);
|
|
t.add("codesample", function(t, a) {
|
|
var n = e(!1);
|
|
v(t),
|
|
w(t),
|
|
y(t),
|
|
t.on("init", function() {
|
|
k(t, a, x, n);
|
|
}),
|
|
t.on("dblclick", function(e) {
|
|
u.isCodeSample(e.target) && b(t);
|
|
});
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
e = function(t) {
|
|
return t.getParam("code_dialog_width", 600);
|
|
},
|
|
o = function(t) {
|
|
return t.getParam(
|
|
"code_dialog_height",
|
|
Math.min(n.DOM.getViewPort().h - 200, 500)
|
|
);
|
|
},
|
|
i = function(t, n) {
|
|
t.focus(),
|
|
t.undoManager.transact(function() {
|
|
t.setContent(n);
|
|
}),
|
|
t.selection.setCursorLocation(),
|
|
t.nodeChanged();
|
|
},
|
|
c = function(t) {
|
|
return t.getContent({ source_view: !0 });
|
|
},
|
|
d = function(t) {
|
|
var n = e(t),
|
|
d = o(t);
|
|
t.windowManager
|
|
.open({
|
|
title: "Source code",
|
|
body: {
|
|
type: "textbox",
|
|
name: "code",
|
|
multiline: !0,
|
|
minWidth: n,
|
|
minHeight: d,
|
|
spellcheck: !1,
|
|
style: "direction: ltr; text-align: left"
|
|
},
|
|
onSubmit: function(n) {
|
|
i(t, n.data.code);
|
|
}
|
|
})
|
|
.find("#code")
|
|
.value(c(t));
|
|
},
|
|
u = function(t) {
|
|
t.addCommand("mceCodeEditor", function() {
|
|
d(t);
|
|
});
|
|
},
|
|
a = function(t) {
|
|
t.addButton("code", {
|
|
icon: "code",
|
|
tooltip: "Source code",
|
|
onclick: function() {
|
|
d(t);
|
|
}
|
|
}),
|
|
t.addMenuItem("code", {
|
|
icon: "code",
|
|
text: "Source code",
|
|
onclick: function() {
|
|
d(t);
|
|
}
|
|
});
|
|
};
|
|
t.add("code", function(t) {
|
|
return u(t), a(t), {};
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = function(e, t) {
|
|
return e.fire("insertCustomChar", { chr: t });
|
|
},
|
|
a = function(e, a) {
|
|
var i = t(e, a).chr;
|
|
e.execCommand("mceInsertContent", !1, i);
|
|
},
|
|
i = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
r = function(e) {
|
|
return e.settings.charmap;
|
|
},
|
|
n = function(e) {
|
|
return e.settings.charmap_append;
|
|
},
|
|
o = i.isArray,
|
|
l = function(e) {
|
|
return o(e)
|
|
? [].concat(
|
|
((t = e),
|
|
i.grep(t, function(e) {
|
|
return o(e) && 2 === e.length;
|
|
}))
|
|
)
|
|
: "function" == typeof e
|
|
? e()
|
|
: [];
|
|
var t;
|
|
},
|
|
c = function(e) {
|
|
return (function(e, t) {
|
|
var a = r(e);
|
|
a && (t = l(a));
|
|
var i = n(e);
|
|
return i ? [].concat(t).concat(l(i)) : t;
|
|
})(e, [
|
|
["160", "no-break space"],
|
|
["173", "soft hyphen"],
|
|
["34", "quotation mark"],
|
|
["162", "cent sign"],
|
|
["8364", "euro sign"],
|
|
["163", "pound sign"],
|
|
["165", "yen sign"],
|
|
["169", "copyright sign"],
|
|
["174", "registered sign"],
|
|
["8482", "trade mark sign"],
|
|
["8240", "per mille sign"],
|
|
["181", "micro sign"],
|
|
["183", "middle dot"],
|
|
["8226", "bullet"],
|
|
["8230", "three dot leader"],
|
|
["8242", "minutes / feet"],
|
|
["8243", "seconds / inches"],
|
|
["167", "section sign"],
|
|
["182", "paragraph sign"],
|
|
["223", "sharp s / ess-zed"],
|
|
["8249", "single left-pointing angle quotation mark"],
|
|
["8250", "single right-pointing angle quotation mark"],
|
|
["171", "left pointing guillemet"],
|
|
["187", "right pointing guillemet"],
|
|
["8216", "left single quotation mark"],
|
|
["8217", "right single quotation mark"],
|
|
["8220", "left double quotation mark"],
|
|
["8221", "right double quotation mark"],
|
|
["8218", "single low-9 quotation mark"],
|
|
["8222", "double low-9 quotation mark"],
|
|
["60", "less-than sign"],
|
|
["62", "greater-than sign"],
|
|
["8804", "less-than or equal to"],
|
|
["8805", "greater-than or equal to"],
|
|
["8211", "en dash"],
|
|
["8212", "em dash"],
|
|
["175", "macron"],
|
|
["8254", "overline"],
|
|
["164", "currency sign"],
|
|
["166", "broken bar"],
|
|
["168", "diaeresis"],
|
|
["161", "inverted exclamation mark"],
|
|
["191", "turned question mark"],
|
|
["710", "circumflex accent"],
|
|
["732", "small tilde"],
|
|
["176", "degree sign"],
|
|
["8722", "minus sign"],
|
|
["177", "plus-minus sign"],
|
|
["247", "division sign"],
|
|
["8260", "fraction slash"],
|
|
["215", "multiplication sign"],
|
|
["185", "superscript one"],
|
|
["178", "superscript two"],
|
|
["179", "superscript three"],
|
|
["188", "fraction one quarter"],
|
|
["189", "fraction one half"],
|
|
["190", "fraction three quarters"],
|
|
["402", "function / florin"],
|
|
["8747", "integral"],
|
|
["8721", "n-ary sumation"],
|
|
["8734", "infinity"],
|
|
["8730", "square root"],
|
|
["8764", "similar to"],
|
|
["8773", "approximately equal to"],
|
|
["8776", "almost equal to"],
|
|
["8800", "not equal to"],
|
|
["8801", "identical to"],
|
|
["8712", "element of"],
|
|
["8713", "not an element of"],
|
|
["8715", "contains as member"],
|
|
["8719", "n-ary product"],
|
|
["8743", "logical and"],
|
|
["8744", "logical or"],
|
|
["172", "not sign"],
|
|
["8745", "intersection"],
|
|
["8746", "union"],
|
|
["8706", "partial differential"],
|
|
["8704", "for all"],
|
|
["8707", "there exists"],
|
|
["8709", "diameter"],
|
|
["8711", "backward difference"],
|
|
["8727", "asterisk operator"],
|
|
["8733", "proportional to"],
|
|
["8736", "angle"],
|
|
["180", "acute accent"],
|
|
["184", "cedilla"],
|
|
["170", "feminine ordinal indicator"],
|
|
["186", "masculine ordinal indicator"],
|
|
["8224", "dagger"],
|
|
["8225", "double dagger"],
|
|
["192", "A - grave"],
|
|
["193", "A - acute"],
|
|
["194", "A - circumflex"],
|
|
["195", "A - tilde"],
|
|
["196", "A - diaeresis"],
|
|
["197", "A - ring above"],
|
|
["256", "A - macron"],
|
|
["198", "ligature AE"],
|
|
["199", "C - cedilla"],
|
|
["200", "E - grave"],
|
|
["201", "E - acute"],
|
|
["202", "E - circumflex"],
|
|
["203", "E - diaeresis"],
|
|
["274", "E - macron"],
|
|
["204", "I - grave"],
|
|
["205", "I - acute"],
|
|
["206", "I - circumflex"],
|
|
["207", "I - diaeresis"],
|
|
["298", "I - macron"],
|
|
["208", "ETH"],
|
|
["209", "N - tilde"],
|
|
["210", "O - grave"],
|
|
["211", "O - acute"],
|
|
["212", "O - circumflex"],
|
|
["213", "O - tilde"],
|
|
["214", "O - diaeresis"],
|
|
["216", "O - slash"],
|
|
["332", "O - macron"],
|
|
["338", "ligature OE"],
|
|
["352", "S - caron"],
|
|
["217", "U - grave"],
|
|
["218", "U - acute"],
|
|
["219", "U - circumflex"],
|
|
["220", "U - diaeresis"],
|
|
["362", "U - macron"],
|
|
["221", "Y - acute"],
|
|
["376", "Y - diaeresis"],
|
|
["562", "Y - macron"],
|
|
["222", "THORN"],
|
|
["224", "a - grave"],
|
|
["225", "a - acute"],
|
|
["226", "a - circumflex"],
|
|
["227", "a - tilde"],
|
|
["228", "a - diaeresis"],
|
|
["229", "a - ring above"],
|
|
["257", "a - macron"],
|
|
["230", "ligature ae"],
|
|
["231", "c - cedilla"],
|
|
["232", "e - grave"],
|
|
["233", "e - acute"],
|
|
["234", "e - circumflex"],
|
|
["235", "e - diaeresis"],
|
|
["275", "e - macron"],
|
|
["236", "i - grave"],
|
|
["237", "i - acute"],
|
|
["238", "i - circumflex"],
|
|
["239", "i - diaeresis"],
|
|
["299", "i - macron"],
|
|
["240", "eth"],
|
|
["241", "n - tilde"],
|
|
["242", "o - grave"],
|
|
["243", "o - acute"],
|
|
["244", "o - circumflex"],
|
|
["245", "o - tilde"],
|
|
["246", "o - diaeresis"],
|
|
["248", "o slash"],
|
|
["333", "o macron"],
|
|
["339", "ligature oe"],
|
|
["353", "s - caron"],
|
|
["249", "u - grave"],
|
|
["250", "u - acute"],
|
|
["251", "u - circumflex"],
|
|
["252", "u - diaeresis"],
|
|
["363", "u - macron"],
|
|
["253", "y - acute"],
|
|
["254", "thorn"],
|
|
["255", "y - diaeresis"],
|
|
["563", "y - macron"],
|
|
["913", "Alpha"],
|
|
["914", "Beta"],
|
|
["915", "Gamma"],
|
|
["916", "Delta"],
|
|
["917", "Epsilon"],
|
|
["918", "Zeta"],
|
|
["919", "Eta"],
|
|
["920", "Theta"],
|
|
["921", "Iota"],
|
|
["922", "Kappa"],
|
|
["923", "Lambda"],
|
|
["924", "Mu"],
|
|
["925", "Nu"],
|
|
["926", "Xi"],
|
|
["927", "Omicron"],
|
|
["928", "Pi"],
|
|
["929", "Rho"],
|
|
["931", "Sigma"],
|
|
["932", "Tau"],
|
|
["933", "Upsilon"],
|
|
["934", "Phi"],
|
|
["935", "Chi"],
|
|
["936", "Psi"],
|
|
["937", "Omega"],
|
|
["945", "alpha"],
|
|
["946", "beta"],
|
|
["947", "gamma"],
|
|
["948", "delta"],
|
|
["949", "epsilon"],
|
|
["950", "zeta"],
|
|
["951", "eta"],
|
|
["952", "theta"],
|
|
["953", "iota"],
|
|
["954", "kappa"],
|
|
["955", "lambda"],
|
|
["956", "mu"],
|
|
["957", "nu"],
|
|
["958", "xi"],
|
|
["959", "omicron"],
|
|
["960", "pi"],
|
|
["961", "rho"],
|
|
["962", "final sigma"],
|
|
["963", "sigma"],
|
|
["964", "tau"],
|
|
["965", "upsilon"],
|
|
["966", "phi"],
|
|
["967", "chi"],
|
|
["968", "psi"],
|
|
["969", "omega"],
|
|
["8501", "alef symbol"],
|
|
["982", "pi symbol"],
|
|
["8476", "real part symbol"],
|
|
["978", "upsilon - hook symbol"],
|
|
["8472", "Weierstrass p"],
|
|
["8465", "imaginary part"],
|
|
["8592", "leftwards arrow"],
|
|
["8593", "upwards arrow"],
|
|
["8594", "rightwards arrow"],
|
|
["8595", "downwards arrow"],
|
|
["8596", "left right arrow"],
|
|
["8629", "carriage return"],
|
|
["8656", "leftwards double arrow"],
|
|
["8657", "upwards double arrow"],
|
|
["8658", "rightwards double arrow"],
|
|
["8659", "downwards double arrow"],
|
|
["8660", "left right double arrow"],
|
|
["8756", "therefore"],
|
|
["8834", "subset of"],
|
|
["8835", "superset of"],
|
|
["8836", "not a subset of"],
|
|
["8838", "subset of or equal to"],
|
|
["8839", "superset of or equal to"],
|
|
["8853", "circled plus"],
|
|
["8855", "circled times"],
|
|
["8869", "perpendicular"],
|
|
["8901", "dot operator"],
|
|
["8968", "left ceiling"],
|
|
["8969", "right ceiling"],
|
|
["8970", "left floor"],
|
|
["8971", "right floor"],
|
|
["9001", "left-pointing angle bracket"],
|
|
["9002", "right-pointing angle bracket"],
|
|
["9674", "lozenge"],
|
|
["9824", "black spade suit"],
|
|
["9827", "black club suit"],
|
|
["9829", "black heart suit"],
|
|
["9830", "black diamond suit"],
|
|
["8194", "en space"],
|
|
["8195", "em space"],
|
|
["8201", "thin space"],
|
|
["8204", "zero width non-joiner"],
|
|
["8205", "zero width joiner"],
|
|
["8206", "left-to-right mark"],
|
|
["8207", "right-to-left mark"]
|
|
]);
|
|
},
|
|
s = function(e) {
|
|
return {
|
|
getCharMap: function() {
|
|
return c(e);
|
|
},
|
|
insertChar: function(t) {
|
|
a(e, t);
|
|
}
|
|
};
|
|
},
|
|
u = function(e) {
|
|
var t,
|
|
a,
|
|
i,
|
|
r = Math.min(e.length, 25),
|
|
n = Math.ceil(e.length / r);
|
|
for (
|
|
t =
|
|
'<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>',
|
|
i = 0;
|
|
i < n;
|
|
i++
|
|
) {
|
|
for (t += "<tr>", a = 0; a < r; a++) {
|
|
var o = i * r + a;
|
|
if (o < e.length) {
|
|
var l = e[o],
|
|
c = parseInt(l[0], 10),
|
|
s = l ? String.fromCharCode(c) : " ";
|
|
t +=
|
|
'<td title="' +
|
|
l[1] +
|
|
'"><div tabindex="-1" title="' +
|
|
l[1] +
|
|
'" role="button" data-chr="' +
|
|
c +
|
|
'">' +
|
|
s +
|
|
"</div></td>";
|
|
} else t += "<td />";
|
|
}
|
|
t += "</tr>";
|
|
}
|
|
return (t += "</tbody></table>");
|
|
},
|
|
d = function(e) {
|
|
for (; e; ) {
|
|
if ("TD" === e.nodeName) return e;
|
|
e = e.parentNode;
|
|
}
|
|
},
|
|
m = function(e) {
|
|
var t,
|
|
i = {
|
|
type: "container",
|
|
html: u(c(e)),
|
|
onclick: function(i) {
|
|
var r = i.target;
|
|
if (/^(TD|DIV)$/.test(r.nodeName)) {
|
|
var n = d(r).firstChild;
|
|
if (n && n.hasAttribute("data-chr")) {
|
|
var o = n.getAttribute("data-chr"),
|
|
l = parseInt(o, 10);
|
|
isNaN(l) || a(e, String.fromCharCode(l)),
|
|
i.ctrlKey || t.close();
|
|
}
|
|
}
|
|
},
|
|
onmouseover: function(e) {
|
|
var a = d(e.target);
|
|
a && a.firstChild
|
|
? (t.find("#preview").text(a.firstChild.firstChild.data),
|
|
t.find("#previewTitle").text(a.title))
|
|
: (t.find("#preview").text(" "),
|
|
t.find("#previewTitle").text(" "));
|
|
}
|
|
};
|
|
t = e.windowManager.open({
|
|
title: "Special character",
|
|
spacing: 10,
|
|
padding: 10,
|
|
items: [
|
|
i,
|
|
{
|
|
type: "container",
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "center",
|
|
spacing: 5,
|
|
minWidth: 160,
|
|
minHeight: 160,
|
|
items: [
|
|
{
|
|
type: "label",
|
|
name: "preview",
|
|
text: " ",
|
|
style: "font-size: 40px; text-align: center",
|
|
border: 1,
|
|
minWidth: 140,
|
|
minHeight: 80
|
|
},
|
|
{ type: "spacer", minHeight: 20 },
|
|
{
|
|
type: "label",
|
|
name: "previewTitle",
|
|
text: " ",
|
|
style: "white-space: pre-wrap;",
|
|
border: 1,
|
|
minWidth: 140
|
|
}
|
|
]
|
|
}
|
|
],
|
|
buttons: [
|
|
{
|
|
text: "Close",
|
|
onclick: function() {
|
|
t.close();
|
|
}
|
|
}
|
|
]
|
|
});
|
|
},
|
|
g = function(e) {
|
|
e.addCommand("mceShowCharmap", function() {
|
|
m(e);
|
|
});
|
|
},
|
|
p = function(e) {
|
|
e.addButton("charmap", {
|
|
icon: "charmap",
|
|
tooltip: "Special character",
|
|
cmd: "mceShowCharmap"
|
|
}),
|
|
e.addMenuItem("charmap", {
|
|
icon: "charmap",
|
|
text: "Special character",
|
|
cmd: "mceShowCharmap",
|
|
context: "insert"
|
|
});
|
|
};
|
|
e.add("charmap", function(e) {
|
|
return g(e), p(e), s(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var o = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
e = function(o) {
|
|
o = t.trim(o);
|
|
var e = function(t, e) {
|
|
o = o.replace(t, e);
|
|
};
|
|
return (
|
|
e(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi, "[url=$1]$2[/url]"),
|
|
e(
|
|
/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,
|
|
"[code][color=$1]$2[/color][/code]"
|
|
),
|
|
e(
|
|
/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,
|
|
"[quote][color=$1]$2[/color][/quote]"
|
|
),
|
|
e(
|
|
/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,
|
|
"[code][color=$1]$2[/color][/code]"
|
|
),
|
|
e(
|
|
/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,
|
|
"[quote][color=$1]$2[/color][/quote]"
|
|
),
|
|
e(
|
|
/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,
|
|
"[color=$1]$2[/color]"
|
|
),
|
|
e(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, "[color=$1]$2[/color]"),
|
|
e(
|
|
/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,
|
|
"[size=$1]$2[/size]"
|
|
),
|
|
e(/<font>(.*?)<\/font>/gi, "$1"),
|
|
e(/<img.*?src=\"(.*?)\".*?\/>/gi, "[img]$1[/img]"),
|
|
e(/<span class=\"codeStyle\">(.*?)<\/span>/gi, "[code]$1[/code]"),
|
|
e(/<span class=\"quoteStyle\">(.*?)<\/span>/gi, "[quote]$1[/quote]"),
|
|
e(
|
|
/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,
|
|
"[code][b]$1[/b][/code]"
|
|
),
|
|
e(
|
|
/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,
|
|
"[quote][b]$1[/b][/quote]"
|
|
),
|
|
e(/<em class=\"codeStyle\">(.*?)<\/em>/gi, "[code][i]$1[/i][/code]"),
|
|
e(/<em class=\"quoteStyle\">(.*?)<\/em>/gi, "[quote][i]$1[/i][/quote]"),
|
|
e(/<u class=\"codeStyle\">(.*?)<\/u>/gi, "[code][u]$1[/u][/code]"),
|
|
e(/<u class=\"quoteStyle\">(.*?)<\/u>/gi, "[quote][u]$1[/u][/quote]"),
|
|
e(/<\/(strong|b)>/gi, "[/b]"),
|
|
e(/<(strong|b)>/gi, "[b]"),
|
|
e(/<\/(em|i)>/gi, "[/i]"),
|
|
e(/<(em|i)>/gi, "[i]"),
|
|
e(/<\/u>/gi, "[/u]"),
|
|
e(
|
|
/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,
|
|
"[u]$1[/u]"
|
|
),
|
|
e(/<u>/gi, "[u]"),
|
|
e(/<blockquote[^>]*>/gi, "[quote]"),
|
|
e(/<\/blockquote>/gi, "[/quote]"),
|
|
e(/<br \/>/gi, "\n"),
|
|
e(/<br\/>/gi, "\n"),
|
|
e(/<br>/gi, "\n"),
|
|
e(/<p>/gi, ""),
|
|
e(/<\/p>/gi, "\n"),
|
|
e(/ |\u00a0/gi, " "),
|
|
e(/"/gi, '"'),
|
|
e(/</gi, "<"),
|
|
e(/>/gi, ">"),
|
|
e(/&/gi, "&"),
|
|
o
|
|
);
|
|
},
|
|
i = function(o) {
|
|
o = t.trim(o);
|
|
var e = function(t, e) {
|
|
o = o.replace(t, e);
|
|
};
|
|
return (
|
|
e(/\n/gi, "<br />"),
|
|
e(/\[b\]/gi, "<strong>"),
|
|
e(/\[\/b\]/gi, "</strong>"),
|
|
e(/\[i\]/gi, "<em>"),
|
|
e(/\[\/i\]/gi, "</em>"),
|
|
e(/\[u\]/gi, "<u>"),
|
|
e(/\[\/u\]/gi, "</u>"),
|
|
e(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, '<a href="$1">$2</a>'),
|
|
e(/\[url\](.*?)\[\/url\]/gi, '<a href="$1">$1</a>'),
|
|
e(/\[img\](.*?)\[\/img\]/gi, '<img src="$1" />'),
|
|
e(/\[color=(.*?)\](.*?)\[\/color\]/gi, '<font color="$1">$2</font>'),
|
|
e(
|
|
/\[code\](.*?)\[\/code\]/gi,
|
|
'<span class="codeStyle">$1</span> '
|
|
),
|
|
e(
|
|
/\[quote.*?\](.*?)\[\/quote\]/gi,
|
|
'<span class="quoteStyle">$1</span> '
|
|
),
|
|
o
|
|
);
|
|
};
|
|
o.add("bbcode", function() {
|
|
return {
|
|
init: function(o) {
|
|
o.on("beforeSetContent", function(o) {
|
|
o.content = i(o.content);
|
|
}),
|
|
o.on("postProcess", function(o) {
|
|
o.set && (o.content = i(o.content)),
|
|
o.get && (o.content = e(o.content));
|
|
});
|
|
}
|
|
};
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = function(e) {
|
|
var r = e,
|
|
n = function() {
|
|
return r;
|
|
};
|
|
return {
|
|
get: n,
|
|
set: function(t) {
|
|
r = t;
|
|
},
|
|
clone: function() {
|
|
return t(n());
|
|
}
|
|
};
|
|
},
|
|
e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
r = tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),
|
|
n = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
a = function(t) {
|
|
return t.fire("RestoreDraft");
|
|
},
|
|
o = function(t) {
|
|
return t.fire("StoreDraft");
|
|
},
|
|
i = function(t) {
|
|
return t.fire("RemoveDraft");
|
|
},
|
|
s = 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 s(t.settings.autosave_interval, "30s");
|
|
},
|
|
l = function(t) {
|
|
return s(t.settings.autosave_retention, "20m");
|
|
},
|
|
m = function(t, e) {
|
|
var r = t.settings.forced_root_block;
|
|
return (
|
|
"" === (e = n.trim(void 0 === e ? t.getBody().innerHTML : e)) ||
|
|
new RegExp(
|
|
"^<" +
|
|
r +
|
|
"[^>]*>((\xa0| |[ \t]|<br[^>]*>)+?|)</" +
|
|
r +
|
|
">|<br>$",
|
|
"i"
|
|
).test(e)
|
|
);
|
|
},
|
|
v = function(t) {
|
|
var e = parseInt(r.getItem(f(t) + "time"), 10) || 0;
|
|
return !(new Date().getTime() - e > l(t) && (d(t, !1), 1));
|
|
},
|
|
d = function(t, e) {
|
|
var n = f(t);
|
|
r.removeItem(n + "draft"), r.removeItem(n + "time"), !1 !== e && i(t);
|
|
},
|
|
D = function(t) {
|
|
var e = f(t);
|
|
!m(t) &&
|
|
t.isDirty() &&
|
|
(r.setItem(e + "draft", t.getContent({ format: "raw", no_events: !0 })),
|
|
r.setItem(e + "time", new Date().getTime().toString()),
|
|
o(t));
|
|
},
|
|
g = function(t) {
|
|
var e = f(t);
|
|
v(t) && (t.setContent(r.getItem(e + "draft"), { format: "raw" }), a(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(t, e) {
|
|
return function() {
|
|
var r = Array.prototype.slice.call(arguments);
|
|
return t.apply(null, [e].concat(r));
|
|
};
|
|
},
|
|
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 t;
|
|
return (
|
|
n.each(_.get(), function(e) {
|
|
e.plugins.autosave && e.plugins.autosave.storeDraft(),
|
|
!t &&
|
|
e.isDirty() &&
|
|
u(e) &&
|
|
(t = e.translate(
|
|
"You have unsaved changes are you sure you want to navigate away?"
|
|
));
|
|
}),
|
|
t
|
|
);
|
|
};
|
|
var b = function(t) {
|
|
window.onbeforeunload = _._beforeUnloadHandler;
|
|
},
|
|
I = function(t, e) {
|
|
return function(r) {
|
|
var n = r.control;
|
|
n.disabled(!y.hasDraft(t)),
|
|
t.on("StoreDraft RestoreDraft RemoveDraft", function() {
|
|
n.disabled(!y.hasDraft(t));
|
|
}),
|
|
y.startStoreDraft(t, e);
|
|
};
|
|
},
|
|
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"
|
|
});
|
|
};
|
|
e.add("autosave", function(e) {
|
|
var r = t(!1);
|
|
return b(e), w(e, r), h(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = function(e) {
|
|
var n = e,
|
|
i = function() {
|
|
return n;
|
|
};
|
|
return {
|
|
get: i,
|
|
set: function(t) {
|
|
n = t;
|
|
},
|
|
clone: function() {
|
|
return t(i());
|
|
}
|
|
};
|
|
},
|
|
e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
n = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
i = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
o = function(t) {
|
|
return parseInt(
|
|
t.getParam("autoresize_min_height", t.getElement().offsetHeight),
|
|
10
|
|
);
|
|
},
|
|
r = function(t) {
|
|
return parseInt(t.getParam("autoresize_max_height", 0), 10);
|
|
},
|
|
a = function(t) {
|
|
return t.getParam("autoresize_overflow_padding", 1);
|
|
},
|
|
u = function(t) {
|
|
return t.getParam("autoresize_bottom_margin", 50);
|
|
},
|
|
s = function(t) {
|
|
return t.getParam("autoresize_on_init", !0);
|
|
},
|
|
l = function(t, e, n, o, r) {
|
|
i.setEditorTimeout(
|
|
t,
|
|
function() {
|
|
c(t, e), n-- ? l(t, e, n, o, r) : r && r();
|
|
},
|
|
o
|
|
);
|
|
},
|
|
g = function(t, e) {
|
|
var n = t.getBody();
|
|
n && ((n.style.overflowY = e ? "" : "hidden"), e || (n.scrollTop = 0));
|
|
},
|
|
c = function(t, e) {
|
|
var i,
|
|
a,
|
|
u,
|
|
s,
|
|
l,
|
|
f,
|
|
d,
|
|
m,
|
|
p,
|
|
y,
|
|
h,
|
|
v = t.dom;
|
|
if ((a = t.getDoc()))
|
|
if ((S = t).plugins.fullscreen && S.plugins.fullscreen.isFullscreen())
|
|
g(t, !0);
|
|
else {
|
|
var S;
|
|
(u = a.body),
|
|
(s = o(t)),
|
|
(f = v.getStyle(u, "margin-top", !0)),
|
|
(d = v.getStyle(u, "margin-bottom", !0)),
|
|
(m = v.getStyle(u, "padding-top", !0)),
|
|
(p = v.getStyle(u, "padding-bottom", !0)),
|
|
(y = v.getStyle(u, "border-top-width", !0)),
|
|
(h = v.getStyle(u, "border-bottom-width", !0)),
|
|
(l =
|
|
u.offsetHeight +
|
|
parseInt(f, 10) +
|
|
parseInt(d, 10) +
|
|
parseInt(m, 10) +
|
|
parseInt(p, 10) +
|
|
parseInt(y, 10) +
|
|
parseInt(h, 10)),
|
|
(isNaN(l) || l <= 0) &&
|
|
(l = n.ie
|
|
? u.scrollHeight
|
|
: n.webkit && 0 === u.clientHeight
|
|
? 0
|
|
: u.offsetHeight),
|
|
l > o(t) && (s = l);
|
|
var _ = r(t);
|
|
_ && l > _ ? ((s = _), g(t, !0)) : g(t, !1),
|
|
s !== e.get() &&
|
|
((i = s - e.get()),
|
|
v.setStyle(t.iframeElement, "height", s + "px"),
|
|
e.set(s),
|
|
n.webkit && i < 0 && c(t, e));
|
|
}
|
|
},
|
|
f = {
|
|
setup: function(t, e) {
|
|
t.on("init", function() {
|
|
var e,
|
|
n,
|
|
i = t.dom;
|
|
(e = a(t)),
|
|
(n = u(t)),
|
|
!1 !== e &&
|
|
i.setStyles(t.getBody(), { paddingLeft: e, paddingRight: e }),
|
|
!1 !== n && i.setStyles(t.getBody(), { paddingBottom: n });
|
|
}),
|
|
t.on("nodechange setcontent keyup FullscreenStateChanged", function(
|
|
n
|
|
) {
|
|
c(t, e);
|
|
}),
|
|
s(t) &&
|
|
t.on("init", function() {
|
|
l(t, e, 20, 100, function() {
|
|
l(t, e, 5, 1e3);
|
|
});
|
|
});
|
|
},
|
|
resize: c
|
|
},
|
|
d = function(t, e) {
|
|
t.addCommand("mceAutoResize", function() {
|
|
f.resize(t, e);
|
|
});
|
|
};
|
|
e.add("autoresize", function(e) {
|
|
if (!e.inline) {
|
|
var n = t(0);
|
|
d(e, n), f.setup(e, n);
|
|
}
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
t = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
n = function(e) {
|
|
return e.getParam(
|
|
"autolink_pattern",
|
|
/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i
|
|
);
|
|
},
|
|
i = 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;
|
|
t > n && (t = n);
|
|
}
|
|
return t;
|
|
},
|
|
r = function(e, t, n) {
|
|
1 !== t.nodeType || t.hasChildNodes()
|
|
? e.setStart(t, o(t, n))
|
|
: e.setStartBefore(t);
|
|
},
|
|
a = function(e, t, n) {
|
|
1 !== t.nodeType || t.hasChildNodes()
|
|
? e.setEnd(t, o(t, n))
|
|
: e.setEndAfter(t);
|
|
},
|
|
d = function(e, t, o) {
|
|
var d,
|
|
f,
|
|
s,
|
|
l,
|
|
c,
|
|
u,
|
|
g,
|
|
h,
|
|
C,
|
|
m,
|
|
y = n(e),
|
|
k = i(e);
|
|
if ("A" !== e.selection.getNode().tagName) {
|
|
if ((d = e.selection.getRng(!0).cloneRange()).startOffset < 5) {
|
|
if (!(h = d.endContainer.previousSibling)) {
|
|
if (
|
|
!d.endContainer.firstChild ||
|
|
!d.endContainer.firstChild.nextSibling
|
|
)
|
|
return;
|
|
h = d.endContainer.firstChild.nextSibling;
|
|
}
|
|
if (((C = h.length), r(d, h, C), a(d, h, C), d.endOffset < 5)) return;
|
|
(f = d.endOffset), (l = h);
|
|
} else {
|
|
if (3 !== (l = d.endContainer).nodeType && l.firstChild) {
|
|
for (; 3 !== l.nodeType && l.firstChild; ) l = l.firstChild;
|
|
3 === l.nodeType && (r(d, l, 0), a(d, l, l.nodeValue.length));
|
|
}
|
|
f = 1 === d.endOffset ? 2 : d.endOffset - 1 - t;
|
|
}
|
|
s = f;
|
|
do {
|
|
r(d, l, f >= 2 ? f - 2 : 0),
|
|
a(d, l, f >= 1 ? f - 1 : 0),
|
|
(f -= 1),
|
|
(m = d.toString());
|
|
} while (
|
|
" " !== m &&
|
|
"" !== m &&
|
|
160 !== m.charCodeAt(0) &&
|
|
f - 2 >= 0 &&
|
|
m !== o
|
|
);
|
|
var p;
|
|
(p = d.toString()) === o || " " === p || 160 === p.charCodeAt(0)
|
|
? (r(d, l, f), a(d, l, s), (f += 1))
|
|
: 0 === d.startOffset
|
|
? (r(d, l, 0), a(d, l, s))
|
|
: (r(d, l, f), a(d, l, s)),
|
|
"." === (u = d.toString()).charAt(u.length - 1) && a(d, l, s - 1),
|
|
(g = (u = d.toString().trim()).match(y)) &&
|
|
("www." === g[1]
|
|
? (g[1] = "http://www.")
|
|
: /@$/.test(g[1]) &&
|
|
!/^mailto:/.test(g[1]) &&
|
|
(g[1] = "mailto:" + g[1]),
|
|
(c = e.selection.getBookmark()),
|
|
e.selection.setRng(d),
|
|
e.execCommand("createlink", !1, g[1] + g[2]),
|
|
k && e.dom.setAttrib(e.selection.getNode(), "target", k),
|
|
e.selection.moveToBookmark(c),
|
|
e.nodeChanged());
|
|
}
|
|
},
|
|
f = function(e) {
|
|
var n;
|
|
e.on("keydown", function(t) {
|
|
13 !== t.keyCode || d(e, -1, "");
|
|
}),
|
|
t.ie
|
|
? e.on("focus", function() {
|
|
if (!n) {
|
|
n = !0;
|
|
try {
|
|
e.execCommand("AutoUrlDetect", !1, !0);
|
|
} catch (t) {}
|
|
}
|
|
})
|
|
: (e.on("keypress", function(t) {
|
|
41 !== t.keyCode || d(e, -1, "(");
|
|
}),
|
|
e.on("keyup", function(t) {
|
|
32 !== t.keyCode || d(e, 0, "");
|
|
}));
|
|
};
|
|
e.add("autolink", function(e) {
|
|
f(e);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = 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
|
|
: "";
|
|
},
|
|
n = function(t, e) {
|
|
var n = t.selection.getNode();
|
|
"A" === n.tagName && "" === t.dom.getAttrib(n, "href")
|
|
? (n.removeAttribute("name"), (n.id = e))
|
|
: (t.focus(),
|
|
t.selection.collapse(!0),
|
|
t.execCommand(
|
|
"mceInsertContent",
|
|
!1,
|
|
t.dom.createHTML("a", { id: e })
|
|
));
|
|
},
|
|
o = function(o) {
|
|
var r = e(o);
|
|
o.windowManager.open({
|
|
title: "Anchor",
|
|
body: { type: "textbox", name: "id", size: 40, label: "Id", value: r },
|
|
onsubmit: function(e) {
|
|
var r,
|
|
a,
|
|
i = e.data.id;
|
|
(r = o),
|
|
(t((a = i))
|
|
? (n(r, a), 0)
|
|
: (r.windowManager.alert(
|
|
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."
|
|
),
|
|
1)) && e.preventDefault();
|
|
}
|
|
});
|
|
},
|
|
r = function(t) {
|
|
t.addCommand("mceAnchor", function() {
|
|
o(t);
|
|
});
|
|
},
|
|
a = function(t) {
|
|
return function(e) {
|
|
for (var n = 0; n < e.length; n++)
|
|
(o = e[n]).attr("href") ||
|
|
(!o.attr("id") && !o.attr("name")) ||
|
|
o.firstChild ||
|
|
e[n].attr("contenteditable", t);
|
|
var o;
|
|
};
|
|
},
|
|
i = function(t) {
|
|
t.on("PreInit", function() {
|
|
t.parser.addNodeFilter("a", a("false")),
|
|
t.serializer.addNodeFilter("a", a(null));
|
|
});
|
|
},
|
|
c = 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"
|
|
});
|
|
};
|
|
tinymce.util.Tools.resolve("tinymce.PluginManager").add("anchor", function(
|
|
t
|
|
) {
|
|
i(t), r(t), c(t);
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var t = tinymce.util.Tools.resolve("tinymce.PluginManager"),
|
|
e = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
n = function(t, e, n) {
|
|
var r = "UL" === e ? "InsertUnorderedList" : "InsertOrderedList";
|
|
t.execCommand(r, !1, !1 === n ? null : { "list-style-type": n });
|
|
},
|
|
r = function(t) {
|
|
t.addCommand("ApplyUnorderedListStyle", function(e, r) {
|
|
n(t, "UL", r["list-style-type"]);
|
|
}),
|
|
t.addCommand("ApplyOrderedListStyle", function(e, r) {
|
|
n(t, "OL", r["list-style-type"]);
|
|
});
|
|
},
|
|
o = function(t) {
|
|
var e = t.getParam(
|
|
"advlist_number_styles",
|
|
"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"
|
|
);
|
|
return e ? e.split(/[ ,]/) : [];
|
|
},
|
|
i = function(t) {
|
|
var e = t.getParam("advlist_bullet_styles", "default,circle,disc,square");
|
|
return e ? e.split(/[ ,]/) : [];
|
|
},
|
|
l = function(t) {
|
|
return t && /^(TH|TD)$/.test(t.nodeName);
|
|
},
|
|
a = function(t) {
|
|
return function(e) {
|
|
return (
|
|
e &&
|
|
/^(OL|UL|DL)$/.test(e.nodeName) &&
|
|
((r = e), (n = t).$.contains(n.getBody(), r))
|
|
);
|
|
var n, r;
|
|
};
|
|
},
|
|
s = function(t) {
|
|
var e = t.dom.getParent(t.selection.getNode(), "ol,ul");
|
|
return t.dom.getStyle(e, "listStyleType") || "";
|
|
},
|
|
u = function(t) {
|
|
return e.map(t, function(t) {
|
|
return {
|
|
text: t.replace(/\-/g, " ").replace(/\b\w/g, function(t) {
|
|
return t.toUpperCase();
|
|
}),
|
|
data: "default" === t ? "" : t
|
|
};
|
|
});
|
|
},
|
|
c = function(t, n) {
|
|
return function(r) {
|
|
var o = r.control;
|
|
t.on("NodeChange", function(r) {
|
|
var i = (function(t, e) {
|
|
for (var n = 0; n < t.length; n++) if (e(t[n])) return n;
|
|
return -1;
|
|
})(r.parents, l),
|
|
s = -1 !== i ? r.parents.slice(0, i) : r.parents,
|
|
u = e.grep(s, a(t));
|
|
o.active(u.length > 0 && u[0].nodeName === n);
|
|
});
|
|
};
|
|
},
|
|
d = function(t, e, r, o, i, l) {
|
|
var a;
|
|
t.addButton(e, {
|
|
active: !1,
|
|
type: "splitbutton",
|
|
tooltip: r,
|
|
menu: u(l),
|
|
onPostRender: c(t, i),
|
|
onshow: ((a = t),
|
|
function(t) {
|
|
var e = s(a);
|
|
t.control.items().each(function(t) {
|
|
t.active(t.settings.data === e);
|
|
});
|
|
}),
|
|
onselect: function(e) {
|
|
n(t, i, e.control.settings.data);
|
|
},
|
|
onclick: function() {
|
|
t.execCommand(o);
|
|
}
|
|
});
|
|
},
|
|
p = function(t, e, n, r, o, i) {
|
|
var l, a, s, u, p;
|
|
i.length > 0
|
|
? d(t, e, n, r, o, i)
|
|
: ((a = e),
|
|
(s = n),
|
|
(u = r),
|
|
(p = o),
|
|
(l = t).addButton(a, {
|
|
active: !1,
|
|
type: "button",
|
|
tooltip: s,
|
|
onPostRender: c(l, p),
|
|
onclick: function() {
|
|
l.execCommand(u);
|
|
}
|
|
}));
|
|
},
|
|
f = function(t) {
|
|
p(t, "numlist", "Numbered list", "InsertOrderedList", "OL", o(t)),
|
|
p(t, "bullist", "Bullet list", "InsertUnorderedList", "UL", i(t));
|
|
};
|
|
t.add("advlist", function(t) {
|
|
var n, o, i;
|
|
(o = "lists"),
|
|
(i = (n = t).settings.plugins ? n.settings.plugins : ""),
|
|
-1 !== e.inArray(i.split(/[ ,]/), o) && (f(t), r(t));
|
|
});
|
|
})();
|
|
!(function() {
|
|
"use strict";
|
|
var e,
|
|
t,
|
|
n,
|
|
i,
|
|
r,
|
|
o = tinymce.util.Tools.resolve("tinymce.ThemeManager"),
|
|
s = tinymce.util.Tools.resolve("tinymce.EditorManager"),
|
|
a = tinymce.util.Tools.resolve("tinymce.util.Tools"),
|
|
l = function(e) {
|
|
return !1 !== u(e);
|
|
},
|
|
u = function(e) {
|
|
return e.getParam("menubar");
|
|
},
|
|
c = function(e) {
|
|
return e.getParam("toolbar_items_size");
|
|
},
|
|
d = function(e) {
|
|
return e.getParam("menu");
|
|
},
|
|
f = function(e) {
|
|
return !1 === e.settings.skin;
|
|
},
|
|
h = function(e) {
|
|
var t = e.getParam("resize", "vertical");
|
|
return !1 === t ? "none" : "both" === t ? "both" : "vertical";
|
|
},
|
|
m = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),
|
|
g = tinymce.util.Tools.resolve("tinymce.ui.Factory"),
|
|
p = tinymce.util.Tools.resolve("tinymce.util.I18n"),
|
|
v = function(e) {
|
|
return e.fire("SkinLoaded");
|
|
},
|
|
b = function(e) {
|
|
return e.fire("ResizeEditor");
|
|
},
|
|
y = function(e) {
|
|
return e.fire("BeforeRenderUI");
|
|
},
|
|
x = function(e, t) {
|
|
return function() {
|
|
var n = e.find(t)[0];
|
|
n && n.focus(!0);
|
|
};
|
|
},
|
|
w = function(e, t) {
|
|
e.shortcuts.add("Alt+F9", "", x(t, "menubar")),
|
|
e.shortcuts.add("Alt+F10,F10", "", x(t, "toolbar")),
|
|
e.shortcuts.add("Alt+F11", "", x(t, "elementpath")),
|
|
t.on("cancel", function() {
|
|
e.focus();
|
|
});
|
|
},
|
|
_ = tinymce.util.Tools.resolve("tinymce.Env"),
|
|
R = tinymce.util.Tools.resolve("tinymce.geom.Rect"),
|
|
C = tinymce.util.Tools.resolve("tinymce.util.Delay"),
|
|
k = function(e) {
|
|
return function() {
|
|
return e;
|
|
};
|
|
},
|
|
E = {
|
|
noop: function() {},
|
|
noarg: function(e) {
|
|
return function() {
|
|
return e();
|
|
};
|
|
},
|
|
compose: function(e, t) {
|
|
return function() {
|
|
return e(t.apply(null, arguments));
|
|
};
|
|
},
|
|
constant: k,
|
|
identity: function(e) {
|
|
return e;
|
|
},
|
|
tripleEquals: function(e, t) {
|
|
return e === t;
|
|
},
|
|
curry: function(e) {
|
|
for (
|
|
var t = new Array(arguments.length - 1), n = 1;
|
|
n < arguments.length;
|
|
n++
|
|
)
|
|
t[n - 1] = arguments[n];
|
|
return function() {
|
|
for (var n = new Array(arguments.length), i = 0; i < n.length; i++)
|
|
n[i] = arguments[i];
|
|
var r = t.concat(n);
|
|
return e.apply(null, r);
|
|
};
|
|
},
|
|
not: function(e) {
|
|
return function() {
|
|
return !e.apply(null, arguments);
|
|
};
|
|
},
|
|
die: function(e) {
|
|
return function() {
|
|
throw new Error(e);
|
|
};
|
|
},
|
|
apply: function(e) {
|
|
return e();
|
|
},
|
|
call: function(e) {
|
|
e();
|
|
},
|
|
never: k(!1),
|
|
always: k(!0)
|
|
},
|
|
H = E.never,
|
|
S = E.always,
|
|
M = function() {
|
|
return T;
|
|
},
|
|
T = ((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.");
|
|
},
|
|
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: E.constant("none()")
|
|
}),
|
|
Object.freeze && Object.freeze(i),
|
|
i),
|
|
P = function(e) {
|
|
var t = function() {
|
|
return e;
|
|
},
|
|
n = function() {
|
|
return r;
|
|
},
|
|
i = function(t) {
|
|
return t(e);
|
|
},
|
|
r = {
|
|
fold: function(t, n) {
|
|
return n(e);
|
|
},
|
|
is: function(t) {
|
|
return e === t;
|
|
},
|
|
isSome: S,
|
|
isNone: H,
|
|
getOr: t,
|
|
getOrThunk: t,
|
|
getOrDie: t,
|
|
or: n,
|
|
orThunk: n,
|
|
map: function(t) {
|
|
return P(t(e));
|
|
},
|
|
ap: function(t) {
|
|
return t.fold(M, function(t) {
|
|
return P(t(e));
|
|
});
|
|
},
|
|
each: function(t) {
|
|
t(e);
|
|
},
|
|
bind: i,
|
|
flatten: t,
|
|
exists: i,
|
|
forall: i,
|
|
filter: function(t) {
|
|
return t(e) ? r : T;
|
|
},
|
|
equals: function(t) {
|
|
return t.is(e);
|
|
},
|
|
equals_: function(t, n) {
|
|
return t.fold(H, function(t) {
|
|
return n(e, t);
|
|
});
|
|
},
|
|
toArray: function() {
|
|
return [e];
|
|
},
|
|
toString: function() {
|
|
return "some(" + e + ")";
|
|
}
|
|
};
|
|
return r;
|
|
},
|
|
W = {
|
|
some: P,
|
|
none: M,
|
|
from: function(e) {
|
|
return null === e || e === undefined ? T : P(e);
|
|
}
|
|
},
|
|
D = function() {
|
|
var e = _.container;
|
|
if (e && "static" !== m.DOM.getStyle(e, "position", !0)) {
|
|
var t = m.DOM.getPos(e),
|
|
n = e.scrollLeft - t.x,
|
|
i = e.scrollTop - t.y;
|
|
return W.some({ x: n, y: i });
|
|
}
|
|
return W.none();
|
|
},
|
|
N = function(e, t, n) {
|
|
var i,
|
|
r = [];
|
|
if (t)
|
|
return (
|
|
a.each(t.split(/[ ,]/), function(t) {
|
|
var o,
|
|
s = function() {
|
|
var n = e.selection;
|
|
t.settings.stateSelector &&
|
|
n.selectorChanged(
|
|
t.settings.stateSelector,
|
|
function(e) {
|
|
t.active(e);
|
|
},
|
|
!0
|
|
),
|
|
t.settings.disabledStateSelector &&
|
|
n.selectorChanged(
|
|
t.settings.disabledStateSelector,
|
|
function(e) {
|
|
t.disabled(e);
|
|
}
|
|
);
|
|
};
|
|
"|" === t
|
|
? (i = null)
|
|
: (i || ((i = { type: "buttongroup", items: [] }), r.push(i)),
|
|
e.buttons[t] &&
|
|
((o = t),
|
|
"function" == typeof (t = e.buttons[o]) && (t = t()),
|
|
(t.type = t.type || "button"),
|
|
(t.size = n),
|
|
(t = g.create(t)),
|
|
i.items.push(t),
|
|
e.initialized ? s() : e.on("init", s)));
|
|
}),
|
|
{ type: "toolbar", layout: "flow", items: r }
|
|
);
|
|
},
|
|
A = N,
|
|
B = function(e, t) {
|
|
var n,
|
|
i,
|
|
r = [];
|
|
if (
|
|
(a.each(
|
|
!1 === (i = (n = e).getParam("toolbar"))
|
|
? []
|
|
: a.isArray(i)
|
|
? a.grep(i, function(e) {
|
|
return e.length > 0;
|
|
})
|
|
: (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 n.length > 0 ? n : o;
|
|
})(
|
|
n.settings,
|
|
"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
|
|
),
|
|
function(n) {
|
|
var i;
|
|
(i = n) && r.push(N(e, i, t));
|
|
}
|
|
),
|
|
r.length)
|
|
)
|
|
return {
|
|
type: "panel",
|
|
layout: "stack",
|
|
classes: "toolbar-grp",
|
|
ariaRoot: !0,
|
|
ariaRemember: !0,
|
|
items: r
|
|
};
|
|
},
|
|
O = m.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
|
|
};
|
|
},
|
|
L = function(e, t) {
|
|
e.moveTo(t.left, t.top);
|
|
},
|
|
I = 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
|
|
);
|
|
},
|
|
F = function(e) {
|
|
var t,
|
|
n = function() {
|
|
return e.contextToolbars || [];
|
|
},
|
|
i = function(t, n) {
|
|
var i,
|
|
r,
|
|
o,
|
|
s,
|
|
l,
|
|
u,
|
|
c,
|
|
d = e.getParam("inline_toolbar_position_handler");
|
|
if (!e.removed) {
|
|
if (!t || !t.toolbar.panel)
|
|
return (
|
|
(f = e),
|
|
void a.each(f.contextToolbars, function(e) {
|
|
e.panel && e.panel.hide();
|
|
})
|
|
);
|
|
var f, h, m, g, p;
|
|
(c = ["bc-tc", "tc-bc", "tl-bl", "bl-tl", "tr-br", "br-tr"]),
|
|
(l = t.toolbar.panel),
|
|
n && l.show(),
|
|
(h = t.element),
|
|
(m = O.getPos(e.getContentAreaContainer())),
|
|
(g = e.dom.getRect(h)),
|
|
"BODY" === (p = e.dom.getRoot()).nodeName &&
|
|
((g.x -=
|
|
p.ownerDocument.documentElement.scrollLeft || p.scrollLeft),
|
|
(g.y -=
|
|
p.ownerDocument.documentElement.scrollTop || p.scrollTop)),
|
|
(g.x += m.x),
|
|
(g.y += m.y),
|
|
(o = g),
|
|
(r = O.getRect(l.getEl())),
|
|
(s = O.getRect(e.getContentAreaContainer() || e.getBody()));
|
|
var v,
|
|
b,
|
|
y,
|
|
x = D().getOr({ x: 0, y: 0 });
|
|
if (
|
|
((o.x += x.x),
|
|
(o.y += x.y),
|
|
(r.x += x.x),
|
|
(r.y += x.y),
|
|
(s.x += x.x),
|
|
(s.y += x.y),
|
|
"inline" !== O.getStyle(t.element, "display", !0))
|
|
) {
|
|
var w = t.element.getBoundingClientRect();
|
|
(o.w = w.width), (o.h = w.height);
|
|
}
|
|
e.inline || (s.w = e.getDoc().documentElement.offsetWidth),
|
|
e.selection.controlSelection.isResizable(t.element) &&
|
|
o.w < 25 &&
|
|
(o = R.inflate(o, 0, 8)),
|
|
(i = R.findBestRelativePosition(r, o, s, c)),
|
|
(o = R.clamp(o, s)),
|
|
i
|
|
? ((u = R.relativePosition(r, o, i)),
|
|
L(l, I(d, u.x, u.y, o, s, r)))
|
|
: ((s.h += r.h),
|
|
(o = R.intersect(s, o))
|
|
? (i = R.findBestRelativePosition(r, o, s, [
|
|
"bc-tc",
|
|
"bl-tl",
|
|
"br-tr"
|
|
]))
|
|
? ((u = R.relativePosition(r, o, i)),
|
|
L(l, I(d, u.x, u.y, o, s, r)))
|
|
: L(l, I(d, o.x, o.y, o, s, r))
|
|
: l.hide()),
|
|
(v = l),
|
|
(y = function(e, t) {
|
|
return e === t;
|
|
}),
|
|
(b = (b = i) ? b.substr(0, 2) : ""),
|
|
a.each({ t: "down", b: "up" }, function(e, t) {
|
|
v.classes.toggle("arrow-" + e, y(t, b.substr(0, 1)));
|
|
}),
|
|
a.each({ l: "left", r: "right" }, function(e, t) {
|
|
v.classes.toggle("arrow-" + e, y(t, b.substr(1, 1)));
|
|
});
|
|
}
|
|
},
|
|
r = function(t) {
|
|
return function() {
|
|
C.requestAnimationFrame(function() {
|
|
e.selection && i(l(e.selection.getNode()), t);
|
|
});
|
|
};
|
|
},
|
|
o = function(n) {
|
|
var o;
|
|
if (n.toolbar.panel) return n.toolbar.panel.show(), void i(n);
|
|
!(function() {
|
|
if (!t) {
|
|
var n = r(!0);
|
|
(t = e.selection.getScrollContainer() || e.getWin()),
|
|
O.bind(t, "scroll", n),
|
|
O.bind(_.container, "scroll", n),
|
|
e.on("remove", function() {
|
|
O.unbind(t, "scroll", n), O.unbind(_.container, "scroll", n);
|
|
});
|
|
}
|
|
})(),
|
|
(o = g.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: A(e, n.toolbar.items),
|
|
oncancel: function() {
|
|
e.focus();
|
|
}
|
|
})),
|
|
(n.toolbar.panel = o),
|
|
o.renderTo().reflow(),
|
|
i(n);
|
|
},
|
|
s = function() {
|
|
a.each(n(), function(e) {
|
|
e.panel && e.panel.hide();
|
|
});
|
|
},
|
|
l = function(t) {
|
|
var i,
|
|
r,
|
|
o,
|
|
s = n();
|
|
for (
|
|
i =
|
|
(o = e
|
|
.$(t)
|
|
.parents()
|
|
.add(t)).length - 1;
|
|
i >= 0;
|
|
i--
|
|
)
|
|
for (r = s.length - 1; r >= 0; r--)
|
|
if (s[r].predicate(o[i])) return { toolbar: s[r], element: o[i] };
|
|
return null;
|
|
};
|
|
e.on("click keyup setContent ObjectResized", function(t) {
|
|
("setcontent" !== t.type || t.selection) &&
|
|
C.setEditorTimeout(e, function() {
|
|
var t;
|
|
(t = l(e.selection.getNode())) ? (s(), o(t)) : s();
|
|
});
|
|
}),
|
|
e.on("blur hide contextmenu", s),
|
|
e.on("ObjectResizeStart", function() {
|
|
var t = l(e.selection.getNode());
|
|
t && t.toolbar.panel && t.toolbar.panel.hide();
|
|
}),
|
|
e.on("ResizeEditor ResizeWindow", r(!0)),
|
|
e.on("nodeChange", r(!1)),
|
|
e.on("remove", function() {
|
|
a.each(n(), function(e) {
|
|
e.panel && e.panel.remove();
|
|
}),
|
|
(e.contextToolbars = {});
|
|
}),
|
|
e.shortcuts.add("ctrl+shift+e > ctrl+shift+p", "", function() {
|
|
var t = l(e.selection.getNode());
|
|
t && t.toolbar.panel && t.toolbar.panel.items()[0].focus();
|
|
});
|
|
},
|
|
V =
|
|
(r = Array.prototype.indexOf) === undefined
|
|
? function(e, t) {
|
|
return J(e, t);
|
|
}
|
|
: function(e, t) {
|
|
return r.call(e, t);
|
|
},
|
|
U = function(e, t) {
|
|
return V(e, t) > -1;
|
|
},
|
|
Y = 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;
|
|
},
|
|
$ = function(e, t) {
|
|
for (var n = 0, i = e.length; n < i; n++) t(e[n], n, e);
|
|
},
|
|
j = function(e, t) {
|
|
for (var n = e.length - 1; n >= 0; n--) t(e[n], n, e);
|
|
},
|
|
q = 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;
|
|
},
|
|
X = function(e, t) {
|
|
for (var n = 0, i = e.length; n < i; n++)
|
|
if (t(e[n], n, e)) return W.some(n);
|
|
return W.none();
|
|
},
|
|
J = function(e, t) {
|
|
for (var n = 0, i = e.length; n < i; ++n) if (e[n] === t) return n;
|
|
return -1;
|
|
},
|
|
G = Array.prototype.push,
|
|
K = 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
|
|
);
|
|
G.apply(t, e[n]);
|
|
}
|
|
return t;
|
|
},
|
|
Z = function(e, t) {
|
|
for (var n = 0, i = e.length; n < i; ++n)
|
|
if (!0 !== t(e[n], n, e)) return !1;
|
|
return !0;
|
|
},
|
|
Q = Array.prototype.slice,
|
|
ee = {
|
|
map: Y,
|
|
each: $,
|
|
eachr: j,
|
|
partition: function(e, t) {
|
|
for (var n = [], i = [], r = 0, o = e.length; r < o; r++) {
|
|
var s = e[r];
|
|
(t(s, r, e) ? n : i).push(s);
|
|
}
|
|
return { pass: n, fail: i };
|
|
},
|
|
filter: q,
|
|
groupBy: function(e, t) {
|
|
if (0 === e.length) return [];
|
|
for (var n = t(e[0]), i = [], r = [], o = 0, s = e.length; o < s; o++) {
|
|
var a = e[o],
|
|
l = t(a);
|
|
l !== n && (i.push(r), (r = [])), (n = l), r.push(a);
|
|
}
|
|
return 0 !== r.length && i.push(r), i;
|
|
},
|
|
indexOf: function(e, t) {
|
|
var n = V(e, t);
|
|
return -1 === n ? W.none() : W.some(n);
|
|
},
|
|
foldr: function(e, t, n) {
|
|
return (
|
|
j(e, function(e) {
|
|
n = t(n, e);
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
foldl: function(e, t, n) {
|
|
return (
|
|
$(e, function(e) {
|
|
n = t(n, e);
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
find: function(e, t) {
|
|
for (var n = 0, i = e.length; n < i; n++) {
|
|
var r = e[n];
|
|
if (t(r, n, e)) return W.some(r);
|
|
}
|
|
return W.none();
|
|
},
|
|
findIndex: X,
|
|
flatten: K,
|
|
bind: function(e, t) {
|
|
var n = Y(e, t);
|
|
return K(n);
|
|
},
|
|
forall: Z,
|
|
exists: function(e, t) {
|
|
return X(e, t).isSome();
|
|
},
|
|
contains: U,
|
|
equal: function(e, t) {
|
|
return (
|
|
e.length === t.length &&
|
|
Z(e, function(e, n) {
|
|
return e === t[n];
|
|
})
|
|
);
|
|
},
|
|
reverse: function(e) {
|
|
var t = Q.call(e, 0);
|
|
return t.reverse(), t;
|
|
},
|
|
chunk: function(e, t) {
|
|
for (var n = [], i = 0; i < e.length; i += t) {
|
|
var r = e.slice(i, i + t);
|
|
n.push(r);
|
|
}
|
|
return n;
|
|
},
|
|
difference: function(e, t) {
|
|
return q(e, function(e) {
|
|
return !U(t, e);
|
|
});
|
|
},
|
|
mapToObject: function(e, t) {
|
|
for (var n = {}, i = 0, r = e.length; i < r; i++) {
|
|
var o = e[i];
|
|
n[String(o)] = t(o, i);
|
|
}
|
|
return n;
|
|
},
|
|
pure: function(e) {
|
|
return [e];
|
|
},
|
|
sort: function(e, t) {
|
|
var n = Q.call(e, 0);
|
|
return n.sort(t), n;
|
|
},
|
|
range: function(e, t) {
|
|
for (var n = [], i = 0; i < e; i++) n.push(t(i));
|
|
return n;
|
|
},
|
|
head: function(e) {
|
|
return 0 === e.length ? W.none() : W.some(e[0]);
|
|
},
|
|
last: function(e) {
|
|
return 0 === e.length ? W.none() : W.some(e[e.length - 1]);
|
|
}
|
|
},
|
|
te = {
|
|
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"
|
|
},
|
|
table: { title: "Table" },
|
|
help: { title: "Help" }
|
|
},
|
|
ne = function(e, t) {
|
|
return "|" === e
|
|
? { name: "|", item: { text: "|" } }
|
|
: t
|
|
? { name: e, item: t }
|
|
: null;
|
|
},
|
|
ie = function(e) {
|
|
return e && "|" === e.item.text;
|
|
},
|
|
re = function(e, t, n, i) {
|
|
var r, o, s, l, u, c, d, f;
|
|
return (
|
|
t ? ((o = t[i]), (l = !0)) : (o = te[i]),
|
|
o &&
|
|
((r = { text: o.title }),
|
|
(s = []),
|
|
a.each((o.items || "").split(/[ ,]/), function(t) {
|
|
var n = ne(t, e[t]);
|
|
n && s.push(n);
|
|
}),
|
|
l ||
|
|
a.each(e, function(e, t) {
|
|
var n, r;
|
|
e.context !== i ||
|
|
((n = s),
|
|
(r = t),
|
|
ee
|
|
.findIndex(n, function(e) {
|
|
return e.name === r;
|
|
})
|
|
.isSome()) ||
|
|
("before" === e.separator &&
|
|
s.push({ name: "|", item: { text: "|" } }),
|
|
e.prependToContext ? s.unshift(ne(t, e)) : s.push(ne(t, e)),
|
|
"after" === e.separator &&
|
|
s.push({ name: "|", item: { text: "|" } }));
|
|
}),
|
|
(r.menu = ee.map(
|
|
((u = s),
|
|
(c = n),
|
|
(d = ee.filter(u, function(e) {
|
|
return !1 === c.hasOwnProperty(e.name);
|
|
})),
|
|
(f = ee.filter(d, function(e, t, n) {
|
|
return !ie(e) || !ie(n[t - 1]);
|
|
})),
|
|
ee.filter(f, function(e, t, n) {
|
|
return !ie(e) || (t > 0 && t < n.length - 1);
|
|
})),
|
|
function(e) {
|
|
return e.item;
|
|
}
|
|
)),
|
|
!r.menu.length)
|
|
? null
|
|
: r
|
|
);
|
|
},
|
|
oe = function(e) {
|
|
for (
|
|
var t,
|
|
n = [],
|
|
i = (function(e) {
|
|
var t,
|
|
n = [],
|
|
i = d(e);
|
|
if (i) for (t in i) n.push(t);
|
|
else for (t in te) n.push(t);
|
|
return n;
|
|
})(e),
|
|
r = a.makeMap(
|
|
((t = e), t.getParam("removed_menuitems", "")).split(/[ ,]/)
|
|
),
|
|
o = u(e),
|
|
s = "string" == typeof o ? o.split(/[ ,]/) : i,
|
|
l = 0;
|
|
l < s.length;
|
|
l++
|
|
) {
|
|
var c = s[l],
|
|
f = re(e.menuItems, d(e), r, c);
|
|
f && n.push(f);
|
|
}
|
|
return n;
|
|
},
|
|
se = m.DOM,
|
|
ae = function(e) {
|
|
return { width: e.clientWidth, height: e.clientHeight };
|
|
},
|
|
le = function(e, t, n) {
|
|
var i, r, o, s;
|
|
(i = e.getContainer()),
|
|
(r = e.getContentAreaContainer().firstChild),
|
|
(o = ae(i)),
|
|
(s = ae(r)),
|
|
null !== t &&
|
|
((t = Math.max(e.getParam("min_width", 100, "number"), t)),
|
|
(t = Math.min(e.getParam("max_width", 65535, "number"), t)),
|
|
se.setStyle(i, "width", t + (o.width - s.width)),
|
|
se.setStyle(r, "width", t)),
|
|
(n = Math.max(e.getParam("min_height", 100, "number"), n)),
|
|
(n = Math.min(e.getParam("max_height", 65535, "number"), n)),
|
|
se.setStyle(r, "height", n),
|
|
b(e);
|
|
},
|
|
ue = le,
|
|
ce = function(e, t, n) {
|
|
var i = e.getContentAreaContainer();
|
|
le(e, i.clientWidth + t, i.clientHeight + n);
|
|
},
|
|
de = function(e, t, n) {
|
|
var i,
|
|
r = e.settings[n];
|
|
r &&
|
|
r(
|
|
((i = t.getEl("body")),
|
|
{
|
|
element: function() {
|
|
return i;
|
|
}
|
|
})
|
|
);
|
|
},
|
|
fe = function(e, t, n) {
|
|
return function(i) {
|
|
var r,
|
|
o,
|
|
s,
|
|
l,
|
|
u,
|
|
c = i.control,
|
|
d = c.parents().filter("panel")[0],
|
|
f = d.find("#" + t)[0],
|
|
h = ((r = n),
|
|
(o = t),
|
|
a.grep(r, function(e) {
|
|
return e.name === o;
|
|
})[0]);
|
|
(s = t),
|
|
(l = d),
|
|
(u = n),
|
|
a.each(u, function(e) {
|
|
var t = l.items().filter("#" + e.name)[0];
|
|
t &&
|
|
t.visible() &&
|
|
e.name !== s &&
|
|
(de(e, t, "onhide"), t.visible(!1));
|
|
}),
|
|
c
|
|
.parent()
|
|
.items()
|
|
.each(function(e) {
|
|
e.active(!1);
|
|
}),
|
|
f && f.visible()
|
|
? (de(h, f, "onhide"), f.hide(), c.active(!1))
|
|
: (f
|
|
? (f.show(), de(h, f, "onshow"))
|
|
: ((f = g.create({
|
|
type: "container",
|
|
name: t,
|
|
layout: "stack",
|
|
classes: "sidebar-panel",
|
|
html: ""
|
|
})),
|
|
d.prepend(f),
|
|
de(h, f, "onrender"),
|
|
de(h, f, "onshow")),
|
|
c.active(!0)),
|
|
b(e);
|
|
};
|
|
},
|
|
he = function(e) {
|
|
return !((_.ie && !(_.ie >= 11)) || !e.sidebars) && e.sidebars.length > 0;
|
|
},
|
|
me = function(e) {
|
|
return {
|
|
type: "panel",
|
|
name: "sidebar",
|
|
layout: "stack",
|
|
classes: "sidebar",
|
|
items: [
|
|
{
|
|
type: "toolbar",
|
|
layout: "stack",
|
|
classes: "sidebar-toolbar",
|
|
items: a.map(e.sidebars, function(t) {
|
|
var n = t.settings;
|
|
return {
|
|
type: "button",
|
|
icon: n.icon,
|
|
image: n.image,
|
|
tooltip: n.tooltip,
|
|
onclick: fe(e, t.name, e.sidebars)
|
|
};
|
|
})
|
|
}
|
|
]
|
|
};
|
|
},
|
|
ge = function(e) {
|
|
var t = function() {
|
|
(e._skinLoaded = !0), v(e);
|
|
};
|
|
return function() {
|
|
e.initialized ? t() : e.on("init", t);
|
|
};
|
|
},
|
|
pe = m.DOM,
|
|
ve = function(e) {
|
|
return {
|
|
type: "panel",
|
|
name: "iframe",
|
|
layout: "stack",
|
|
classes: "edit-area",
|
|
border: e,
|
|
html: ""
|
|
};
|
|
},
|
|
be = function(e, t, n) {
|
|
var i, r, o, s, a;
|
|
if (
|
|
(!1 === f(e) && n.skinUiCss
|
|
? pe.styleSheetLoader.load(n.skinUiCss, ge(e))
|
|
: ge(e)(),
|
|
(i = t.panel = g.create({
|
|
type: "panel",
|
|
role: "application",
|
|
classes: "tinymce",
|
|
style: "visibility: hidden",
|
|
layout: "stack",
|
|
border: 1,
|
|
items: [
|
|
{
|
|
type: "container",
|
|
classes: "top-part",
|
|
items: [
|
|
!1 === l(e)
|
|
? null
|
|
: { type: "menubar", border: "0 0 1 0", items: oe(e) },
|
|
B(e, c(e))
|
|
]
|
|
},
|
|
he(e)
|
|
? ((s = e),
|
|
{
|
|
type: "panel",
|
|
layout: "stack",
|
|
classes: "edit-aria-container",
|
|
border: "1 0 0 0",
|
|
items: [ve("0"), me(s)]
|
|
})
|
|
: ve("1 0 0 0")
|
|
]
|
|
})),
|
|
"none" !== h(e) &&
|
|
(r = {
|
|
type: "resizehandle",
|
|
direction: h(e),
|
|
onResizeStart: function() {
|
|
var t = e.getContentAreaContainer().firstChild;
|
|
o = { width: t.clientWidth, height: t.clientHeight };
|
|
},
|
|
onResize: function(t) {
|
|
"both" === h(e)
|
|
? ue(e, o.width + t.deltaX, o.height + t.deltaY)
|
|
: ue(e, null, o.height + t.deltaY);
|
|
}
|
|
}),
|
|
e.getParam("statusbar", !0, "boolean"))
|
|
) {
|
|
var u = p.translate([
|
|
"Powered by {0}",
|
|
'<a href="https://www.tinymce.com/?utm_campaign=editor_referral&utm_medium=poweredby&utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">tinymce</a>'
|
|
]),
|
|
d = e.getParam("branding", !0, "boolean")
|
|
? { type: "label", classes: "branding", html: " " + u }
|
|
: null;
|
|
i.add({
|
|
type: "panel",
|
|
name: "statusbar",
|
|
classes: "statusbar",
|
|
layout: "flow",
|
|
border: "1 0 0 0",
|
|
ariaRoot: !0,
|
|
items: [{ type: "elementpath", editor: e }, r, d]
|
|
});
|
|
}
|
|
return (
|
|
y(e),
|
|
e.on(
|
|
"SwitchMode",
|
|
((a = i),
|
|
function(e) {
|
|
a.find("*").disabled("readonly" === e.mode);
|
|
})
|
|
),
|
|
i.renderBefore(n.targetNode).reflow(),
|
|
e.getParam("readonly", !1, "boolean") && e.setMode("readonly"),
|
|
n.width && pe.setStyle(i.getEl(), "width", n.width),
|
|
e.on("remove", function() {
|
|
i.remove(), (i = null);
|
|
}),
|
|
w(e, i),
|
|
F(e),
|
|
{
|
|
iframeContainer: i.find("#iframe")[0].getEl(),
|
|
editorContainer: i.getEl()
|
|
}
|
|
);
|
|
},
|
|
ye = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),
|
|
xe = 0,
|
|
we = {
|
|
id: function() {
|
|
return "mceu_" + xe++;
|
|
},
|
|
create: function(e, t, n) {
|
|
var i = document.createElement(e);
|
|
return (
|
|
m.DOM.setAttribs(i, t),
|
|
"string" == typeof n
|
|
? (i.innerHTML = n)
|
|
: a.each(n, function(e) {
|
|
e.nodeType && i.appendChild(e);
|
|
}),
|
|
i
|
|
);
|
|
},
|
|
createFragment: function(e) {
|
|
return m.DOM.createFragment(e);
|
|
},
|
|
getWindowSize: function() {
|
|
return m.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 m.DOM.getPos(e, t || we.getContainer());
|
|
},
|
|
getContainer: function() {
|
|
return _.container ? _.container : document.body;
|
|
},
|
|
getViewPort: function(e) {
|
|
return m.DOM.getViewPort(e);
|
|
},
|
|
get: function(e) {
|
|
return document.getElementById(e);
|
|
},
|
|
addClass: function(e, t) {
|
|
return m.DOM.addClass(e, t);
|
|
},
|
|
removeClass: function(e, t) {
|
|
return m.DOM.removeClass(e, t);
|
|
},
|
|
hasClass: function(e, t) {
|
|
return m.DOM.hasClass(e, t);
|
|
},
|
|
toggleClass: function(e, t, n) {
|
|
return m.DOM.toggleClass(e, t, n);
|
|
},
|
|
css: function(e, t, n) {
|
|
return m.DOM.setStyle(e, t, n);
|
|
},
|
|
getRuntimeStyle: function(e, t) {
|
|
return m.DOM.getStyle(e, t, !0);
|
|
},
|
|
on: function(e, t, n, i) {
|
|
return m.DOM.bind(e, t, n, i);
|
|
},
|
|
off: function(e, t, n) {
|
|
return m.DOM.unbind(e, t, n);
|
|
},
|
|
fire: function(e, t, n) {
|
|
return m.DOM.fire(e, t, n);
|
|
},
|
|
innerHtml: function(e, t) {
|
|
m.DOM.setHTML(e, t);
|
|
}
|
|
};
|
|
function _e(e, t, n) {
|
|
var i, r, o, s, a, l, u, c, d, f;
|
|
return (
|
|
(d = we.getViewPort()),
|
|
(o = (r = we.getPos(t)).x),
|
|
(s = r.y),
|
|
e.state.get("fixed") &&
|
|
"static" === we.getRuntimeStyle(document.body, "position") &&
|
|
((o -= d.x), (s -= d.y)),
|
|
(i = e.getEl()),
|
|
(a = (f = we.getSize(i)).width),
|
|
(l = f.height),
|
|
(u = (f = we.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 Re = {
|
|
testMoveRel: function(e, t) {
|
|
for (var n = we.getViewPort(), i = 0; i < t.length; i++) {
|
|
var r = _e(this, e, t[i]);
|
|
if (this.state.get("fixed")) {
|
|
if (r.x > 0 && r.x + r.w < n.w && r.y > 0 && r.y + r.h < n.h)
|
|
return t[i];
|
|
} else if (
|
|
r.x > n.x &&
|
|
r.x + r.w < n.w + n.x &&
|
|
r.y > n.y &&
|
|
r.y + r.h < n.h + n.y
|
|
)
|
|
return t[i];
|
|
}
|
|
return t[0];
|
|
},
|
|
moveRel: function(e, t) {
|
|
"string" != typeof t && (t = this.testMoveRel(e, t));
|
|
var n = _e(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 : e + n > t && (e = t - n) < 0 ? 0 : e;
|
|
}
|
|
if (n.settings.constrainToViewport) {
|
|
var r = we.getViewPort(window),
|
|
o = n.layoutRect();
|
|
(e = i(e, r.w + r.x, o.w)), (t = i(t, r.h + r.y, o.h));
|
|
}
|
|
return (
|
|
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
|
|
);
|
|
}
|
|
},
|
|
Ce = tinymce.util.Tools.resolve("tinymce.util.Class"),
|
|
ke = tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),
|
|
Ee = 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
|
|
});
|
|
},
|
|
He = function(e, t) {
|
|
function n(t) {
|
|
var n = parseFloat(
|
|
(function(t) {
|
|
var n = e.ownerDocument.defaultView;
|
|
if (n) {
|
|
var i = n.getComputedStyle(e, null);
|
|
return i
|
|
? ((t = t.replace(/[A-Z]/g, function(e) {
|
|
return "-" + e;
|
|
})),
|
|
i.getPropertyValue(t))
|
|
: null;
|
|
}
|
|
return e.currentStyle[t];
|
|
})(t)
|
|
);
|
|
return isNaN(n) ? 0 : n;
|
|
}
|
|
return {
|
|
top: n(t + "TopWidth"),
|
|
right: n(t + "RightWidth"),
|
|
bottom: n(t + "BottomWidth"),
|
|
left: n(t + "LeftWidth")
|
|
};
|
|
};
|
|
function Se() {}
|
|
function Me(e) {
|
|
(this.cls = []),
|
|
(this.cls._map = {}),
|
|
(this.onchange = e || Se),
|
|
(this.prefix = "");
|
|
}
|
|
a.extend(Me.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);
|
|
}
|
|
}),
|
|
(Me.prototype.toString = function() {
|
|
var e;
|
|
if (this.clsValue) return this.clsValue;
|
|
e = "";
|
|
for (var t = 0; t < this.cls.length; t++)
|
|
t > 0 && (e += " "), (e += this.prefix + this.cls[t]);
|
|
return e;
|
|
});
|
|
var Te,
|
|
Pe,
|
|
We,
|
|
De = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,
|
|
Ne = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
|
Ae = /^\s*|\s*$/g,
|
|
Be = Ce.extend({
|
|
init: function(e) {
|
|
var t = this.match;
|
|
function n(e, n, r) {
|
|
var o;
|
|
function s(e) {
|
|
e && n.push(e);
|
|
}
|
|
return (
|
|
s(
|
|
(function(e) {
|
|
if (e)
|
|
return (
|
|
(e = e.toLowerCase()),
|
|
function(t) {
|
|
return "*" === e || t.type === e;
|
|
}
|
|
);
|
|
})((o = De.exec(e.replace(Ae, "")))[1])
|
|
),
|
|
s(
|
|
(function(e) {
|
|
if (e)
|
|
return function(t) {
|
|
return t._name === e;
|
|
};
|
|
})(o[2])
|
|
),
|
|
s(
|
|
(function(e) {
|
|
if (e)
|
|
return (
|
|
(e = e.split(".")),
|
|
function(t) {
|
|
for (var n = e.length; n--; )
|
|
if (!t.classes.contains(e[n])) return !1;
|
|
return !0;
|
|
}
|
|
);
|
|
})(o[3])
|
|
),
|
|
s(
|
|
(function(e, t, n) {
|
|
if (e)
|
|
return function(i) {
|
|
var r = i[e] ? i[e]() : "";
|
|
return t
|
|
? "=" === t
|
|
? r === n
|
|
: "*=" === t
|
|
? r.indexOf(n) >= 0
|
|
: "~=" === t
|
|
? (" " + r + " ").indexOf(" " + n + " ") >= 0
|
|
: "!=" === t
|
|
? r !== n
|
|
: "^=" === t
|
|
? 0 === r.indexOf(n)
|
|
: "$=" === t && r.substr(r.length - n.length) === n
|
|
: !!n;
|
|
};
|
|
})(o[4], o[5], o[6])
|
|
),
|
|
s(
|
|
(function(e) {
|
|
var n;
|
|
if (e)
|
|
return (e = /(?:not\((.+)\))|(.+)/i.exec(e))[1]
|
|
? ((n = i(e[1], [])),
|
|
function(e) {
|
|
return !t(e, n);
|
|
})
|
|
: ((e = e[2]),
|
|
function(t, n, i) {
|
|
return "first" === e
|
|
? 0 === n
|
|
: "last" === e
|
|
? n === i - 1
|
|
: "even" === e
|
|
? n % 2 == 0
|
|
: "odd" === e
|
|
? n % 2 == 1
|
|
: !!t[e] && t[e]();
|
|
});
|
|
})(o[7])
|
|
),
|
|
(n.pseudo = !!o[7]),
|
|
(n.direct = r),
|
|
n
|
|
);
|
|
}
|
|
function i(e, t) {
|
|
var r,
|
|
o,
|
|
s,
|
|
a = [];
|
|
do {
|
|
if (
|
|
(Ne.exec(""),
|
|
(o = Ne.exec(e)) && ((e = o[3]), a.push(o[1]), o[2]))
|
|
) {
|
|
r = o[3];
|
|
break;
|
|
}
|
|
} while (o);
|
|
for (r && i(r, t), e = [], s = 0; s < a.length; s++)
|
|
">" !== a[s] && e.push(n(a[s], [], ">" === a[s - 1]));
|
|
return t.push(e), t;
|
|
}
|
|
this._selectors = i(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; r >= 0; 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,
|
|
i = [],
|
|
r = this._selectors;
|
|
function o(e, t, n) {
|
|
var r,
|
|
s,
|
|
a,
|
|
l,
|
|
u,
|
|
c = t[n];
|
|
for (r = 0, s = e.length; r < s; r++) {
|
|
for (u = e[r], a = 0, l = c.length; a < l; a++)
|
|
if (!c[a](u, r, s)) {
|
|
a = l + 1;
|
|
break;
|
|
}
|
|
if (a === l)
|
|
n === t.length - 1
|
|
? i.push(u)
|
|
: u.items && o(u.items(), t, n + 1);
|
|
else if (c.direct) return;
|
|
u.items && o(u.items(), t, n);
|
|
}
|
|
}
|
|
if (e.items) {
|
|
for (t = 0, n = r.length; t < n; t++) o(e.items(), r[t], 0);
|
|
n > 1 &&
|
|
(i = (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;
|
|
})(i));
|
|
}
|
|
return Te || (Te = Be.Collection), new Te(i);
|
|
}
|
|
}),
|
|
Oe = Array.prototype.push,
|
|
ze = Array.prototype.slice;
|
|
(We = {
|
|
length: 0,
|
|
init: function(e) {
|
|
e && this.add(e);
|
|
},
|
|
add: function(e) {
|
|
return (
|
|
a.isArray(e)
|
|
? Oe.apply(this, e)
|
|
: e instanceof Pe
|
|
? this.add(e.toArray())
|
|
: Oe.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(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o = [];
|
|
for (
|
|
"string" == typeof e
|
|
? ((e = new Be(e)),
|
|
(r = function(t) {
|
|
return e.match(t);
|
|
}))
|
|
: (r = e),
|
|
t = 0,
|
|
n = this.length;
|
|
t < n;
|
|
t++
|
|
)
|
|
r((i = this[t])) && o.push(i);
|
|
return new Pe(o);
|
|
},
|
|
slice: function() {
|
|
return new Pe(ze.apply(this, arguments));
|
|
},
|
|
eq: function(e) {
|
|
return -1 === e ? this.slice(e) : this.slice(e, +e + 1);
|
|
},
|
|
each: function(e) {
|
|
return a.each(this, e), this;
|
|
},
|
|
toArray: function() {
|
|
return a.toArray(this);
|
|
},
|
|
indexOf: function(e) {
|
|
for (var t = this.length; t-- && this[t] !== e; );
|
|
return t;
|
|
},
|
|
reverse: function() {
|
|
return new Pe(a.toArray(this).reverse());
|
|
},
|
|
hasClass: function(e) {
|
|
return !!this[0] && this[0].classes.contains(e);
|
|
},
|
|
prop: function(e, t) {
|
|
var n;
|
|
return t !== undefined
|
|
? (this.each(function(n) {
|
|
n[e] && n[e](t);
|
|
}),
|
|
this)
|
|
: (n = this[0]) && n[e]
|
|
? n[e]()
|
|
: void 0;
|
|
},
|
|
exec: function(e) {
|
|
var t = a.toArray(arguments).slice(1);
|
|
return (
|
|
this.each(function(n) {
|
|
n[e] && n[e].apply(n, t);
|
|
}),
|
|
this
|
|
);
|
|
},
|
|
remove: function() {
|
|
for (var e = this.length; e--; ) this[e].remove();
|
|
return this;
|
|
},
|
|
addClass: function(e) {
|
|
return this.each(function(t) {
|
|
t.classes.add(e);
|
|
});
|
|
},
|
|
removeClass: function(e) {
|
|
return this.each(function(t) {
|
|
t.classes.remove(e);
|
|
});
|
|
}
|
|
}),
|
|
a.each(
|
|
"fire on off show hide append prepend before after reflow".split(" "),
|
|
function(e) {
|
|
We[e] = function() {
|
|
var t = a.toArray(arguments);
|
|
return (
|
|
this.each(function(n) {
|
|
e in n && n[e].apply(n, t);
|
|
}),
|
|
this
|
|
);
|
|
};
|
|
}
|
|
),
|
|
a.each(
|
|
"text name disabled active selected checked visible parent value data".split(
|
|
" "
|
|
),
|
|
function(e) {
|
|
We[e] = function(t) {
|
|
return this.prop(e, t);
|
|
};
|
|
}
|
|
),
|
|
(Pe = Ce.extend(We)),
|
|
(Be.Collection = Pe);
|
|
var Le = Pe,
|
|
Ie = function(e) {
|
|
this.create = e.create;
|
|
};
|
|
Ie.create = function(e, t) {
|
|
return new Ie({
|
|
create: function(n, i) {
|
|
var r,
|
|
o = function(e) {
|
|
n.set(i, e.value);
|
|
};
|
|
return (
|
|
n.on("change:" + i, function(n) {
|
|
e.set(t, n.value);
|
|
}),
|
|
e.on("change:" + t, o),
|
|
(r = n._bindings) ||
|
|
((r = n._bindings = []),
|
|
n.on("destroy", function() {
|
|
for (var e = r.length; e--; ) r[e]();
|
|
})),
|
|
r.push(function() {
|
|
e.off("change:" + t, o);
|
|
}),
|
|
e.get(t)
|
|
);
|
|
}
|
|
});
|
|
};
|
|
var Fe = tinymce.util.Tools.resolve("tinymce.util.Observable");
|
|
function Ve(e) {
|
|
return e.nodeType > 0;
|
|
}
|
|
var Ue,
|
|
Ye,
|
|
$e = Ce.extend({
|
|
Mixins: [Fe],
|
|
init: function(e) {
|
|
var t, n;
|
|
for (t in (e = e || {}))
|
|
(n = e[t]) instanceof Ie && (e[t] = n.create(this, t));
|
|
this.data = e;
|
|
},
|
|
set: function(e, t) {
|
|
var n,
|
|
i,
|
|
r = this.data[e];
|
|
if (
|
|
(t instanceof Ie && (t = t.create(this, e)), "object" == typeof e)
|
|
) {
|
|
for (n in e) this.set(n, e[n]);
|
|
return this;
|
|
}
|
|
return (
|
|
(function o(e, t) {
|
|
var n, i;
|
|
if (e === t) return !0;
|
|
if (null === e || null === t) return e === t;
|
|
if ("object" != typeof e || "object" != typeof t) return e === t;
|
|
if (a.isArray(t)) {
|
|
if (e.length !== t.length) return !1;
|
|
for (n = e.length; n--; ) if (!o(e[n], t[n])) return !1;
|
|
}
|
|
if (Ve(e) || Ve(t)) return e === t;
|
|
for (n in ((i = {}), t)) {
|
|
if (!o(e[n], t[n])) return !1;
|
|
i[n] = !0;
|
|
}
|
|
for (n in e) if (!i[n] && !o(e[n], t[n])) return !1;
|
|
return !0;
|
|
})(r, t) ||
|
|
((this.data[e] = t),
|
|
(i = { target: this, name: e, value: t, oldValue: r }),
|
|
this.fire("change:" + e, i),
|
|
this.fire("change", i)),
|
|
this
|
|
);
|
|
},
|
|
get: function(e) {
|
|
return this.data[e];
|
|
},
|
|
has: function(e) {
|
|
return e in this.data;
|
|
},
|
|
bind: function(e) {
|
|
return Ie.create(this, e);
|
|
},
|
|
destroy: function() {
|
|
this.fire("destroy");
|
|
}
|
|
}),
|
|
je = {},
|
|
qe = {
|
|
add: function(e) {
|
|
var t = e.parent();
|
|
if (t) {
|
|
if (!t._layout || t._layout.isNative()) return;
|
|
je[t._id] || (je[t._id] = t),
|
|
Ue ||
|
|
((Ue = !0),
|
|
C.requestAnimationFrame(function() {
|
|
var e, t;
|
|
for (e in ((Ue = !1), je))
|
|
(t = je[e]).state.get("rendered") && t.reflow();
|
|
je = {};
|
|
}, document.body));
|
|
}
|
|
},
|
|
remove: function(e) {
|
|
je[e._id] && delete je[e._id];
|
|
}
|
|
},
|
|
Xe = "onmousewheel" in document,
|
|
Je = !1,
|
|
Ge = 0,
|
|
Ke = {
|
|
Statics: { classPrefix: "mce-" },
|
|
isRtl: function() {
|
|
return Ye.rtl;
|
|
},
|
|
classPrefix: "mce-",
|
|
init: function(e) {
|
|
var t,
|
|
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 = e = a.extend({}, i.Defaults, e)),
|
|
(i._id = e.id || "mceu_" + Ge++),
|
|
(i._aria = { role: e.role }),
|
|
(i._elmCache = {}),
|
|
(i.$ = ye),
|
|
(i.state = new $e({
|
|
visible: !0,
|
|
active: !1,
|
|
disabled: !1,
|
|
value: ""
|
|
})),
|
|
(i.data = new $e(e.data)),
|
|
(i.classes = new Me(function() {
|
|
i.state.get("rendered") && (i.getEl().className = this.toString());
|
|
})),
|
|
(i.classes.prefix = i.classPrefix),
|
|
(t = e.classes) &&
|
|
(i.Defaults && (n = i.Defaults.classes) && t !== n && r(n), r(t)),
|
|
a.each(
|
|
"title text name visible disabled active value".split(" "),
|
|
function(t) {
|
|
t in e && i[t](e[t]);
|
|
}
|
|
),
|
|
i.on("click", function() {
|
|
if (i.disabled()) return !1;
|
|
}),
|
|
(i.settings = e),
|
|
(i.borderBox = Ee(e.border)),
|
|
(i.paddingBox = Ee(e.padding)),
|
|
(i.marginBox = Ee(e.margin)),
|
|
e.hidden && i.hide();
|
|
},
|
|
Properties: "parent,name",
|
|
getContainerElm: function() {
|
|
return we.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 || He(f, "border")),
|
|
(c.paddingBox = c.paddingBox || He(f, "padding")),
|
|
(c.marginBox = c.marginBox || He(f, "margin")),
|
|
(u = we.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 = Ye.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 = (u >= 0 ? u : 0) + "px"),
|
|
(a.w = i.w)),
|
|
i.h !== a.h &&
|
|
((u = l(i.h - s)),
|
|
(e.height = (u >= 0 ? 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 = (u >= 0 ? 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 = (u >= 0 ? u : 0) + "px"),
|
|
(a.innerH = i.innerH)),
|
|
(c._lastRepaintRect = a),
|
|
c.fire("repaint", {}, !1);
|
|
},
|
|
updateLayoutRect: function() {
|
|
var e = this;
|
|
(e.parent()._lastRect = null),
|
|
we.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 (
|
|
Ze(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 Ze(this).off(e, t), this;
|
|
},
|
|
fire: function(e, t, n) {
|
|
if (
|
|
((t = t || {}).control || (t.control = this),
|
|
(t = Ze(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 Ze(this).has(e);
|
|
},
|
|
parents: function(e) {
|
|
var t,
|
|
n = new Le();
|
|
for (t = this.parent(); t; t = t.parent()) n.add(t);
|
|
return e && (n = n.filter(e)), n;
|
|
},
|
|
parentsAndSelf: function(e) {
|
|
return new Le(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] = ye("#" + 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 Ye.translate ? Ye.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 e,
|
|
t,
|
|
n = this,
|
|
i = n.getEl(),
|
|
r = n.parent();
|
|
if (n.items) {
|
|
var o = n.items().toArray();
|
|
for (t = o.length; t--; ) o[t].remove();
|
|
}
|
|
r &&
|
|
r.items &&
|
|
((e = []),
|
|
r.items().each(function(t) {
|
|
t !== n && e.push(t);
|
|
}),
|
|
r.items().set(e),
|
|
(r._lastRect = null)),
|
|
n._eventsRoot && n._eventsRoot === n && ye(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 ye(e).before(this.renderHtml()), this.postRender(), this;
|
|
},
|
|
renderTo: function(e) {
|
|
return (
|
|
ye(e || this.getContainerElm()).append(this.renderHtml()),
|
|
this.postRender(),
|
|
this
|
|
);
|
|
},
|
|
preRender: function() {},
|
|
render: function() {},
|
|
renderHtml: function() {
|
|
return '<div id="' + this._id + '" class="' + this.classes + '"></div>';
|
|
},
|
|
postRender: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
i,
|
|
r,
|
|
o = this,
|
|
s = o.settings;
|
|
for (i in ((o.$el = ye(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;
|
|
}
|
|
Qe(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),
|
|
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), (e = t), (t = 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 Ze(e) {
|
|
return (
|
|
e._eventDispatcher ||
|
|
(e._eventDispatcher = new ke({
|
|
scope: e,
|
|
toggleEvent: function(t, n) {
|
|
n &&
|
|
ke.isNative(t) &&
|
|
(e._nativeEvents || (e._nativeEvents = {}),
|
|
(e._nativeEvents[t] = !0),
|
|
e.state.get("rendered") && Qe(e));
|
|
}
|
|
})),
|
|
e._eventDispatcher
|
|
);
|
|
}
|
|
function Qe(e) {
|
|
var t, n, i, r, o, s;
|
|
function a(t) {
|
|
var n = e.getParentCtrl(t.target);
|
|
n && n.fire(t.type, t);
|
|
}
|
|
function l() {
|
|
var e = r._lastHoverCtrl;
|
|
e &&
|
|
(e.fire("mouseleave", { target: e.getEl() }),
|
|
e.parents().each(function(e) {
|
|
e.fire("mouseleave", { target: e.getEl() });
|
|
}),
|
|
(r._lastHoverCtrl = null));
|
|
}
|
|
function u(t) {
|
|
var n,
|
|
i,
|
|
o,
|
|
s = e.getParentCtrl(t.target),
|
|
a = r._lastHoverCtrl,
|
|
l = 0;
|
|
if (s !== a) {
|
|
if (
|
|
((r._lastHoverCtrl = s),
|
|
(i = s
|
|
.parents()
|
|
.toArray()
|
|
.reverse()).push(s),
|
|
a)
|
|
) {
|
|
for (
|
|
(o = a
|
|
.parents()
|
|
.toArray()
|
|
.reverse()).push(a),
|
|
l = 0;
|
|
l < o.length && i[l] === o[l];
|
|
l++
|
|
);
|
|
for (n = o.length - 1; n >= l; n--)
|
|
(a = o[n]).fire("mouseleave", { target: a.getEl() });
|
|
}
|
|
for (n = l; n < i.length; n++)
|
|
(s = i[n]).fire("mouseenter", { target: s.getEl() });
|
|
}
|
|
}
|
|
function c(t) {
|
|
t.preventDefault(),
|
|
"mousewheel" === t.type
|
|
? ((t.deltaY = -0.025 * t.wheelDelta),
|
|
t.wheelDeltaX && (t.deltaX = -0.025 * t.wheelDeltaX))
|
|
: ((t.deltaX = 0), (t.deltaY = t.detail)),
|
|
(t = e.fire("wheel", t));
|
|
}
|
|
if ((o = e._nativeEvents)) {
|
|
for (
|
|
(i = e.parents().toArray()).unshift(e), t = 0, n = i.length;
|
|
!r && t < n;
|
|
t++
|
|
)
|
|
r = i[t]._eventsRoot;
|
|
for (
|
|
r || (r = i[i.length - 1] || e), e._eventsRoot = r, n = t, t = 0;
|
|
t < n;
|
|
t++
|
|
)
|
|
i[t]._eventsRoot = r;
|
|
var d = r._delegates;
|
|
for (s in (d || (d = r._delegates = {}), o)) {
|
|
if (!o) return !1;
|
|
"wheel" !== s || Je
|
|
? ("mouseenter" === s || "mouseleave" === s
|
|
? r._hasMouseEnter ||
|
|
(ye(r.getEl())
|
|
.on("mouseleave", l)
|
|
.on("mouseover", u),
|
|
(r._hasMouseEnter = 1))
|
|
: d[s] || (ye(r.getEl()).on(s, a), (d[s] = !0)),
|
|
(o[s] = !1))
|
|
: Xe
|
|
? ye(e.getEl()).on("mousewheel", c)
|
|
: ye(e.getEl()).on("DOMMouseScroll", c);
|
|
}
|
|
}
|
|
}
|
|
a.each("text title visible disabled active value".split(" "), function(e) {
|
|
Ke[e] = function(t) {
|
|
return 0 === arguments.length
|
|
? this.state.get(e)
|
|
: (void 0 !== t && this.state.set(e, t), this);
|
|
};
|
|
});
|
|
var et = (Ye = Ce.extend(Ke)),
|
|
tt = function(e) {
|
|
return !!e.getAttribute("data-mce-tabstop");
|
|
},
|
|
nt = function(e) {
|
|
var t,
|
|
n,
|
|
i = e.root;
|
|
function r(e) {
|
|
return e && 1 === e.nodeType;
|
|
}
|
|
try {
|
|
t = document.activeElement;
|
|
} catch (y) {
|
|
t = document.body;
|
|
}
|
|
function o(e) {
|
|
return r((e = e || t)) ? e.getAttribute("role") : null;
|
|
}
|
|
function s(e) {
|
|
for (var n, i = e || t; (i = i.parentNode); ) if ((n = o(i))) return n;
|
|
}
|
|
function a(e) {
|
|
var n = t;
|
|
if (r(n)) return n.getAttribute("aria-" + e);
|
|
}
|
|
function l(e) {
|
|
var t = e.tagName.toUpperCase();
|
|
return "INPUT" === t || "TEXTAREA" === t || "SELECT" === t;
|
|
}
|
|
function u(e) {
|
|
var t = [];
|
|
return (
|
|
(function n(e) {
|
|
if (1 === e.nodeType && "none" !== e.style.display && !e.disabled) {
|
|
var i;
|
|
((l((i = e)) && !i.hidden) ||
|
|
tt(i) ||
|
|
/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(
|
|
o(i)
|
|
)) &&
|
|
t.push(e);
|
|
for (var r = 0; r < e.childNodes.length; r++) n(e.childNodes[r]);
|
|
}
|
|
})(e || i.getEl()),
|
|
t
|
|
);
|
|
}
|
|
function c(e) {
|
|
var t, i;
|
|
(i = (e = e || n).parents().toArray()).unshift(e);
|
|
for (var r = 0; r < i.length && !(t = i[r]).settings.ariaRoot; r++);
|
|
return t;
|
|
}
|
|
function d(e, t) {
|
|
return (
|
|
e < 0 ? (e = t.length - 1) : e >= t.length && (e = 0),
|
|
t[e] && t[e].focus(),
|
|
e
|
|
);
|
|
}
|
|
function f(e, n) {
|
|
var i = -1,
|
|
r = c();
|
|
n = n || u(r.getEl());
|
|
for (var o = 0; o < n.length; o++) n[o] === t && (i = o);
|
|
(i += e), (r.lastAriaIndex = d(i, n));
|
|
}
|
|
function h() {
|
|
"tablist" === s()
|
|
? f(-1, u(t.parentNode))
|
|
: n.parent().submenu
|
|
? v()
|
|
: f(-1);
|
|
}
|
|
function m() {
|
|
var e = o(),
|
|
n = s();
|
|
"tablist" === n
|
|
? f(1, u(t.parentNode))
|
|
: "menuitem" === e && "menu" === n && a("haspopup")
|
|
? b()
|
|
: f(1);
|
|
}
|
|
function g() {
|
|
f(-1);
|
|
}
|
|
function p() {
|
|
var e = o(),
|
|
t = s();
|
|
"menuitem" === e && "menubar" === t
|
|
? b()
|
|
: "button" === e && a("haspopup")
|
|
? b({ key: "down" })
|
|
: f(1);
|
|
}
|
|
function v() {
|
|
n.fire("cancel");
|
|
}
|
|
function b(e) {
|
|
(e = e || {}), n.fire("click", { target: t, aria: e });
|
|
}
|
|
return (
|
|
(n = i.getParentCtrl(t)),
|
|
i.on("keydown", function(e) {
|
|
function i(e, n) {
|
|
l(t) ||
|
|
tt(t) ||
|
|
("slider" !== o(t) && !1 !== n(e) && e.preventDefault());
|
|
}
|
|
if (!e.isDefaultPrevented())
|
|
switch (e.keyCode) {
|
|
case 37:
|
|
i(e, h);
|
|
break;
|
|
case 39:
|
|
i(e, m);
|
|
break;
|
|
case 38:
|
|
i(e, g);
|
|
break;
|
|
case 40:
|
|
i(e, p);
|
|
break;
|
|
case 27:
|
|
v();
|
|
break;
|
|
case 14:
|
|
case 13:
|
|
case 32:
|
|
i(e, b);
|
|
break;
|
|
case 9:
|
|
!(function(e) {
|
|
if ("tablist" === s()) {
|
|
var t = u(n.getEl("body"))[0];
|
|
t && t.focus();
|
|
} else f(e.shiftKey ? -1 : 1);
|
|
})(e),
|
|
e.preventDefault();
|
|
}
|
|
}),
|
|
i.on("focusin", function(e) {
|
|
(t = e.target), (n = e.control);
|
|
}),
|
|
{
|
|
focusFirst: function(e) {
|
|
var t = c(e),
|
|
n = u(t.getEl());
|
|
t.settings.ariaRemember && "lastAriaIndex" in t
|
|
? d(t.lastAriaIndex, n)
|
|
: d(0, n);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
it = {},
|
|
rt = et.extend({
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
(e = t.settings).fixed && t.state.set("fixed", !0),
|
|
(t._items = new Le()),
|
|
t.isRtl() && t.classes.add("rtl"),
|
|
(t.bodyClasses = new Me(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 = g.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 = it[e] = it[e] || new Be(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;
|
|
}
|
|
r >= 0 &&
|
|
((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 (
|
|
a.isArray(e) || (e = [e]),
|
|
a.each(e, function(e) {
|
|
e &&
|
|
(e instanceof et ||
|
|
("string" == typeof e && (e = { type: e }),
|
|
(t = a.extend({}, n.settings.defaults, e)),
|
|
(e.type = t.type =
|
|
t.type ||
|
|
e.type ||
|
|
n.settings.defaultType ||
|
|
(t.defaults ? t.defaults.type : null)),
|
|
(e = g.create(t))),
|
|
i.push(e));
|
|
}),
|
|
i
|
|
);
|
|
},
|
|
renderNew: function() {
|
|
var e = this;
|
|
return (
|
|
e.items().each(function(t, n) {
|
|
var i;
|
|
t.parent(e),
|
|
t.state.get("rendered") ||
|
|
((i = e.getEl("body")).hasChildNodes() &&
|
|
n <= i.childNodes.length - 1
|
|
? ye(i.childNodes[n]).before(t.renderHtml())
|
|
: ye(i).append(t.renderHtml()),
|
|
t.postRender(),
|
|
qe.add(t));
|
|
}),
|
|
e._layout.applyClasses(e.items().filter(":visible")),
|
|
(e._lastRect = null),
|
|
e
|
|
);
|
|
},
|
|
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),
|
|
t >= 0 &&
|
|
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 e = {};
|
|
return (
|
|
this.find("*").each(function(t) {
|
|
var n = t.name(),
|
|
i = t.value();
|
|
n && void 0 !== i && (e[n] = i);
|
|
}),
|
|
e
|
|
);
|
|
},
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._layout,
|
|
n = this.settings.role;
|
|
return (
|
|
e.preRender(),
|
|
t.preRender(e),
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'"' +
|
|
(n ? ' role="' + this.settings.role + '"' : "") +
|
|
'><div id="' +
|
|
e._id +
|
|
'-body" class="' +
|
|
e.bodyClasses +
|
|
'">' +
|
|
(e.settings.html || "") +
|
|
t.renderHtml(e) +
|
|
"</div></div>"
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e,
|
|
t = this;
|
|
return (
|
|
t.items().exec("postRender"),
|
|
t._super(),
|
|
t._layout.postRender(t),
|
|
t.state.set("rendered", !0),
|
|
t.settings.style && t.$el.css(t.settings.style),
|
|
t.settings.border &&
|
|
((e = t.borderBox),
|
|
t.$el.css({
|
|
"border-top-width": e.top,
|
|
"border-right-width": e.right,
|
|
"border-bottom-width": e.bottom,
|
|
"border-left-width": e.left
|
|
})),
|
|
t.parent() || (t.keyboardNav = nt({ 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 (
|
|
et.repaintControls = [],
|
|
et.repaintControls.map = {},
|
|
this.recalc(),
|
|
e = et.repaintControls.length;
|
|
e--;
|
|
|
|
)
|
|
et.repaintControls[e].repaint();
|
|
"flow" !== this.settings.layout &&
|
|
"stack" !== this.settings.layout &&
|
|
this.repaint(),
|
|
(et.repaintControls = []);
|
|
}
|
|
return this;
|
|
}
|
|
});
|
|
function ot(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]];
|
|
}
|
|
var st,
|
|
at,
|
|
lt,
|
|
ut,
|
|
ct = function(e, t) {
|
|
var n,
|
|
i,
|
|
r,
|
|
o,
|
|
s,
|
|
a,
|
|
l,
|
|
u = t.document || document;
|
|
function c() {
|
|
return u.getElementById(t.handle || e);
|
|
}
|
|
(t = t || {}),
|
|
(r = function(e) {
|
|
var r,
|
|
d,
|
|
f,
|
|
h,
|
|
m,
|
|
g,
|
|
p,
|
|
v,
|
|
b,
|
|
y,
|
|
x,
|
|
w,
|
|
_ = ((r = u),
|
|
(y = Math.max),
|
|
(d = r.documentElement),
|
|
(f = r.body),
|
|
(h = y(d.scrollWidth, f.scrollWidth)),
|
|
(m = y(d.clientWidth, f.clientWidth)),
|
|
(g = y(d.offsetWidth, f.offsetWidth)),
|
|
(p = y(d.scrollHeight, f.scrollHeight)),
|
|
(v = y(d.clientHeight, f.clientHeight)),
|
|
(b = y(d.offsetHeight, f.offsetHeight)),
|
|
{ width: h < g ? m : h, height: p < b ? v : p });
|
|
ot(e),
|
|
e.preventDefault(),
|
|
(i = e.button),
|
|
(x = c()),
|
|
(a = e.screenX),
|
|
(l = e.screenY),
|
|
(w = window.getComputedStyle
|
|
? window.getComputedStyle(x, null).getPropertyValue("cursor")
|
|
: x.runtimeStyle.cursor),
|
|
(n = ye("<div></div>")
|
|
.css({
|
|
position: "absolute",
|
|
top: 0,
|
|
left: 0,
|
|
width: _.width,
|
|
height: _.height,
|
|
zIndex: 2147483647,
|
|
opacity: 1e-4,
|
|
cursor: w
|
|
})
|
|
.appendTo(u.body)),
|
|
ye(u)
|
|
.on("mousemove touchmove", s)
|
|
.on("mouseup touchend", o),
|
|
t.start(e);
|
|
}),
|
|
(s = function(e) {
|
|
if ((ot(e), e.button !== i)) return o(e);
|
|
(e.deltaX = e.screenX - a),
|
|
(e.deltaY = e.screenY - l),
|
|
e.preventDefault(),
|
|
t.drag(e);
|
|
}),
|
|
(o = function(e) {
|
|
ot(e),
|
|
ye(u)
|
|
.off("mousemove touchmove", s)
|
|
.off("mouseup touchend", o),
|
|
n.remove(),
|
|
t.stop && t.stop(e);
|
|
}),
|
|
(this.destroy = function() {
|
|
ye(c()).off();
|
|
}),
|
|
ye(c()).on("mousedown touchstart", r);
|
|
},
|
|
dt = {
|
|
init: function() {
|
|
this.on("repaint", this.renderScroll);
|
|
},
|
|
renderScroll: function() {
|
|
var e = this,
|
|
t = 2;
|
|
function n() {
|
|
var n, i, r;
|
|
function o(r, o, s, a, l, u) {
|
|
var c, d, f, h, m, g, p, v;
|
|
if ((d = e.getEl("scroll" + r))) {
|
|
if (
|
|
((p = o.toLowerCase()),
|
|
(v = s.toLowerCase()),
|
|
ye(e.getEl("absend")).css(p, e.layoutRect()[a] - 1),
|
|
!l)
|
|
)
|
|
return void ye(d).css("display", "none");
|
|
ye(d).css("display", "block"),
|
|
(c = e.getEl("body")),
|
|
(f = e.getEl("scroll" + r + "t")),
|
|
(h = c["client" + s] - 2 * t),
|
|
(m = (h -= n && i ? d["client" + u] : 0) / c["scroll" + s]),
|
|
((g = {})[p] = c["offset" + o] + t),
|
|
(g[v] = h),
|
|
ye(d).css(g),
|
|
((g = {})[p] = c["scroll" + o] * m),
|
|
(g[v] = h * m),
|
|
ye(f).css(g);
|
|
}
|
|
}
|
|
(r = e.getEl("body")),
|
|
(n = r.scrollWidth > r.clientWidth),
|
|
(i = r.scrollHeight > r.clientHeight),
|
|
o("h", "Left", "Width", "contentW", n, "Height"),
|
|
o("v", "Top", "Height", "contentH", i, "Width");
|
|
}
|
|
e.settings.autoScroll &&
|
|
(e._hasScroll ||
|
|
((e._hasScroll = !0),
|
|
(function() {
|
|
function n(n, i, r, o, s) {
|
|
var a,
|
|
l = e._id + "-scroll" + n,
|
|
u = e.classPrefix;
|
|
ye(e.getEl()).append(
|
|
'<div id="' +
|
|
l +
|
|
'" class="' +
|
|
u +
|
|
"scrollbar " +
|
|
u +
|
|
"scrollbar-" +
|
|
n +
|
|
'"><div id="' +
|
|
l +
|
|
't" class="' +
|
|
u +
|
|
'scrollbar-thumb"></div></div>'
|
|
),
|
|
(e.draghelper = new ct(l + "t", {
|
|
start: function() {
|
|
(a = e.getEl("body")["scroll" + i]),
|
|
ye("#" + l).addClass(u + "active");
|
|
},
|
|
drag: function(l) {
|
|
var u,
|
|
c,
|
|
d,
|
|
f,
|
|
h = e.layoutRect();
|
|
(c = h.contentW > h.innerW),
|
|
(d = h.contentH > h.innerH),
|
|
(f = e.getEl("body")["client" + r] - 2 * t),
|
|
(u =
|
|
(f -=
|
|
c && d ? e.getEl("scroll" + n)["client" + s] : 0) /
|
|
e.getEl("body")["scroll" + r]),
|
|
(e.getEl("body")["scroll" + i] =
|
|
a + l["delta" + o] / u);
|
|
},
|
|
stop: function() {
|
|
ye("#" + l).removeClass(u + "active");
|
|
}
|
|
}));
|
|
}
|
|
e.classes.add("scroll"),
|
|
n("v", "Top", "Height", "Y", "Width"),
|
|
n("h", "Left", "Width", "X", "Height");
|
|
})(),
|
|
e.on("wheel", function(t) {
|
|
var i = e.getEl("body");
|
|
(i.scrollLeft += 10 * (t.deltaX || 0)),
|
|
(i.scrollTop += 10 * t.deltaY),
|
|
n();
|
|
}),
|
|
ye(e.getEl("body")).on("scroll", n)),
|
|
n());
|
|
}
|
|
},
|
|
ft = rt.extend({
|
|
Defaults: { layout: "fit", containerCls: "panel" },
|
|
Mixins: [dt],
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._layout,
|
|
n = e.settings.html;
|
|
return (
|
|
e.preRender(),
|
|
t.preRender(e),
|
|
void 0 === n
|
|
? (n =
|
|
'<div id="' +
|
|
e._id +
|
|
'-body" class="' +
|
|
e.bodyClasses +
|
|
'">' +
|
|
t.renderHtml(e) +
|
|
"</div>")
|
|
: ("function" == typeof n && (n = n.call(e)), (e._hasBody = !1)),
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'" hidefocus="1" tabindex="-1" role="group">' +
|
|
(e._preBodyHtml || "") +
|
|
n +
|
|
"</div>"
|
|
);
|
|
}
|
|
}),
|
|
ht = {
|
|
resizeToContent: function() {
|
|
(this._layoutRect.autoResize = !0),
|
|
(this._lastRect = null),
|
|
this.reflow();
|
|
},
|
|
resizeTo: function(e, t) {
|
|
if (e <= 1 || t <= 1) {
|
|
var n = we.getWindowSize();
|
|
(e = e <= 1 ? e * n.w : e), (t = t <= 1 ? t * n.h : t);
|
|
}
|
|
return (
|
|
(this._layoutRect.autoResize = !1),
|
|
this.layoutRect({ minW: e, minH: t, w: e, h: t }).reflow()
|
|
);
|
|
},
|
|
resizeBy: function(e, t) {
|
|
var n = this.layoutRect();
|
|
return this.resizeTo(n.w + e, n.h + t);
|
|
}
|
|
},
|
|
mt = [],
|
|
gt = [];
|
|
function pt(e, t) {
|
|
for (; e; ) {
|
|
if (e === t) return !0;
|
|
e = e.parent();
|
|
}
|
|
}
|
|
function vt() {
|
|
st ||
|
|
((st = function(e) {
|
|
2 !== e.button &&
|
|
(function(e) {
|
|
for (var t = mt.length; t--; ) {
|
|
var n = mt[t],
|
|
i = n.getParentCtrl(e.target);
|
|
if (n.settings.autohide) {
|
|
if (i && (pt(i, n) || n.parent() === i)) continue;
|
|
(e = n.fire("autohide", {
|
|
target: e.target
|
|
})).isDefaultPrevented() || n.hide();
|
|
}
|
|
}
|
|
})(e);
|
|
}),
|
|
ye(document).on("click touchstart", st));
|
|
}
|
|
function bt(e) {
|
|
var t = we.getViewPort().y;
|
|
function n(t, n) {
|
|
for (var i, r = 0; r < mt.length; r++)
|
|
if (mt[r] !== e)
|
|
for (i = mt[r].parent(); i && (i = i.parent()); )
|
|
i === e &&
|
|
mt[r]
|
|
.fixed(t)
|
|
.moveBy(0, n)
|
|
.repaint();
|
|
}
|
|
e.settings.autofix &&
|
|
(e.state.get("fixed")
|
|
? e._autoFixY > t &&
|
|
(e
|
|
.fixed(!1)
|
|
.layoutRect({ y: e._autoFixY })
|
|
.repaint(),
|
|
n(!1, e._autoFixY - t))
|
|
: ((e._autoFixY = e.layoutRect().y),
|
|
e._autoFixY < t &&
|
|
(e
|
|
.fixed(!0)
|
|
.layoutRect({ y: 0 })
|
|
.repaint(),
|
|
n(!0, t - e._autoFixY))));
|
|
}
|
|
function yt(e, t) {
|
|
var n,
|
|
i,
|
|
r = xt.zIndex || 65535;
|
|
if (e) gt.push(t);
|
|
else for (n = gt.length; n--; ) gt[n] === t && gt.splice(n, 1);
|
|
if (gt.length)
|
|
for (n = 0; n < gt.length; n++)
|
|
gt[n].modal && (r++, (i = gt[n])),
|
|
(gt[n].getEl().style.zIndex = r),
|
|
(gt[n].zIndex = r),
|
|
r++;
|
|
var o = ye("#" + t.classPrefix + "modal-block", t.getContainerElm())[0];
|
|
i
|
|
? ye(o).css("z-index", i.zIndex - 1)
|
|
: o && (o.parentNode.removeChild(o), (ut = !1)),
|
|
(xt.currentZIndex = r);
|
|
}
|
|
var xt = ft.extend({
|
|
Mixins: [Re, ht],
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
(t._eventsRoot = t),
|
|
t.classes.add("floatpanel"),
|
|
e.autohide &&
|
|
(vt(),
|
|
(function() {
|
|
if (!lt) {
|
|
var e = document.documentElement,
|
|
t = e.clientWidth,
|
|
n = e.clientHeight;
|
|
(lt = function() {
|
|
(document.all && t === e.clientWidth && n === e.clientHeight) ||
|
|
((t = e.clientWidth), (n = e.clientHeight), xt.hideAll());
|
|
}),
|
|
ye(window).on("resize", lt);
|
|
}
|
|
})(),
|
|
mt.push(t)),
|
|
e.autofix &&
|
|
(at ||
|
|
((at = function() {
|
|
var e;
|
|
for (e = mt.length; e--; ) bt(mt[e]);
|
|
}),
|
|
ye(window).on("scroll", at)),
|
|
t.on("move", function() {
|
|
bt(this);
|
|
})),
|
|
t.on("postrender show", function(e) {
|
|
if (e.control === t) {
|
|
var n,
|
|
i = t.classPrefix;
|
|
t.modal &&
|
|
!ut &&
|
|
((n = ye("#" + i + "modal-block", t.getContainerElm()))[0] ||
|
|
(n = ye(
|
|
'<div id="' +
|
|
i +
|
|
'modal-block" class="' +
|
|
i +
|
|
"reset " +
|
|
i +
|
|
'fade"></div>'
|
|
).appendTo(t.getContainerElm())),
|
|
C.setTimeout(function() {
|
|
n.addClass(i + "in"), ye(t.getEl()).addClass(i + "in");
|
|
}),
|
|
(ut = !0)),
|
|
yt(!0, t);
|
|
}
|
|
}),
|
|
t.on("show", function() {
|
|
t.parents().each(function(e) {
|
|
if (e.state.get("fixed")) return t.fixed(!0), !1;
|
|
});
|
|
}),
|
|
e.popover &&
|
|
((t._preBodyHtml = '<div class="' + t.classPrefix + 'arrow"></div>'),
|
|
t.classes
|
|
.add("popover")
|
|
.add("bottom")
|
|
.add(t.isRtl() ? "end" : "start")),
|
|
t.aria("label", e.ariaLabel),
|
|
t.aria("labelledby", t._id),
|
|
t.aria("describedby", t.describedBy || t._id + "-none");
|
|
},
|
|
fixed: function(e) {
|
|
var t = this;
|
|
if (t.state.get("fixed") !== e) {
|
|
if (t.state.get("rendered")) {
|
|
var n = we.getViewPort();
|
|
e ? (t.layoutRect().y -= n.y) : (t.layoutRect().y += n.y);
|
|
}
|
|
t.classes.toggle("fixed", e), t.state.set("fixed", e);
|
|
}
|
|
return t;
|
|
},
|
|
show: function() {
|
|
var e,
|
|
t = this._super();
|
|
for (e = mt.length; e-- && mt[e] !== this; );
|
|
return -1 === e && mt.push(this), t;
|
|
},
|
|
hide: function() {
|
|
return wt(this), yt(!1, this), this._super();
|
|
},
|
|
hideAll: function() {
|
|
xt.hideAll();
|
|
},
|
|
close: function() {
|
|
return (
|
|
this.fire("close").isDefaultPrevented() ||
|
|
(this.remove(), yt(!1, this)),
|
|
this
|
|
);
|
|
},
|
|
remove: function() {
|
|
wt(this), this._super();
|
|
},
|
|
postRender: function() {
|
|
return (
|
|
this.settings.bodyRole &&
|
|
this.getEl("body").setAttribute("role", this.settings.bodyRole),
|
|
this._super()
|
|
);
|
|
}
|
|
});
|
|
function wt(e) {
|
|
var t;
|
|
for (t = mt.length; t--; ) mt[t] === e && mt.splice(t, 1);
|
|
for (t = gt.length; t--; ) gt[t] === e && gt.splice(t, 1);
|
|
}
|
|
xt.hideAll = function() {
|
|
for (var e = mt.length; e--; ) {
|
|
var t = mt[e];
|
|
t && t.settings.autohide && (t.hide(), mt.splice(e, 1));
|
|
}
|
|
};
|
|
var _t,
|
|
Rt = function(e) {
|
|
return !(!e || _.container);
|
|
},
|
|
Ct = function(e, t, n) {
|
|
var i,
|
|
r,
|
|
o = m.DOM,
|
|
s = e.getParam("fixed_toolbar_container");
|
|
s && (r = o.select(s)[0]);
|
|
var a = function() {
|
|
if (i && i.moveRel && i.visible() && !i._fixed) {
|
|
var t = e.selection.getScrollContainer(),
|
|
n = e.getBody(),
|
|
r = 0,
|
|
s = 0;
|
|
if (t) {
|
|
var a = o.getPos(n),
|
|
l = o.getPos(t);
|
|
(r = Math.max(0, l.x - a.x)), (s = Math.max(0, l.y - a.y));
|
|
}
|
|
i.fixed(!1)
|
|
.moveRel(
|
|
n,
|
|
e.rtl ? ["tr-br", "br-tr"] : ["tl-bl", "bl-tl", "tr-br"]
|
|
)
|
|
.moveBy(r, s);
|
|
}
|
|
},
|
|
u = function() {
|
|
i && (i.show(), a(), o.addClass(e.getBody(), "mce-edit-focus"));
|
|
},
|
|
d = function() {
|
|
i &&
|
|
(i.hide(),
|
|
xt.hideAll(),
|
|
o.removeClass(e.getBody(), "mce-edit-focus"));
|
|
},
|
|
h = function() {
|
|
i
|
|
? i.visible() || u()
|
|
: ((i = t.panel = g.create({
|
|
type: r ? "panel" : "floatpanel",
|
|
role: "application",
|
|
classes: "tinymce tinymce-inline",
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "stretch",
|
|
autohide: !1,
|
|
autofix: Rt(r),
|
|
fixed: Rt(r),
|
|
border: 1,
|
|
items: [
|
|
!1 === l(e)
|
|
? null
|
|
: { type: "menubar", border: "0 0 1 0", items: oe(e) },
|
|
B(e, c(e))
|
|
]
|
|
})),
|
|
y(e),
|
|
r ? i.renderTo(r).reflow() : i.renderTo().reflow(),
|
|
w(e, i),
|
|
u(),
|
|
F(e),
|
|
e.on("nodeChange", a),
|
|
e.on("ResizeWindow", a),
|
|
e.on("activate", u),
|
|
e.on("deactivate", d),
|
|
e.nodeChanged());
|
|
};
|
|
return (
|
|
(e.settings.content_editable = !0),
|
|
e.on("focus", function() {
|
|
!1 === f(e) && n.skinUiCss
|
|
? o.styleSheetLoader.load(n.skinUiCss, h, h)
|
|
: h();
|
|
}),
|
|
e.on("blur hide", d),
|
|
e.on("remove", function() {
|
|
i && (i.remove(), (i = null));
|
|
}),
|
|
!1 === f(e) && n.skinUiCss
|
|
? o.styleSheetLoader.load(n.skinUiCss, ge(e))
|
|
: ge(e)(),
|
|
{}
|
|
);
|
|
},
|
|
kt = function(e, t) {
|
|
var n,
|
|
i,
|
|
r = this,
|
|
o = et.classPrefix;
|
|
(r.show = function(s, a) {
|
|
function l() {
|
|
n &&
|
|
(ye(e).append(
|
|
'<div class="' +
|
|
o +
|
|
"throbber" +
|
|
(t ? " " + o + "throbber-inline" : "") +
|
|
'"></div>'
|
|
),
|
|
a && a());
|
|
}
|
|
return r.hide(), (n = !0), s ? (i = C.setTimeout(l, s)) : l(), r;
|
|
}),
|
|
(r.hide = function() {
|
|
var t = e.lastChild;
|
|
return (
|
|
C.clearTimeout(i),
|
|
t &&
|
|
-1 !== t.className.indexOf("throbber") &&
|
|
t.parentNode.removeChild(t),
|
|
(n = !1),
|
|
r
|
|
);
|
|
});
|
|
},
|
|
Et = function(e, t) {
|
|
var n;
|
|
e.on("ProgressState", function(e) {
|
|
(n = n || new kt(t.panel.getEl("body"))),
|
|
e.state ? n.show(e.time) : n.hide();
|
|
});
|
|
},
|
|
Ht = function(e, t, n) {
|
|
var i = (function(e) {
|
|
var t = e.settings,
|
|
n = t.skin,
|
|
i = t.skin_url;
|
|
if (!1 !== n) {
|
|
var r = n || "lightgray";
|
|
i = i ? e.documentBaseURI.toAbsolute(i) : s.baseURL + "/skins/" + r;
|
|
}
|
|
return i;
|
|
})(e);
|
|
return (
|
|
i &&
|
|
((n.skinUiCss = i + "/skin.min.css"),
|
|
e.contentCSS.push(
|
|
i + "/content" + (e.inline ? ".inline" : "") + ".min.css"
|
|
)),
|
|
Et(e, t),
|
|
e.getParam("inline", !1, "boolean") ? Ct(e, t, n) : be(e, t, n)
|
|
);
|
|
},
|
|
St = et.extend({
|
|
Mixins: [Re],
|
|
Defaults: { classes: "widget tooltip tooltip-n" },
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e.classPrefix;
|
|
return (
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'" role="presentation"><div class="' +
|
|
t +
|
|
'tooltip-arrow"></div><div class="' +
|
|
t +
|
|
'tooltip-inner">' +
|
|
e.encode(e.state.get("text")) +
|
|
"</div></div>"
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
return (
|
|
e.state.on("change:text", function(t) {
|
|
e.getEl().lastChild.innerHTML = e.encode(t.value);
|
|
}),
|
|
e._super()
|
|
);
|
|
},
|
|
repaint: function() {
|
|
var e, t;
|
|
(e = this.getEl().style),
|
|
(t = this._layoutRect),
|
|
(e.left = t.x + "px"),
|
|
(e.top = t.y + "px"),
|
|
(e.zIndex = 131070);
|
|
}
|
|
}),
|
|
Mt = et.extend({
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
(e = t.settings),
|
|
(t.canFocus = !0),
|
|
e.tooltip &&
|
|
!1 !== Mt.tooltips &&
|
|
(t.on("mouseenter", function(n) {
|
|
var i = t.tooltip().moveTo(-65535);
|
|
if (n.control === t) {
|
|
var r = i
|
|
.text(e.tooltip)
|
|
.show()
|
|
.testMoveRel(t.getEl(), ["bc-tc", "bc-tl", "bc-tr"]);
|
|
i.classes.toggle("tooltip-n", "bc-tc" === r),
|
|
i.classes.toggle("tooltip-nw", "bc-tl" === r),
|
|
i.classes.toggle("tooltip-ne", "bc-tr" === r),
|
|
i.moveRel(t.getEl(), r);
|
|
} else i.hide();
|
|
}),
|
|
t.on("mouseleave mousedown click", function() {
|
|
t.tooltip().hide();
|
|
})),
|
|
t.aria("label", e.ariaLabel || e.tooltip);
|
|
},
|
|
tooltip: function() {
|
|
return _t || (_t = new St({ type: "tooltip" })).renderTo(), _t;
|
|
},
|
|
postRender: function() {
|
|
var e = this,
|
|
t = e.settings;
|
|
e._super(),
|
|
e.parent() ||
|
|
(!t.width && !t.height) ||
|
|
(e.initLayoutRect(), e.repaint()),
|
|
t.autofocus && e.focus();
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
function t(t) {
|
|
e.aria("disabled", t), e.classes.toggle("disabled", t);
|
|
}
|
|
function n(t) {
|
|
e.aria("pressed", t), e.classes.toggle("active", t);
|
|
}
|
|
return (
|
|
e.state.on("change:disabled", function(e) {
|
|
t(e.value);
|
|
}),
|
|
e.state.on("change:active", function(e) {
|
|
n(e.value);
|
|
}),
|
|
e.state.get("disabled") && t(!0),
|
|
e.state.get("active") && n(!0),
|
|
e._super()
|
|
);
|
|
},
|
|
remove: function() {
|
|
this._super(), _t && (_t.remove(), (_t = null));
|
|
}
|
|
}),
|
|
Tt = Mt.extend({
|
|
Defaults: { value: 0 },
|
|
init: function(e) {
|
|
this._super(e),
|
|
this.classes.add("progress"),
|
|
this.settings.filter ||
|
|
(this.settings.filter = function(e) {
|
|
return Math.round(e);
|
|
});
|
|
},
|
|
renderHtml: function() {
|
|
var e = this._id,
|
|
t = this.classPrefix;
|
|
return (
|
|
'<div id="' +
|
|
e +
|
|
'" class="' +
|
|
this.classes +
|
|
'"><div class="' +
|
|
t +
|
|
'bar-container"><div class="' +
|
|
t +
|
|
'bar"></div></div><div class="' +
|
|
t +
|
|
'text">0%</div></div>'
|
|
);
|
|
},
|
|
postRender: function() {
|
|
return this._super(), this.value(this.settings.value), this;
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
function t(t) {
|
|
(t = e.settings.filter(t)),
|
|
(e.getEl().lastChild.innerHTML = t + "%"),
|
|
(e.getEl().firstChild.firstChild.style.width = t + "%");
|
|
}
|
|
return (
|
|
e.state.on("change:value", function(e) {
|
|
t(e.value);
|
|
}),
|
|
t(e.state.get("value")),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
Pt = function(e, t) {
|
|
e.getEl().lastChild.textContent =
|
|
t + (e.progressBar ? " " + e.progressBar.value() + "%" : "");
|
|
},
|
|
Wt = et.extend({
|
|
Mixins: [Re],
|
|
Defaults: { classes: "widget notification" },
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
(t.maxWidth = e.maxWidth),
|
|
e.text && t.text(e.text),
|
|
e.icon && (t.icon = e.icon),
|
|
e.color && (t.color = e.color),
|
|
e.type && t.classes.add("notification-" + e.type),
|
|
e.timeout && (e.timeout < 0 || e.timeout > 0) && !e.closeButton
|
|
? (t.closeButton = !1)
|
|
: (t.classes.add("has-close"), (t.closeButton = !0)),
|
|
e.progressBar && (t.progressBar = new Tt()),
|
|
t.on("click", function(e) {
|
|
-1 !== e.target.className.indexOf(t.classPrefix + "close") &&
|
|
t.close();
|
|
});
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t = this,
|
|
n = t.classPrefix,
|
|
i = "",
|
|
r = "",
|
|
o = "";
|
|
return (
|
|
t.icon &&
|
|
(i = '<i class="' + n + "ico " + n + "i-" + t.icon + '"></i>'),
|
|
(e =
|
|
' style="max-width: ' +
|
|
t.maxWidth +
|
|
"px;" +
|
|
(t.color ? "background-color: " + t.color + ';"' : '"')),
|
|
t.closeButton &&
|
|
(r =
|
|
'<button type="button" class="' +
|
|
n +
|
|
'close" aria-hidden="true">\xd7</button>'),
|
|
t.progressBar && (o = t.progressBar.renderHtml()),
|
|
'<div id="' +
|
|
t._id +
|
|
'" class="' +
|
|
t.classes +
|
|
'"' +
|
|
e +
|
|
' role="presentation">' +
|
|
i +
|
|
'<div class="' +
|
|
n +
|
|
'notification-inner">' +
|
|
t.state.get("text") +
|
|
"</div>" +
|
|
o +
|
|
r +
|
|
'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this;
|
|
return (
|
|
C.setTimeout(function() {
|
|
e.$el.addClass(e.classPrefix + "in"), Pt(e, e.state.get("text"));
|
|
}, 100),
|
|
e._super()
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
return (
|
|
e.state.on("change:text", function(t) {
|
|
(e.getEl().firstChild.innerHTML = t.value), Pt(e, t.value);
|
|
}),
|
|
e.progressBar &&
|
|
(e.progressBar.bindStates(),
|
|
e.progressBar.state.on("change:value", function(t) {
|
|
Pt(e, e.state.get("text"));
|
|
})),
|
|
e._super()
|
|
);
|
|
},
|
|
close: function() {
|
|
return this.fire("close").isDefaultPrevented() || this.remove(), this;
|
|
},
|
|
repaint: function() {
|
|
var e, t;
|
|
(e = this.getEl().style),
|
|
(t = this._layoutRect),
|
|
(e.left = t.x + "px"),
|
|
(e.top = t.y + "px"),
|
|
(e.zIndex = 65534);
|
|
}
|
|
}),
|
|
Dt = function(e) {
|
|
var t = function(e) {
|
|
return e.inline ? e.getElement() : e.getContentAreaContainer();
|
|
};
|
|
return {
|
|
open: function(n, i) {
|
|
var r,
|
|
o = a.extend(n, { maxWidth: ((r = t(e)), we.getSize(r).width) }),
|
|
s = new Wt(o);
|
|
return (
|
|
(s.args = o),
|
|
o.timeout > 0 &&
|
|
(s.timer = setTimeout(function() {
|
|
s.close(), i();
|
|
}, o.timeout)),
|
|
s.on("close", function() {
|
|
i();
|
|
}),
|
|
s.renderTo(),
|
|
s
|
|
);
|
|
},
|
|
close: function(e) {
|
|
e.close();
|
|
},
|
|
reposition: function(n) {
|
|
var i;
|
|
(i = n),
|
|
ee.each(i, function(e) {
|
|
e.moveTo(0, 0);
|
|
}),
|
|
(function(n) {
|
|
if (n.length > 0) {
|
|
var i = n.slice(0, 1)[0],
|
|
r = t(e);
|
|
i.moveRel(r, "tc-tc"),
|
|
ee.each(n, function(e, t) {
|
|
t > 0 && e.moveRel(n[t - 1].getEl(), "bc-tc");
|
|
});
|
|
}
|
|
})(n);
|
|
},
|
|
getArgs: function(e) {
|
|
return e.args;
|
|
}
|
|
};
|
|
},
|
|
Nt = [],
|
|
At = "";
|
|
function Bt(e) {
|
|
var t,
|
|
n = ye("meta[name=viewport]")[0];
|
|
!1 !== _.overrideViewPort &&
|
|
(n ||
|
|
((n = document.createElement("meta")).setAttribute("name", "viewport"),
|
|
document.getElementsByTagName("head")[0].appendChild(n)),
|
|
(t = n.getAttribute("content")) && void 0 !== At && (At = t),
|
|
n.setAttribute(
|
|
"content",
|
|
e
|
|
? "width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0"
|
|
: At
|
|
));
|
|
}
|
|
function Ot(e, t) {
|
|
(function() {
|
|
for (var e = 0; e < Nt.length; e++) if (Nt[e]._fullscreen) return !0;
|
|
return !1;
|
|
})() &&
|
|
!1 === t &&
|
|
ye([document.documentElement, document.body]).removeClass(
|
|
e + "fullscreen"
|
|
);
|
|
}
|
|
var zt = xt.extend({
|
|
modal: !0,
|
|
Defaults: {
|
|
border: 1,
|
|
layout: "flex",
|
|
containerCls: "panel",
|
|
role: "dialog",
|
|
callbacks: {
|
|
submit: function() {
|
|
this.fire("submit", { data: this.toJSON() });
|
|
},
|
|
close: function() {
|
|
this.close();
|
|
}
|
|
}
|
|
},
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
t.isRtl() && t.classes.add("rtl"),
|
|
t.classes.add("window"),
|
|
t.bodyClasses.add("window-body"),
|
|
t.state.set("fixed", !0),
|
|
e.buttons &&
|
|
((t.statusbar = new ft({
|
|
layout: "flex",
|
|
border: "1 0 0 0",
|
|
spacing: 3,
|
|
padding: 10,
|
|
align: "center",
|
|
pack: t.isRtl() ? "start" : "end",
|
|
defaults: { type: "button" },
|
|
items: e.buttons
|
|
})),
|
|
t.statusbar.classes.add("foot"),
|
|
t.statusbar.parent(t)),
|
|
t.on("click", function(e) {
|
|
var n = t.classPrefix + "close";
|
|
(we.hasClass(e.target, n) || we.hasClass(e.target.parentNode, n)) &&
|
|
t.close();
|
|
}),
|
|
t.on("cancel", function() {
|
|
t.close();
|
|
}),
|
|
t.aria("describedby", t.describedBy || t._id + "-none"),
|
|
t.aria("label", e.title),
|
|
(t._fullscreen = !1);
|
|
},
|
|
recalc: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
i,
|
|
r = this,
|
|
o = r.statusbar;
|
|
r._fullscreen &&
|
|
(r.layoutRect(we.getWindowSize()),
|
|
(r.layoutRect().contentH = r.layoutRect().innerH)),
|
|
r._super(),
|
|
(e = r.layoutRect()),
|
|
r.settings.title &&
|
|
!r._fullscreen &&
|
|
(t = e.headerW) > e.w &&
|
|
((n = e.x - Math.max(0, t / 2)),
|
|
r.layoutRect({ w: t, x: n }),
|
|
(i = !0)),
|
|
o &&
|
|
(o.layoutRect({ w: r.layoutRect().innerW }).recalc(),
|
|
(t = o.layoutRect().minW + e.deltaW) > e.w &&
|
|
((n = e.x - Math.max(0, t - e.w)),
|
|
r.layoutRect({ w: t, x: n }),
|
|
(i = !0))),
|
|
i && r.recalc();
|
|
},
|
|
initLayoutRect: function() {
|
|
var e,
|
|
t = this,
|
|
n = t._super(),
|
|
i = 0;
|
|
if (t.settings.title && !t._fullscreen) {
|
|
e = t.getEl("head");
|
|
var r = we.getSize(e);
|
|
(n.headerW = r.width), (n.headerH = r.height), (i += n.headerH);
|
|
}
|
|
t.statusbar && (i += t.statusbar.layoutRect().h),
|
|
(n.deltaH += i),
|
|
(n.minH += i),
|
|
(n.h += i);
|
|
var o = we.getWindowSize();
|
|
return (
|
|
(n.x = t.settings.x || Math.max(0, o.w / 2 - n.w / 2)),
|
|
(n.y = t.settings.y || Math.max(0, o.h / 2 - n.h / 2)),
|
|
n
|
|
);
|
|
},
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._layout,
|
|
n = e._id,
|
|
i = e.classPrefix,
|
|
r = e.settings,
|
|
o = "",
|
|
s = "",
|
|
a = r.html;
|
|
return (
|
|
e.preRender(),
|
|
t.preRender(e),
|
|
r.title &&
|
|
(o =
|
|
'<div id="' +
|
|
n +
|
|
'-head" class="' +
|
|
i +
|
|
'window-head"><div id="' +
|
|
n +
|
|
'-title" class="' +
|
|
i +
|
|
'title">' +
|
|
e.encode(r.title) +
|
|
'</div><div id="' +
|
|
n +
|
|
'-dragh" class="' +
|
|
i +
|
|
'dragh"></div><button type="button" class="' +
|
|
i +
|
|
'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),
|
|
r.url && (a = '<iframe src="' + r.url + '" tabindex="-1"></iframe>'),
|
|
void 0 === a && (a = t.renderHtml(e)),
|
|
e.statusbar && (s = e.statusbar.renderHtml()),
|
|
'<div id="' +
|
|
n +
|
|
'" class="' +
|
|
e.classes +
|
|
'" hidefocus="1"><div class="' +
|
|
e.classPrefix +
|
|
'reset" role="application">' +
|
|
o +
|
|
'<div id="' +
|
|
n +
|
|
'-body" class="' +
|
|
e.bodyClasses +
|
|
'">' +
|
|
a +
|
|
"</div>" +
|
|
s +
|
|
"</div></div>"
|
|
);
|
|
},
|
|
fullscreen: function(e) {
|
|
var t,
|
|
n,
|
|
i = this,
|
|
r = document.documentElement,
|
|
o = i.classPrefix;
|
|
if (e !== i._fullscreen)
|
|
if (
|
|
(ye(window).on("resize", function() {
|
|
var e;
|
|
if (i._fullscreen)
|
|
if (t)
|
|
i._timer ||
|
|
(i._timer = C.setTimeout(function() {
|
|
var e = we.getWindowSize();
|
|
i.moveTo(0, 0).resizeTo(e.w, e.h), (i._timer = 0);
|
|
}, 50));
|
|
else {
|
|
e = new Date().getTime();
|
|
var n = we.getWindowSize();
|
|
i.moveTo(0, 0).resizeTo(n.w, n.h),
|
|
new Date().getTime() - e > 50 && (t = !0);
|
|
}
|
|
}),
|
|
(n = i.layoutRect()),
|
|
(i._fullscreen = e),
|
|
e)
|
|
) {
|
|
(i._initial = { x: n.x, y: n.y, w: n.w, h: n.h }),
|
|
(i.borderBox = Ee("0")),
|
|
(i.getEl("head").style.display = "none"),
|
|
(n.deltaH -= n.headerH + 2),
|
|
ye([r, document.body]).addClass(o + "fullscreen"),
|
|
i.classes.add("fullscreen");
|
|
var s = we.getWindowSize();
|
|
i.moveTo(0, 0).resizeTo(s.w, s.h);
|
|
} else
|
|
(i.borderBox = Ee(i.settings.border)),
|
|
(i.getEl("head").style.display = ""),
|
|
(n.deltaH += n.headerH),
|
|
ye([r, document.body]).removeClass(o + "fullscreen"),
|
|
i.classes.remove("fullscreen"),
|
|
i
|
|
.moveTo(i._initial.x, i._initial.y)
|
|
.resizeTo(i._initial.w, i._initial.h);
|
|
return i.reflow();
|
|
},
|
|
postRender: function() {
|
|
var e,
|
|
t = this;
|
|
setTimeout(function() {
|
|
t.classes.add("in"), t.fire("open");
|
|
}, 0),
|
|
t._super(),
|
|
t.statusbar && t.statusbar.postRender(),
|
|
t.focus(),
|
|
(this.dragHelper = new ct(t._id + "-dragh", {
|
|
start: function() {
|
|
e = { x: t.layoutRect().x, y: t.layoutRect().y };
|
|
},
|
|
drag: function(n) {
|
|
t.moveTo(e.x + n.deltaX, e.y + n.deltaY);
|
|
}
|
|
})),
|
|
t.on("submit", function(e) {
|
|
e.isDefaultPrevented() || t.close();
|
|
}),
|
|
Nt.push(t),
|
|
Bt(!0);
|
|
},
|
|
submit: function() {
|
|
return this.fire("submit", { data: this.toJSON() });
|
|
},
|
|
remove: function() {
|
|
var e,
|
|
t = this;
|
|
for (
|
|
t.dragHelper.destroy(),
|
|
t._super(),
|
|
t.statusbar && this.statusbar.remove(),
|
|
Ot(t.classPrefix, !1),
|
|
e = Nt.length;
|
|
e--;
|
|
|
|
)
|
|
Nt[e] === t && Nt.splice(e, 1);
|
|
Bt(Nt.length > 0);
|
|
},
|
|
getContentWindow: function() {
|
|
var e = this.getEl().getElementsByTagName("iframe")[0];
|
|
return e ? e.contentWindow : null;
|
|
}
|
|
});
|
|
!(function() {
|
|
if (!_.desktop) {
|
|
var e = { w: window.innerWidth, h: window.innerHeight };
|
|
C.setInterval(function() {
|
|
var t = window.innerWidth,
|
|
n = window.innerHeight;
|
|
(e.w === t && e.h === n) ||
|
|
((e = { w: t, h: n }), ye(window).trigger("resize"));
|
|
}, 100);
|
|
}
|
|
ye(window).on("resize", function() {
|
|
var e,
|
|
t,
|
|
n = we.getWindowSize();
|
|
for (e = 0; e < Nt.length; e++)
|
|
(t = Nt[e].layoutRect()),
|
|
Nt[e].moveTo(
|
|
Nt[e].settings.x || Math.max(0, n.w / 2 - t.w / 2),
|
|
Nt[e].settings.y || Math.max(0, n.h / 2 - t.h / 2)
|
|
);
|
|
});
|
|
})();
|
|
var Lt = zt.extend({
|
|
init: function(e) {
|
|
(e = {
|
|
border: 1,
|
|
padding: 20,
|
|
layout: "flex",
|
|
pack: "center",
|
|
align: "center",
|
|
containerCls: "panel",
|
|
autoScroll: !0,
|
|
buttons: { type: "button", text: "Ok", action: "ok" },
|
|
items: { type: "label", multiline: !0, maxWidth: 500, maxHeight: 200 }
|
|
}),
|
|
this._super(e);
|
|
},
|
|
Statics: {
|
|
OK: 1,
|
|
OK_CANCEL: 2,
|
|
YES_NO: 3,
|
|
YES_NO_CANCEL: 4,
|
|
msgBox: function(e) {
|
|
var t,
|
|
n = e.callback || function() {};
|
|
function i(e, t, i) {
|
|
return {
|
|
type: "button",
|
|
text: e,
|
|
subtype: i ? "primary" : "",
|
|
onClick: function(e) {
|
|
e.control.parents()[1].close(), n(t);
|
|
}
|
|
};
|
|
}
|
|
switch (e.buttons) {
|
|
case Lt.OK_CANCEL:
|
|
t = [i("Ok", !0, !0), i("Cancel", !1)];
|
|
break;
|
|
case Lt.YES_NO:
|
|
case Lt.YES_NO_CANCEL:
|
|
(t = [i("Yes", 1, !0), i("No", 0)]),
|
|
e.buttons === Lt.YES_NO_CANCEL && t.push(i("Cancel", -1));
|
|
break;
|
|
default:
|
|
t = [i("Ok", !0, !0)];
|
|
}
|
|
return new zt({
|
|
padding: 20,
|
|
x: e.x,
|
|
y: e.y,
|
|
minWidth: 300,
|
|
minHeight: 100,
|
|
layout: "flex",
|
|
pack: "center",
|
|
align: "center",
|
|
buttons: t,
|
|
title: e.title,
|
|
role: "alertdialog",
|
|
items: {
|
|
type: "label",
|
|
multiline: !0,
|
|
maxWidth: 500,
|
|
maxHeight: 200,
|
|
text: e.text
|
|
},
|
|
onPostRender: function() {
|
|
this.aria("describedby", this.items()[0]._id);
|
|
},
|
|
onClose: e.onClose,
|
|
onCancel: function() {
|
|
n(!1);
|
|
}
|
|
})
|
|
.renderTo(document.body)
|
|
.reflow();
|
|
},
|
|
alert: function(e, t) {
|
|
return (
|
|
"string" == typeof e && (e = { text: e }),
|
|
(e.callback = t),
|
|
Lt.msgBox(e)
|
|
);
|
|
},
|
|
confirm: function(e, t) {
|
|
return (
|
|
"string" == typeof e && (e = { text: e }),
|
|
(e.callback = t),
|
|
(e.buttons = Lt.OK_CANCEL),
|
|
Lt.msgBox(e)
|
|
);
|
|
}
|
|
}
|
|
}),
|
|
It = function(e) {
|
|
return {
|
|
renderUI: function(t) {
|
|
return Ht(e, this, t);
|
|
},
|
|
resizeTo: function(t, n) {
|
|
return ue(e, t, n);
|
|
},
|
|
resizeBy: function(t, n) {
|
|
return ce(e, t, n);
|
|
},
|
|
getNotificationManagerImpl: function() {
|
|
return Dt(e);
|
|
},
|
|
getWindowManagerImpl: function() {
|
|
return {
|
|
open: function(e, t, n) {
|
|
var i;
|
|
return (
|
|
(e.title = e.title || " "),
|
|
(e.url = e.url || e.file),
|
|
e.url &&
|
|
((e.width = parseInt(e.width || 320, 10)),
|
|
(e.height = parseInt(e.height || 240, 10))),
|
|
e.body &&
|
|
(e.items = {
|
|
defaults: e.defaults,
|
|
type: e.bodyType || "form",
|
|
items: e.body,
|
|
data: e.data,
|
|
callbacks: e.commands
|
|
}),
|
|
e.url ||
|
|
e.buttons ||
|
|
(e.buttons = [
|
|
{
|
|
text: "Ok",
|
|
subtype: "primary",
|
|
onclick: function() {
|
|
i.find("form")[0].submit();
|
|
}
|
|
},
|
|
{
|
|
text: "Cancel",
|
|
onclick: function() {
|
|
i.close();
|
|
}
|
|
}
|
|
]),
|
|
(i = new zt(e)).on("close", function() {
|
|
n(i);
|
|
}),
|
|
e.data &&
|
|
i.on("postRender", function() {
|
|
this.find("*").each(function(t) {
|
|
var n = t.name();
|
|
n in e.data && t.value(e.data[n]);
|
|
});
|
|
}),
|
|
(i.features = e || {}),
|
|
(i.params = t || {}),
|
|
(i = i.renderTo().reflow())
|
|
);
|
|
},
|
|
alert: function(e, t, n) {
|
|
var i;
|
|
return (
|
|
(i = Lt.alert(e, function() {
|
|
t();
|
|
})).on("close", function() {
|
|
n(i);
|
|
}),
|
|
i
|
|
);
|
|
},
|
|
confirm: function(e, t, n) {
|
|
var i;
|
|
return (
|
|
(i = Lt.confirm(e, function(e) {
|
|
t(e);
|
|
})).on("close", function() {
|
|
n(i);
|
|
}),
|
|
i
|
|
);
|
|
},
|
|
close: function(e) {
|
|
e.close();
|
|
},
|
|
getParams: function(e) {
|
|
return e.params;
|
|
},
|
|
setParams: function(e, t) {
|
|
e.params = t;
|
|
}
|
|
};
|
|
}
|
|
};
|
|
},
|
|
Ft = Ce.extend({
|
|
Defaults: { firstControlClass: "first", lastControlClass: "last" },
|
|
init: function(e) {
|
|
this.settings = a.extend({}, this.Defaults, e);
|
|
},
|
|
preRender: function(e) {
|
|
e.bodyClasses.add(this.settings.containerClass);
|
|
},
|
|
applyClasses: function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o = this.settings;
|
|
(t = o.firstControlClass),
|
|
(n = o.lastControlClass),
|
|
e.each(function(e) {
|
|
e.classes
|
|
.remove(t)
|
|
.remove(n)
|
|
.add(o.controlClass),
|
|
e.visible() && (i || (i = e), (r = e));
|
|
}),
|
|
i && i.classes.add(t),
|
|
r && r.classes.add(n);
|
|
},
|
|
renderHtml: function(e) {
|
|
var t = "";
|
|
return (
|
|
this.applyClasses(e.items()),
|
|
e.items().each(function(e) {
|
|
t += e.renderHtml();
|
|
}),
|
|
t
|
|
);
|
|
},
|
|
recalc: function() {},
|
|
postRender: function() {},
|
|
isNative: function() {
|
|
return !1;
|
|
}
|
|
}),
|
|
Vt = Ft.extend({
|
|
Defaults: {
|
|
containerClass: "abs-layout",
|
|
controlClass: "abs-layout-item"
|
|
},
|
|
recalc: function(e) {
|
|
e.items()
|
|
.filter(":visible")
|
|
.each(function(e) {
|
|
var t = e.settings;
|
|
e.layoutRect({ x: t.x, y: t.y, w: t.w, h: t.h }),
|
|
e.recalc && e.recalc();
|
|
});
|
|
},
|
|
renderHtml: function(e) {
|
|
return (
|
|
'<div id="' +
|
|
e._id +
|
|
'-absend" class="' +
|
|
e.classPrefix +
|
|
'abs-end"></div>' +
|
|
this._super(e)
|
|
);
|
|
}
|
|
}),
|
|
Ut = Mt.extend({
|
|
Defaults: { classes: "widget btn", role: "button" },
|
|
init: function(e) {
|
|
var t,
|
|
n = this;
|
|
n._super(e),
|
|
(e = n.settings),
|
|
(t = n.settings.size),
|
|
n.on("click mousedown", function(e) {
|
|
e.preventDefault();
|
|
}),
|
|
n.on("touchstart", function(e) {
|
|
n.fire("click", e), e.preventDefault();
|
|
}),
|
|
e.subtype && n.classes.add(e.subtype),
|
|
t && n.classes.add("btn-" + t),
|
|
e.icon && n.icon(e.icon);
|
|
},
|
|
icon: function(e) {
|
|
return arguments.length
|
|
? (this.state.set("icon", e), this)
|
|
: this.state.get("icon");
|
|
},
|
|
repaint: function() {
|
|
var e,
|
|
t = this.getEl().firstChild;
|
|
t && ((e = t.style).width = e.height = "100%"), this._super();
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t,
|
|
n = this,
|
|
i = n._id,
|
|
r = n.classPrefix,
|
|
o = n.state.get("icon"),
|
|
s = n.state.get("text"),
|
|
a = "",
|
|
l = n.settings;
|
|
return (
|
|
(e = l.image)
|
|
? ((o = "none"),
|
|
"string" != typeof e && (e = window.getSelection ? e[0] : e[1]),
|
|
(e = " style=\"background-image: url('" + e + "')\""))
|
|
: (e = ""),
|
|
s &&
|
|
(n.classes.add("btn-has-text"),
|
|
(a = '<span class="' + r + 'txt">' + n.encode(s) + "</span>")),
|
|
(o = o ? r + "ico " + r + "i-" + o : ""),
|
|
(t =
|
|
"boolean" == typeof l.active
|
|
? ' aria-pressed="' + l.active + '"'
|
|
: ""),
|
|
'<div id="' +
|
|
i +
|
|
'" class="' +
|
|
n.classes +
|
|
'" tabindex="-1"' +
|
|
t +
|
|
'><button id="' +
|
|
i +
|
|
'-button" role="presentation" type="button" tabindex="-1">' +
|
|
(o ? '<i class="' + o + '"' + e + "></i>" : "") +
|
|
a +
|
|
"</button></div>"
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var e = this,
|
|
t = e.$,
|
|
n = e.classPrefix + "txt";
|
|
function i(i) {
|
|
var r = t("span." + n, e.getEl());
|
|
i
|
|
? (r[0] ||
|
|
(t("button:first", e.getEl()).append(
|
|
'<span class="' + n + '"></span>'
|
|
),
|
|
(r = t("span." + n, e.getEl()))),
|
|
r.html(e.encode(i)))
|
|
: r.remove(),
|
|
e.classes.toggle("btn-has-text", !!i);
|
|
}
|
|
return (
|
|
e.state.on("change:text", function(e) {
|
|
i(e.value);
|
|
}),
|
|
e.state.on("change:icon", function(t) {
|
|
var n = t.value,
|
|
r = e.classPrefix;
|
|
(e.settings.icon = n),
|
|
(n = n ? r + "ico " + r + "i-" + e.settings.icon : "");
|
|
var o = e.getEl().firstChild,
|
|
s = o.getElementsByTagName("i")[0];
|
|
n
|
|
? ((s && s === o.firstChild) ||
|
|
((s = document.createElement("i")),
|
|
o.insertBefore(s, o.firstChild)),
|
|
(s.className = n))
|
|
: s && o.removeChild(s),
|
|
i(e.state.get("text"));
|
|
}),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
Yt = Ut.extend({
|
|
init: function(e) {
|
|
(e = a.extend({ text: "Browse...", multiple: !1, accept: null }, e)),
|
|
this._super(e),
|
|
this.classes.add("browsebutton"),
|
|
e.multiple && this.classes.add("multiple");
|
|
},
|
|
postRender: function() {
|
|
var e = this,
|
|
t = we.create("input", {
|
|
type: "file",
|
|
id: e._id + "-browse",
|
|
accept: e.settings.accept
|
|
});
|
|
e._super(),
|
|
ye(t).on("change", function(t) {
|
|
var n = t.target.files;
|
|
(e.value = function() {
|
|
return n.length ? (e.settings.multiple ? n : n[0]) : null;
|
|
}),
|
|
t.preventDefault(),
|
|
n.length && e.fire("change", t);
|
|
}),
|
|
ye(t).on("click", function(e) {
|
|
e.stopPropagation();
|
|
}),
|
|
ye(e.getEl("button")).on("click", function(e) {
|
|
e.stopPropagation(), t.click();
|
|
}),
|
|
e.getEl().appendChild(t);
|
|
},
|
|
remove: function() {
|
|
ye(this.getEl("button")).off(),
|
|
ye(this.getEl("input")).off(),
|
|
this._super();
|
|
}
|
|
}),
|
|
$t = rt.extend({
|
|
Defaults: { defaultType: "button", role: "group" },
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._layout;
|
|
return (
|
|
e.classes.add("btn-group"),
|
|
e.preRender(),
|
|
t.preRender(e),
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'"><div id="' +
|
|
e._id +
|
|
'-body" class="tinymce-flex-wrap-box">' +
|
|
(e.settings.html || "") +
|
|
t.renderHtml(e) +
|
|
"</div></div>"
|
|
);
|
|
}
|
|
}),
|
|
jt = Mt.extend({
|
|
Defaults: { classes: "checkbox", role: "checkbox", checked: !1 },
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
t.on("click mousedown", function(e) {
|
|
e.preventDefault();
|
|
}),
|
|
t.on("click", function(e) {
|
|
e.preventDefault(), t.disabled() || t.checked(!t.checked());
|
|
}),
|
|
t.checked(t.settings.checked);
|
|
},
|
|
checked: function(e) {
|
|
return arguments.length
|
|
? (this.state.set("checked", e), this)
|
|
: this.state.get("checked");
|
|
},
|
|
value: function(e) {
|
|
return arguments.length ? this.checked(e) : this.checked();
|
|
},
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._id,
|
|
n = e.classPrefix;
|
|
return (
|
|
'<div id="' +
|
|
t +
|
|
'" class="' +
|
|
e.classes +
|
|
'" unselectable="on" aria-labelledby="' +
|
|
t +
|
|
'-al" tabindex="-1"><i class="' +
|
|
n +
|
|
"ico " +
|
|
n +
|
|
'i-checkbox"></i><span id="' +
|
|
t +
|
|
'-al" class="' +
|
|
n +
|
|
'label">' +
|
|
e.encode(e.state.get("text")) +
|
|
"</span></div>"
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
function t(t) {
|
|
e.classes.toggle("checked", t), e.aria("checked", t);
|
|
}
|
|
return (
|
|
e.state.on("change:text", function(t) {
|
|
e.getEl("al").firstChild.data = e.translate(t.value);
|
|
}),
|
|
e.state.on("change:checked change:value", function(n) {
|
|
e.fire("change"), t(n.value);
|
|
}),
|
|
e.state.on("change:icon", function(t) {
|
|
var n = t.value,
|
|
i = e.classPrefix;
|
|
if (void 0 === n) return e.settings.icon;
|
|
(e.settings.icon = n),
|
|
(n = n ? i + "ico " + i + "i-" + e.settings.icon : "");
|
|
var r = e.getEl().firstChild,
|
|
o = r.getElementsByTagName("i")[0];
|
|
n
|
|
? ((o && o === r.firstChild) ||
|
|
((o = document.createElement("i")),
|
|
r.insertBefore(o, r.firstChild)),
|
|
(o.className = n))
|
|
: o && r.removeChild(o);
|
|
}),
|
|
e.state.get("checked") && t(!0),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
qt = tinymce.util.Tools.resolve("tinymce.util.VK"),
|
|
Xt = Mt.extend({
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
(e = t.settings),
|
|
t.classes.add("combobox"),
|
|
(t.subinput = !0),
|
|
(t.ariaTarget = "inp"),
|
|
(e.menu = e.menu || e.values),
|
|
e.menu && (e.icon = "caret"),
|
|
t.on("click", function(n) {
|
|
var i = n.target,
|
|
r = t.getEl();
|
|
if (ye.contains(r, i) || i === r)
|
|
for (; i && i !== r; )
|
|
i.id &&
|
|
-1 !== i.id.indexOf("-open") &&
|
|
(t.fire("action"),
|
|
e.menu &&
|
|
(t.showMenu(), n.aria && t.menu.items()[0].focus())),
|
|
(i = i.parentNode);
|
|
}),
|
|
t.on("keydown", function(e) {
|
|
var n;
|
|
13 === e.keyCode &&
|
|
"INPUT" === e.target.nodeName &&
|
|
(e.preventDefault(),
|
|
t
|
|
.parents()
|
|
.reverse()
|
|
.each(function(e) {
|
|
if (e.toJSON) return (n = e), !1;
|
|
}),
|
|
t.fire("submit", { data: n.toJSON() }));
|
|
}),
|
|
t.on("keyup", function(e) {
|
|
if ("INPUT" === e.target.nodeName) {
|
|
var n = t.state.get("value"),
|
|
i = e.target.value;
|
|
i !== n && (t.state.set("value", i), t.fire("autocomplete", e));
|
|
}
|
|
}),
|
|
t.on("mouseover", function(e) {
|
|
var n = t.tooltip().moveTo(-65535);
|
|
if (
|
|
t.statusLevel() &&
|
|
-1 !== e.target.className.indexOf(t.classPrefix + "status")
|
|
) {
|
|
var i = t.statusMessage() || "Ok",
|
|
r = n
|
|
.text(i)
|
|
.show()
|
|
.testMoveRel(e.target, ["bc-tc", "bc-tl", "bc-tr"]);
|
|
n.classes.toggle("tooltip-n", "bc-tc" === r),
|
|
n.classes.toggle("tooltip-nw", "bc-tl" === r),
|
|
n.classes.toggle("tooltip-ne", "bc-tr" === r),
|
|
n.moveRel(e.target, r);
|
|
}
|
|
});
|
|
},
|
|
statusLevel: function(e) {
|
|
return (
|
|
arguments.length > 0 && this.state.set("statusLevel", e),
|
|
this.state.get("statusLevel")
|
|
);
|
|
},
|
|
statusMessage: function(e) {
|
|
return (
|
|
arguments.length > 0 && 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 = g
|
|
.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(we.getRuntimeStyle(a, "padding-right"), 10) -
|
|
parseInt(we.getRuntimeStyle(a, "padding-left"), 10)),
|
|
(e = r ? o.w - we.getSize(r).width - 10 : o.w - 10);
|
|
var l = document;
|
|
return (
|
|
l.all &&
|
|
(!l.documentMode || l.documentMode <= 8) &&
|
|
(t = n.layoutRect().h - 2 + "px"),
|
|
ye(a).css({ width: e - s, lineHeight: t }),
|
|
n._super(),
|
|
n
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this;
|
|
return (
|
|
ye(this.getEl("inp")).on("change", function(t) {
|
|
e.state.set("value", t.target.value), e.fire("change", t);
|
|
}),
|
|
e._super()
|
|
);
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
i = this,
|
|
r = i._id,
|
|
o = i.settings,
|
|
s = i.classPrefix,
|
|
a = i.state.get("value") || "",
|
|
l = "",
|
|
u = "";
|
|
return (
|
|
"spellcheck" in o && (u += ' spellcheck="' + o.spellcheck + '"'),
|
|
o.maxLength && (u += ' maxLength="' + o.maxLength + '"'),
|
|
o.size && (u += ' size="' + o.size + '"'),
|
|
o.subtype && (u += ' type="' + o.subtype + '"'),
|
|
(n =
|
|
'<i id="' +
|
|
r +
|
|
'-status" class="mce-status mce-ico" style="display: none"></i>'),
|
|
i.disabled() && (u += ' disabled="disabled"'),
|
|
(e = o.icon) && "caret" !== e && (e = s + "ico " + s + "i-" + o.icon),
|
|
(t = i.state.get("text")),
|
|
(e || t) &&
|
|
((l =
|
|
'<div id="' +
|
|
r +
|
|
'-open" class="' +
|
|
s +
|
|
"btn " +
|
|
s +
|
|
'open" tabIndex="-1" role="button"><button id="' +
|
|
r +
|
|
'-action" type="button" hidefocus="1" tabindex="-1">' +
|
|
("caret" !== e
|
|
? '<i class="' + e + '"></i>'
|
|
: '<i class="' + s + 'caret"></i>') +
|
|
(t ? (e ? " " : "") + t : "") +
|
|
"</button></div>"),
|
|
i.classes.add("has-open")),
|
|
'<div id="' +
|
|
r +
|
|
'" class="' +
|
|
i.classes +
|
|
'"><input id="' +
|
|
r +
|
|
'-inp" class="' +
|
|
s +
|
|
'textbox" value="' +
|
|
i.encode(a, !1) +
|
|
'" hidefocus="1"' +
|
|
u +
|
|
' placeholder="' +
|
|
i.encode(o.placeholder) +
|
|
'" />' +
|
|
n +
|
|
l +
|
|
"</div>"
|
|
);
|
|
},
|
|
value: function(e) {
|
|
return arguments.length
|
|
? (this.state.set("value", e), this)
|
|
: (this.state.get("rendered") &&
|
|
this.state.set("value", this.getEl("inp").value),
|
|
this.state.get("value"));
|
|
},
|
|
showAutoComplete: function(e, t) {
|
|
var n = this;
|
|
if (0 !== e.length) {
|
|
n.menu
|
|
? n.menu.items().remove()
|
|
: (n.menu = g
|
|
.create({
|
|
type: "menu",
|
|
classes: "combobox-menu",
|
|
layout: "flow"
|
|
})
|
|
.parent(n)
|
|
.renderTo()),
|
|
a.each(e, function(e) {
|
|
var i, r;
|
|
n.menu.add({
|
|
text: e.title,
|
|
url: e.previewUrl,
|
|
match: t,
|
|
classes: "menu-item-ellipsis",
|
|
onclick: ((i = e.value),
|
|
(r = e.title),
|
|
function() {
|
|
n.fire("selectitem", { title: r, value: i });
|
|
})
|
|
});
|
|
}),
|
|
n.menu.renderNew(),
|
|
n.hideMenu(),
|
|
n.menu.on("cancel", function(e) {
|
|
e.control.parent() === n.menu &&
|
|
(e.stopPropagation(), n.focus(), n.hideMenu());
|
|
}),
|
|
n.menu.on("select", function() {
|
|
n.focus();
|
|
});
|
|
var i = n.layoutRect().w;
|
|
n.menu.layoutRect({ w: i, minW: 0, maxW: i }),
|
|
n.menu.repaint(),
|
|
n.menu.reflow(),
|
|
n.menu.show(),
|
|
n.menu.moveRel(
|
|
n.getEl(),
|
|
n.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]
|
|
);
|
|
} else n.hideMenu();
|
|
},
|
|
hideMenu: function() {
|
|
this.menu && this.menu.hide();
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
e.state.on("change:value", function(t) {
|
|
e.getEl("inp").value !== t.value && (e.getEl("inp").value = t.value);
|
|
}),
|
|
e.state.on("change:disabled", function(t) {
|
|
e.getEl("inp").disabled = t.value;
|
|
}),
|
|
e.state.on("change:statusLevel", function(t) {
|
|
var n = e.getEl("status"),
|
|
i = e.classPrefix,
|
|
r = t.value;
|
|
we.css(n, "display", "none" === r ? "none" : ""),
|
|
we.toggleClass(n, i + "i-checkmark", "ok" === r),
|
|
we.toggleClass(n, i + "i-warning", "warn" === r),
|
|
we.toggleClass(n, i + "i-error", "error" === r),
|
|
e.classes.toggle("has-status", "none" !== r),
|
|
e.repaint();
|
|
}),
|
|
we.on(e.getEl("status"), "mouseleave", function() {
|
|
e.tooltip().hide();
|
|
}),
|
|
e.on("cancel", function(t) {
|
|
e.menu && e.menu.visible() && (t.stopPropagation(), e.hideMenu());
|
|
});
|
|
var t = function(e, t) {
|
|
t &&
|
|
t.items().length > 0 &&
|
|
t
|
|
.items()
|
|
.eq(e)[0]
|
|
.focus();
|
|
};
|
|
return (
|
|
e.on("keydown", function(n) {
|
|
var i = n.keyCode;
|
|
"INPUT" === n.target.nodeName &&
|
|
(i === qt.DOWN
|
|
? (n.preventDefault(), e.fire("autocomplete"), t(0, e.menu))
|
|
: i === qt.UP && (n.preventDefault(), t(-1, e.menu)));
|
|
}),
|
|
e._super()
|
|
);
|
|
},
|
|
remove: function() {
|
|
ye(this.getEl("inp")).off(),
|
|
this.menu && this.menu.remove(),
|
|
this._super();
|
|
}
|
|
}),
|
|
Jt = Xt.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 e = this;
|
|
return (
|
|
e.state.on("change:value", function(t) {
|
|
e.state.get("rendered") && e.repaintColor(t.value);
|
|
}),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
Gt = Ut.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 xt(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"])
|
|
);
|
|
e.panel.classes.toggle("start", "bc-tl" === i),
|
|
e.panel.classes.toggle("end", "bc-tr" === i),
|
|
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()
|
|
);
|
|
}
|
|
}),
|
|
Kt = m.DOM,
|
|
Zt = Gt.extend({
|
|
init: function(e) {
|
|
this._super(e),
|
|
this.classes.add("splitbtn"),
|
|
this.classes.add("colorbutton");
|
|
},
|
|
color: function(e) {
|
|
return e
|
|
? ((this._color = e),
|
|
(this.getEl("preview").style.backgroundColor = e),
|
|
this)
|
|
: this._color;
|
|
},
|
|
resetColor: function() {
|
|
return (
|
|
(this._color = null),
|
|
(this.getEl("preview").style.backgroundColor = null),
|
|
this
|
|
);
|
|
},
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._id,
|
|
n = e.classPrefix,
|
|
i = e.state.get("text"),
|
|
r = e.settings.icon ? n + "ico " + n + "i-" + e.settings.icon : "",
|
|
o = e.settings.image
|
|
? " style=\"background-image: url('" + e.settings.image + "')\""
|
|
: "",
|
|
s = "";
|
|
return (
|
|
i &&
|
|
(e.classes.add("btn-has-text"),
|
|
(s = '<span class="' + n + 'txt">' + e.encode(i) + "</span>")),
|
|
'<div id="' +
|
|
t +
|
|
'" class="' +
|
|
e.classes +
|
|
'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">' +
|
|
(r ? '<i class="' + r + '"' + o + "></i>" : "") +
|
|
'<span id="' +
|
|
t +
|
|
'-preview" class="' +
|
|
n +
|
|
'preview"></span>' +
|
|
s +
|
|
'</button><button type="button" class="' +
|
|
n +
|
|
'open" hidefocus="1" tabindex="-1"> <i class="' +
|
|
n +
|
|
'caret"></i></button></div>'
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this,
|
|
t = e.settings.onclick;
|
|
return (
|
|
e.on("click", function(n) {
|
|
(n.aria && "down" === n.aria.key) ||
|
|
n.control !== e ||
|
|
Kt.getParent(n.target, "." + e.classPrefix + "open") ||
|
|
(n.stopImmediatePropagation(), t.call(e, n));
|
|
}),
|
|
delete e.settings.onclick,
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
Qt = tinymce.util.Tools.resolve("tinymce.util.Color"),
|
|
en = Mt.extend({
|
|
Defaults: { classes: "widget colorpicker" },
|
|
init: function(e) {
|
|
this._super(e);
|
|
},
|
|
postRender: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
i,
|
|
r,
|
|
o = this,
|
|
s = o.color();
|
|
function a(e, t) {
|
|
var n,
|
|
i,
|
|
r = we.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 l(e, t) {
|
|
var s = (360 - e.h) / 360;
|
|
we.css(n, { top: 100 * s + "%" }),
|
|
t || we.css(r, { left: e.s + "%", top: 100 - e.v + "%" }),
|
|
(i.style.background = Qt({ s: 100, v: 100, h: e.h }).toHex()),
|
|
o.color().parse({ s: e.s, v: e.v, h: e.h });
|
|
}
|
|
function u(t) {
|
|
var n;
|
|
(n = a(i, t)),
|
|
(e.s = 100 * n.x),
|
|
(e.v = 100 * (1 - n.y)),
|
|
l(e),
|
|
o.fire("change");
|
|
}
|
|
function c(n) {
|
|
var i;
|
|
(i = a(t, n)),
|
|
((e = s.toHsv()).h = 360 * (1 - i.y)),
|
|
l(e, !0),
|
|
o.fire("change");
|
|
}
|
|
(t = o.getEl("h")),
|
|
(n = o.getEl("hp")),
|
|
(i = o.getEl("sv")),
|
|
(r = o.getEl("svp")),
|
|
(o._repaint = function() {
|
|
l((e = s.toHsv()));
|
|
}),
|
|
o._super(),
|
|
(o._svdraghelper = new ct(o._id + "-sv", { start: u, drag: u })),
|
|
(o._hdraghelper = new ct(o._id + "-h", { start: c, drag: c })),
|
|
o._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 = Qt()), this._color;
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t = this._id,
|
|
n = this.classPrefix,
|
|
i =
|
|
"#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";
|
|
return (
|
|
(e =
|
|
'<div id="' +
|
|
t +
|
|
'-h" class="' +
|
|
n +
|
|
'colorpicker-h" style="background: -ms-linear-gradient(top,' +
|
|
i +
|
|
");background: linear-gradient(to bottom," +
|
|
i +
|
|
');">' +
|
|
(function() {
|
|
var e,
|
|
t,
|
|
r,
|
|
o,
|
|
s = "";
|
|
for (
|
|
r =
|
|
"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",
|
|
e = 0,
|
|
t = (o = i.split(",")).length - 1;
|
|
e < t;
|
|
e++
|
|
)
|
|
s +=
|
|
'<div class="' +
|
|
n +
|
|
'colorpicker-h-chunk" style="height:' +
|
|
100 / t +
|
|
"%;" +
|
|
r +
|
|
o[e] +
|
|
",endColorstr=" +
|
|
o[e + 1] +
|
|
");-ms-" +
|
|
r +
|
|
o[e] +
|
|
",endColorstr=" +
|
|
o[e + 1] +
|
|
')"></div>';
|
|
return s;
|
|
})() +
|
|
'<div id="' +
|
|
t +
|
|
'-hp" class="' +
|
|
n +
|
|
'colorpicker-h-marker"></div></div>'),
|
|
'<div id="' +
|
|
t +
|
|
'" class="' +
|
|
this.classes +
|
|
'"><div id="' +
|
|
t +
|
|
'-sv" class="' +
|
|
n +
|
|
'colorpicker-sv"><div class="' +
|
|
n +
|
|
'colorpicker-overlay1"><div class="' +
|
|
n +
|
|
'colorpicker-overlay2"><div id="' +
|
|
t +
|
|
'-svp" class="' +
|
|
n +
|
|
'colorpicker-selector1"><div class="' +
|
|
n +
|
|
'colorpicker-selector2"></div></div></div></div></div>' +
|
|
e +
|
|
"</div>"
|
|
);
|
|
}
|
|
}),
|
|
tn = Mt.extend({
|
|
init: function(e) {
|
|
(e = a.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 = we.create(
|
|
"div",
|
|
e,
|
|
"<span>" + this.translate(n.text) + "</span>"
|
|
)),
|
|
n.height && we.css(t, "height", n.height + "px"),
|
|
n.width && we.css(t, "width", n.width + "px"),
|
|
(t.className = this.classes),
|
|
t.outerHTML
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this,
|
|
t = function(t) {
|
|
t.preventDefault(),
|
|
e.classes.toggle("dragenter"),
|
|
(e.getEl().className = e.classes);
|
|
};
|
|
e._super(),
|
|
e.$el.on("dragover", function(e) {
|
|
e.preventDefault();
|
|
}),
|
|
e.$el.on("dragenter", t),
|
|
e.$el.on("dragleave", t),
|
|
e.$el.on("drop", function(t) {
|
|
if ((t.preventDefault(), !e.state.get("disabled"))) {
|
|
var n = (function(t) {
|
|
var n = e.settings.accept;
|
|
if ("string" != typeof n) return t;
|
|
var i = new RegExp(
|
|
"(" + n.split(/\s*,\s*/).join("|") + ")$",
|
|
"i"
|
|
);
|
|
return a.grep(t, function(e) {
|
|
return i.test(e.name);
|
|
});
|
|
})(t.dataTransfer.files);
|
|
(e.value = function() {
|
|
return n.length ? (e.settings.multiple ? n : n[0]) : null;
|
|
}),
|
|
n.length && e.fire("change", t);
|
|
}
|
|
});
|
|
},
|
|
remove: function() {
|
|
this.$el.off(), this._super();
|
|
}
|
|
}),
|
|
nn = Mt.extend({
|
|
init: function(e) {
|
|
var t = this;
|
|
e.delimiter || (e.delimiter = "\xbb"),
|
|
t._super(e),
|
|
t.classes.add("path"),
|
|
(t.canFocus = !0),
|
|
t.on("click", function(e) {
|
|
var n;
|
|
(n = e.target.getAttribute("data-index")) &&
|
|
t.fire("select", { value: t.row()[n], index: n });
|
|
}),
|
|
t.row(t.settings.row);
|
|
},
|
|
focus: function() {
|
|
return this.getEl().firstChild.focus(), this;
|
|
},
|
|
row: function(e) {
|
|
return arguments.length
|
|
? (this.state.set("row", e), this)
|
|
: this.state.get("row");
|
|
},
|
|
renderHtml: function() {
|
|
return (
|
|
'<div id="' +
|
|
this._id +
|
|
'" class="' +
|
|
this.classes +
|
|
'">' +
|
|
this._getDataPathHtml(this.state.get("row")) +
|
|
"</div>"
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
return (
|
|
e.state.on("change:row", function(t) {
|
|
e.innerHtml(e._getDataPathHtml(t.value));
|
|
}),
|
|
e._super()
|
|
);
|
|
},
|
|
_getDataPathHtml: function(e) {
|
|
var t,
|
|
n,
|
|
i = e || [],
|
|
r = "",
|
|
o = this.classPrefix;
|
|
for (t = 0, n = i.length; t < n; t++)
|
|
r +=
|
|
(t > 0
|
|
? '<div class="' +
|
|
o +
|
|
'divider" aria-hidden="true"> ' +
|
|
this.settings.delimiter +
|
|
" </div>"
|
|
: "") +
|
|
'<div role="button" class="' +
|
|
o +
|
|
"path-item" +
|
|
(t === n - 1 ? " " + o + "last" : "") +
|
|
'" data-index="' +
|
|
t +
|
|
'" tabindex="-1" id="' +
|
|
this._id +
|
|
"-" +
|
|
t +
|
|
'" aria-level="' +
|
|
(t + 1) +
|
|
'">' +
|
|
i[t].name +
|
|
"</div>";
|
|
return r || (r = '<div class="' + o + 'path-item">\xa0</div>'), r;
|
|
}
|
|
}),
|
|
rn = nn.extend({
|
|
postRender: function() {
|
|
var e = this,
|
|
t = e.settings.editor;
|
|
function n(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 !== t.settings.elementpath &&
|
|
(e.on("select", function(e) {
|
|
t.focus(),
|
|
t.selection.select(this.row()[e.index].element),
|
|
t.nodeChanged();
|
|
}),
|
|
t.on("nodeChange", function(i) {
|
|
for (var r = [], o = i.parents, s = o.length; s--; )
|
|
if (1 === o[s].nodeType && !n(o[s])) {
|
|
var a = t.fire("ResolveName", {
|
|
name: o[s].nodeName.toLowerCase(),
|
|
target: o[s]
|
|
});
|
|
if (
|
|
(a.isDefaultPrevented() ||
|
|
r.push({ name: a.name, element: o[s] }),
|
|
a.isPropagationStopped())
|
|
)
|
|
break;
|
|
}
|
|
e.row(r);
|
|
})),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
on = rt.extend({
|
|
Defaults: { layout: "flex", align: "center", defaults: { flex: 1 } },
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._layout,
|
|
n = e.classPrefix;
|
|
return (
|
|
e.classes.add("formitem"),
|
|
t.preRender(e),
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'" hidefocus="1" tabindex="-1">' +
|
|
(e.settings.title
|
|
? '<div id="' +
|
|
e._id +
|
|
'-title" class="' +
|
|
n +
|
|
'title">' +
|
|
e.settings.title +
|
|
"</div>"
|
|
: "") +
|
|
'<div id="' +
|
|
e._id +
|
|
'-body" class="' +
|
|
e.bodyClasses +
|
|
'">' +
|
|
(e.settings.html || "") +
|
|
t.renderHtml(e) +
|
|
"</div></div>"
|
|
);
|
|
}
|
|
}),
|
|
sn = rt.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 e = this,
|
|
t = e.items();
|
|
e.settings.formItemDefaults ||
|
|
(e.settings.formItemDefaults = {
|
|
layout: "flex",
|
|
autoResize: "overflow",
|
|
defaults: { flex: 1 }
|
|
}),
|
|
t.each(function(t) {
|
|
var n,
|
|
i = t.settings.label;
|
|
i &&
|
|
(((n = new on(
|
|
a.extend(
|
|
{
|
|
items: {
|
|
type: "label",
|
|
id: t._id + "-l",
|
|
text: i,
|
|
flex: 0,
|
|
forId: t._id,
|
|
disabled: t.disabled()
|
|
}
|
|
},
|
|
e.settings.formItemDefaults
|
|
)
|
|
)).type = "formitem"),
|
|
t.aria("labelledby", t._id + "-l"),
|
|
"undefined" == typeof t.settings.flex && (t.settings.flex = 1),
|
|
e.replace(t, n),
|
|
n.add(t));
|
|
});
|
|
},
|
|
submit: function() {
|
|
return this.fire("submit", { data: this.toJSON() });
|
|
},
|
|
postRender: function() {
|
|
this._super(), this.fromJSON(this.settings.data);
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
function t() {
|
|
var t,
|
|
n,
|
|
i = 0,
|
|
r = [];
|
|
if (!1 !== e.settings.labelGapCalc)
|
|
for (
|
|
("children" === e.settings.labelGapCalc
|
|
? e.find("formitem")
|
|
: e.items()
|
|
)
|
|
.filter("formitem")
|
|
.each(function(e) {
|
|
var t = e.items()[0],
|
|
n = t.getEl().clientWidth;
|
|
(i = n > i ? n : i), r.push(t);
|
|
}),
|
|
n = e.settings.labelGap || 0,
|
|
t = r.length;
|
|
t--;
|
|
|
|
)
|
|
r[t].settings.minWidth = i + n;
|
|
}
|
|
e._super(), e.on("show", t), t();
|
|
}
|
|
}),
|
|
an = sn.extend({
|
|
Defaults: {
|
|
containerCls: "fieldset",
|
|
layout: "flex",
|
|
direction: "column",
|
|
align: "stretch",
|
|
flex: 1,
|
|
padding: "25 15 5 15",
|
|
labelGap: 30,
|
|
spacing: 10,
|
|
border: 1
|
|
},
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._layout,
|
|
n = e.classPrefix;
|
|
return (
|
|
e.preRender(),
|
|
t.preRender(e),
|
|
'<fieldset id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'" hidefocus="1" tabindex="-1">' +
|
|
(e.settings.title
|
|
? '<legend id="' +
|
|
e._id +
|
|
'-title" class="' +
|
|
n +
|
|
'fieldset-title">' +
|
|
e.settings.title +
|
|
"</legend>"
|
|
: "") +
|
|
'<div id="' +
|
|
e._id +
|
|
'-body" class="' +
|
|
e.bodyClasses +
|
|
'">' +
|
|
(e.settings.html || "") +
|
|
t.renderHtml(e) +
|
|
"</div></fieldset>"
|
|
);
|
|
}
|
|
}),
|
|
ln = 0,
|
|
un = function(e) {
|
|
var t = new Date().getTime();
|
|
return e + "_" + Math.floor(1e9 * Math.random()) + ++ln + String(t);
|
|
},
|
|
cn = function(e) {
|
|
if (null === e || e === undefined)
|
|
throw new Error("Node cannot be null or undefined");
|
|
return { dom: E.constant(e) };
|
|
},
|
|
dn = {
|
|
fromHtml: function(e, t) {
|
|
var n = (t || document).createElement("div");
|
|
if (((n.innerHTML = e), !n.hasChildNodes() || n.childNodes.length > 1))
|
|
throw (console.error("HTML does not have a single root node", e),
|
|
"HTML must have a single root node");
|
|
return cn(n.childNodes[0]);
|
|
},
|
|
fromTag: function(e, t) {
|
|
var n = (t || document).createElement(e);
|
|
return cn(n);
|
|
},
|
|
fromText: function(e, t) {
|
|
var n = (t || document).createTextNode(e);
|
|
return cn(n);
|
|
},
|
|
fromDom: cn,
|
|
fromPoint: function(e, t, n) {
|
|
return W.from(e.dom().elementFromPoint(t, n)).map(cn);
|
|
}
|
|
},
|
|
fn = function(e) {
|
|
var t,
|
|
n = !1;
|
|
return function() {
|
|
return n || ((n = !0), (t = e.apply(null, arguments))), t;
|
|
};
|
|
},
|
|
hn = 8,
|
|
mn = 9,
|
|
gn = 1,
|
|
pn = 3,
|
|
vn = function(e) {
|
|
return e.dom().nodeName.toLowerCase();
|
|
},
|
|
bn = function(e) {
|
|
return e.dom().nodeType;
|
|
},
|
|
yn = function(e) {
|
|
return function(t) {
|
|
return bn(t) === e;
|
|
};
|
|
},
|
|
xn = yn(gn),
|
|
wn = yn(pn),
|
|
_n = yn(mn),
|
|
Rn = {
|
|
name: vn,
|
|
type: bn,
|
|
value: function(e) {
|
|
return e.dom().nodeValue;
|
|
},
|
|
isElement: xn,
|
|
isText: wn,
|
|
isDocument: _n,
|
|
isComment: function(e) {
|
|
return bn(e) === hn || "#comment" === vn(e);
|
|
}
|
|
},
|
|
Cn = (fn(function() {
|
|
return Cn(dn.fromDom(document));
|
|
}),
|
|
function(e) {
|
|
var t = e.dom().body;
|
|
if (null === t || t === undefined) throw "Body is not available yet";
|
|
return dn.fromDom(t);
|
|
}),
|
|
kn = function(e) {
|
|
return function(t) {
|
|
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;
|
|
})(t) === e
|
|
);
|
|
};
|
|
},
|
|
En = (kn("string"),
|
|
kn("object"),
|
|
kn("array"),
|
|
kn("null"),
|
|
kn("boolean"),
|
|
kn("undefined"),
|
|
kn("function"),
|
|
kn("number"),
|
|
Object.keys,
|
|
undefined,
|
|
function() {
|
|
var e = arguments;
|
|
return function() {
|
|
for (var t = new Array(arguments.length), n = 0; n < t.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 i = {};
|
|
return (
|
|
ee.each(e, function(e, n) {
|
|
i[e] = E.constant(t[n]);
|
|
}),
|
|
i
|
|
);
|
|
};
|
|
}),
|
|
Hn = ("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 Mn(i(1), i(2));
|
|
}),
|
|
Sn = function() {
|
|
return Mn(0, 0);
|
|
},
|
|
Mn = function(e, t) {
|
|
return { major: e, minor: t };
|
|
},
|
|
Tn = {
|
|
nu: Mn,
|
|
detect: function(e, t) {
|
|
var n = String(t).toLowerCase();
|
|
return 0 === e.length ? Sn() : Hn(e, n);
|
|
},
|
|
unknown: Sn
|
|
},
|
|
Pn = "Firefox",
|
|
Wn = function(e, t) {
|
|
return function() {
|
|
return t === e;
|
|
};
|
|
},
|
|
Dn = function(e) {
|
|
var t = e.current;
|
|
return {
|
|
current: t,
|
|
version: e.version,
|
|
isEdge: Wn("Edge", t),
|
|
isChrome: Wn("Chrome", t),
|
|
isIE: Wn("IE", t),
|
|
isOpera: Wn("Opera", t),
|
|
isFirefox: Wn(Pn, t),
|
|
isSafari: Wn("Safari", t)
|
|
};
|
|
},
|
|
Nn = {
|
|
unknown: function() {
|
|
return Dn({ current: undefined, version: Tn.unknown() });
|
|
},
|
|
nu: Dn,
|
|
edge: E.constant("Edge"),
|
|
chrome: E.constant("Chrome"),
|
|
ie: E.constant("IE"),
|
|
opera: E.constant("Opera"),
|
|
firefox: E.constant(Pn),
|
|
safari: E.constant("Safari")
|
|
},
|
|
An = "Windows",
|
|
Bn = "Android",
|
|
On = "Solaris",
|
|
zn = "FreeBSD",
|
|
Ln = function(e, t) {
|
|
return function() {
|
|
return t === e;
|
|
};
|
|
},
|
|
In = function(e) {
|
|
var t = e.current;
|
|
return {
|
|
current: t,
|
|
version: e.version,
|
|
isWindows: Ln(An, t),
|
|
isiOS: Ln("iOS", t),
|
|
isAndroid: Ln(Bn, t),
|
|
isOSX: Ln("OSX", t),
|
|
isLinux: Ln("Linux", t),
|
|
isSolaris: Ln(On, t),
|
|
isFreeBSD: Ln(zn, t)
|
|
};
|
|
},
|
|
Fn = {
|
|
unknown: function() {
|
|
return In({ current: undefined, version: Tn.unknown() });
|
|
},
|
|
nu: In,
|
|
windows: E.constant(An),
|
|
ios: E.constant("iOS"),
|
|
android: E.constant(Bn),
|
|
linux: E.constant("Linux"),
|
|
osx: E.constant("OSX"),
|
|
solaris: E.constant(On),
|
|
freebsd: E.constant(zn)
|
|
},
|
|
Vn = function(e, t) {
|
|
var n = String(t).toLowerCase();
|
|
return ee.find(e, function(e) {
|
|
return e.search(n);
|
|
});
|
|
},
|
|
Un = function(e, t) {
|
|
return Vn(e, t).map(function(e) {
|
|
var n = Tn.detect(e.versionRegexes, t);
|
|
return { current: e.name, version: n };
|
|
});
|
|
},
|
|
Yn = function(e, t) {
|
|
return Vn(e, t).map(function(e) {
|
|
var n = Tn.detect(e.versionRegexes, t);
|
|
return { current: e.name, version: n };
|
|
});
|
|
},
|
|
$n = function(e, t) {
|
|
return -1 !== e.indexOf(t);
|
|
},
|
|
jn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
|
|
qn = function(e) {
|
|
return function(t) {
|
|
return $n(t, e);
|
|
};
|
|
},
|
|
Xn = [
|
|
{
|
|
name: "Edge",
|
|
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
|
|
search: function(e) {
|
|
return (
|
|
$n(e, "edge/") &&
|
|
$n(e, "chrome") &&
|
|
$n(e, "safari") &&
|
|
$n(e, "applewebkit")
|
|
);
|
|
}
|
|
},
|
|
{
|
|
name: "Chrome",
|
|
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, jn],
|
|
search: function(e) {
|
|
return $n(e, "chrome") && !$n(e, "chromeframe");
|
|
}
|
|
},
|
|
{
|
|
name: "IE",
|
|
versionRegexes: [
|
|
/.*?msie\ ?([0-9]+)\.([0-9]+).*/,
|
|
/.*?rv:([0-9]+)\.([0-9]+).*/
|
|
],
|
|
search: function(e) {
|
|
return $n(e, "msie") || $n(e, "trident");
|
|
}
|
|
},
|
|
{
|
|
name: "Opera",
|
|
versionRegexes: [jn, /.*?opera\/([0-9]+)\.([0-9]+).*/],
|
|
search: qn("opera")
|
|
},
|
|
{
|
|
name: "Firefox",
|
|
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
|
|
search: qn("firefox")
|
|
},
|
|
{
|
|
name: "Safari",
|
|
versionRegexes: [jn, /.*?cpu os ([0-9]+)_([0-9]+).*/],
|
|
search: function(e) {
|
|
return ($n(e, "safari") || $n(e, "mobile/")) && $n(e, "applewebkit");
|
|
}
|
|
}
|
|
],
|
|
Jn = [
|
|
{
|
|
name: "Windows",
|
|
search: qn("win"),
|
|
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
|
|
},
|
|
{
|
|
name: "iOS",
|
|
search: function(e) {
|
|
return $n(e, "iphone") || $n(e, "ipad");
|
|
},
|
|
versionRegexes: [
|
|
/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
|
|
/.*cpu os ([0-9]+)_([0-9]+).*/,
|
|
/.*cpu iphone os ([0-9]+)_([0-9]+).*/
|
|
]
|
|
},
|
|
{
|
|
name: "Android",
|
|
search: qn("android"),
|
|
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
|
|
},
|
|
{
|
|
name: "OSX",
|
|
search: qn("os x"),
|
|
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
|
|
},
|
|
{ name: "Linux", search: qn("linux"), versionRegexes: [] },
|
|
{ name: "Solaris", search: qn("sunos"), versionRegexes: [] },
|
|
{ name: "FreeBSD", search: qn("freebsd"), versionRegexes: [] }
|
|
],
|
|
Gn = { browsers: E.constant(Xn), oses: E.constant(Jn) },
|
|
Kn = function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o,
|
|
s,
|
|
a,
|
|
l,
|
|
u,
|
|
c,
|
|
d,
|
|
f = Gn.browsers(),
|
|
h = Gn.oses(),
|
|
m = Un(f, e).fold(Nn.unknown, Nn.nu),
|
|
g = Yn(h, e).fold(Fn.unknown, Fn.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: E.constant(r),
|
|
isiPhone: E.constant(o),
|
|
isTablet: E.constant(l),
|
|
isPhone: E.constant(c),
|
|
isTouch: E.constant(u),
|
|
isAndroid: t.isAndroid,
|
|
isiOS: t.isiOS,
|
|
isWebView: E.constant(d)
|
|
})
|
|
};
|
|
},
|
|
Zn = gn,
|
|
Qn = mn,
|
|
ei = function(e) {
|
|
return (
|
|
(e.nodeType !== Zn && e.nodeType !== Qn) || 0 === e.childElementCount
|
|
);
|
|
},
|
|
ti = {
|
|
all: function(e, t) {
|
|
var n = t === undefined ? document : t.dom();
|
|
return ei(n) ? [] : ee.map(n.querySelectorAll(e), dn.fromDom);
|
|
},
|
|
is: function(e, t) {
|
|
var n = e.dom();
|
|
if (n.nodeType !== Zn) 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 ei(n) ? W.none() : W.from(n.querySelector(e)).map(dn.fromDom);
|
|
}
|
|
},
|
|
ni = (fn(function() {
|
|
var e = navigator.userAgent;
|
|
return Kn(e);
|
|
})().browser.isIE(),
|
|
En("element", "offset"),
|
|
function(e, t) {
|
|
return ti.all(t, e);
|
|
}),
|
|
ii = a.trim,
|
|
ri = 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;
|
|
};
|
|
},
|
|
oi = ri("true"),
|
|
si = ri("false"),
|
|
ai = function(e, t, n, i, r) {
|
|
return { type: e, title: t, url: n, level: i, attach: r };
|
|
},
|
|
li = function(e) {
|
|
return e.innerText || e.textContent;
|
|
},
|
|
ui = function(e) {
|
|
return (t = e) && "A" === t.nodeName && (t.id || t.name) && di(e);
|
|
var t;
|
|
},
|
|
ci = function(e) {
|
|
return e && /^(H[1-6])$/.test(e.nodeName);
|
|
},
|
|
di = function(e) {
|
|
return (
|
|
(function(e) {
|
|
for (; (e = e.parentNode); ) {
|
|
var t = e.contentEditable;
|
|
if (t && "inherit" !== t) return oi(e);
|
|
}
|
|
return !1;
|
|
})(e) && !si(e)
|
|
);
|
|
},
|
|
fi = function(e) {
|
|
return ci(e) && di(e);
|
|
},
|
|
hi = function(e) {
|
|
var t,
|
|
n,
|
|
i = (t = e).id ? t.id : un("h");
|
|
return ai(
|
|
"header",
|
|
li(e),
|
|
"#" + i,
|
|
ci((n = e)) ? parseInt(n.nodeName.substr(1), 10) : 0,
|
|
function() {
|
|
e.id = i;
|
|
}
|
|
);
|
|
},
|
|
mi = function(e) {
|
|
var t = e.id || e.name,
|
|
n = li(e);
|
|
return ai("anchor", n || "#" + t, "#" + t, 0, E.noop);
|
|
},
|
|
gi = function(e) {
|
|
var t, n;
|
|
return (
|
|
(t = "h1,h2,h3,h4,h5,h6,a:not([href])"),
|
|
(n = e),
|
|
ee.map(ni(dn.fromDom(n), t), function(e) {
|
|
return e.dom();
|
|
})
|
|
);
|
|
},
|
|
pi = function(e) {
|
|
return ii(e.title).length > 0;
|
|
},
|
|
vi = function(e) {
|
|
var t,
|
|
n,
|
|
i = gi(e);
|
|
return ee.filter(
|
|
((n = i), ee.map(ee.filter(n, fi), hi)).concat(
|
|
((t = i), ee.map(ee.filter(t, ui), mi))
|
|
),
|
|
pi
|
|
);
|
|
},
|
|
bi = {},
|
|
yi = function(e) {
|
|
return {
|
|
title: e.title,
|
|
value: { title: { raw: e.title }, url: e.url, attach: e.attach }
|
|
};
|
|
},
|
|
xi = function(e, t) {
|
|
return { title: e, value: { title: e, url: t, attach: E.noop } };
|
|
},
|
|
wi = function(e, t, n) {
|
|
var i = t in e ? e[t] : n;
|
|
return !1 === i ? null : i;
|
|
},
|
|
_i = function(e, t, n, i) {
|
|
var r,
|
|
o,
|
|
s,
|
|
l,
|
|
u = { title: "-" },
|
|
c = function(e) {
|
|
var i = e.hasOwnProperty(n) ? e[n] : [],
|
|
r = ee.filter(i, function(e) {
|
|
return (
|
|
(n = e),
|
|
(i = t),
|
|
!ee.exists(i, function(e) {
|
|
return e.url === n;
|
|
})
|
|
);
|
|
var n, i;
|
|
});
|
|
return a.map(r, function(e) {
|
|
return { title: e, value: { title: e, url: e, attach: E.noop } };
|
|
});
|
|
},
|
|
d = function(e) {
|
|
var n,
|
|
i = ee.filter(t, function(t) {
|
|
return t.type === e;
|
|
});
|
|
return (n = i), a.map(n, yi);
|
|
};
|
|
return !1 === i.typeahead_urls
|
|
? []
|
|
: "file" === n
|
|
? ((r = [
|
|
Ri(e, c(bi)),
|
|
Ri(e, d("header")),
|
|
Ri(
|
|
e,
|
|
((o = d("anchor")),
|
|
(s = wi(i, "anchor_top", "#top")),
|
|
(l = wi(i, "anchor_bottom", "#bottom")),
|
|
null !== s && o.unshift(xi("<top>", s)),
|
|
null !== l && o.push(xi("<bottom>", l)),
|
|
o)
|
|
)
|
|
]),
|
|
ee.foldl(
|
|
r,
|
|
function(e, t) {
|
|
return 0 === e.length || 0 === t.length
|
|
? e.concat(t)
|
|
: e.concat(u, t);
|
|
},
|
|
[]
|
|
))
|
|
: Ri(e, c(bi));
|
|
},
|
|
Ri = function(e, t) {
|
|
var n = e.toLowerCase(),
|
|
i = a.grep(t, function(e) {
|
|
return -1 !== e.title.toLowerCase().indexOf(n);
|
|
});
|
|
return 1 === i.length && i[0].title === e ? [] : i;
|
|
},
|
|
Ci = function(e, t, n, i) {
|
|
var r = function(r) {
|
|
var o = vi(n),
|
|
s = _i(r, o, i, t);
|
|
e.showAutoComplete(s, r);
|
|
};
|
|
e.on("autocomplete", function() {
|
|
r(e.value());
|
|
}),
|
|
e.on("selectitem", function(t) {
|
|
var n = t.value;
|
|
e.value(n.url);
|
|
var r,
|
|
o = (r = n.title).raw ? r.raw : r;
|
|
"image" === i
|
|
? e.fire("change", { meta: { alt: o, attach: n.attach } })
|
|
: e.fire("change", { meta: { text: o, attach: n.attach } }),
|
|
e.focus();
|
|
}),
|
|
e.on("click", function(t) {
|
|
0 === e.value().length && "INPUT" === t.target.nodeName && r("");
|
|
}),
|
|
e.on("PostRender", function() {
|
|
e.getRoot().on("submit", function(t) {
|
|
var n, r, o;
|
|
t.isDefaultPrevented() ||
|
|
((n = e.value()),
|
|
(o = bi[(r = i)]),
|
|
/^https?/.test(n) &&
|
|
(o
|
|
? -1 === ee.indexOf(o, n) && (bi[r] = o.slice(0, 5).concat(n))
|
|
: (bi[r] = [n])));
|
|
});
|
|
});
|
|
},
|
|
ki = function(e, t, n) {
|
|
var i = t.filepicker_validator_handler;
|
|
i &&
|
|
e.state.on("change:value", function(t) {
|
|
var r;
|
|
0 !== (r = t.value).length
|
|
? i({ url: r, type: n }, function(t) {
|
|
var n,
|
|
i,
|
|
r,
|
|
o = ((i = (n = t).status),
|
|
(r = n.message),
|
|
"valid" === i
|
|
? { status: "ok", message: r }
|
|
: "unknown" === i
|
|
? { status: "warn", message: r }
|
|
: "invalid" === i
|
|
? { status: "warn", message: r }
|
|
: { status: "none", message: "" });
|
|
e.statusMessage(o.message), e.statusLevel(o.status);
|
|
})
|
|
: e.statusLevel("none");
|
|
});
|
|
},
|
|
Ei = Xt.extend({
|
|
Statics: {
|
|
clearHistory: function() {
|
|
bi = {};
|
|
}
|
|
},
|
|
init: function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r = this,
|
|
o = window.tinymce ? window.tinymce.activeEditor : s.activeEditor,
|
|
l = o.settings,
|
|
u = e.filetype;
|
|
(e.spellcheck = !1),
|
|
(i = l.file_picker_types || l.file_browser_callback_types) &&
|
|
(i = a.makeMap(i, /[, ]/)),
|
|
(i && !i[u]) ||
|
|
(!(n = l.file_picker_callback) || (i && !i[u])
|
|
? !(n = l.file_browser_callback) ||
|
|
(i && !i[u]) ||
|
|
(t = function() {
|
|
n(r.getEl("inp").id, r.value(), u, window);
|
|
})
|
|
: (t = function() {
|
|
var e = r.fire("beforecall").meta;
|
|
(e = a.extend({ filetype: u }, e)),
|
|
n.call(
|
|
o,
|
|
function(e, t) {
|
|
r.value(e).fire("change", { meta: t });
|
|
},
|
|
r.value(),
|
|
e
|
|
);
|
|
})),
|
|
t && ((e.icon = "browse"), (e.onaction = t)),
|
|
r._super(e),
|
|
r.classes.add("filepicker"),
|
|
Ci(r, l, o.getBody(), u),
|
|
ki(r, l, u);
|
|
}
|
|
}),
|
|
Hi = Vt.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();
|
|
});
|
|
}
|
|
}),
|
|
Si = Vt.extend({
|
|
recalc: function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o,
|
|
s,
|
|
a,
|
|
l,
|
|
u,
|
|
c,
|
|
d,
|
|
f,
|
|
h,
|
|
m,
|
|
g,
|
|
p,
|
|
v,
|
|
b,
|
|
y,
|
|
x,
|
|
w,
|
|
_,
|
|
R,
|
|
C,
|
|
k,
|
|
E,
|
|
H,
|
|
S,
|
|
M,
|
|
T,
|
|
P,
|
|
W,
|
|
D,
|
|
N,
|
|
A,
|
|
B,
|
|
O,
|
|
z = [],
|
|
L = Math.max,
|
|
I = Math.min;
|
|
for (
|
|
i = e.items().filter(":visible"),
|
|
r = e.layoutRect(),
|
|
o = e.paddingBox,
|
|
s = e.settings,
|
|
f = e.isRtl() ? s.direction || "row-reversed" : s.direction,
|
|
a = s.align,
|
|
l = e.isRtl() ? s.pack || "end" : s.pack,
|
|
u = s.spacing || 0,
|
|
("row-reversed" !== f && "column-reverse" !== f) ||
|
|
((i = i.set(i.toArray().reverse())), (f = f.split("-")[0])),
|
|
"column" === f
|
|
? ((C = "y"),
|
|
(_ = "h"),
|
|
(R = "minH"),
|
|
(k = "maxH"),
|
|
(H = "innerH"),
|
|
(E = "top"),
|
|
(S = "deltaH"),
|
|
(M = "contentH"),
|
|
(N = "left"),
|
|
(W = "w"),
|
|
(T = "x"),
|
|
(P = "innerW"),
|
|
(D = "minW"),
|
|
(A = "right"),
|
|
(B = "deltaW"),
|
|
(O = "contentW"))
|
|
: ((C = "x"),
|
|
(_ = "w"),
|
|
(R = "minW"),
|
|
(k = "maxW"),
|
|
(H = "innerW"),
|
|
(E = "left"),
|
|
(S = "deltaW"),
|
|
(M = "contentW"),
|
|
(N = "top"),
|
|
(W = "h"),
|
|
(T = "y"),
|
|
(P = "innerH"),
|
|
(D = "minH"),
|
|
(A = "bottom"),
|
|
(B = "deltaH"),
|
|
(O = "contentH")),
|
|
d = r[H] - o[E] - o[E],
|
|
w = c = 0,
|
|
t = 0,
|
|
n = i.length;
|
|
t < n;
|
|
t++
|
|
)
|
|
(m = (h = i[t]).layoutRect()),
|
|
(g = h.settings.flex),
|
|
(d -= t < n - 1 ? u : 0),
|
|
g > 0 && ((c += g), m[k] && z.push(h), (m.flex = g)),
|
|
(d -= m[R]),
|
|
(p = o[N] + m[D] + o[A]) > w && (w = p);
|
|
if (
|
|
(((y = {})[R] = d < 0 ? r[R] - d + r[S] : r[H] - d + r[S]),
|
|
(y[D] = w + r[B]),
|
|
(y[M] = r[H] - d),
|
|
(y[O] = w),
|
|
(y.minW = I(y.minW, r.maxW)),
|
|
(y.minH = I(y.minH, r.maxH)),
|
|
(y.minW = L(y.minW, r.startMinWidth)),
|
|
(y.minH = L(y.minH, r.startMinHeight)),
|
|
!r.autoResize || (y.minW === r.minW && y.minH === r.minH))
|
|
) {
|
|
for (b = d / c, t = 0, n = z.length; t < n; t++)
|
|
(v = (m = (h = z[t]).layoutRect())[k]),
|
|
(p = m[R] + m.flex * b) > v
|
|
? ((d -= m[k] - m[R]),
|
|
(c -= m.flex),
|
|
(m.flex = 0),
|
|
(m.maxFlexSize = v))
|
|
: (m.maxFlexSize = 0);
|
|
for (
|
|
b = d / c,
|
|
x = o[E],
|
|
y = {},
|
|
0 === c &&
|
|
("end" === l
|
|
? (x = d + o[E])
|
|
: "center" === l
|
|
? (x = Math.round(r[H] / 2 - (r[H] - d) / 2) + o[E]) < 0 &&
|
|
(x = o[E])
|
|
: "justify" === l &&
|
|
((x = o[E]), (u = Math.floor(d / (i.length - 1))))),
|
|
y[T] = o[N],
|
|
t = 0,
|
|
n = i.length;
|
|
t < n;
|
|
t++
|
|
)
|
|
(p = (m = (h = i[t]).layoutRect()).maxFlexSize || m[R]),
|
|
"center" === a
|
|
? (y[T] = Math.round(r[P] / 2 - m[W] / 2))
|
|
: "stretch" === a
|
|
? ((y[W] = L(m[D] || 0, r[P] - o[N] - o[A])), (y[T] = o[N]))
|
|
: "end" === a && (y[T] = r[P] - m[W] - o.top),
|
|
m.flex > 0 && (p += m.flex * b),
|
|
(y[_] = p),
|
|
(y[C] = x),
|
|
h.layoutRect(y),
|
|
h.recalc && h.recalc(),
|
|
(x += p + u);
|
|
} else if (
|
|
((y.w = y.minW),
|
|
(y.h = y.minH),
|
|
e.layoutRect(y),
|
|
this.recalc(e),
|
|
null === e._lastRect)
|
|
) {
|
|
var F = e.parent();
|
|
F && ((F._lastRect = null), F.recalc());
|
|
}
|
|
}
|
|
}),
|
|
Mi = Ft.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;
|
|
}
|
|
}),
|
|
Ti = function(e, t) {
|
|
return ti.one(t, e);
|
|
},
|
|
Pi = function(e, t) {
|
|
return function() {
|
|
e.execCommand("mceToggleFormat", !1, t);
|
|
};
|
|
},
|
|
Wi = function(e, t) {
|
|
return function() {
|
|
var n = this;
|
|
e.formatter
|
|
? e.formatter.formatChanged(t, function(e) {
|
|
n.active(e);
|
|
})
|
|
: e.on("init", function() {
|
|
e.formatter.formatChanged(t, function(e) {
|
|
n.active(e);
|
|
});
|
|
});
|
|
};
|
|
},
|
|
Di = function(e) {
|
|
e.addMenuItem("align", {
|
|
text: "Align",
|
|
menu: [
|
|
{ text: "Left", icon: "alignleft", onclick: Pi(e, "alignleft") },
|
|
{
|
|
text: "Center",
|
|
icon: "aligncenter",
|
|
onclick: Pi(e, "aligncenter")
|
|
},
|
|
{ text: "Right", icon: "alignright", onclick: Pi(e, "alignright") },
|
|
{
|
|
text: "Justify",
|
|
icon: "alignjustify",
|
|
onclick: Pi(e, "alignjustify")
|
|
}
|
|
]
|
|
}),
|
|
a.each(
|
|
{
|
|
alignleft: ["Align left", "JustifyLeft"],
|
|
aligncenter: ["Align center", "JustifyCenter"],
|
|
alignright: ["Align right", "JustifyRight"],
|
|
alignjustify: ["Justify", "JustifyFull"],
|
|
alignnone: ["No alignment", "JustifyNone"]
|
|
},
|
|
function(t, n) {
|
|
e.addButton(n, {
|
|
active: !1,
|
|
tooltip: t[0],
|
|
cmd: t[1],
|
|
onPostRender: Wi(e, n)
|
|
});
|
|
}
|
|
);
|
|
},
|
|
Ni = function(e) {
|
|
return function(t, n) {
|
|
return W.from(n)
|
|
.map(dn.fromDom)
|
|
.filter(Rn.isElement)
|
|
.bind(function(n) {
|
|
return (function(e, t, n) {
|
|
for (; n !== t; ) {
|
|
if (n.style[e]) {
|
|
var i = n.style[e];
|
|
return "" !== i ? W.some(i) : W.none();
|
|
}
|
|
n = n.parentNode;
|
|
}
|
|
return W.none();
|
|
})(e, t, n.dom()).or(
|
|
((i = e), (r = n.dom()), W.from(m.DOM.getStyle(r, i, !0)))
|
|
);
|
|
var i, r;
|
|
})
|
|
.getOr("");
|
|
};
|
|
},
|
|
Ai = {
|
|
getFontSize: Ni("fontSize"),
|
|
getFontFamily: E.compose(
|
|
function(e) {
|
|
return e.replace(/[\'\"]/g, "").replace(/,\s+/g, ",");
|
|
},
|
|
Ni("fontFamily")
|
|
),
|
|
toPt: 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;
|
|
}
|
|
},
|
|
Bi = function(e) {
|
|
return e ? e.split(",")[0] : "";
|
|
},
|
|
Oi = function(e, t) {
|
|
return function() {
|
|
var n = this;
|
|
e.on("init nodeChange", function(i) {
|
|
var r,
|
|
o,
|
|
s,
|
|
l = Ai.getFontFamily(e.getBody(), i.element),
|
|
u = ((r = t),
|
|
(o = l),
|
|
a.each(r, function(e) {
|
|
e.value.toLowerCase() === o.toLowerCase() && (s = e.value);
|
|
}),
|
|
a.each(r, function(e) {
|
|
s ||
|
|
Bi(e.value).toLowerCase() !== Bi(o).toLowerCase() ||
|
|
(s = e.value);
|
|
}),
|
|
s);
|
|
n.value(u || null), !u && l && n.text(Bi(l));
|
|
});
|
|
};
|
|
},
|
|
zi = function(e) {
|
|
e.addButton("fontselect", function() {
|
|
var t,
|
|
n = ((t = (function(e) {
|
|
for (var t = (e = e.replace(/;$/, "").split(";")).length; t--; )
|
|
e[t] = e[t].split("=");
|
|
return e;
|
|
})(
|
|
e.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"
|
|
)),
|
|
a.map(t, 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: n,
|
|
fixedWidth: !0,
|
|
onPostRender: Oi(e, n),
|
|
onselect: function(t) {
|
|
t.control.settings.value &&
|
|
e.execCommand("FontName", !1, t.control.settings.value);
|
|
}
|
|
};
|
|
});
|
|
},
|
|
Li = function(e) {
|
|
zi(e);
|
|
},
|
|
Ii = function(e, t, n) {
|
|
var i;
|
|
return (
|
|
a.each(e, function(e) {
|
|
e.value === n ? (i = n) : e.value === t && (i = t);
|
|
}),
|
|
i
|
|
);
|
|
},
|
|
Fi = function(e) {
|
|
e.addButton("fontsizeselect", function() {
|
|
var t,
|
|
n,
|
|
i,
|
|
r = ((t =
|
|
e.settings.fontsize_formats || "8pt 10pt 12pt 14pt 18pt 24pt 36pt"),
|
|
a.map(t.split(" "), function(e) {
|
|
var t = e,
|
|
n = e,
|
|
i = e.split("=");
|
|
return (
|
|
i.length > 1 && ((t = i[0]), (n = i[1])), { text: t, value: n }
|
|
);
|
|
}));
|
|
return {
|
|
type: "listbox",
|
|
text: "Font Sizes",
|
|
tooltip: "Font Sizes",
|
|
values: r,
|
|
fixedWidth: !0,
|
|
onPostRender: ((n = e),
|
|
(i = r),
|
|
function() {
|
|
var e = this;
|
|
n.on("init nodeChange", function(t) {
|
|
var r, o, s, a;
|
|
if ((r = Ai.getFontSize(n.getBody(), t.element)))
|
|
for (s = 3; !a && s >= 0; s--)
|
|
(o = Ai.toPt(r, s)), (a = Ii(i, o, r));
|
|
e.value(a || null), a || e.text(o);
|
|
});
|
|
}),
|
|
onclick: function(t) {
|
|
t.control.settings.value &&
|
|
e.execCommand("FontSize", !1, t.control.settings.value);
|
|
}
|
|
};
|
|
});
|
|
},
|
|
Vi = function(e) {
|
|
Fi(e);
|
|
},
|
|
Ui = function(e, t) {
|
|
return function() {
|
|
var n,
|
|
i,
|
|
r,
|
|
o = [];
|
|
return (
|
|
a.each(t, function(t) {
|
|
o.push({
|
|
text: t[0],
|
|
value: t[1],
|
|
textStyle: function() {
|
|
return e.formatter.getCssText(t[1]);
|
|
}
|
|
});
|
|
}),
|
|
{
|
|
type: "listbox",
|
|
text: t[0][0],
|
|
values: o,
|
|
fixedWidth: !0,
|
|
onselect: function(t) {
|
|
if (t.control) {
|
|
var n = t.control.value();
|
|
Pi(e, n)();
|
|
}
|
|
},
|
|
onPostRender: ((n = e),
|
|
(i = o),
|
|
function() {
|
|
var e = this;
|
|
n.on("nodeChange", function(t) {
|
|
var o = n.formatter,
|
|
s = null;
|
|
a.each(t.parents, function(e) {
|
|
if (
|
|
(a.each(i, function(t) {
|
|
if (
|
|
(r
|
|
? o.matchNode(e, r, { value: t.value }) &&
|
|
(s = t.value)
|
|
: o.matchNode(e, t.value) && (s = t.value),
|
|
s)
|
|
)
|
|
return !1;
|
|
}),
|
|
s)
|
|
)
|
|
return !1;
|
|
}),
|
|
e.value(s);
|
|
});
|
|
})
|
|
}
|
|
);
|
|
};
|
|
},
|
|
Yi = 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),
|
|
a.map(n, function(e) {
|
|
return {
|
|
text: e[0],
|
|
onclick: Pi(t, e[1]),
|
|
textStyle: function() {
|
|
return t.formatter.getCssText(e[1]);
|
|
}
|
|
};
|
|
}))
|
|
}),
|
|
e.addButton("formatselect", Ui(e, i));
|
|
},
|
|
$i = function(e, t) {
|
|
var n = t.length;
|
|
return (
|
|
a.each(t, function(t) {
|
|
t.menu && (t.hidden = 0 === $i(e, t.menu));
|
|
var i = t.format;
|
|
i && (t.hidden = !e.formatter.canApply(i)), t.hidden && n--;
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
ji = function(e, t) {
|
|
var n = t.items().length;
|
|
return (
|
|
t.items().each(function(t) {
|
|
t.menu && t.visible(ji(e, t.menu) > 0),
|
|
!t.menu && t.settings.menu && t.visible($i(e, t.settings.menu) > 0);
|
|
var i = t.settings.format;
|
|
i && t.visible(e.formatter.canApply(i)), t.visible() || n--;
|
|
}),
|
|
n
|
|
);
|
|
},
|
|
qi = function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o,
|
|
s,
|
|
l,
|
|
u,
|
|
c = ((n = 0),
|
|
(i = []),
|
|
(r = [
|
|
{
|
|
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" }
|
|
]
|
|
}
|
|
]),
|
|
(o = function(e) {
|
|
var t = [];
|
|
if (e)
|
|
return (
|
|
a.each(e, function(e) {
|
|
var r = { text: e.title, icon: e.icon };
|
|
if (e.items) r.menu = o(e.items);
|
|
else {
|
|
var s = e.format || "custom" + n++;
|
|
e.format || ((e.name = s), i.push(e)),
|
|
(r.format = s),
|
|
(r.cmd = e.cmd);
|
|
}
|
|
t.push(r);
|
|
}),
|
|
t
|
|
);
|
|
}),
|
|
(t = e).on("init", function() {
|
|
a.each(i, function(e) {
|
|
t.formatter.register(e.name, e);
|
|
});
|
|
}),
|
|
{
|
|
type: "menu",
|
|
items: t.settings.style_formats_merge
|
|
? t.settings.style_formats
|
|
? o(r.concat(t.settings.style_formats))
|
|
: o(r)
|
|
: o(t.settings.style_formats || r),
|
|
onPostRender: function(e) {
|
|
t.fire("renderFormatsMenu", { control: e.control });
|
|
},
|
|
itemDefaults: {
|
|
preview: !0,
|
|
textStyle: function() {
|
|
if (this.settings.format)
|
|
return t.formatter.getCssText(this.settings.format);
|
|
},
|
|
onPostRender: function() {
|
|
var e = this;
|
|
e.parent().on("show", function() {
|
|
var n, i;
|
|
(n = e.settings.format) &&
|
|
(e.disabled(!t.formatter.canApply(n)),
|
|
e.active(t.formatter.match(n))),
|
|
(i = e.settings.cmd) && e.active(t.queryCommandState(i));
|
|
});
|
|
},
|
|
onclick: function() {
|
|
this.settings.format && Pi(t, this.settings.format)(),
|
|
this.settings.cmd && t.execCommand(this.settings.cmd);
|
|
}
|
|
}
|
|
});
|
|
(s = c),
|
|
e.addMenuItem("formats", { text: "Formats", menu: s }),
|
|
(u = c),
|
|
(l = e).addButton("styleselect", {
|
|
type: "menubutton",
|
|
text: "Formats",
|
|
menu: u,
|
|
onShowMenu: function() {
|
|
l.settings.style_formats_autohide && ji(l, this.menu);
|
|
}
|
|
});
|
|
},
|
|
Xi = function(e, t) {
|
|
var n, i;
|
|
if ("string" == typeof t) i = t.split(" ");
|
|
else if (a.isArray(t))
|
|
return ee.flatten(
|
|
a.map(t, function(t) {
|
|
return Xi(e, t);
|
|
})
|
|
);
|
|
return (
|
|
(n = a.grep(i, function(t) {
|
|
return "|" === t || t in e.menuItems;
|
|
})),
|
|
a.map(n, function(t) {
|
|
return "|" === t ? { text: "-" } : e.menuItems[t];
|
|
})
|
|
);
|
|
},
|
|
Ji = function(e) {
|
|
return e && "-" === e.text;
|
|
},
|
|
Gi = function(e) {
|
|
var t = ee.filter(e, function(e, t, n) {
|
|
return !Ji(e) || !Ji(n[t - 1]);
|
|
});
|
|
return ee.filter(t, function(e, t, n) {
|
|
return !Ji(e) || (t > 0 && t < n.length - 1);
|
|
});
|
|
},
|
|
Ki = function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o = e.settings.insert_button_items;
|
|
return Gi(
|
|
o
|
|
? Xi(e, o)
|
|
: ((t = e),
|
|
(n = "insert"),
|
|
(i = [{ text: "-" }]),
|
|
(r = a.grep(t.menuItems, function(e) {
|
|
return e.context === n;
|
|
})),
|
|
a.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)
|
|
);
|
|
},
|
|
Zi = function(e) {
|
|
var t;
|
|
(t = e).addButton("insert", {
|
|
type: "menubutton",
|
|
icon: "insert",
|
|
menu: [],
|
|
oncreatemenu: function() {
|
|
this.menu.add(Ki(t)), this.menu.renderNew();
|
|
}
|
|
});
|
|
},
|
|
Qi = function(e) {
|
|
var t, n, i;
|
|
(t = e),
|
|
a.each(
|
|
{
|
|
bold: "Bold",
|
|
italic: "Italic",
|
|
underline: "Underline",
|
|
strikethrough: "Strikethrough",
|
|
subscript: "Subscript",
|
|
superscript: "Superscript"
|
|
},
|
|
function(e, n) {
|
|
t.addButton(n, {
|
|
active: !1,
|
|
tooltip: e,
|
|
onPostRender: Wi(t, n),
|
|
onclick: Pi(t, n)
|
|
});
|
|
}
|
|
),
|
|
(n = e),
|
|
a.each(
|
|
{
|
|
outdent: ["Decrease indent", "Outdent"],
|
|
indent: ["Increase indent", "Indent"],
|
|
cut: ["Cut", "Cut"],
|
|
copy: ["Copy", "Copy"],
|
|
paste: ["Paste", "Paste"],
|
|
help: ["Help", "mceHelp"],
|
|
selectall: ["Select all", "SelectAll"],
|
|
visualaid: ["Visual aids", "mceToggleVisualAid"],
|
|
newdocument: ["New document", "mceNewDocument"],
|
|
removeformat: ["Clear formatting", "RemoveFormat"],
|
|
remove: ["Remove", "Delete"]
|
|
},
|
|
function(e, t) {
|
|
n.addButton(t, { tooltip: e[0], cmd: e[1] });
|
|
}
|
|
),
|
|
(i = e),
|
|
a.each(
|
|
{
|
|
blockquote: ["Blockquote", "mceBlockQuote"],
|
|
subscript: ["Subscript", "Subscript"],
|
|
superscript: ["Superscript", "Superscript"]
|
|
},
|
|
function(e, t) {
|
|
i.addButton(t, {
|
|
active: !1,
|
|
tooltip: e[0],
|
|
cmd: e[1],
|
|
onPostRender: Wi(i, t)
|
|
});
|
|
}
|
|
);
|
|
},
|
|
er = function(e) {
|
|
var t;
|
|
Qi(e),
|
|
(t = e),
|
|
a.each(
|
|
{
|
|
bold: ["Bold", "Bold", "Meta+B"],
|
|
italic: ["Italic", "Italic", "Meta+I"],
|
|
underline: ["Underline", "Underline", "Meta+U"],
|
|
strikethrough: ["Strikethrough", "Strikethrough"],
|
|
subscript: ["Subscript", "Subscript"],
|
|
superscript: ["Superscript", "Superscript"],
|
|
removeformat: ["Clear formatting", "RemoveFormat"],
|
|
newdocument: ["New document", "mceNewDocument"],
|
|
cut: ["Cut", "Cut", "Meta+X"],
|
|
copy: ["Copy", "Copy", "Meta+C"],
|
|
paste: ["Paste", "Paste", "Meta+V"],
|
|
selectall: ["Select all", "SelectAll", "Meta+A"]
|
|
},
|
|
function(e, n) {
|
|
t.addMenuItem(n, {
|
|
text: e[0],
|
|
icon: n,
|
|
shortcut: e[2],
|
|
cmd: e[1]
|
|
});
|
|
}
|
|
),
|
|
t.addMenuItem("codeformat", {
|
|
text: "Code",
|
|
icon: "code",
|
|
onclick: Pi(t, "code")
|
|
});
|
|
},
|
|
tr = function(e, t) {
|
|
return function() {
|
|
var n = this,
|
|
i = function() {
|
|
var n = "redo" === t ? "hasRedo" : "hasUndo";
|
|
return !!e.undoManager && e.undoManager[n]();
|
|
};
|
|
n.disabled(!i()),
|
|
e.on(
|
|
"Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",
|
|
function() {
|
|
n.disabled(e.readonly || !i());
|
|
}
|
|
);
|
|
};
|
|
},
|
|
nr = function(e) {
|
|
var t, n;
|
|
(t = e).addMenuItem("undo", {
|
|
text: "Undo",
|
|
icon: "undo",
|
|
shortcut: "Meta+Z",
|
|
onPostRender: tr(t, "undo"),
|
|
cmd: "undo"
|
|
}),
|
|
t.addMenuItem("redo", {
|
|
text: "Redo",
|
|
icon: "redo",
|
|
shortcut: "Meta+Y",
|
|
onPostRender: tr(t, "redo"),
|
|
cmd: "redo"
|
|
}),
|
|
(n = e).addButton("undo", {
|
|
tooltip: "Undo",
|
|
onPostRender: tr(n, "undo"),
|
|
cmd: "undo"
|
|
}),
|
|
n.addButton("redo", {
|
|
tooltip: "Redo",
|
|
onPostRender: tr(n, "redo"),
|
|
cmd: "redo"
|
|
});
|
|
},
|
|
ir = function(e) {
|
|
var t, n;
|
|
(t = e).addMenuItem("visualaid", {
|
|
text: "Visual aids",
|
|
selectable: !0,
|
|
onPostRender: ((n = t),
|
|
function() {
|
|
var e = this;
|
|
n.on("VisualAid", function(t) {
|
|
e.active(t.hasVisual);
|
|
}),
|
|
e.active(n.hasVisual);
|
|
}),
|
|
cmd: "mceToggleVisualAid"
|
|
});
|
|
},
|
|
rr = {
|
|
setup: function(e) {
|
|
var t;
|
|
e.rtl && (et.rtl = !0),
|
|
e.on("mousedown", function() {
|
|
xt.hideAll();
|
|
}),
|
|
(t = e).settings.ui_container &&
|
|
(_.container = Ti(
|
|
dn.fromDom(document.body),
|
|
t.settings.ui_container
|
|
).fold(E.constant(null), function(e) {
|
|
return e.dom();
|
|
})),
|
|
(Mt.tooltips = !_.iOS),
|
|
(et.translate = function(e) {
|
|
return s.translate(e);
|
|
}),
|
|
Yi(e),
|
|
Di(e),
|
|
er(e),
|
|
nr(e),
|
|
Vi(e),
|
|
Li(e),
|
|
qi(e),
|
|
ir(e),
|
|
Zi(e);
|
|
}
|
|
},
|
|
or = Vt.extend({
|
|
recalc: function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o,
|
|
s,
|
|
a,
|
|
l,
|
|
u,
|
|
c,
|
|
d,
|
|
f,
|
|
h,
|
|
m,
|
|
g,
|
|
p,
|
|
v,
|
|
b,
|
|
y,
|
|
x,
|
|
w,
|
|
_,
|
|
R,
|
|
C,
|
|
k,
|
|
E,
|
|
H,
|
|
S,
|
|
M = [],
|
|
T = [];
|
|
(t = e.settings),
|
|
(r = e.items().filter(":visible")),
|
|
(o = e.layoutRect()),
|
|
(i = t.columns || Math.ceil(Math.sqrt(r.length))),
|
|
(n = Math.ceil(r.length / i)),
|
|
(b = t.spacingH || t.spacing || 0),
|
|
(y = t.spacingV || t.spacing || 0),
|
|
(x = t.alignH || t.align),
|
|
(w = t.alignV || t.align),
|
|
(p = e.paddingBox),
|
|
(S = "reverseRows" in t ? t.reverseRows : e.isRtl()),
|
|
x && "string" == typeof x && (x = [x]),
|
|
w && "string" == typeof w && (w = [w]);
|
|
for (d = 0; d < i; d++) M.push(0);
|
|
for (f = 0; f < n; f++) T.push(0);
|
|
for (f = 0; f < n; f++)
|
|
for (d = 0; d < i && (c = r[f * i + d]); d++)
|
|
(C = (u = c.layoutRect()).minW),
|
|
(k = u.minH),
|
|
(M[d] = C > M[d] ? C : M[d]),
|
|
(T[f] = k > T[f] ? k : T[f]);
|
|
for (E = o.innerW - p.left - p.right, _ = 0, d = 0; d < i; d++)
|
|
(_ += M[d] + (d > 0 ? b : 0)), (E -= (d > 0 ? b : 0) + M[d]);
|
|
for (H = o.innerH - p.top - p.bottom, R = 0, f = 0; f < n; f++)
|
|
(R += T[f] + (f > 0 ? y : 0)), (H -= (f > 0 ? y : 0) + T[f]);
|
|
if (
|
|
((_ += p.left + p.right),
|
|
(R += p.top + p.bottom),
|
|
((l = {}).minW = _ + (o.w - o.innerW)),
|
|
(l.minH = R + (o.h - o.innerH)),
|
|
(l.contentW = l.minW - o.deltaW),
|
|
(l.contentH = l.minH - o.deltaH),
|
|
(l.minW = Math.min(l.minW, o.maxW)),
|
|
(l.minH = Math.min(l.minH, o.maxH)),
|
|
(l.minW = Math.max(l.minW, o.startMinWidth)),
|
|
(l.minH = Math.max(l.minH, o.startMinHeight)),
|
|
!o.autoResize || (l.minW === o.minW && l.minH === o.minH))
|
|
) {
|
|
var P;
|
|
o.autoResize &&
|
|
(((l = e.layoutRect(l)).contentW = l.minW - o.deltaW),
|
|
(l.contentH = l.minH - o.deltaH)),
|
|
(P = "start" === t.packV ? 0 : H > 0 ? Math.floor(H / n) : 0);
|
|
var W = 0,
|
|
D = t.flexWidths;
|
|
if (D) for (d = 0; d < D.length; d++) W += D[d];
|
|
else W = i;
|
|
var N = E / W;
|
|
for (d = 0; d < i; d++) M[d] += D ? D[d] * N : N;
|
|
for (m = p.top, f = 0; f < n; f++) {
|
|
for (
|
|
h = p.left, a = T[f] + P, d = 0;
|
|
d < i && (c = r[S ? f * i + i - 1 - d : f * i + d]);
|
|
d++
|
|
)
|
|
(g = c.settings),
|
|
(u = c.layoutRect()),
|
|
(s = Math.max(M[d], u.startMinWidth)),
|
|
(u.x = h),
|
|
(u.y = m),
|
|
"center" === (v = g.alignH || (x ? x[d] || x[0] : null))
|
|
? (u.x = h + s / 2 - u.w / 2)
|
|
: "right" === v
|
|
? (u.x = h + s - u.w)
|
|
: "stretch" === v && (u.w = s),
|
|
"center" === (v = g.alignV || (w ? w[d] || w[0] : null))
|
|
? (u.y = m + a / 2 - u.h / 2)
|
|
: "bottom" === v
|
|
? (u.y = m + a - u.h)
|
|
: "stretch" === v && (u.h = a),
|
|
c.layoutRect(u),
|
|
(h += s + b),
|
|
c.recalc && c.recalc();
|
|
m += a + y;
|
|
}
|
|
} else if (
|
|
((l.w = l.minW),
|
|
(l.h = l.minH),
|
|
e.layoutRect(l),
|
|
this.recalc(e),
|
|
null === e._lastRect)
|
|
) {
|
|
var A = e.parent();
|
|
A && ((A._lastRect = null), A.recalc());
|
|
}
|
|
}
|
|
}),
|
|
sr = Mt.extend({
|
|
renderHtml: function() {
|
|
var e = this;
|
|
return (
|
|
e.classes.add("iframe"),
|
|
(e.canFocus = !1),
|
|
'<iframe id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'" tabindex="-1" src="' +
|
|
(e.settings.url || "javascript:''") +
|
|
'" frameborder="0"></iframe>'
|
|
);
|
|
},
|
|
src: function(e) {
|
|
this.getEl().src = e;
|
|
},
|
|
html: function(e, t) {
|
|
var n = this,
|
|
i = this.getEl().contentWindow.document.body;
|
|
return (
|
|
i
|
|
? ((i.innerHTML = e), t && t())
|
|
: C.setTimeout(function() {
|
|
n.html(e);
|
|
}),
|
|
this
|
|
);
|
|
}
|
|
}),
|
|
ar = Mt.extend({
|
|
init: function(e) {
|
|
this._super(e),
|
|
this.classes.add("widget").add("infobox"),
|
|
(this.canFocus = !1);
|
|
},
|
|
severity: function(e) {
|
|
this.classes.remove("error"),
|
|
this.classes.remove("warning"),
|
|
this.classes.remove("success"),
|
|
this.classes.add(e);
|
|
},
|
|
help: function(e) {
|
|
this.state.set("help", e);
|
|
},
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e.classPrefix;
|
|
return (
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'"><div id="' +
|
|
e._id +
|
|
'-body">' +
|
|
e.encode(e.state.get("text")) +
|
|
'<button role="button" tabindex="-1"><i class="' +
|
|
t +
|
|
"ico " +
|
|
t +
|
|
'i-help"></i></button></div></div>'
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var 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()
|
|
);
|
|
}
|
|
}),
|
|
lr = Mt.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 &&
|
|
(we.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,
|
|
we.getSize(e.getEl()).height
|
|
))),
|
|
t
|
|
);
|
|
},
|
|
repaint: function() {
|
|
return (
|
|
this.settings.multiline ||
|
|
(this.getEl().style.lineHeight = this.layoutRect().h + "px"),
|
|
this._super()
|
|
);
|
|
},
|
|
severity: function(e) {
|
|
this.classes.remove("error"),
|
|
this.classes.remove("warning"),
|
|
this.classes.remove("success"),
|
|
this.classes.add(e);
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t,
|
|
n = this,
|
|
i = n.settings.forId,
|
|
r = n.settings.html ? n.settings.html : n.encode(n.state.get("text"));
|
|
return (
|
|
!i &&
|
|
(t = n.settings.forName) &&
|
|
(e = n.getRoot().find("#" + t)[0]) &&
|
|
(i = e._id),
|
|
i
|
|
? '<label id="' +
|
|
n._id +
|
|
'" class="' +
|
|
n.classes +
|
|
'"' +
|
|
(i ? ' for="' + i + '"' : "") +
|
|
">" +
|
|
r +
|
|
"</label>"
|
|
: '<span id="' +
|
|
n._id +
|
|
'" class="' +
|
|
n.classes +
|
|
'">' +
|
|
r +
|
|
"</span>"
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
return (
|
|
e.state.on("change:text", function(t) {
|
|
e.innerHtml(e.encode(t.value)),
|
|
e.state.get("rendered") && e.updateLayoutRect();
|
|
}),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
ur = rt.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()
|
|
);
|
|
}
|
|
}),
|
|
cr = ur.extend({
|
|
Defaults: {
|
|
role: "menubar",
|
|
containerCls: "menubar",
|
|
ariaRoot: !0,
|
|
defaults: { type: "menubutton" }
|
|
}
|
|
}),
|
|
dr = Ut.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 = g
|
|
.create(t)
|
|
.parent(n)
|
|
.renderTo()),
|
|
n.fire("createmenu"),
|
|
n.menu.reflow(),
|
|
n.menu.on("cancel", function(e) {
|
|
e.control.parent() === n.menu &&
|
|
(e.stopPropagation(), n.focus(), n.hideMenu());
|
|
}),
|
|
n.menu.on("select", function() {
|
|
n.focus();
|
|
}),
|
|
n.menu
|
|
.on("show hide", function(e) {
|
|
e.control === n.menu &&
|
|
(n.activeMenu("show" === e.type),
|
|
n.classes.toggle("opened", "show" === e.type)),
|
|
n.aria("expanded", "show" === e.type);
|
|
})
|
|
.fire("show")),
|
|
n.menu.show(),
|
|
n.menu.layoutRect({ w: n.layoutRect().w }),
|
|
n.menu.repaint(),
|
|
n.menu.moveRel(
|
|
n.getEl(),
|
|
n.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]
|
|
),
|
|
n.fire("showmenu");
|
|
},
|
|
hideMenu: function() {
|
|
this.menu &&
|
|
(this.menu.items().each(function(e) {
|
|
e.hideMenu && e.hideMenu();
|
|
}),
|
|
this.menu.hide());
|
|
},
|
|
activeMenu: function(e) {
|
|
this.classes.toggle("active", e);
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t = this,
|
|
n = t._id,
|
|
i = t.classPrefix,
|
|
r = t.settings.icon,
|
|
o = t.state.get("text"),
|
|
s = "";
|
|
return (
|
|
(e = t.settings.image)
|
|
? ((r = "none"),
|
|
"string" != typeof e && (e = window.getSelection ? e[0] : e[1]),
|
|
(e = " style=\"background-image: url('" + e + "')\""))
|
|
: (e = ""),
|
|
o &&
|
|
(t.classes.add("btn-has-text"),
|
|
(s = '<span class="' + i + 'txt">' + t.encode(o) + "</span>")),
|
|
(r = t.settings.icon ? i + "ico " + i + "i-" + r : ""),
|
|
t.aria("role", t.parent() instanceof cr ? "menuitem" : "button"),
|
|
'<div id="' +
|
|
n +
|
|
'" class="' +
|
|
t.classes +
|
|
'" tabindex="-1" aria-labelledby="' +
|
|
n +
|
|
'"><button id="' +
|
|
n +
|
|
'-open" role="presentation" type="button" tabindex="-1">' +
|
|
(r ? '<i class="' + r + '"' + e + "></i>" : "") +
|
|
s +
|
|
' <i class="' +
|
|
i +
|
|
'caret"></i></button></div>'
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this;
|
|
return (
|
|
e.on("click", function(t) {
|
|
t.control === e &&
|
|
(function(e, t) {
|
|
for (; e; ) {
|
|
if (t === e) return !0;
|
|
e = e.parentNode;
|
|
}
|
|
return !1;
|
|
})(t.target, e.getEl()) &&
|
|
(e.focus(),
|
|
e.showMenu(!t.aria),
|
|
t.aria &&
|
|
e.menu
|
|
.items()
|
|
.filter(":visible")[0]
|
|
.focus());
|
|
}),
|
|
e.on("mouseenter", function(t) {
|
|
var n,
|
|
i = t.control,
|
|
r = e.parent();
|
|
i &&
|
|
r &&
|
|
i instanceof dr &&
|
|
i.parent() === r &&
|
|
(r
|
|
.items()
|
|
.filter("MenuButton")
|
|
.each(function(e) {
|
|
e.hideMenu &&
|
|
e !== i &&
|
|
(e.menu && e.menu.visible() && (n = !0), e.hideMenu());
|
|
}),
|
|
n && (i.focus(), i.showMenu()));
|
|
}),
|
|
e._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();
|
|
}
|
|
}),
|
|
fr = xt.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] = a.extend({}, e.itemDefaults, t[n]);
|
|
this._super(e),
|
|
this.classes.add("menu"),
|
|
e.animate && 11 !== _.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,
|
|
t = this;
|
|
function n() {
|
|
t.throbber && (t.throbber.hide(), (t.throbber = null));
|
|
}
|
|
t.settings.itemsFactory &&
|
|
(t.throbber ||
|
|
((t.throbber = new kt(t.getEl("body"), !0)),
|
|
0 === t.items().length
|
|
? (t.throbber.show(), t.fire("loading"))
|
|
: t.throbber.show(100, function() {
|
|
t.items().remove(), t.fire("loading");
|
|
}),
|
|
t.on("hide close", n)),
|
|
(t.requestTime = e = new Date().getTime()),
|
|
t.settings.itemsFactory(function(i) {
|
|
0 !== i.length
|
|
? t.requestTime === e &&
|
|
((t.getEl().style.width = ""),
|
|
(t.getEl("body").style.width = ""),
|
|
n(),
|
|
t.items().remove(),
|
|
(t.getEl("body").innerHTML = ""),
|
|
t.add(i),
|
|
t.renderNew(),
|
|
t.fire("loaded"))
|
|
: t.hide();
|
|
}));
|
|
},
|
|
hideAll: function() {
|
|
return this.find("menuitem").exec("hideMenu"), this._super();
|
|
},
|
|
preRender: function() {
|
|
var e = this;
|
|
return (
|
|
e.items().each(function(t) {
|
|
var n = t.settings;
|
|
if (n.icon || n.image || n.selectable)
|
|
return (e._hasIcons = !0), !1;
|
|
}),
|
|
e.settings.itemsFactory &&
|
|
e.on("postrender", function() {
|
|
e.settings.itemsFactory && e.load();
|
|
}),
|
|
e.on("show hide", function(t) {
|
|
t.control === e &&
|
|
("show" === t.type
|
|
? C.setTimeout(function() {
|
|
e.classes.add("in");
|
|
}, 0)
|
|
: e.classes.remove("in"));
|
|
}),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
hr = dr.extend({
|
|
init: function(e) {
|
|
var t,
|
|
n,
|
|
i,
|
|
r,
|
|
o = this;
|
|
o._super(e),
|
|
(e = o.settings),
|
|
(o._values = t = e.values),
|
|
t &&
|
|
("undefined" != typeof e.value &&
|
|
(function s(t) {
|
|
for (var r = 0; r < t.length; r++) {
|
|
if ((n = t[r].selected || e.value === t[r].value))
|
|
return (
|
|
(i = i || t[r].text), o.state.set("value", t[r].value), !0
|
|
);
|
|
if (t[r].menu && s(t[r].menu)) return !0;
|
|
}
|
|
})(t),
|
|
!n &&
|
|
t.length > 0 &&
|
|
((i = t[0].text), o.state.set("value", t[0].value)),
|
|
o.state.set("menu", t)),
|
|
o.state.set("text", e.text || i),
|
|
o.classes.add("listbox"),
|
|
o.on("select", function(t) {
|
|
var n = t.control;
|
|
r && (t.lastControl = r),
|
|
e.multiple ? n.active(!n.active()) : o.value(t.control.value()),
|
|
(r = n);
|
|
});
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
return (
|
|
e.on("show", function(t) {
|
|
var n, i;
|
|
(n = t.control),
|
|
(i = e.value()),
|
|
n instanceof fr &&
|
|
n.items().each(function(e) {
|
|
e.hasMenus() || e.active(e.value() === i);
|
|
});
|
|
}),
|
|
e.state.on("change:value", function(t) {
|
|
var n = (function i(e, t) {
|
|
var n;
|
|
if (e)
|
|
for (var r = 0; r < e.length; r++) {
|
|
if (e[r].value === t) return e[r];
|
|
if (e[r].menu && (n = i(e[r].menu, t))) return n;
|
|
}
|
|
})(e.state.get("menu"), t.value);
|
|
n ? e.text(n.text) : e.text(e.settings.text);
|
|
}),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
mr = Mt.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 e,
|
|
t = this,
|
|
n = t.settings,
|
|
i = t.parent();
|
|
if (
|
|
(i.items().each(function(e) {
|
|
e !== t && e.hideMenu();
|
|
}),
|
|
n.menu)
|
|
) {
|
|
(e = t.menu)
|
|
? e.show()
|
|
: ((e = n.menu).length
|
|
? (e = { type: "menu", animate: !0, items: e })
|
|
: ((e.type = e.type || "menu"), (e.animate = !0)),
|
|
i.settings.itemDefaults &&
|
|
(e.itemDefaults = i.settings.itemDefaults),
|
|
(e = t.menu = g
|
|
.create(e)
|
|
.parent(t)
|
|
.renderTo()).reflow(),
|
|
e.on("cancel", function(n) {
|
|
n.stopPropagation(), t.focus(), e.hide();
|
|
}),
|
|
e
|
|
.on("show hide", function(e) {
|
|
e.control.items &&
|
|
e.control.items().each(function(e) {
|
|
e.active(e.settings.selected);
|
|
});
|
|
})
|
|
.fire("show"),
|
|
e.on("hide", function(n) {
|
|
n.control === e && t.classes.remove("selected");
|
|
}),
|
|
(e.submenu = !0)),
|
|
(e._parentMenu = i),
|
|
e.classes.add("menu-sub");
|
|
var r = e.testMoveRel(
|
|
t.getEl(),
|
|
t.isRtl()
|
|
? ["tl-tr", "bl-br", "tr-tl", "br-bl"]
|
|
: ["tr-tl", "br-bl", "tl-tr", "bl-br"]
|
|
);
|
|
e.moveRel(t.getEl(), r),
|
|
(e.rel = r),
|
|
(r = "menu-sub-" + r),
|
|
e.classes.remove(e._lastRel).add(r),
|
|
(e._lastRel = r),
|
|
t.classes.add("selected"),
|
|
t.aria("expanded", !0);
|
|
}
|
|
},
|
|
hideMenu: function() {
|
|
var e = this;
|
|
return (
|
|
e.menu &&
|
|
(e.menu.items().each(function(e) {
|
|
e.hideMenu && e.hideMenu();
|
|
}),
|
|
e.menu.hide(),
|
|
e.aria("expanded", !1)),
|
|
e
|
|
);
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t = this,
|
|
n = t._id,
|
|
i = t.settings,
|
|
r = t.classPrefix,
|
|
o = t.state.get("text"),
|
|
s = t.settings.icon,
|
|
a = "",
|
|
l = i.shortcut,
|
|
u = t.encode(i.url);
|
|
function c(e) {
|
|
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
}
|
|
function d(e) {
|
|
var t = i.match || "";
|
|
return t
|
|
? e.replace(new RegExp(c(t), "gi"), function(e) {
|
|
return "!mce~match[" + e + "]mce~match!";
|
|
})
|
|
: e;
|
|
}
|
|
function f(e) {
|
|
return e
|
|
.replace(new RegExp(c("!mce~match["), "g"), "<b>")
|
|
.replace(new RegExp(c("]mce~match!"), "g"), "</b>");
|
|
}
|
|
return (
|
|
s && t.parent().classes.add("menu-has-icons"),
|
|
i.image &&
|
|
(a = " style=\"background-image: url('" + i.image + "')\""),
|
|
l &&
|
|
(l = (function(e) {
|
|
var t,
|
|
n,
|
|
i = {};
|
|
for (
|
|
i = _.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 ? '<i class="' + s + '"' + a + "></i>\xa0" : ""),
|
|
(o = f(t.encode(d(o)))),
|
|
(u = f(t.encode(d(u)))),
|
|
'<div id="' +
|
|
n +
|
|
'" class="' +
|
|
t.classes +
|
|
'" tabindex="-1">' +
|
|
e +
|
|
("-" !== o
|
|
? '<span id="' +
|
|
n +
|
|
'-text" class="' +
|
|
r +
|
|
'text">' +
|
|
o +
|
|
"</span>"
|
|
: "") +
|
|
(l
|
|
? '<div id="' +
|
|
n +
|
|
'-shortcut" class="' +
|
|
r +
|
|
'menu-shortcut">' +
|
|
l +
|
|
"</div>"
|
|
: "") +
|
|
(i.menu ? '<div class="' + r + 'caret"></div>' : "") +
|
|
(u ? '<div class="' + r + 'menu-item-link">' + u + "</div>" : "") +
|
|
"</div>"
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this,
|
|
t = e.settings,
|
|
n = t.textStyle;
|
|
if (("function" == typeof n && (n = n.call(this)), n)) {
|
|
var i = e.getEl("text");
|
|
i && (i.setAttribute("style", n), (e._textStyle = n));
|
|
}
|
|
return (
|
|
e.on("mouseenter click", function(n) {
|
|
n.control === e &&
|
|
(t.menu || "click" !== n.type
|
|
? (e.showMenu(), n.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(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();
|
|
}
|
|
}),
|
|
gr = jt.extend({ Defaults: { classes: "radio", role: "radio" } }),
|
|
pr = Mt.extend({
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e.classPrefix;
|
|
return (
|
|
e.classes.add("resizehandle"),
|
|
"both" === e.settings.direction && e.classes.add("resizehandle-both"),
|
|
(e.canFocus = !1),
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'"><i class="' +
|
|
t +
|
|
"ico " +
|
|
t +
|
|
'i-resize"></i></div>'
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this;
|
|
e._super(),
|
|
(e.resizeDragHelper = new ct(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 vr(e) {
|
|
var t = "";
|
|
if (e)
|
|
for (var n = 0; n < e.length; n++)
|
|
t += '<option value="' + e[n] + '">' + e[n] + "</option>";
|
|
return t;
|
|
}
|
|
var br = Mt.extend({
|
|
Defaults: { classes: "selectbox", role: "selectbox", options: [] },
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
t.settings.size && (t.size = t.settings.size),
|
|
t.settings.options && (t._options = t.settings.options),
|
|
t.on("keydown", function(e) {
|
|
var n;
|
|
13 === e.keyCode &&
|
|
(e.preventDefault(),
|
|
t
|
|
.parents()
|
|
.reverse()
|
|
.each(function(e) {
|
|
if (e.toJSON) return (n = e), !1;
|
|
}),
|
|
t.fire("submit", { data: n.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 = vr(t._options)),
|
|
t.size && (n = ' size = "' + t.size + '"'),
|
|
'<select id="' +
|
|
t._id +
|
|
'" class="' +
|
|
t.classes +
|
|
'"' +
|
|
n +
|
|
">" +
|
|
e +
|
|
"</select>"
|
|
);
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
return (
|
|
e.state.on("change:options", function(t) {
|
|
e.getEl().innerHTML = vr(t.value);
|
|
}),
|
|
e._super()
|
|
);
|
|
}
|
|
});
|
|
function yr(e, t, n) {
|
|
return e < t && (e = t), e > n && (e = n), e;
|
|
}
|
|
function xr(e, t, n) {
|
|
e.setAttribute("aria-" + t, n);
|
|
}
|
|
function wr(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) - we.getSize(s)[i]) *
|
|
((t - e._minValue) / (e._maxValue - e._minValue)) +
|
|
"px"),
|
|
(s.style[r] = o),
|
|
(s.style.height = e.layoutRect().h + "px"),
|
|
xr(s, "valuenow", t),
|
|
xr(s, "valuetext", "" + e.settings.previewFilter(t)),
|
|
xr(s, "valuemin", e._minValue),
|
|
xr(s, "valuemax", e._maxValue);
|
|
}
|
|
var _r = Mt.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 = e.minValue || 0),
|
|
(t._maxValue = e.maxValue || 100),
|
|
(t._initValue = t.state.get("value"));
|
|
},
|
|
renderHtml: function() {
|
|
var e = this._id,
|
|
t = this.classPrefix;
|
|
return (
|
|
'<div id="' +
|
|
e +
|
|
'" class="' +
|
|
this.classes +
|
|
'"><div id="' +
|
|
e +
|
|
'-handle" class="' +
|
|
t +
|
|
'slider-handle" role="slider" tabindex="-1"></div></div>'
|
|
);
|
|
},
|
|
reset: function() {
|
|
this.value(this._initValue).repaint();
|
|
},
|
|
postRender: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
i,
|
|
r,
|
|
o,
|
|
s,
|
|
a,
|
|
l,
|
|
u,
|
|
c,
|
|
d,
|
|
f,
|
|
h,
|
|
m = this;
|
|
(e = m._minValue),
|
|
(t = m._maxValue),
|
|
"v" === m.settings.orientation
|
|
? ((n = "screenY"), (i = "top"), (r = "height"), (o = "h"))
|
|
: ((n = "screenX"), (i = "left"), (r = "width"), (o = "w")),
|
|
m._super(),
|
|
(function(e, t) {
|
|
function n(n) {
|
|
var i, r, o;
|
|
(i = yr(
|
|
(i =
|
|
(((i = m.value()) + (o = e)) / (t - o) + 0.05 * n) *
|
|
(t - (r = e)) -
|
|
r),
|
|
e,
|
|
t
|
|
)),
|
|
m.value(i),
|
|
m.fire("dragstart", { value: i }),
|
|
m.fire("drag", { value: i }),
|
|
m.fire("dragend", { value: i });
|
|
}
|
|
m.on("keydown", function(e) {
|
|
switch (e.keyCode) {
|
|
case 37:
|
|
case 38:
|
|
n(-1);
|
|
break;
|
|
case 39:
|
|
case 40:
|
|
n(1);
|
|
}
|
|
});
|
|
})(e, t),
|
|
(s = e),
|
|
(a = t),
|
|
(l = m.getEl("handle")),
|
|
(m._dragHelper = new ct(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) - we.getSize(l)[r]),
|
|
m.fire("dragstart", { value: h });
|
|
},
|
|
drag: function(e) {
|
|
var t = e[n] - u;
|
|
(f = yr(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(), wr(this, this.value());
|
|
},
|
|
bindStates: function() {
|
|
var e = this;
|
|
return (
|
|
e.state.on("change:value", function(t) {
|
|
wr(e, t.value);
|
|
}),
|
|
e._super()
|
|
);
|
|
}
|
|
}),
|
|
Rr = Mt.extend({
|
|
renderHtml: function() {
|
|
return (
|
|
this.classes.add("spacer"),
|
|
(this.canFocus = !1),
|
|
'<div id="' + this._id + '" class="' + this.classes + '"></div>'
|
|
);
|
|
}
|
|
}),
|
|
Cr = dr.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),
|
|
ye(e).css({ width: i.w - we.getSize(t).width, height: i.h - 2 }),
|
|
ye(t).css({ height: i.h - 2 }),
|
|
this
|
|
);
|
|
},
|
|
activeMenu: function(e) {
|
|
ye(this.getEl().lastChild).toggleClass(this.classPrefix + "active", e);
|
|
},
|
|
renderHtml: function() {
|
|
var e,
|
|
t,
|
|
n = this,
|
|
i = n._id,
|
|
r = n.classPrefix,
|
|
o = n.state.get("icon"),
|
|
s = n.state.get("text"),
|
|
a = n.settings,
|
|
l = "";
|
|
return (
|
|
(e = a.image)
|
|
? ((o = "none"),
|
|
"string" != typeof e && (e = window.getSelection ? e[0] : e[1]),
|
|
(e = " style=\"background-image: url('" + e + "')\""))
|
|
: (e = ""),
|
|
(o = a.icon ? r + "ico " + r + "i-" + o : ""),
|
|
s &&
|
|
(n.classes.add("btn-has-text"),
|
|
(l = '<span class="' + r + 'txt">' + n.encode(s) + "</span>")),
|
|
(t =
|
|
"boolean" == typeof a.active
|
|
? ' aria-pressed="' + a.active + '"'
|
|
: ""),
|
|
'<div id="' +
|
|
i +
|
|
'" class="' +
|
|
n.classes +
|
|
'" role="button"' +
|
|
t +
|
|
' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">' +
|
|
(o ? '<i class="' + o + '"' + e + "></i>" : "") +
|
|
l +
|
|
'</button><button type="button" class="' +
|
|
r +
|
|
'open" hidefocus="1" tabindex="-1">' +
|
|
(n._menuBtnText ? (o ? "\xa0" : "") + n._menuBtnText : "") +
|
|
' <i class="' +
|
|
r +
|
|
'caret"></i></button></div>'
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this.settings.onclick;
|
|
return (
|
|
this.on("click", function(t) {
|
|
var n = t.target;
|
|
if (t.control === this)
|
|
for (; n; ) {
|
|
if (
|
|
(t.aria && "down" !== t.aria.key) ||
|
|
("BUTTON" === n.nodeName &&
|
|
-1 === n.className.indexOf("open"))
|
|
)
|
|
return (
|
|
t.stopImmediatePropagation(), void (e && e.call(this, t))
|
|
);
|
|
n = n.parentNode;
|
|
}
|
|
}),
|
|
delete this.settings.onclick,
|
|
this._super()
|
|
);
|
|
}
|
|
}),
|
|
kr = Mi.extend({
|
|
Defaults: {
|
|
containerClass: "stack-layout",
|
|
controlClass: "stack-layout-item",
|
|
endClass: "break"
|
|
},
|
|
isNative: function() {
|
|
return !0;
|
|
}
|
|
}),
|
|
Er = ft.extend({
|
|
Defaults: { layout: "absolute", defaults: { type: "panel" } },
|
|
activateTab: function(e) {
|
|
var t;
|
|
this.activeTabId &&
|
|
((t = this.getEl(this.activeTabId)),
|
|
ye(t).removeClass(this.classPrefix + "active"),
|
|
t.setAttribute("aria-selected", "false")),
|
|
(this.activeTabId = "t" + e),
|
|
(t = this.getEl("t" + e)).setAttribute("aria-selected", "true"),
|
|
ye(t).addClass(this.classPrefix + "active"),
|
|
this.items()
|
|
[e].show()
|
|
.fire("showtab"),
|
|
this.reflow(),
|
|
this.items().each(function(t, n) {
|
|
e !== n && t.hide();
|
|
});
|
|
},
|
|
renderHtml: function() {
|
|
var e = this,
|
|
t = e._layout,
|
|
n = "",
|
|
i = e.classPrefix;
|
|
return (
|
|
e.preRender(),
|
|
t.preRender(e),
|
|
e.items().each(function(t, r) {
|
|
var o = e._id + "-t" + r;
|
|
t.aria("role", "tabpanel"),
|
|
t.aria("labelledby", o),
|
|
(n +=
|
|
'<div id="' +
|
|
o +
|
|
'" class="' +
|
|
i +
|
|
'tab" unselectable="on" role="tab" aria-controls="' +
|
|
t._id +
|
|
'" aria-selected="false" tabIndex="-1">' +
|
|
e.encode(t.settings.title) +
|
|
"</div>");
|
|
}),
|
|
'<div id="' +
|
|
e._id +
|
|
'" class="' +
|
|
e.classes +
|
|
'" hidefocus="1" tabindex="-1"><div id="' +
|
|
e._id +
|
|
'-head" class="' +
|
|
i +
|
|
'tabs" role="tablist">' +
|
|
n +
|
|
'</div><div id="' +
|
|
e._id +
|
|
'-body" class="' +
|
|
e.bodyClasses +
|
|
'">' +
|
|
t.renderHtml(e) +
|
|
"</div></div>"
|
|
);
|
|
},
|
|
postRender: function() {
|
|
var e = this;
|
|
e._super(),
|
|
(e.settings.activeTab = e.settings.activeTab || 0),
|
|
e.activateTab(e.settings.activeTab),
|
|
this.on("click", function(t) {
|
|
var n = t.target.parentNode;
|
|
if (n && n.id === e._id + "-head")
|
|
for (var i = n.childNodes.length; i--; )
|
|
n.childNodes[i] === t.target && e.activateTab(i);
|
|
});
|
|
},
|
|
initLayoutRect: function() {
|
|
var e,
|
|
t,
|
|
n,
|
|
i = this;
|
|
(t = (t = we.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 = we.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
|
|
);
|
|
}
|
|
}),
|
|
Hr = Mt.extend({
|
|
init: function(e) {
|
|
var t = this;
|
|
t._super(e),
|
|
t.classes.add("textbox"),
|
|
e.multiline
|
|
? t.classes.add("multiline")
|
|
: (t.on("keydown", function(e) {
|
|
var n;
|
|
13 === e.keyCode &&
|
|
(e.preventDefault(),
|
|
t
|
|
.parents()
|
|
.reverse()
|
|
.each(function(e) {
|
|
if (e.toJSON) return (n = e), !1;
|
|
}),
|
|
t.fire("submit", { data: n.toJSON() }));
|
|
}),
|
|
t.on("keyup", function(e) {
|
|
t.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 e,
|
|
t,
|
|
n = this,
|
|
i = n.settings;
|
|
return (
|
|
(e = { id: n._id, hidefocus: "1" }),
|
|
a.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 = we.create(
|
|
i.multiline ? "textarea" : "input",
|
|
e
|
|
)).value = n.state.get("value")),
|
|
(t.className = n.classes),
|
|
t.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 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();
|
|
}
|
|
}),
|
|
Sr = function() {
|
|
return {
|
|
Selector: Be,
|
|
Collection: Le,
|
|
ReflowQueue: qe,
|
|
Control: et,
|
|
Factory: g,
|
|
KeyboardNavigation: nt,
|
|
Container: rt,
|
|
DragHelper: ct,
|
|
Scrollable: dt,
|
|
Panel: ft,
|
|
Movable: Re,
|
|
Resizable: ht,
|
|
FloatPanel: xt,
|
|
Window: zt,
|
|
MessageBox: Lt,
|
|
Tooltip: St,
|
|
Widget: Mt,
|
|
Progress: Tt,
|
|
Notification: Wt,
|
|
Layout: Ft,
|
|
AbsoluteLayout: Vt,
|
|
Button: Ut,
|
|
ButtonGroup: $t,
|
|
Checkbox: jt,
|
|
ComboBox: Xt,
|
|
ColorBox: Jt,
|
|
PanelButton: Gt,
|
|
ColorButton: Zt,
|
|
ColorPicker: en,
|
|
Path: nn,
|
|
ElementPath: rn,
|
|
FormItem: on,
|
|
Form: sn,
|
|
FieldSet: an,
|
|
FilePicker: Ei,
|
|
FitLayout: Hi,
|
|
FlexLayout: Si,
|
|
FlowLayout: Mi,
|
|
FormatControls: rr,
|
|
GridLayout: or,
|
|
Iframe: sr,
|
|
InfoBox: ar,
|
|
Label: lr,
|
|
Toolbar: ur,
|
|
MenuBar: cr,
|
|
MenuButton: dr,
|
|
MenuItem: mr,
|
|
Throbber: kt,
|
|
Menu: fr,
|
|
ListBox: hr,
|
|
Radio: gr,
|
|
ResizeHandle: pr,
|
|
SelectBox: br,
|
|
Slider: _r,
|
|
Spacer: Rr,
|
|
SplitButton: Cr,
|
|
StackLayout: kr,
|
|
TabPanel: Er,
|
|
TextBox: Hr,
|
|
DropZone: tn,
|
|
BrowseButton: Yt
|
|
};
|
|
},
|
|
Mr = function(e) {
|
|
e.ui
|
|
? a.each(Sr(), function(t, n) {
|
|
e.ui[n] = t;
|
|
})
|
|
: (e.ui = Sr());
|
|
};
|
|
a.each(Sr(), function(e, t) {
|
|
g.add(t, e);
|
|
}),
|
|
Mr(window.tinymce ? window.tinymce : {}),
|
|
o.add("modern", function(e) {
|
|
return rr.setup(e), It(e);
|
|
});
|
|
})();
|