shell bypass 403
/*! grapesjs - 0.16.34 has remove style manager*/
! function(t, e) {
"object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.grapesjs = e() : t.grapesjs = e()
}(window, function() {
return function(t) {
var e = {};
function n(r) {
if (e[r]) return e[r].exports;
var i = e[r] = {
i: r,
l: !1,
exports: {}
};
return t[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports
}
return n.m = t, n.c = e, n.d = function(t, e, r) {
n.o(t, e) || Object.defineProperty(t, e, {
enumerable: !0,
get: r
})
}, n.r = function(t) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
value: "Module"
}), Object.defineProperty(t, "__esModule", {
value: !0
})
}, n.t = function(t, e) {
if (1 & e && (t = n(t)), 8 & e) return t;
if (4 & e && "object" == typeof t && t && t.__esModule) return t;
var r = Object.create(null);
if (n.r(r), Object.defineProperty(r, "default", {
enumerable: !0,
value: t
}), 2 & e && "string" != typeof t)
for (var i in t) n.d(r, i, function(e) {
return t[e]
}.bind(null, i));
return r
}, n.n = function(t) {
var e = t && t.__esModule ? function() {
return t.default
} : function() {
return t
};
return n.d(e, "a", e), e
}, n.o = function(t, e) {
return Object.prototype.hasOwnProperty.call(t, e)
}, n.p = "", n(n.s = 97)
}([function(t, e, n) {
"use strict";
n.r(e), n.d(e, "default", function() {
return xn
}), n.d(e, "VERSION", function() {
return i.e
}), n.d(e, "restArguments", function() {
return o
}), n.d(e, "isObject", function() {
return a
}), n.d(e, "isNull", function() {
return s
}), n.d(e, "isUndefined", function() {
return l
}), n.d(e, "isBoolean", function() {
return c
}), n.d(e, "isElement", function() {
return u
}), n.d(e, "isString", function() {
return h
}), n.d(e, "isNumber", function() {
return f
}), n.d(e, "isDate", function() {
return p
}), n.d(e, "isRegExp", function() {
return g
}), n.d(e, "isError", function() {
return v
}), n.d(e, "isSymbol", function() {
return m
}), n.d(e, "isArrayBuffer", function() {
return b
}), n.d(e, "isDataView", function() {
return j
}), n.d(e, "isArray", function() {
return T
}), n.d(e, "isFunction", function() {
return x
}), n.d(e, "isArguments", function() {
return M
}), n.d(e, "isFinite", function() {
return D
}), n.d(e, "isNaN", function() {
return A
}), n.d(e, "isTypedArray", function() {
return R
}), n.d(e, "isEmpty", function() {
return U
}), n.d(e, "isMatch", function() {
return B
}), n.d(e, "isEqual", function() {
return K
}), n.d(e, "isMap", function() {
return rt
}), n.d(e, "isWeakMap", function() {
return it
}), n.d(e, "isSet", function() {
return ot
}), n.d(e, "isWeakSet", function() {
return at
}), n.d(e, "keys", function() {
return $
}), n.d(e, "allKeys", function() {
return Y
}), n.d(e, "values", function() {
return st
}), n.d(e, "pairs", function() {
return lt
}), n.d(e, "invert", function() {
return ct
}), n.d(e, "functions", function() {
return ut
}), n.d(e, "methods", function() {
return ut
}), n.d(e, "extend", function() {
return ht
}), n.d(e, "extendOwn", function() {
return ft
}), n.d(e, "assign", function() {
return ft
}), n.d(e, "defaults", function() {
return pt
}), n.d(e, "create", function() {
return vt
}), n.d(e, "clone", function() {
return mt
}), n.d(e, "tap", function() {
return bt
}), n.d(e, "get", function() {
return Ot
}), n.d(e, "has", function() {
return Ct
}), n.d(e, "mapObject", function() {
return Dt
}), n.d(e, "identity", function() {
return St
}), n.d(e, "constant", function() {
return L
}), n.d(e, "noop", function() {
return At
}), n.d(e, "toPath", function() {
return yt
}), n.d(e, "property", function() {
return jt
}), n.d(e, "propertyOf", function() {
return Lt
}), n.d(e, "matcher", function() {
return kt
}), n.d(e, "matches", function() {
return kt
}), n.d(e, "times", function() {
return _t
}), n.d(e, "random", function() {
return Nt
}), n.d(e, "now", function() {
return It
}), n.d(e, "escape", function() {
return Rt
}), n.d(e, "unescape", function() {
return zt
}), n.d(e, "templateSettings", function() {
return Ht
}), n.d(e, "template", function() {
return qt
}), n.d(e, "result", function() {
return Gt
}), n.d(e, "uniqueId", function() {
return Yt
}), n.d(e, "chain", function() {
return Xt
}), n.d(e, "iteratee", function() {
return Et
}), n.d(e, "partial", function() {
return Qt
}), n.d(e, "bind", function() {
return te
}), n.d(e, "bindAll", function() {
return re
}), n.d(e, "memoize", function() {
return ie
}), n.d(e, "delay", function() {
return oe
}), n.d(e, "defer", function() {
return ae
}), n.d(e, "throttle", function() {
return se
}), n.d(e, "debounce", function() {
return le
}), n.d(e, "wrap", function() {
return ce
}), n.d(e, "negate", function() {
return ue
}), n.d(e, "compose", function() {
return de
}), n.d(e, "after", function() {
return he
}), n.d(e, "before", function() {
return fe
}), n.d(e, "once", function() {
return pe
}), n.d(e, "findKey", function() {
return ge
}), n.d(e, "findIndex", function() {
return me
}), n.d(e, "findLastIndex", function() {
return be
}), n.d(e, "sortedIndex", function() {
return ye
}), n.d(e, "indexOf", function() {
return xe
}), n.d(e, "lastIndexOf", function() {
return Oe
}), n.d(e, "find", function() {
return Ce
}), n.d(e, "detect", function() {
return Ce
}), n.d(e, "findWhere", function() {
return Se
}), n.d(e, "each", function() {
return ke
}), n.d(e, "forEach", function() {
return ke
}), n.d(e, "map", function() {
return je
}), n.d(e, "collect", function() {
return je
}), n.d(e, "reduce", function() {
return Pe
}), n.d(e, "foldl", function() {
return Pe
}), n.d(e, "inject", function() {
return Pe
}), n.d(e, "reduceRight", function() {
return Ee
}), n.d(e, "foldr", function() {
return Ee
}), n.d(e, "filter", function() {
return Me
}), n.d(e, "select", function() {
return Me
}), n.d(e, "reject", function() {
return De
}), n.d(e, "every", function() {
return Ae
}), n.d(e, "all", function() {
return Ae
}), n.d(e, "some", function() {
return Le
}), n.d(e, "any", function() {
return Le
}), n.d(e, "contains", function() {
return _e
}), n.d(e, "includes", function() {
return _e
}), n.d(e, "include", function() {
return _e
}), n.d(e, "invoke", function() {
return Ne
}), n.d(e, "pluck", function() {
return Ie
}), n.d(e, "where", function() {
return Fe
}), n.d(e, "max", function() {
return Ve
}), n.d(e, "min", function() {
return Re
}), n.d(e, "shuffle", function() {
return He
}), n.d(e, "sample", function() {
return ze
}), n.d(e, "sortBy", function() {
return $e
}), n.d(e, "groupBy", function() {
return Be
}), n.d(e, "indexBy", function() {
return We
}), n.d(e, "countBy", function() {
return qe
}), n.d(e, "partition", function() {
return Ge
}), n.d(e, "toArray", function() {
return Ye
}), n.d(e, "size", function() {
return Xe
}), n.d(e, "pick", function() {
return Ze
}), n.d(e, "omit", function() {
return Qe
}), n.d(e, "first", function() {
return en
}), n.d(e, "head", function() {
return en
}), n.d(e, "take", function() {
return en
}), n.d(e, "initial", function() {
return tn
}), n.d(e, "last", function() {
return rn
}), n.d(e, "rest", function() {
return nn
}), n.d(e, "tail", function() {
return nn
}), n.d(e, "drop", function() {
return nn
}), n.d(e, "compact", function() {
return on
}), n.d(e, "flatten", function() {
return an
}), n.d(e, "without", function() {
return ln
}), n.d(e, "uniq", function() {
return cn
}), n.d(e, "unique", function() {
return cn
}), n.d(e, "union", function() {
return un
}), n.d(e, "intersection", function() {
return dn
}), n.d(e, "difference", function() {
return sn
}), n.d(e, "unzip", function() {
return hn
}), n.d(e, "transpose", function() {
return hn
}), n.d(e, "zip", function() {
return fn
}), n.d(e, "object", function() {
return pn
}), n.d(e, "range", function() {
return gn
}), n.d(e, "chunk", function() {
return vn
}), n.d(e, "mixin", function() {
return bn
});
var r = {};
n.r(r), n.d(r, "VERSION", function() {
return i.e
}), n.d(r, "restArguments", function() {
return o
}), n.d(r, "isObject", function() {
return a
}), n.d(r, "isNull", function() {
return s
}), n.d(r, "isUndefined", function() {
return l
}), n.d(r, "isBoolean", function() {
return c
}), n.d(r, "isElement", function() {
return u
}), n.d(r, "isString", function() {
return h
}), n.d(r, "isNumber", function() {
return f
}), n.d(r, "isDate", function() {
return p
}), n.d(r, "isRegExp", function() {
return g
}), n.d(r, "isError", function() {
return v
}), n.d(r, "isSymbol", function() {
return m
}), n.d(r, "isArrayBuffer", function() {
return b
}), n.d(r, "isDataView", function() {
return j
}), n.d(r, "isArray", function() {
return T
}), n.d(r, "isFunction", function() {
return x
}), n.d(r, "isArguments", function() {
return M
}), n.d(r, "isFinite", function() {
return D
}), n.d(r, "isNaN", function() {
return A
}), n.d(r, "isTypedArray", function() {
return R
}), n.d(r, "isEmpty", function() {
return U
}), n.d(r, "isMatch", function() {
return B
}), n.d(r, "isEqual", function() {
return K
}), n.d(r, "isMap", function() {
return rt
}), n.d(r, "isWeakMap", function() {
return it
}), n.d(r, "isSet", function() {
return ot
}), n.d(r, "isWeakSet", function() {
return at
}), n.d(r, "keys", function() {
return $
}), n.d(r, "allKeys", function() {
return Y
}), n.d(r, "values", function() {
return st
}), n.d(r, "pairs", function() {
return lt
}), n.d(r, "invert", function() {
return ct
}), n.d(r, "functions", function() {
return ut
}), n.d(r, "methods", function() {
return ut
}), n.d(r, "extend", function() {
return ht
}), n.d(r, "extendOwn", function() {
return ft
}), n.d(r, "assign", function() {
return ft
}), n.d(r, "defaults", function() {
return pt
}), n.d(r, "create", function() {
return vt
}), n.d(r, "clone", function() {
return mt
}), n.d(r, "tap", function() {
return bt
}), n.d(r, "get", function() {
return Ot
}), n.d(r, "has", function() {
return Ct
}), n.d(r, "mapObject", function() {
return Dt
}), n.d(r, "identity", function() {
return St
}), n.d(r, "constant", function() {
return L
}), n.d(r, "noop", function() {
return At
}), n.d(r, "toPath", function() {
return yt
}), n.d(r, "property", function() {
return jt
}), n.d(r, "propertyOf", function() {
return Lt
}), n.d(r, "matcher", function() {
return kt
}), n.d(r, "matches", function() {
return kt
}), n.d(r, "times", function() {
return _t
}), n.d(r, "random", function() {
return Nt
}), n.d(r, "now", function() {
return It
}), n.d(r, "escape", function() {
return Rt
}), n.d(r, "unescape", function() {
return zt
}), n.d(r, "templateSettings", function() {
return Ht
}), n.d(r, "template", function() {
return qt
}), n.d(r, "result", function() {
return Gt
}), n.d(r, "uniqueId", function() {
return Yt
}), n.d(r, "chain", function() {
return Xt
}), n.d(r, "iteratee", function() {
return Et
}), n.d(r, "partial", function() {
return Qt
}), n.d(r, "bind", function() {
return te
}), n.d(r, "bindAll", function() {
return re
}), n.d(r, "memoize", function() {
return ie
}), n.d(r, "delay", function() {
return oe
}), n.d(r, "defer", function() {
return ae
}), n.d(r, "throttle", function() {
return se
}), n.d(r, "debounce", function() {
return le
}), n.d(r, "wrap", function() {
return ce
}), n.d(r, "negate", function() {
return ue
}), n.d(r, "compose", function() {
return de
}), n.d(r, "after", function() {
return he
}), n.d(r, "before", function() {
return fe
}), n.d(r, "once", function() {
return pe
}), n.d(r, "findKey", function() {
return ge
}), n.d(r, "findIndex", function() {
return me
}), n.d(r, "findLastIndex", function() {
return be
}), n.d(r, "sortedIndex", function() {
return ye
}), n.d(r, "indexOf", function() {
return xe
}), n.d(r, "lastIndexOf", function() {
return Oe
}), n.d(r, "find", function() {
return Ce
}), n.d(r, "detect", function() {
return Ce
}), n.d(r, "findWhere", function() {
return Se
}), n.d(r, "each", function() {
return ke
}), n.d(r, "forEach", function() {
return ke
}), n.d(r, "map", function() {
return je
}), n.d(r, "collect", function() {
return je
}), n.d(r, "reduce", function() {
return Pe
}), n.d(r, "foldl", function() {
return Pe
}), n.d(r, "inject", function() {
return Pe
}), n.d(r, "reduceRight", function() {
return Ee
}), n.d(r, "foldr", function() {
return Ee
}), n.d(r, "filter", function() {
return Me
}), n.d(r, "select", function() {
return Me
}), n.d(r, "reject", function() {
return De
}), n.d(r, "every", function() {
return Ae
}), n.d(r, "all", function() {
return Ae
}), n.d(r, "some", function() {
return Le
}), n.d(r, "any", function() {
return Le
}), n.d(r, "contains", function() {
return _e
}), n.d(r, "includes", function() {
return _e
}), n.d(r, "include", function() {
return _e
}), n.d(r, "invoke", function() {
return Ne
}), n.d(r, "pluck", function() {
return Ie
}), n.d(r, "where", function() {
return Fe
}), n.d(r, "max", function() {
return Ve
}), n.d(r, "min", function() {
return Re
}), n.d(r, "shuffle", function() {
return He
}), n.d(r, "sample", function() {
return ze
}), n.d(r, "sortBy", function() {
return $e
}), n.d(r, "groupBy", function() {
return Be
}), n.d(r, "indexBy", function() {
return We
}), n.d(r, "countBy", function() {
return qe
}), n.d(r, "partition", function() {
return Ge
}), n.d(r, "toArray", function() {
return Ye
}), n.d(r, "size", function() {
return Xe
}), n.d(r, "pick", function() {
return Ze
}), n.d(r, "omit", function() {
return Qe
}), n.d(r, "first", function() {
return en
}), n.d(r, "head", function() {
return en
}), n.d(r, "take", function() {
return en
}), n.d(r, "initial", function() {
return tn
}), n.d(r, "last", function() {
return rn
}), n.d(r, "rest", function() {
return nn
}), n.d(r, "tail", function() {
return nn
}), n.d(r, "drop", function() {
return nn
}), n.d(r, "compact", function() {
return on
}), n.d(r, "flatten", function() {
return an
}), n.d(r, "without", function() {
return ln
}), n.d(r, "uniq", function() {
return cn
}), n.d(r, "unique", function() {
return cn
}), n.d(r, "union", function() {
return un
}), n.d(r, "intersection", function() {
return dn
}), n.d(r, "difference", function() {
return sn
}), n.d(r, "unzip", function() {
return hn
}), n.d(r, "transpose", function() {
return hn
}), n.d(r, "zip", function() {
return fn
}), n.d(r, "object", function() {
return pn
}), n.d(r, "range", function() {
return gn
}), n.d(r, "chunk", function() {
return vn
}), n.d(r, "mixin", function() {
return bn
}), n.d(r, "default", function() {
return yn
});
var i = n(4);
function o(t, e) {
return e = null == e ? t.length - 1 : +e,
function() {
for (var n = Math.max(arguments.length - e, 0), r = Array(n), i = 0; i < n; i++) r[i] = arguments[i + e];
switch (e) {
case 0:
return t.call(this, r);
case 1:
return t.call(this, arguments[0], r);
case 2:
return t.call(this, arguments[0], arguments[1], r)
}
var o = Array(e + 1);
for (i = 0; i < e; i++) o[i] = arguments[i];
return o[e] = r, t.apply(this, o)
}
}
function a(t) {
var e = typeof t;
return "function" === e || "object" === e && !!t
}
function s(t) {
return null === t
}
function l(t) {
return void 0 === t
}
function c(t) {
return !0 === t || !1 === t || "[object Boolean]" === i.t.call(t)
}
function u(t) {
return !(!t || 1 !== t.nodeType)
}
function d(t) {
var e = "[object " + t + "]";
return function(t) {
return i.t.call(t) === e
}
}
var h = d("String"),
f = d("Number"),
p = d("Date"),
g = d("RegExp"),
v = d("Error"),
m = d("Symbol"),
b = d("ArrayBuffer"),
y = d("Function"),
w = i.p.document && i.p.document.childNodes;
"object" != typeof Int8Array && "function" != typeof w && (y = function(t) {
return "function" == typeof t || !1
});
var x = y,
O = d("Object"),
C = i.s && O(new DataView(new ArrayBuffer(8))),
S = "undefined" != typeof Map && O(new Map),
k = d("DataView"),
j = C ? function(t) {
return null != t && x(t.getInt8) && b(t.buffer)
} : k,
T = i.k || d("Array");
function P(t, e) {
return null != t && i.i.call(t, e)
}
var E = d("Arguments");
! function() {
E(arguments) || (E = function(t) {
return P(t, "callee")
})
}();
var M = E;
function D(t) {
return !m(t) && Object(i.f)(t) && !isNaN(parseFloat(t))
}
function A(t) {
return f(t) && Object(i.g)(t)
}
function L(t) {
return function() {
return t
}
}
function _(t) {
return function(e) {
var n = t(e);
return "number" == typeof n && n >= 0 && n <= i.b
}
}
function N(t) {
return function(e) {
return null == e ? void 0 : e[t]
}
}
var I = N("byteLength"),
F = _(I),
V = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/,
R = i.r ? function(t) {
return i.l ? Object(i.l)(t) && !j(t) : F(t) && V.test(i.t.call(t))
} : L(!1),
z = N("length");
function H(t, e) {
e = function(t) {
for (var e = {}, n = t.length, r = 0; r < n; ++r) e[t[r]] = !0;
return {
contains: function(t) {
return e[t]
},
push: function(n) {
return e[n] = !0, t.push(n)
}
}
}(e);
var n = i.n.length,
r = t.constructor,
o = x(r) && r.prototype || i.c,
a = "constructor";
for (P(t, a) && !e.contains(a) && e.push(a); n--;)(a = i.n[n]) in t && t[a] !== o[a] && !e.contains(a) && e.push(a)
}
function $(t) {
if (!a(t)) return [];
if (i.m) return Object(i.m)(t);
var e = [];
for (var n in t) P(t, n) && e.push(n);
return i.h && H(t, e), e
}
function U(t) {
if (null == t) return !0;
var e = z(t);
return "number" == typeof e && (T(t) || h(t) || M(t)) ? 0 === e : 0 === z($(t))
}
function B(t, e) {
var n = $(e),
r = n.length;
if (null == t) return !r;
for (var i = Object(t), o = 0; o < r; o++) {
var a = n[o];
if (e[a] !== i[a] || !(a in i)) return !1
}
return !0
}
function W(t) {
return t instanceof W ? t : this instanceof W ? void(this._wrapped = t) : new W(t)
}
function q(t) {
return new Uint8Array(t.buffer || t, t.byteOffset || 0, I(t))
}
W.VERSION = i.e, W.prototype.value = function() {
return this._wrapped
}, W.prototype.valueOf = W.prototype.toJSON = W.prototype.value, W.prototype.toString = function() {
return String(this._wrapped)
};
var G = "[object DataView]";
function K(t, e) {
return function t(e, n, r, o) {
if (e === n) return 0 !== e || 1 / e == 1 / n;
if (null == e || null == n) return !1;
if (e != e) return n != n;
var a = typeof e;
return ("function" === a || "object" === a || "object" == typeof n) && function e(n, r, o, a) {
n instanceof W && (n = n._wrapped), r instanceof W && (r = r._wrapped);
var s = i.t.call(n);
if (s !== i.t.call(r)) return !1;
if (C && "[object Object]" == s && j(n)) {
if (!j(r)) return !1;
s = G
}
switch (s) {
case "[object RegExp]":
case "[object String]":
return "" + n == "" + r;
case "[object Number]":
return +n != +n ? +r != +r : 0 == +n ? 1 / +n == 1 / r : +n == +r;
case "[object Date]":
case "[object Boolean]":
return +n == +r;
case "[object Symbol]":
return i.d.valueOf.call(n) === i.d.valueOf.call(r);
case "[object ArrayBuffer]":
case G:
return e(q(n), q(r), o, a)
}
var l = "[object Array]" === s;
if (!l && R(n)) {
if (I(n) !== I(r)) return !1;
if (n.buffer === r.buffer && n.byteOffset === r.byteOffset) return !0;
l = !0
}
if (!l) {
if ("object" != typeof n || "object" != typeof r) return !1;
var c = n.constructor,
u = r.constructor;
if (c !== u && !(x(c) && c instanceof c && x(u) && u instanceof u) && "constructor" in n && "constructor" in r) return !1
}
a = a || [];
for (var d = (o = o || []).length; d--;)
if (o[d] === n) return a[d] === r;
if (o.push(n), a.push(r), l) {
if ((d = n.length) !== r.length) return !1;
for (; d--;)
if (!t(n[d], r[d], o, a)) return !1
} else {
var h, f = $(n);
if (d = f.length, $(r).length !== d) return !1;
for (; d--;)
if (!P(r, h = f[d]) || !t(n[h], r[h], o, a)) return !1
}
return o.pop(), a.pop(), !0
}(e, n, r, o)
}(t, e)
}
function Y(t) {
if (!a(t)) return [];
var e = [];
for (var n in t) e.push(n);
return i.h && H(t, e), e
}
function X(t) {
var e = z(t);
return function(n) {
if (null == n) return !1;
var r = Y(n);
if (z(r)) return !1;
for (var i = 0; i < e; i++)
if (!x(n[t[i]])) return !1;
return t !== et || !x(n[J])
}
}
var J = "forEach",
Z = ["clear", "delete"],
Q = ["get", "has", "set"],
tt = Z.concat(J, Q),
et = Z.concat(Q),
nt = ["add"].concat(Z, J, "has"),
rt = S ? X(tt) : d("Map"),
it = S ? X(et) : d("WeakMap"),
ot = S ? X(nt) : d("Set"),
at = d("WeakSet");
function st(t) {
for (var e = $(t), n = e.length, r = Array(n), i = 0; i < n; i++) r[i] = t[e[i]];
return r
}
function lt(t) {
for (var e = $(t), n = e.length, r = Array(n), i = 0; i < n; i++) r[i] = [e[i], t[e[i]]];
return r
}
function ct(t) {
for (var e = {}, n = $(t), r = 0, i = n.length; r < i; r++) e[t[n[r]]] = n[r];
return e
}
function ut(t) {
var e = [];
for (var n in t) x(t[n]) && e.push(n);
return e.sort()
}
function dt(t, e) {
return function(n) {
var r = arguments.length;
if (e && (n = Object(n)), r < 2 || null == n) return n;
for (var i = 1; i < r; i++)
for (var o = arguments[i], a = t(o), s = a.length, l = 0; l < s; l++) {
var c = a[l];
e && void 0 !== n[c] || (n[c] = o[c])
}
return n
}
}
var ht = dt(Y),
ft = dt($),
pt = dt(Y, !0);
function gt(t) {
if (!a(t)) return {};
if (i.j) return Object(i.j)(t);
var e = function() {};
e.prototype = t;
var n = new e;
return e.prototype = null, n
}
function vt(t, e) {
var n = gt(t);
return e && ft(n, e), n
}
function mt(t) {
return a(t) ? T(t) ? t.slice() : ht({}, t) : t
}
function bt(t, e) {
return e(t), t
}
function yt(t) {
return T(t) ? t : [t]
}
function wt(t) {
return W.toPath(t)
}
function xt(t, e) {
for (var n = e.length, r = 0; r < n; r++) {
if (null == t) return;
t = t[e[r]]
}
return n ? t : void 0
}
function Ot(t, e, n) {
var r = xt(t, wt(e));
return l(r) ? n : r
}
function Ct(t, e) {
for (var n = (e = wt(e)).length, r = 0; r < n; r++) {
var i = e[r];
if (!P(t, i)) return !1;
t = t[i]
}
return !!n
}
function St(t) {
return t
}
function kt(t) {
return t = ft({}, t),
function(e) {
return B(e, t)
}
}
function jt(t) {
return t = wt(t),
function(e) {
return xt(e, t)
}
}
function Tt(t, e, n) {
if (void 0 === e) return t;
switch (null == n ? 3 : n) {
case 1:
return function(n) {
return t.call(e, n)
};
case 3:
return function(n, r, i) {
return t.call(e, n, r, i)
};
case 4:
return function(n, r, i, o) {
return t.call(e, n, r, i, o)
}
}
return function() {
return t.apply(e, arguments)
}
}
function Pt(t, e, n) {
return null == t ? St : x(t) ? Tt(t, e, n) : a(t) && !T(t) ? kt(t) : jt(t)
}
function Et(t, e) {
return Pt(t, e, 1 / 0)
}
function Mt(t, e, n) {
return W.iteratee !== Et ? W.iteratee(t, e) : Pt(t, e, n)
}
function Dt(t, e, n) {
e = Mt(e, n);
for (var r = $(t), i = r.length, o = {}, a = 0; a < i; a++) {
var s = r[a];
o[s] = e(t[s], s, t)
}
return o
}
function At() {}
function Lt(t) {
return null == t ? At : function(e) {
return Ot(t, e)
}
}
function _t(t, e, n) {
var r = Array(Math.max(0, t));
e = Tt(e, n, 1);
for (var i = 0; i < t; i++) r[i] = e(i);
return r
}
function Nt(t, e) {
return null == e && (e = t, t = 0), t + Math.floor(Math.random() * (e - t + 1))
}
W.toPath = yt, W.iteratee = Et;
var It = Date.now || function() {
return (new Date).getTime()
};
function Ft(t) {
var e = function(e) {
return t[e]
},
n = "(?:" + $(t).join("|") + ")",
r = RegExp(n),
i = RegExp(n, "g");
return function(t) {
return t = null == t ? "" : "" + t, r.test(t) ? t.replace(i, e) : t
}
}
var Vt = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
"`": "`"
},
Rt = Ft(Vt),
zt = Ft(ct(Vt)),
Ht = W.templateSettings = {
evaluate: /<%([\s\S]+?)%>/g,
interpolate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
},
$t = /(.)^/,
Ut = {
"'": "'",
"\\": "\\",
"\r": "r",
"\n": "n",
"\u2028": "u2028",
"\u2029": "u2029"
},
Bt = /\\|'|\r|\n|\u2028|\u2029/g;
function Wt(t) {
return "\\" + Ut[t]
}
function qt(t, e, n) {
!e && n && (e = n), e = pt({}, e, W.templateSettings);
var r, i = RegExp([(e.escape || $t).source, (e.interpolate || $t).source, (e.evaluate || $t).source].join("|") + "|$", "g"),
o = 0,
a = "__p+='";
t.replace(i, function(e, n, r, i, s) {
return a += t.slice(o, s).replace(Bt, Wt), o = s + e.length, n ? a += "'+\n((__t=(" + n + "))==null?'':_.escape(__t))+\n'" : r ? a += "'+\n((__t=(" + r + "))==null?'':__t)+\n'" : i && (a += "';\n" + i + "\n__p+='"), e
}), a += "';\n", e.variable || (a = "with(obj||{}){\n" + a + "}\n"), a = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + a + "return __p;\n";
try {
r = new Function(e.variable || "obj", "_", a)
} catch (t) {
throw t.source = a, t
}
var s = function(t) {
return r.call(this, t, W)
},
l = e.variable || "obj";
return s.source = "function(" + l + "){\n" + a + "}", s
}
function Gt(t, e, n) {
var r = (e = wt(e)).length;
if (!r) return x(n) ? n.call(t) : n;
for (var i = 0; i < r; i++) {
var o = null == t ? void 0 : t[e[i]];
void 0 === o && (o = n, i = r), t = x(o) ? o.call(t) : o
}
return t
}
var Kt = 0;
function Yt(t) {
var e = ++Kt + "";
return t ? t + e : e
}
function Xt(t) {
var e = W(t);
return e._chain = !0, e
}
function Jt(t, e, n, r, i) {
if (!(r instanceof e)) return t.apply(n, i);
var o = gt(t.prototype),
s = t.apply(o, i);
return a(s) ? s : o
}
var Zt = o(function(t, e) {
var n = Zt.placeholder,
r = function() {
for (var i = 0, o = e.length, a = Array(o), s = 0; s < o; s++) a[s] = e[s] === n ? arguments[i++] : e[s];
for (; i < arguments.length;) a.push(arguments[i++]);
return Jt(t, r, this, this, a)
};
return r
});
Zt.placeholder = W;
var Qt = Zt,
te = o(function(t, e, n) {
if (!x(t)) throw new TypeError("Bind must be called on a function");
var r = o(function(i) {
return Jt(t, r, e, this, n.concat(i))
});
return r
}),
ee = _(z);
function ne(t, e, n, r) {
if (r = r || [], e || 0 === e) {
if (e <= 0) return r.concat(t)
} else e = 1 / 0;
for (var i = r.length, o = 0, a = z(t); o < a; o++) {
var s = t[o];
if (ee(s) && (T(s) || M(s)))
if (e > 1) ne(s, e - 1, n, r), i = r.length;
else
for (var l = 0, c = s.length; l < c;) r[i++] = s[l++];
else n || (r[i++] = s)
}
return r
}
var re = o(function(t, e) {
var n = (e = ne(e, !1, !1)).length;
if (n < 1) throw new Error("bindAll must be passed function names");
for (; n--;) {
var r = e[n];
t[r] = te(t[r], t)
}
return t
});
function ie(t, e) {
var n = function(r) {
var i = n.cache,
o = "" + (e ? e.apply(this, arguments) : r);
return P(i, o) || (i[o] = t.apply(this, arguments)), i[o]
};
return n.cache = {}, n
}
var oe = o(function(t, e, n) {
return setTimeout(function() {
return t.apply(null, n)
}, e)
}),
ae = Qt(oe, W, 1);
function se(t, e, n) {
var r, i, o, a, s = 0;
n || (n = {});
var l = function() {
s = !1 === n.leading ? 0 : It(), r = null, a = t.apply(i, o), r || (i = o = null)
},
c = function() {
var c = It();
s || !1 !== n.leading || (s = c);
var u = e - (c - s);
return i = this, o = arguments, u <= 0 || u > e ? (r && (clearTimeout(r), r = null), s = c, a = t.apply(i, o), r || (i = o = null)) : r || !1 === n.trailing || (r = setTimeout(l, u)), a
};
return c.cancel = function() {
clearTimeout(r), s = 0, r = i = o = null
}, c
}
function le(t, e, n) {
var r, i, a = function(e, n) {
r = null, n && (i = t.apply(e, n))
},
s = o(function(o) {
if (r && clearTimeout(r), n) {
var s = !r;
r = setTimeout(a, e), s && (i = t.apply(this, o))
} else r = oe(a, e, this, o);
return i
});
return s.cancel = function() {
clearTimeout(r), r = null
}, s
}
function ce(t, e) {
return Qt(e, t)
}
function ue(t) {
return function() {
return !t.apply(this, arguments)
}
}
function de() {
var t = arguments,
e = t.length - 1;
return function() {
for (var n = e, r = t[e].apply(this, arguments); n--;) r = t[n].call(this, r);
return r
}
}
function he(t, e) {
return function() {
if (--t < 1) return e.apply(this, arguments)
}
}
function fe(t, e) {
var n;
return function() {
return --t > 0 && (n = e.apply(this, arguments)), t <= 1 && (e = null), n
}
}
var pe = Qt(fe, 2);
function ge(t, e, n) {
e = Mt(e, n);
for (var r, i = $(t), o = 0, a = i.length; o < a; o++)
if (e(t[r = i[o]], r, t)) return r
}
function ve(t) {
return function(e, n, r) {
n = Mt(n, r);
for (var i = z(e), o = t > 0 ? 0 : i - 1; o >= 0 && o < i; o += t)
if (n(e[o], o, e)) return o;
return -1
}
}
var me = ve(1),
be = ve(-1);
function ye(t, e, n, r) {
for (var i = (n = Mt(n, r, 1))(e), o = 0, a = z(t); o < a;) {
var s = Math.floor((o + a) / 2);
n(t[s]) < i ? o = s + 1 : a = s
}
return o
}
function we(t, e, n) {
return function(r, o, a) {
var s = 0,
l = z(r);
if ("number" == typeof a) t > 0 ? s = a >= 0 ? a : Math.max(a + l, s) : l = a >= 0 ? Math.min(a + 1, l) : a + l + 1;
else if (n && a && l) return r[a = n(r, o)] === o ? a : -1;
if (o != o) return (a = e(i.q.call(r, s, l), A)) >= 0 ? a + s : -1;
for (a = t > 0 ? s : l - 1; a >= 0 && a < l; a += t)
if (r[a] === o) return a;
return -1
}
}
var xe = we(1, me, ye),
Oe = we(-1, be);
function Ce(t, e, n) {
var r = (ee(t) ? me : ge)(t, e, n);
if (void 0 !== r && -1 !== r) return t[r]
}
function Se(t, e) {
return Ce(t, kt(e))
}
function ke(t, e, n) {
var r, i;
if (e = Tt(e, n), ee(t))
for (r = 0, i = t.length; r < i; r++) e(t[r], r, t);
else {
var o = $(t);
for (r = 0, i = o.length; r < i; r++) e(t[o[r]], o[r], t)
}
return t
}
function je(t, e, n) {
e = Mt(e, n);
for (var r = !ee(t) && $(t), i = (r || t).length, o = Array(i), a = 0; a < i; a++) {
var s = r ? r[a] : a;
o[a] = e(t[s], s, t)
}
return o
}
function Te(t) {
var e = function(e, n, r, i) {
var o = !ee(e) && $(e),
a = (o || e).length,
s = t > 0 ? 0 : a - 1;
for (i || (r = e[o ? o[s] : s], s += t); s >= 0 && s < a; s += t) {
var l = o ? o[s] : s;
r = n(r, e[l], l, e)
}
return r
};
return function(t, n, r, i) {
var o = arguments.length >= 3;
return e(t, Tt(n, i, 4), r, o)
}
}
var Pe = Te(1),
Ee = Te(-1);
function Me(t, e, n) {
var r = [];
return e = Mt(e, n), ke(t, function(t, n, i) {
e(t, n, i) && r.push(t)
}), r
}
function De(t, e, n) {
return Me(t, ue(Mt(e)), n)
}
function Ae(t, e, n) {
e = Mt(e, n);
for (var r = !ee(t) && $(t), i = (r || t).length, o = 0; o < i; o++) {
var a = r ? r[o] : o;
if (!e(t[a], a, t)) return !1
}
return !0
}
function Le(t, e, n) {
e = Mt(e, n);
for (var r = !ee(t) && $(t), i = (r || t).length, o = 0; o < i; o++) {
var a = r ? r[o] : o;
if (e(t[a], a, t)) return !0
}
return !1
}
function _e(t, e, n, r) {
return ee(t) || (t = st(t)), ("number" != typeof n || r) && (n = 0), xe(t, e, n) >= 0
}
var Ne = o(function(t, e, n) {
var r, i;
return x(e) ? i = e : (e = wt(e), r = e.slice(0, -1), e = e[e.length - 1]), je(t, function(t) {
var o = i;
if (!o) {
if (r && r.length && (t = xt(t, r)), null == t) return;
o = t[e]
}
return null == o ? o : o.apply(t, n)
})
});
function Ie(t, e) {
return je(t, jt(e))
}
function Fe(t, e) {
return Me(t, kt(e))
}
function Ve(t, e, n) {
var r, i, o = -1 / 0,
a = -1 / 0;
if (null == e || "number" == typeof e && "object" != typeof t[0] && null != t)
for (var s = 0, l = (t = ee(t) ? t : st(t)).length; s < l; s++) null != (r = t[s]) && r > o && (o = r);
else e = Mt(e, n), ke(t, function(t, n, r) {
((i = e(t, n, r)) > a || i === -1 / 0 && o === -1 / 0) && (o = t, a = i)
});
return o
}
function Re(t, e, n) {
var r, i, o = 1 / 0,
a = 1 / 0;
if (null == e || "number" == typeof e && "object" != typeof t[0] && null != t)
for (var s = 0, l = (t = ee(t) ? t : st(t)).length; s < l; s++) null != (r = t[s]) && r < o && (o = r);
else e = Mt(e, n), ke(t, function(t, n, r) {
((i = e(t, n, r)) < a || i === 1 / 0 && o === 1 / 0) && (o = t, a = i)
});
return o
}
function ze(t, e, n) {
if (null == e || n) return ee(t) || (t = st(t)), t[Nt(t.length - 1)];
var r = ee(t) ? mt(t) : st(t),
i = z(r);
e = Math.max(Math.min(e, i), 0);
for (var o = i - 1, a = 0; a < e; a++) {
var s = Nt(a, o),
l = r[a];
r[a] = r[s], r[s] = l
}
return r.slice(0, e)
}
function He(t) {
return ze(t, 1 / 0)
}
function $e(t, e, n) {
var r = 0;
return e = Mt(e, n), Ie(je(t, function(t, n, i) {
return {
value: t,
index: r++,
criteria: e(t, n, i)
}
}).sort(function(t, e) {
var n = t.criteria,
r = e.criteria;
if (n !== r) {
if (n > r || void 0 === n) return 1;
if (n < r || void 0 === r) return -1
}
return t.index - e.index
}), "value")
}
function Ue(t, e) {
return function(n, r, i) {
var o = e ? [
[],
[]
] : {};
return r = Mt(r, i), ke(n, function(e, i) {
var a = r(e, i, n);
t(o, e, a)
}), o
}
}
var Be = Ue(function(t, e, n) {
P(t, n) ? t[n].push(e) : t[n] = [e]
}),
We = Ue(function(t, e, n) {
t[n] = e
}),
qe = Ue(function(t, e, n) {
P(t, n) ? t[n]++ : t[n] = 1
}),
Ge = Ue(function(t, e, n) {
t[n ? 0 : 1].push(e)
}, !0),
Ke = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
function Ye(t) {
return t ? T(t) ? i.q.call(t) : h(t) ? t.match(Ke) : ee(t) ? je(t, St) : st(t) : []
}
function Xe(t) {
return null == t ? 0 : ee(t) ? t.length : $(t).length
}
function Je(t, e, n) {
return e in n
}
var Ze = o(function(t, e) {
var n = {},
r = e[0];
if (null == t) return n;
x(r) ? (e.length > 1 && (r = Tt(r, e[1])), e = Y(t)) : (r = Je, e = ne(e, !1, !1), t = Object(t));
for (var i = 0, o = e.length; i < o; i++) {
var a = e[i],
s = t[a];
r(s, a, t) && (n[a] = s)
}
return n
}),
Qe = o(function(t, e) {
var n, r = e[0];
return x(r) ? (r = ue(r), e.length > 1 && (n = e[1])) : (e = je(ne(e, !1, !1), String), r = function(t, n) {
return !_e(e, n)
}), Ze(t, r, n)
});
function tn(t, e, n) {
return i.q.call(t, 0, Math.max(0, t.length - (null == e || n ? 1 : e)))
}
function en(t, e, n) {
return null == t || t.length < 1 ? null == e || n ? void 0 : [] : null == e || n ? t[0] : tn(t, t.length - e)
}
function nn(t, e, n) {
return i.q.call(t, null == e || n ? 1 : e)
}
function rn(t, e, n) {
return null == t || t.length < 1 ? null == e || n ? void 0 : [] : null == e || n ? t[t.length - 1] : nn(t, Math.max(0, t.length - e))
}
function on(t) {
return Me(t, Boolean)
}
function an(t, e) {
return ne(t, e, !1)
}
var sn = o(function(t, e) {
return e = ne(e, !0, !0), Me(t, function(t) {
return !_e(e, t)
})
}),
ln = o(function(t, e) {
return sn(t, e)
});
function cn(t, e, n, r) {
c(e) || (r = n, n = e, e = !1), null != n && (n = Mt(n, r));
for (var i = [], o = [], a = 0, s = z(t); a < s; a++) {
var l = t[a],
u = n ? n(l, a, t) : l;
e && !n ? (a && o === u || i.push(l), o = u) : n ? _e(o, u) || (o.push(u), i.push(l)) : _e(i, l) || i.push(l)
}
return i
}
var un = o(function(t) {
return cn(ne(t, !0, !0))
});
function dn(t) {
for (var e = [], n = arguments.length, r = 0, i = z(t); r < i; r++) {
var o = t[r];
if (!_e(e, o)) {
var a;
for (a = 1; a < n && _e(arguments[a], o); a++);
a === n && e.push(o)
}
}
return e
}
function hn(t) {
for (var e = t && Ve(t, z).length || 0, n = Array(e), r = 0; r < e; r++) n[r] = Ie(t, r);
return n
}
var fn = o(hn);
function pn(t, e) {
for (var n = {}, r = 0, i = z(t); r < i; r++) e ? n[t[r]] = e[r] : n[t[r][0]] = t[r][1];
return n
}
function gn(t, e, n) {
null == e && (e = t || 0, t = 0), n || (n = e < t ? -1 : 1);
for (var r = Math.max(Math.ceil((e - t) / n), 0), i = Array(r), o = 0; o < r; o++, t += n) i[o] = t;
return i
}
function vn(t, e) {
if (null == e || e < 1) return [];
for (var n = [], r = 0, o = t.length; r < o;) n.push(i.q.call(t, r, r += e));
return n
}
function mn(t, e) {
return t._chain ? W(e).chain() : e
}
function bn(t) {
return ke(ut(t), function(e) {
var n = W[e] = t[e];
W.prototype[e] = function() {
var t = [this._wrapped];
return i.o.apply(t, arguments), mn(this, n.apply(W, t))
}
}), W
}
ke(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(t) {
var e = i.a[t];
W.prototype[t] = function() {
var n = this._wrapped;
return null != n && (e.apply(n, arguments), "shift" !== t && "splice" !== t || 0 !== n.length || delete n[0]), mn(this, n)
}
}), ke(["concat", "join", "slice"], function(t) {
var e = i.a[t];
W.prototype[t] = function() {
var t = this._wrapped;
return null != t && (t = e.apply(t, arguments)), mn(this, t)
}
});
var yn = W,
wn = bn(r);
wn._ = wn;
var xn = wn
}, function(t, e, n) {
(function(r) {
var i, o, a;
a = "object" == typeof self && self.self === self && self || "object" == typeof r && r.global === r && r, i = [n(0), n(11), e], void 0 === (o = function(t, e, n) {
a.Backbone = function(t, e, n, r) {
var i = t.Backbone,
o = Array.prototype.slice;
e.VERSION = "1.3.3", e.$ = r, e.noConflict = function() {
return t.Backbone = i, this
}, e.emulateHTTP = !1, e.emulateJSON = !1;
var a = function(t, e, r) {
n.each(e, function(e, i) {
n[i] && (t.prototype[i] = function(t, e, r) {
switch (t) {
case 1:
return function() {
return n[e](this[r])
};
case 2:
return function(t) {
return n[e](this[r], t)
};
case 3:
return function(t, i) {
return n[e](this[r], s(t, this), i)
};
case 4:
return function(t, i, o) {
return n[e](this[r], s(t, this), i, o)
};
default:
return function() {
var t = o.call(arguments);
return t.unshift(this[r]), n[e].apply(n, t)
}
}
}(e, i, r))
})
},
s = function(t, e) {
return n.isFunction(t) ? t : n.isObject(t) && !e._isModel(t) ? l(t) : n.isString(t) ? function(e) {
return e.get(t)
} : t
},
l = function(t) {
var e = n.matches(t);
return function(t) {
return e(t.attributes)
}
},
c = e.Events = {},
u = /\s+/,
d = function(t, e, r, i, o) {
var a, s = 0;
if (r && "object" == typeof r) {
void 0 !== i && "context" in o && void 0 === o.context && (o.context = i);
for (a = n.keys(r); s < a.length; s++) e = d(t, e, a[s], r[a[s]], o)
} else if (r && u.test(r))
for (a = r.split(u); s < a.length; s++) e = t(e, a[s], i, o);
else e = t(e, r, i, o);
return e
};
c.on = function(t, e, n) {
return h(this, t, e, n)
};
var h = function(t, e, n, r, i) {
return t._events = d(f, t._events || {}, e, n, {
context: r,
ctx: t,
listening: i
}), i && ((t._listeners || (t._listeners = {}))[i.id] = i), t
};
c.listenTo = function(t, e, r) {
if (!t) return this;
var i = t._listenId || (t._listenId = n.uniqueId("l")),
o = this._listeningTo || (this._listeningTo = {}),
a = o[i];
if (!a) {
var s = this._listenId || (this._listenId = n.uniqueId("l"));
a = o[i] = {
obj: t,
objId: i,
id: s,
listeningTo: o,
count: 0
}
}
return h(t, e, r, this, a), this
};
var f = function(t, e, n, r) {
if (n) {
var i = t[e] || (t[e] = []),
o = r.context,
a = r.ctx,
s = r.listening;
s && s.count++, i.push({
callback: n,
context: o,
ctx: o || a,
listening: s
})
}
return t
};
c.off = function(t, e, n) {
return this._events ? (this._events = d(p, this._events, t, e, {
context: n,
listeners: this._listeners
}), this) : this
}, c.stopListening = function(t, e, r) {
var i = this._listeningTo;
if (!i) return this;
for (var o = t ? [t._listenId] : n.keys(i), a = 0; a < o.length; a++) {
var s = i[o[a]];
if (!s) break;
s.obj.off(e, r, this)
}
return this
};
var p = function(t, e, r, i) {
if (t) {
var o, a = 0,
s = i.context,
l = i.listeners;
if (e || r || s) {
for (var c = e ? [e] : n.keys(t); a < c.length; a++) {
var u = t[e = c[a]];
if (!u) break;
for (var d = [], h = 0; h < u.length; h++) {
var f = u[h];
r && r !== f.callback && r !== f.callback._callback || s && s !== f.context ? d.push(f) : (o = f.listening) && 0 == --o.count && (delete l[o.id], delete o.listeningTo[o.objId])
}
d.length ? t[e] = d : delete t[e]
}
return t
}
for (var p = n.keys(l); a < p.length; a++) delete l[(o = l[p[a]]).id], delete o.listeningTo[o.objId]
}
};
c.once = function(t, e, r) {
var i = d(g, {}, t, e, n.bind(this.off, this));
return "string" == typeof t && null == r && (e = void 0), this.on(i, e, r)
}, c.listenToOnce = function(t, e, r) {
var i = d(g, {}, e, r, n.bind(this.stopListening, this, t));
return this.listenTo(t, i)
};
var g = function(t, e, r, i) {
if (r) {
var o = t[e] = n.once(function() {
i(e, o), r.apply(this, arguments)
});
o._callback = r
}
return t
};
c.trigger = function(t) {
if (!this._events) return this;
for (var e = Math.max(0, arguments.length - 1), n = Array(e), r = 0; r < e; r++) n[r] = arguments[r + 1];
return d(v, this._events, t, void 0, n), this
};
var v = function(t, e, n, r) {
if (t) {
var i = t[e],
o = t.all;
i && o && (o = o.slice()), i && m(i, r), o && m(o, [e].concat(r))
}
return t
},
m = function(t, e) {
var n, r = -1,
i = t.length,
o = e[0],
a = e[1],
s = e[2];
switch (e.length) {
case 0:
for (; ++r < i;)(n = t[r]).callback.call(n.ctx);
return;
case 1:
for (; ++r < i;)(n = t[r]).callback.call(n.ctx, o);
return;
case 2:
for (; ++r < i;)(n = t[r]).callback.call(n.ctx, o, a);
return;
case 3:
for (; ++r < i;)(n = t[r]).callback.call(n.ctx, o, a, s);
return;
default:
for (; ++r < i;)(n = t[r]).callback.apply(n.ctx, e);
return
}
};
c.bind = c.on, c.unbind = c.off, n.extend(e, c);
var b = e.Model = function(t, e) {
var r = t || {};
e || (e = {}), this.cid = n.uniqueId(this.cidPrefix), this.attributes = {}, e.collection && (this.collection = e.collection), e.parse && (r = this.parse(r, e) || {});
var i = n.result(this, "defaults");
r = n.defaults(n.extend({}, i, r), i), this.set(r, e), this.changed = {}, this.initialize.apply(this, arguments)
};
n.extend(b.prototype, c, {
changed: null,
validationError: null,
idAttribute: "id",
cidPrefix: "c",
initialize: function() {},
toJSON: function(t) {
return n.clone(this.attributes)
},
sync: function() {
return e.sync.apply(this, arguments)
},
get: function(t) {
return this.attributes[t]
},
escape: function(t) {
return n.escape(this.get(t))
},
has: function(t) {
return null != this.get(t)
},
matches: function(t) {
return !!n.iteratee(t, this)(this.attributes)
},
set: function(t, e, r) {
if (null == t) return this;
var i;
if ("object" == typeof t ? (i = t, r = e) : (i = {})[t] = e, r || (r = {}), !this._validate(i, r)) return !1;
var o = r.unset,
a = r.silent,
s = [],
l = this._changing;
this._changing = !0, l || (this._previousAttributes = n.clone(this.attributes), this.changed = {});
var c = this.attributes,
u = this.changed,
d = this._previousAttributes;
for (var h in i) e = i[h], n.isEqual(c[h], e) || s.push(h), n.isEqual(d[h], e) ? delete u[h] : u[h] = e, o ? delete c[h] : c[h] = e;
if (this.idAttribute in i && (this.id = this.get(this.idAttribute)), !a) {
s.length && (this._pending = r);
for (var f = 0; f < s.length; f++) this.trigger("change:" + s[f], this, c[s[f]], r)
}
if (l) return this;
if (!a)
for (; this._pending;) r = this._pending, this._pending = !1, this.trigger("change", this, r);
return this._pending = !1, this._changing = !1, this
},
unset: function(t, e) {
return this.set(t, void 0, n.extend({}, e, {
unset: !0
}))
},
clear: function(t) {
var e = {};
for (var r in this.attributes) e[r] = void 0;
return this.set(e, n.extend({}, t, {
unset: !0
}))
},
hasChanged: function(t) {
return null == t ? !n.isEmpty(this.changed) : n.has(this.changed, t)
},
changedAttributes: function(t) {
if (!t) return !!this.hasChanged() && n.clone(this.changed);
var e = this._changing ? this._previousAttributes : this.attributes,
r = {};
for (var i in t) {
var o = t[i];
n.isEqual(e[i], o) || (r[i] = o)
}
return !!n.size(r) && r
},
previous: function(t) {
return null != t && this._previousAttributes ? this._previousAttributes[t] : null
},
previousAttributes: function() {
return n.clone(this._previousAttributes)
},
fetch: function(t) {
t = n.extend({
parse: !0
}, t);
var e = this,
r = t.success;
return t.success = function(n) {
var i = t.parse ? e.parse(n, t) : n;
if (!e.set(i, t)) return !1;
r && r.call(t.context, e, n, t), e.trigger("sync", e, n, t)
}, F(this, t), this.sync("read", this, t)
},
save: function(t, e, r) {
var i;
null == t || "object" == typeof t ? (i = t, r = e) : (i = {})[t] = e;
var o = (r = n.extend({
validate: !0,
parse: !0
}, r)).wait;
if (i && !o) {
if (!this.set(i, r)) return !1
} else if (!this._validate(i, r)) return !1;
var a = this,
s = r.success,
l = this.attributes;
r.success = function(t) {
a.attributes = l;
var e = r.parse ? a.parse(t, r) : t;
if (o && (e = n.extend({}, i, e)), e && !a.set(e, r)) return !1;
s && s.call(r.context, a, t, r), a.trigger("sync", a, t, r)
}, F(this, r), i && o && (this.attributes = n.extend({}, l, i));
var c = this.isNew() ? "create" : r.patch ? "patch" : "update";
"patch" !== c || r.attrs || (r.attrs = i);
var u = this.sync(c, this, r);
return this.attributes = l, u
},
destroy: function(t) {
t = t ? n.clone(t) : {};
var e = this,
r = t.success,
i = t.wait,
o = function() {
e.stopListening(), e.trigger("destroy", e, e.collection, t)
};
t.success = function(n) {
i && o(), r && r.call(t.context, e, n, t), e.isNew() || e.trigger("sync", e, n, t)
};
var a = !1;
return this.isNew() ? n.defer(t.success) : (F(this, t), a = this.sync("delete", this, t)), i || o(), a
},
url: function() {
var t = n.result(this, "urlRoot") || n.result(this.collection, "url") || I();
if (this.isNew()) return t;
var e = this.get(this.idAttribute);
return t.replace(/[^\/]$/, "$&/") + encodeURIComponent(e)
},
parse: function(t, e) {
return t
},
clone: function() {
return new this.constructor(this.attributes)
},
isNew: function() {
return !this.has(this.idAttribute)
},
isValid: function(t) {
return this._validate({}, n.extend({}, t, {
validate: !0
}))
},
_validate: function(t, e) {
if (!e.validate || !this.validate) return !0;
t = n.extend({}, this.attributes, t);
var r = this.validationError = this.validate(t, e) || null;
return !r || (this.trigger("invalid", this, r, n.extend(e, {
validationError: r
})), !1)
}
}), a(b, {
keys: 1,
values: 1,
pairs: 1,
invert: 1,
pick: 0,
omit: 0,
chain: 1,
isEmpty: 1
}, "attributes");
var y = e.Collection = function(t, e) {
e || (e = {}), e.model && (this.model = e.model), void 0 !== e.comparator && (this.comparator = e.comparator), this._reset(), this.initialize.apply(this, arguments), t && this.reset(t, n.extend({
silent: !0
}, e))
},
w = {
add: !0,
remove: !0,
merge: !0
},
x = {
add: !0,
remove: !1
},
O = function(t, e, n) {
n = Math.min(Math.max(n, 0), t.length);
var r, i = Array(t.length - n),
o = e.length;
for (r = 0; r < i.length; r++) i[r] = t[r + n];
for (r = 0; r < o; r++) t[r + n] = e[r];
for (r = 0; r < i.length; r++) t[r + o + n] = i[r]
};
n.extend(y.prototype, c, {
model: b,
initialize: function() {},
toJSON: function(t) {
return this.map(function(e) {
return e.toJSON(t)
})
},
sync: function() {
return e.sync.apply(this, arguments)
},
add: function(t, e) {
return this.set(t, n.extend({
merge: !1
}, e, x))
},
remove: function(t, e) {
e = n.extend({}, e);
var r = !n.isArray(t);
t = r ? [t] : t.slice();
var i = this._removeModels(t, e);
return !e.silent && i.length && (e.changes = {
added: [],
merged: [],
removed: i
}, this.trigger("update", this, e)), r ? i[0] : i
},
set: function(t, e) {
if (null != t) {
(e = n.extend({}, w, e)).parse && !this._isModel(t) && (t = this.parse(t, e) || []);
var r = !n.isArray(t);
t = r ? [t] : t.slice();
var i = e.at;
null != i && (i = +i), i > this.length && (i = this.length), i < 0 && (i += this.length + 1);
var o, a, s = [],
l = [],
c = [],
u = [],
d = {},
h = e.add,
f = e.merge,
p = e.remove,
g = !1,
v = this.comparator && null == i && !1 !== e.sort,
m = n.isString(this.comparator) ? this.comparator : null;
for (a = 0; a < t.length; a++) {
o = t[a];
var b = this.get(o);
if (b) {
if (f && o !== b) {
var y = this._isModel(o) ? o.attributes : o;
e.parse && (y = b.parse(y, e)), b.set(y, e), c.push(b), v && !g && (g = b.hasChanged(m))
}
d[b.cid] || (d[b.cid] = !0, s.push(b)), t[a] = b
} else h && (o = t[a] = this._prepareModel(o, e)) && (l.push(o), this._addReference(o, e), d[o.cid] = !0, s.push(o))
}
if (p) {
for (a = 0; a < this.length; a++) d[(o = this.models[a]).cid] || u.push(o);
u.length && this._removeModels(u, e)
}
var x = !1,
C = !v && h && p;
if (s.length && C ? (x = this.length !== s.length || n.some(this.models, function(t, e) {
return t !== s[e]
}), this.models.length = 0, O(this.models, s, 0), this.length = this.models.length) : l.length && (v && (g = !0), O(this.models, l, null == i ? this.length : i), this.length = this.models.length), g && this.sort({
silent: !0
}), !e.silent) {
for (a = 0; a < l.length; a++) null != i && (e.index = i + a), (o = l[a]).trigger("add", o, this, e);
(g || x) && this.trigger("sort", this, e), (l.length || u.length || c.length) && (e.changes = {
added: l,
removed: u,
merged: c
}, this.trigger("update", this, e))
}
return r ? t[0] : t
}
},
reset: function(t, e) {
e = e ? n.clone(e) : {};
for (var r = 0; r < this.models.length; r++) this._removeReference(this.models[r], e);
return e.previousModels = this.models, this._reset(), t = this.add(t, n.extend({
silent: !0
}, e)), e.silent || this.trigger("reset", this, e), t
},
push: function(t, e) {
return this.add(t, n.extend({
at: this.length
}, e))
},
pop: function(t) {
var e = this.at(this.length - 1);
return this.remove(e, t)
},
unshift: function(t, e) {
return this.add(t, n.extend({
at: 0
}, e))
},
shift: function(t) {
var e = this.at(0);
return this.remove(e, t)
},
slice: function() {
return o.apply(this.models, arguments)
},
get: function(t) {
if (null != t) return this._byId[t] || this._byId[this.modelId(t.attributes || t)] || t.cid && this._byId[t.cid]
},
has: function(t) {
return null != this.get(t)
},
at: function(t) {
return t < 0 && (t += this.length), this.models[t]
},
where: function(t, e) {
return this[e ? "find" : "filter"](t)
},
findWhere: function(t) {
return this.where(t, !0)
},
sort: function(t) {
var e = this.comparator;
if (!e) throw new Error("Cannot sort a set without a comparator");
t || (t = {});
var r = e.length;
return n.isFunction(e) && (e = n.bind(e, this)), 1 === r || n.isString(e) ? this.models = this.sortBy(e) : this.models.sort(e), t.silent || this.trigger("sort", this, t), this
},
pluck: function(t) {
return this.map(t + "")
},
fetch: function(t) {
var e = (t = n.extend({
parse: !0
}, t)).success,
r = this;
return t.success = function(n) {
var i = t.reset ? "reset" : "set";
r[i](n, t), e && e.call(t.context, r, n, t), r.trigger("sync", r, n, t)
}, F(this, t), this.sync("read", this, t)
},
create: function(t, e) {
var r = (e = e ? n.clone(e) : {}).wait;
if (!(t = this._prepareModel(t, e))) return !1;
r || this.add(t, e);
var i = this,
o = e.success;
return e.success = function(t, e, n) {
r && i.add(t, n), o && o.call(n.context, t, e, n)
}, t.save(null, e), t
},
parse: function(t, e) {
return t
},
clone: function() {
return new this.constructor(this.models, {
model: this.model,
comparator: this.comparator
})
},
modelId: function(t) {
return t[this.model.prototype.idAttribute || "id"]
},
_reset: function() {
this.length = 0, this.models = [], this._byId = {}
},
_prepareModel: function(t, e) {
if (this._isModel(t)) return t.collection || (t.collection = this), t;
(e = e ? n.clone(e) : {}).collection = this;
var r = new this.model(t, e);
return r.validationError ? (this.trigger("invalid", this, r.validationError, e), !1) : r
},
_removeModels: function(t, e) {
for (var n = [], r = 0; r < t.length; r++) {
var i = this.get(t[r]);
if (i) {
var o = this.indexOf(i);
this.models.splice(o, 1), this.length--, delete this._byId[i.cid];
var a = this.modelId(i.attributes);
null != a && delete this._byId[a], e.silent || (e.index = o, i.trigger("remove", i, this, e)), n.push(i), this._removeReference(i, e)
}
}
return n
},
_isModel: function(t) {
return t instanceof b
},
_addReference: function(t, e) {
this._byId[t.cid] = t;
var n = this.modelId(t.attributes);
null != n && (this._byId[n] = t), t.on("all", this._onModelEvent, this)
},
_removeReference: function(t, e) {
delete this._byId[t.cid];
var n = this.modelId(t.attributes);
null != n && delete this._byId[n], this === t.collection && delete t.collection, t.off("all", this._onModelEvent, this)
},
_onModelEvent: function(t, e, n, r) {
if (e) {
if (("add" === t || "remove" === t) && n !== this) return;
if ("destroy" === t && this.remove(e, r), "change" === t) {
var i = this.modelId(e.previousAttributes()),
o = this.modelId(e.attributes);
i !== o && (null != i && delete this._byId[i], null != o && (this._byId[o] = e))
}
}
this.trigger.apply(this, arguments)
}
}), a(y, {
forEach: 3,
each: 3,
map: 3,
collect: 3,
reduce: 0,
foldl: 0,
inject: 0,
reduceRight: 0,
foldr: 0,
find: 3,
detect: 3,
filter: 3,
select: 3,
reject: 3,
every: 3,
all: 3,
some: 3,
any: 3,
include: 3,
includes: 3,
contains: 3,
invoke: 0,
max: 3,
min: 3,
toArray: 1,
size: 1,
first: 3,
head: 3,
take: 3,
initial: 3,
rest: 3,
tail: 3,
drop: 3,
last: 3,
without: 0,
difference: 0,
indexOf: 3,
shuffle: 1,
lastIndexOf: 3,
isEmpty: 1,
chain: 1,
sample: 3,
partition: 3,
groupBy: 3,
countBy: 3,
sortBy: 3,
indexBy: 3,
findIndex: 3,
findLastIndex: 3
}, "models");
var C = e.View = function(t) {
this.cid = n.uniqueId("view"), n.extend(this, n.pick(t, k)), this._ensureElement(), this.initialize.apply(this, arguments)
},
S = /^(\S+)\s*(.*)$/,
k = ["model", "collection", "el", "id", "attributes", "className", "tagName", "events"];
n.extend(C.prototype, c, {
tagName: "div",
$: function(t) {
return this.$el.find(t)
},
initialize: function() {},
render: function() {
return this
},
remove: function() {
return this._removeElement(), this.stopListening(), this
},
_removeElement: function() {
this.$el.remove()
},
setElement: function(t) {
return this.undelegateEvents(), this._setElement(t), this.delegateEvents(), this
},
_setElement: function(t) {
this.$el = t instanceof e.$ ? t : e.$(t), this.el = this.$el[0]
},
delegateEvents: function(t) {
if (t || (t = n.result(this, "events")), !t) return this;
for (var e in this.undelegateEvents(), t) {
var r = t[e];
if (n.isFunction(r) || (r = this[r]), r) {
var i = e.match(S);
this.delegate(i[1], i[2], n.bind(r, this))
}
}
return this
},
delegate: function(t, e, n) {
return this.$el.on(t + ".delegateEvents" + this.cid, e, n), this
},
undelegateEvents: function() {
return this.$el && this.$el.off(".delegateEvents" + this.cid), this
},
undelegate: function(t, e, n) {
return this.$el.off(t + ".delegateEvents" + this.cid, e, n), this
},
_createElement: function(t) {
return document.createElement(t)
},
_ensureElement: function() {
if (this.el) this.setElement(n.result(this, "el"));
else {
var t = n.extend({}, n.result(this, "attributes"));
this.id && (t.id = n.result(this, "id")), this.className && (t.class = n.result(this, "className")), this.setElement(this._createElement(n.result(this, "tagName"))), this._setAttributes(t)
}
},
_setAttributes: function(t) {
this.$el.attr(t)
}
}), e.sync = function(t, r, i) {
var o = j[t];
n.defaults(i || (i = {}), {
emulateHTTP: e.emulateHTTP,
emulateJSON: e.emulateJSON
});
var a = {
type: o,
dataType: "json"
};
if (i.url || (a.url = n.result(r, "url") || I()), null != i.data || !r || "create" !== t && "update" !== t && "patch" !== t || (a.contentType = "application/json", a.data = JSON.stringify(i.attrs || r.toJSON(i))), i.emulateJSON && (a.contentType = "application/x-www-form-urlencoded", a.data = a.data ? {
model: a.data
} : {}), i.emulateHTTP && ("PUT" === o || "DELETE" === o || "PATCH" === o)) {
a.type = "POST", i.emulateJSON && (a.data._method = o);
var s = i.beforeSend;
i.beforeSend = function(t) {
if (t.setRequestHeader("X-HTTP-Method-Override", o), s) return s.apply(this, arguments)
}
}
"GET" === a.type || i.emulateJSON || (a.processData = !1);
var l = i.error;
i.error = function(t, e, n) {
i.textStatus = e, i.errorThrown = n, l && l.call(i.context, t, e, n)
};
var c = i.xhr = e.ajax(n.extend(a, i));
return r.trigger("request", r, c, i), c
};
var j = {
create: "POST",
update: "PUT",
patch: "PATCH",
delete: "DELETE",
read: "GET"
};
e.ajax = function() {
return e.$.ajax.apply(e.$, arguments)
};
var T = e.Router = function(t) {
t || (t = {}), t.routes && (this.routes = t.routes), this._bindRoutes(), this.initialize.apply(this, arguments)
},
P = /\((.*?)\)/g,
E = /(\(\?)?:\w+/g,
M = /\*\w+/g,
D = /[\-{}\[\]+?.,\\\^$|#\s]/g;
n.extend(T.prototype, c, {
initialize: function() {},
route: function(t, r, i) {
n.isRegExp(t) || (t = this._routeToRegExp(t)), n.isFunction(r) && (i = r, r = ""), i || (i = this[r]);
var o = this;
return e.history.route(t, function(n) {
var a = o._extractParameters(t, n);
!1 !== o.execute(i, a, r) && (o.trigger.apply(o, ["route:" + r].concat(a)), o.trigger("route", r, a), e.history.trigger("route", o, r, a))
}), this
},
execute: function(t, e, n) {
t && t.apply(this, e)
},
navigate: function(t, n) {
return e.history.navigate(t, n), this
},
_bindRoutes: function() {
if (this.routes) {
this.routes = n.result(this, "routes");
for (var t, e = n.keys(this.routes); null != (t = e.pop());) this.route(t, this.routes[t])
}
},
_routeToRegExp: function(t) {
return t = t.replace(D, "\\$&").replace(P, "(?:$1)?").replace(E, function(t, e) {
return e ? t : "([^/?]+)"
}).replace(M, "([^?]*?)"), new RegExp("^" + t + "(?:\\?([\\s\\S]*))?$")
},
_extractParameters: function(t, e) {
var r = t.exec(e).slice(1);
return n.map(r, function(t, e) {
return e === r.length - 1 ? t || null : t ? decodeURIComponent(t) : null
})
}
});
var A = e.History = function() {
this.handlers = [], this.checkUrl = n.bind(this.checkUrl, this), "undefined" != typeof window && (this.location = window.location, this.history = window.history)
},
L = /^[#\/]|\s+$/g,
_ = /^\/+|\/+$/g,
N = /#.*$/;
A.started = !1, n.extend(A.prototype, c, {
interval: 50,
atRoot: function() {
return this.location.pathname.replace(/[^\/]$/, "$&/") === this.root && !this.getSearch()
},
matchRoot: function() {
return this.decodeFragment(this.location.pathname).slice(0, this.root.length - 1) + "/" === this.root
},
decodeFragment: function(t) {
return decodeURI(t.replace(/%25/g, "%2525"))
},
getSearch: function() {
var t = this.location.href.replace(/#.*/, "").match(/\?.+/);
return t ? t[0] : ""
},
getHash: function(t) {
var e = (t || this).location.href.match(/#(.*)$/);
return e ? e[1] : ""
},
getPath: function() {
var t = this.decodeFragment(this.location.pathname + this.getSearch()).slice(this.root.length - 1);
return "/" === t.charAt(0) ? t.slice(1) : t
},
getFragment: function(t) {
return null == t && (t = this._usePushState || !this._wantsHashChange ? this.getPath() : this.getHash()), t.replace(L, "")
},
start: function(t) {
if (A.started) throw new Error("Backbone.history has already been started");
if (A.started = !0, this.options = n.extend({
root: "/"
}, this.options, t), this.root = this.options.root, this._wantsHashChange = !1 !== this.options.hashChange, this._hasHashChange = "onhashchange" in window && (void 0 === document.documentMode || document.documentMode > 7), this._useHashChange = this._wantsHashChange && this._hasHashChange, this._wantsPushState = !!this.options.pushState, this._hasPushState = !(!this.history || !this.history.pushState), this._usePushState = this._wantsPushState && this._hasPushState, this.fragment = this.getFragment(), this.root = ("/" + this.root + "/").replace(_, "/"), this._wantsHashChange && this._wantsPushState) {
if (!this._hasPushState && !this.atRoot()) {
var e = this.root.slice(0, -1) || "/";
return this.location.replace(e + "#" + this.getPath()), !0
}
this._hasPushState && this.atRoot() && this.navigate(this.getHash(), {
replace: !0
})
}
if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {
this.iframe = document.createElement("iframe"), this.iframe.src = "javascript:0", this.iframe.style.display = "none", this.iframe.tabIndex = -1;
var r = document.body,
i = r.insertBefore(this.iframe, r.firstChild).contentWindow;
i.document.open(), i.document.close(), i.location.hash = "#" + this.fragment
}
var o = window.addEventListener || function(t, e) {
return attachEvent("on" + t, e)
};
if (this._usePushState ? o("popstate", this.checkUrl, !1) : this._useHashChange && !this.iframe ? o("hashchange", this.checkUrl, !1) : this._wantsHashChange && (this._checkUrlInterval = setInterval(this.checkUrl, this.interval)), !this.options.silent) return this.loadUrl()
},
stop: function() {
var t = window.removeEventListener || function(t, e) {
return detachEvent("on" + t, e)
};
this._usePushState ? t("popstate", this.checkUrl, !1) : this._useHashChange && !this.iframe && t("hashchange", this.checkUrl, !1), this.iframe && (document.body.removeChild(this.iframe), this.iframe = null), this._checkUrlInterval && clearInterval(this._checkUrlInterval), A.started = !1
},
route: function(t, e) {
this.handlers.unshift({
route: t,
callback: e
})
},
checkUrl: function(t) {
var e = this.getFragment();
if (e === this.fragment && this.iframe && (e = this.getHash(this.iframe.contentWindow)), e === this.fragment) return !1;
this.iframe && this.navigate(e), this.loadUrl()
},
loadUrl: function(t) {
return !!this.matchRoot() && (t = this.fragment = this.getFragment(t), n.some(this.handlers, function(e) {
if (e.route.test(t)) return e.callback(t), !0
}))
},
navigate: function(t, e) {
if (!A.started) return !1;
e && !0 !== e || (e = {
trigger: !!e
}), t = this.getFragment(t || "");
var n = this.root;
"" !== t && "?" !== t.charAt(0) || (n = n.slice(0, -1) || "/");
var r = n + t;
if (t = this.decodeFragment(t.replace(N, "")), this.fragment !== t) {
if (this.fragment = t, this._usePushState) this.history[e.replace ? "replaceState" : "pushState"]({}, document.title, r);
else {
if (!this._wantsHashChange) return this.location.assign(r);
if (this._updateHash(this.location, t, e.replace), this.iframe && t !== this.getHash(this.iframe.contentWindow)) {
var i = this.iframe.contentWindow;
e.replace || (i.document.open(), i.document.close()), this._updateHash(i.location, t, e.replace)
}
}
return e.trigger ? this.loadUrl(t) : void 0
}
},
_updateHash: function(t, e, n) {
if (n) {
var r = t.href.replace(/(javascript:|#).*$/, "");
t.replace(r + "#" + e)
} else t.hash = "#" + e
}
}), e.history = new A, b.extend = y.extend = T.extend = C.extend = A.extend = function(t, e) {
var r, i = this;
return r = t && n.has(t, "constructor") ? t.constructor : function() {
return i.apply(this, arguments)
}, n.extend(r, i, e), r.prototype = n.create(i.prototype, t), r.prototype.constructor = r, r.__super__ = i.prototype, r
};
var I = function() {
throw new Error('A "url" property or function must be specified')
},
F = function(t, e) {
var n = e.error;
e.error = function(r) {
n && n.call(e.context, t, r, e), t.trigger("error", t, r, e)
}
};
return e
}(a, n, t, e)
}.apply(e, i)) || (t.exports = o)
}).call(this, n(26))
}, function(t, e) {
t.exports = function(t, e, n) {
return e in t ? Object.defineProperty(t, e, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : t[e] = n, t
}
}, function(t, e, n) {
"use strict";
n.d(e, "q", function() {
return x
}), n.d(e, "v", function() {
return h
}), n.d(e, "u", function() {
return f
}), n.d(e, "k", function() {
return b
}), n.d(e, "s", function() {
return c
}), n.d(e, "g", function() {
return O
}), n.d(e, "d", function() {
return C
}), n.d(e, "b", function() {
return v
}), n.d(e, "r", function() {
return w
}), n.d(e, "f", function() {
return j
}), n.d(e, "n", function() {
return T
}), n.d(e, "e", function() {
return y
}), n.d(e, "x", function() {
return d
}), n.d(e, "t", function() {
return m
}), n.d(e, "h", function() {
return S
}), n.d(e, "i", function() {
return p
}), n.d(e, "c", function() {
return M
}), n.d(e, "j", function() {
return L
}), n.d(e, "w", function() {
return _
}), n.d(e, "a", function() {
return u
}), n.d(e, "o", function() {
return P
}), n.d(e, "m", function() {
return E
}), n.d(e, "l", function() {
return D
}), n.d(e, "p", function() {
return A
});
var r = n(8),
i = n.n(r),
o = n(7),
a = n.n(o),
s = n(0),
l = window.Element.prototype,
c = l.matches || l.webkitMatchesSelector || l.mozMatchesSelector || l.msMatchesSelector,
u = function t(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = Object(s.isArray)(e) ? a()(e) : [e];
if (r.length) {
var i = r.shift();
if (i && (!n.unique || !document.querySelector('link[href="'.concat(i, '"]')))) {
var o = document.head,
l = document.createElement("link");
l.href = i, l.rel = "stylesheet", n.prepand ? o.insertBefore(l, o.firstChild) : o.appendChild(l)
}
t(r)
}
},
d = function(t, e) {
var n = {},
r = Object(s.keys)(e);
for (var i in t)
if (t.hasOwnProperty(i)) {
var o = t[i],
a = e[i];
r.indexOf(i) >= 0 ? o !== a && (n[i] = a) : n[i] = null
} for (var l in e) e.hasOwnProperty(l) && Object(s.isUndefined)(t[l]) && (n[l] = e[l]);
return n
},
h = function(t, e, n) {
e = e.split(/\s+/), t = t instanceof Array ? t : [t];
for (var r = function(r) {
t.forEach(function(t) {
return t.addEventListener(e[r], n)
})
}, i = 0; i < e.length; ++i) r(i)
},
f = function(t, e, n) {
e = e.split(/\s+/), t = t instanceof Array ? t : [t];
for (var r = function(r) {
t.forEach(function(t) {
return t.removeEventListener(e[r], n)
})
}, i = 0; i < e.length; ++i) r(i)
},
p = function(t) {
return t.replace(parseFloat(t), "")
},
g = function(t) {
return t[0].toUpperCase() + t.toLowerCase().slice(1)
},
v = function(t) {
var e = t.split("-").filter(String);
return e[0].toLowerCase() + e.slice(1).map(g)
},
m = function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
r = 0;
if (isNaN(t)) return n;
if (t = parseFloat(t), Math.floor(t) !== t) {
var i = e.toString().split(".")[1];
r = i ? i.length : 0
}
return r ? parseFloat(t.toFixed(r)) : t
},
b = function(t) {
return "draggable" in document.createElement("i") && (t ? t.get("Config").nativeDnD : 1)
},
y = function(t) {
return Object(s.isElement)(t) || w(t) ? t : t && t.getEl ? t.getEl() : void 0
},
w = function(t) {
return t && 3 === t.nodeType
},
x = function(t) {
return t && !w(t) && ! function(t) {
return t && 8 === t.nodeType
}(t)
},
O = function(t, e) {
var n = t;
return Object(s.isElement)(t) && (n = e(t).data("model")), n
},
C = function(t) {
var e, n = {
top: 0,
left: 0,
width: 0,
height: 0
};
if (!t) return n;
if (w(t)) {
var r = document.createRange();
r.selectNode(t), e = r.getBoundingClientRect(), r.detach()
}
return e || (t.getBoundingClientRect ? t.getBoundingClientRect() : n)
},
S = function(t) {
return t.touches && t.touches[0] ? t.touches[0] : t
},
k = function(t) {
return t.which || t.keyCode
},
j = function(t) {
return String.fromCharCode(k(t))
},
T = function(t) {
return 27 === k(t)
},
P = function(t) {
return null !== t && !Array.isArray(t) && "object" === i()(t)
},
E = function(t) {
return Object.keys(t).length <= 0
},
M = function(t) {
return t && t.charAt(0).toUpperCase() + t.substring(1)
},
D = function(t) {
return t && t.toHTML
},
A = function(t) {
return t && t.toCSS
},
L = function(t) {
return t.__gjsv
},
_ = function(t, e) {
t.__gjsv = e
}
}, function(t, e, n) {
"use strict";
(function(t) {
n.d(e, "e", function() {
return r
}), n.d(e, "p", function() {
return i
}), n.d(e, "a", function() {
return o
}), n.d(e, "c", function() {
return a
}), n.d(e, "d", function() {
return s
}), n.d(e, "o", function() {
return l
}), n.d(e, "q", function() {
return c
}), n.d(e, "t", function() {
return u
}), n.d(e, "i", function() {
return d
}), n.d(e, "r", function() {
return h
}), n.d(e, "s", function() {
return f
}), n.d(e, "k", function() {
return p
}), n.d(e, "m", function() {
return g
}), n.d(e, "j", function() {
return v
}), n.d(e, "l", function() {
return m
}), n.d(e, "g", function() {
return b
}), n.d(e, "f", function() {
return y
}), n.d(e, "h", function() {
return w
}), n.d(e, "n", function() {
return x
}), n.d(e, "b", function() {
return O
});
var r = "1.12.0",
i = "object" == typeof self && self.self === self && self || "object" == typeof t && t.global === t && t || Function("return this")() || {},
o = Array.prototype,
a = Object.prototype,
s = "undefined" != typeof Symbol ? Symbol.prototype : null,
l = o.push,
c = o.slice,
u = a.toString,
d = a.hasOwnProperty,
h = "undefined" != typeof ArrayBuffer,
f = "undefined" != typeof DataView,
p = Array.isArray,
g = Object.keys,
v = Object.create,
m = h && ArrayBuffer.isView,
b = isNaN,
y = isFinite,
w = !{
toString: null
}.propertyIsEnumerable("toString"),
x = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"],
O = Math.pow(2, 53) - 1
}).call(this, n(26))
}, function(t, e, n) {
"use strict";
n.r(e), n.d(e, "eventDrag", function() {
return S
});
var r = n(8),
i = n.n(r),
o = n(7),
a = n.n(o),
s = n(2),
l = n.n(s),
c = n(0),
u = n(3),
d = n(23),
h = n(1),
f = n.n(h),
p = n(21),
g = n(10),
v = n(12);
function m(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function b(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? m(Object(n), !0).forEach(function(e) {
l()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : m(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var y = f.a.Model.extend({
defaults: {
type: "text",
label: "",
name: "",
min: "",
max: "",
unit: "",
step: 1,
value: "",
target: "",
default: "",
placeholder: "",
changeProp: 0,
options: []
},
initialize: function() {
var t = this.get("target"),
e = this.get("name"),
n = this.get("changeProp");
if (!this.get("id") && this.set("id", e), t) {
this.target = t, this.unset("target");
var r = n ? "change:".concat(e) : "change:attributes:".concat(e);
this.listenTo(t, r, this.targetUpdated)
}
},
props: function() {
return this.attributes
},
targetUpdated: function() {
var t = this.getTargetValue();
this.set({
value: t
}, {
fromTarget: 1
})
},
getTargetValue: function() {
var t, e = this.get("name"),
n = this.target;
return t = this.get("changeProp") ? n.get(e) : n.getAttributes()[e], Object(c.isUndefined)(t) ? "" : t
},
setTargetValue: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.target,
r = this.get("name");
if (!Object(c.isUndefined)(t)) {
var i = t;
if ("false" === t ? i = !1 : "true" === t && (i = !0), this.get("changeProp")) n.set(r, i, e);
else {
var o = b({}, n.get("attributes"));
o[r] = i, n.set("attributes", o, e)
}
}
},
setValueFromInput: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = {
value: t
};
this.set(r, b(b({}, n), {}, {
avoidStore: 1
})), e && (this.set("value", "", n), this.set(r, n))
},
getInitValue: function() {
var t, e = this.target,
n = this.get("name");
if (e) {
var r = e.get("attributes");
t = this.get("changeProp") ? e.get(n) : r[n]
}
return t || this.get("value") || this.get("default")
}
}),
w = f.a.Collection.extend({
model: y,
initialize: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
this.em = e.em || "", this.listenTo(this, "add", this.handleAdd), this.listenTo(this, "reset", this.handleReset)
},
handleReset: function(t) {
var e = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).previousModels;
(void 0 === e ? [] : e).forEach(function(t) {
return t.trigger("remove")
})
},
handleAdd: function(t) {
var e = this.target;
e && (t.target = e)
},
setTarget: function(t) {
this.target = t
},
add: function(t, e) {
var n = this.em;
if (Object(c.isString)(t) || Object(c.isArray)(t)) {
var r = n && n.get && n.get("TraitManager"),
i = function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return {
build: function(e) {
var n = [];
"string" == typeof e && (e = [e]);
for (var r = 0; r < e.length; r++) {
var i = {},
o = e[r];
switch (i.name = o, o) {
case "target":
i.type = "select", i.default = !1, i.options = t.optionsTarget
}
n.push(i)
}
return n
}
}
}(r && r.getConfig());
Object(c.isString)(t) && (t = [t]);
for (var o = 0, a = t.length; o < a; o++) {
var s = t[o],
l = Object(c.isString)(s) ? i.build(s)[0] : s;
l.target = this.target, t[o] = l
}
}
return f.a.Collection.prototype.add.apply(this, [t, e])
}
});
function x(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function O(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? x(Object(n), !0).forEach(function(e) {
l()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : x(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var C = function(t) {
return t.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&")
},
S = "component:drag",
k = f.a.Model.extend(d.a).extend({
defaults: {
tagName: "div",
type: "",
name: "",
removable: !0,
draggable: !0,
droppable: !0,
badgable: !0,
stylable: !0,
"stylable-require": "",
"style-signature": "",
unstylable: "",
highlightable: !0,
copyable: !0,
resizable: !1,
editable: !1,
layerable: !0,
selectable: !0,
hoverable: !0,
void: !1,
state: "",
status: "",
content: "",
icon: "",
style: "",
classes: "",
script: "",
"script-props": "",
"script-export": "",
attributes: "",
traits: ["id", "title"],
propagate: "",
dmode: "",
toolbar: null
},
init: function() {},
updated: function(t, e, n) {},
removed: function() {},
initialize: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
Object(c.bindAll)(this, "__upSymbProps", "__upSymbCls", "__upSymbComps");
var r = n.em,
i = this.parent(),
o = i && i.attributes;
if (o && o.propagate) {
var a = {},
s = o.propagate;
s.forEach(function(t) {
return a[t] = i.get(t)
}), a.propagate = s, a = O(O({}, a), e), this.set(a)
}
var l = this.get("propagate");
l && this.set("propagate", Object(c.isArray)(l) ? l : [l]), n && n.config && n.config.voidElements.indexOf(this.get("tagName")) >= 0 && this.set("void", !0), n.em = r, this.opt = n, this.em = r, this.frame = n.frame, this.config = n.config || {}, this.set("attributes", O(O({}, this.defaults.attributes || {}), this.get("attributes") || {})), this.ccid = k.createId(this, n), this.initClasses(), this.initTraits(), this.initComponents(), this.initToolbar(), this.initScriptProps(), this.listenTo(this, "change:script", this.scriptUpdated), this.listenTo(this, "change:tagName", this.tagUpdated), this.listenTo(this, "change:attributes", this.attrUpdated), this.listenTo(this, "change:attributes:id", this._idUpdated), this.on("change:toolbar", this.__emitUpdateTlb), this.set("status", ""), this.views = [], this.__isSymbol() && this.__initSymb(), ["classes", "traits", "components"].forEach(function(e) {
var n = "add remove ".concat("components" !== e ? "change" : "");
t.listenTo(t.get(e), n.trim(), function() {
for (var n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
return t.emitUpdate.apply(t, [e].concat(r))
})
}), n.temporary || (this.init(), r && r.trigger("component:create", this))
},
__emitUpdateTlb: function() {
this.emitUpdate("toolbar")
},
is: function(t) {
return !(this.get("type") != t)
},
props: function() {
return this.attributes
},
index: function() {
var t = this.collection;
return t && t.indexOf(this)
},
setDragMode: function(t) {
return this.set("dmode", t)
},
find: function(t) {
var e = [],
n = this.view.$el.find(t);
return n.each(function(t) {
var r = n.eq(t).data("model");
r && e.push(r)
}), e
},
findType: function(t) {
var e = [];
return function n(r) {
return r.forEach(function(r) {
r.is(t) && e.push(r), n(r.components())
})
}(this.components()), e
},
closest: function(t) {
var e = this.view.$el.closest(t);
return e.length && e.data("model")
},
closestType: function(t) {
for (var e = this.parent(); e && !e.is(t);) e = e.parent();
return e
},
contains: function(t) {
var e = !1;
if (!t) return e;
return function n(r) {
!e && r.forEach(function(r) {
r === t && (e = !0), !e && n(r.components())
})
}(this.components()), e
},
tagUpdated: function() {
var t = this.collection,
e = t.indexOf(this);
t.remove(this), t.add(this, {
at: e
})
},
replaceWith: function(t) {
var e = this.collection,
n = e.indexOf(this);
return e.remove(this), e.add(t, {
at: n
})
},
attrUpdated: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = this.get("attributes"),
o = i.class;
o && this.setClass(o), delete i.class;
var a = i.style;
a && this.setStyle(a), delete i.style;
var s = O({}, this.previous("attributes")),
l = Object(u.x)(s, this.get("attributes"));
Object(c.keys)(l).forEach(function(t) {
return n.trigger("change:attributes:".concat(t), n, l[t], r)
})
},
setAttributes: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return this.set("attributes", O({}, t), e), this
},
addAttributes: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = O(O({}, this.getAttributes()), t);
return this.setAttributes(n, e), this
},
getStyle: function() {
var t = this.em;
if (t && t.getConfig("avoidInlineStyle")) {
var e = t.get("state"),
n = t.get("CssComposer").getIdRule(this.getId(), {
state: e
});
if (this.rule = n, n) return n.getStyle()
}
return d.a.getStyle.call(this)
},
setStyle: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = this.em,
i = this.opt;
if (r && r.getConfig("avoidInlineStyle") && !i.temporary) {
var o = this.get("style") || {};
e = O(O({}, e = Object(c.isString)(e) ? this.parseStyle(e) : e), o);
var a = r.get("state"),
s = r.get("CssComposer"),
l = this.getStyle();
this.rule = s.setIdRule(this.getId(), e, O(O({}, n), {}, {
state: a
}));
var h = Object(u.x)(l, e);
this.set("style", {}, {
silent: 1
}), Object(c.keys)(h).forEach(function(e) {
return t.trigger("change:style:".concat(e))
})
} else e = d.a.setStyle.apply(this, arguments);
return e
},
getAttributes: function() {
var t, e = this.em,
n = [],
r = O({}, this.get("attributes")),
i = e && e.get("SelectorManager"),
o = this.getId();
return this.get("classes").forEach(function(t) {
return n.push(Object(c.isString)(t) ? t : t.get("name"))
}), n.length && (r.class = n.join(" ")), Object(c.has)(r, "id") || (e && e.getConfig("avoidInlineStyle") ? t = i && i.get(o, i.Selector.TYPE_ID) : Object(c.isEmpty)(this.getStyle()) || (t = 1), t && (r.id = this.getId())), r
},
addClass: function(t) {
var e = this.em.get("SelectorManager").addClass(t);
return this.get("classes").add(e)
},
setClass: function(t) {
return this.get("classes").reset(), this.addClass(t)
},
removeClass: function(t) {
var e = [];
t = Object(c.isArray)(t) ? t : [t];
var n = this.get("classes"),
r = g.a.TYPE_CLASS;
return t.forEach(function(t) {
t.split(" ").forEach(function(t) {
var i = n.where({
name: t,
type: r
})[0];
i && e.push(n.remove(i))
})
}), e
},
getClasses: function() {
var t = this.getAttributes().class;
return t ? t.split(" ") : []
},
__initSymb: function() {
this.__symbReady || (this.on("change", this.__upSymbProps), this.__symbReady = 1)
},
__isSymbol: function() {
return Object(c.isArray)(this.get("__symbol"))
},
__isSymbolTop: function() {
var t = this.parent();
return this.__isSymbol() && t && !t.__isSymbol()
},
__getSymbolOf: function() {
return this.get("__symbolOf")
},
__getSymbToUp: function() {
var t = this.get("__symbol");
return this.__isSymbol() ? t.filter(function(t) {
return t.collection || t.prevColl
}) : []
},
__getSymbTop: function(t) {
for (var e = this.__isSymbol(), n = this, r = this.parent(t); r && (e ? r.__isSymbol() : r.__getSymbolOf());) n = r, r = r.parent(t);
return n
},
__upSymbProps: function() {
var t = this.changedAttributes(),
e = t.attributes || {};
delete t.status, delete t.open, delete t.__symbol, delete t.__symbolOf, delete t.attributes, delete e.id, Object(u.m)(e) || (t.attributes = e), !Object(u.m)(t) && this.__getSymbToUp().forEach(function(e) {
return e.set(t)
})
},
__upSymbCls: function() {
var t = this;
this.__getSymbToUp().forEach(function(e) {
e.set({
classes: t.get("classes")
})
})
},
__upSymbComps: function(t, e, n) {
if (n)
if (n.add) {
var r = t.__getSymbToUp();
this.__getSymbToUp().forEach(function(e) {
var i = e.__getSymbTop(),
o = r.filter(function(t) {
var e = t.__getSymbTop({
prev: 1
});
return i && e && e === i
})[0] || t.clone({
symbol: 1
});
e.append(o, n)
})
} else t.__getSymbToUp().forEach(function(t) {
return t.remove(n)
});
else this.__getSymbToUp().forEach(function(n) {
var r = t.models.map(function(t) {
return t.clone({
symbol: 1
})
});
n.components().reset(r, e)
})
},
initClasses: function() {
var t = this.get("attributes").class || [],
e = [this, "change:classes", this.initClasses],
n = this.get("classes") || t,
r = Object(c.isString)(n) ? n.split(" ") : n;
this.stopListening.apply(this, e);
var i = this.normalizeClasses(r),
o = new v.a([]);
return this.set("classes", o), o.add(i), o.on("add remove reset", this.__upSymbCls), this.listenTo.apply(this, e), this
},
initComponents: function() {
var t = [this, "change:components", this.initComponents];
this.stopListening.apply(this, t);
var e = new p.a(null, this.opt);
e.parent = this;
var n = this.get("components"),
r = !this.opt.avoidChildren;
return this.set("components", e), r && e.add(Object(c.isFunction)(n) ? n(this) : n, this.opt), e.on("add remove reset", this.__upSymbComps), this.listenTo.apply(this, t), this
},
initTraits: function(t) {
var e = this.em,
n = [this, "change:traits", this.initTraits];
this.stopListening.apply(this, n), this.loadTraits();
var r = O({}, this.get("attributes")),
i = this.get("traits");
return i.each(function(t) {
if (!t.get("changeProp")) {
var e = t.get("name"),
n = t.getInitValue();
e && n && (r[e] = n)
}
}), i.length && this.set("attributes", r), this.listenTo.apply(this, n), t && e && e.trigger("component:toggled"), this
},
initScriptProps: function() {
if (!this.opt.temporary) {
var t = "script-props",
e = ["change:".concat(t), this.initScriptProps];
this.off.apply(this, e);
var n = this.previous(t) || [],
r = this.get(t) || [],
i = n.map(function(t) {
return "change:".concat(t)
}).join(" "),
o = r.map(function(t) {
return "change:".concat(t)
}).join(" ");
i && this.off(i, this.__scriptPropsChange), o && this.on(o, this.__scriptPropsChange), this.on.apply(this, e)
}
},
__scriptPropsChange: function(t, e) {
(arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).avoidStore || this.trigger("rerender")
},
append: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.components().add(t, e);
return Object(c.isArray)(n) ? n : [n]
},
components: function(t) {
var e = this.get("components");
return Object(c.isUndefined)(t) ? e : (e.reset(), t && this.append(t))
},
empty: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return this.components().reset(null, t), this
},
parent: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.collection || t.prev && this.prevColl;
return e && e.parent
},
scriptUpdated: function() {
this.set("scriptUpdated", 1)
},
initToolbar: function() {
var t = this.em,
e = t && t.getConfig("stylePrefix") || "";
if (!this.get("toolbar")) {
var n = [];
this.collection && n.push({
attributes: {
class: "fa fa-arrow-up"
},
command: function(t) {
return t.runCommand("core:component-exit", {
force: 1
})
}
}), this.get("draggable") && n.push({
attributes: {
class: "fa fa-arrows-alt ".concat(e, "no-touch-actions"),
draggable: !0
},
command: "tlb-move"
}), this.get("copyable") && n.push({
attributes: {
class: "fa fa-clone"
},
command: "tlb-clone"
}), this.get("removable") && n.push({
attributes: {
class: "fa fa-trash"
},
command: "tlb-delete"
}), this.set("toolbar", n)
}
},
loadTraits: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (t = t || this.get("traits"), !((t = Object(c.isFunction)(t) ? t(this) : t) instanceof w)) {
var n = new w([], this.opt);
n.setTarget(this), t.length && (t.forEach(function(t) {
return t.attributes && delete t.attributes.value
}), n.add(t)), this.set("traits", n, e)
}
return this
},
getTrait: function(t) {
return this.get("traits").filter(function(e) {
return e.get("id") === t || e.get("name") === t
})[0]
},
updateTrait: function(t, e) {
var n = this.em,
r = this.getTrait(t);
return r && r.set(e), n && n.trigger("component:toggled"), this
},
getTraitIndex: function(t) {
var e = this.getTrait(t);
return e ? this.get("traits").indexOf(e) : -1
},
removeTrait: function(t) {
var e = this,
n = this.em,
r = (Object(c.isArray)(t) ? t : [t]).map(function(t) {
return e.getTrait(t)
}),
i = this.get("traits").remove(r);
return n && n.trigger("component:toggled"), i
},
addTrait: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.em,
r = this.get("traits").add(t, e);
return n && n.trigger("component:toggled"), r
},
normalizeClasses: function(t) {
var e = [],
n = this.em,
r = n && n.get("SelectorManager");
if (r) return t.models ? a()(t.models) : (t.forEach(function(t) {
return e.push(r.add(t))
}), e)
},
clone: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.em,
n = O({}, this.attributes),
r = O({}, this.opt),
i = this.getId(),
o = e && e.get("CssComposer");
n.attributes = O({}, n.attributes), delete n.attributes.id, n.components = [], n.classes = [], n.traits = [], this.__isSymbolTop() && (t.symbol = 1), this.get("components").each(function(e, r) {
n.components[r] = e.clone(O(O({}, t), {}, {
_inner: 1
}))
}), this.get("traits").each(function(t, e) {
n.traits[e] = t.clone()
}), this.get("classes").each(function(t, e) {
n.classes[e] = t.get("name")
}), n.status = "", n.view = "", r.collection = null;
var a = new this.constructor(n, r),
s = "#".concat(a.getId());
if ((o ? o.getRules("#".concat(i)) : []).forEach(function(t) {
var e = t.clone();
e.set("selectors", [s]), o.getAll().add(e)
}), a.unset("__symbol"), t.symbol) {
var l = this.get("__symbol") || [];
l.push(a), this.set("__symbol", l), this.__initSymb(), a.set("__symbolOf", this)
}
var c = "component:clone";
return e && e.trigger(c, a), this.trigger(c, a), a
},
getName: function() {
var t = this.em,
e = this.attributes,
n = e.type,
r = e.tagName,
i = this.get("name"),
o = "div" == r,
a = n || (o ? "box" : r),
s = !n && r && !o && r,
l = "domComponents.names.",
c = i && t && t.t("".concat(l).concat(i)),
d = s && t && t.t("".concat(l).concat(s)),
h = t && (t.t("".concat(l).concat(n)) || t.t("".concat(l).concat(r)));
return this.get("custom-name") || c || i || d || Object(u.c)(s) || h || Object(u.c)(a)
},
getIcon: function() {
var t = this.get("icon");
return t ? t + " " : ""
},
toHTML: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this,
n = [],
r = t.tag || e.get("tagName"),
i = e.get("void"),
o = t.attributes,
a = this.getAttrToHTML();
for (var s in delete t.tag, o && (Object(c.isFunction)(o) ? a = o(e, a) || {} : Object(c.isObject)(o) && (a = o)), a) {
var l = a[s],
u = Object(c.isString)(l) ? l.replace(/"/g, """) : l;
Object(c.isUndefined)(u) || (Object(c.isBoolean)(u) ? u && n.push(s) : n.push("".concat(s, '="').concat(u, '"')))
}
var d = n.length ? " ".concat(n.join(" ")) : "",
h = "<".concat(r).concat(d).concat(i ? "/" : "", ">").concat(e.get("content"));
return e.get("components").each(function(e) {
return h += e.toHTML(t)
}), !i && (h += "</".concat(r, ">")), h
},
getAttrToHTML: function() {
var t = this.getAttributes();
return delete t.style, t
},
toJSON: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = f.a.Model.prototype.toJSON.call(this, t);
return e.attributes = this.getAttributes(), delete e.attributes.class, delete e.toolbar, delete e.traits, delete e.status, delete e.open, t.keepSymbols || (e.__symbol && (e.__symbol = this.__getSymbToUp().map(function(t) {
return t.getId()
})), e.__symbolOf && (e.__symbolOf = e.__symbolOf.getId())), this.em.getConfig("avoidDefaults") && this.getChangedProps(e), e
},
getChangedProps: function(t) {
var e = t || f.a.Model.prototype.toJSON.apply(this),
n = Object(c.result)(this, "defaults");
return Object(c.forEach)(n, function(t, n) {
-1 === ["type"].indexOf(n) && e[n] === t && delete e[n]
}), Object(c.isEmpty)(e.type) && delete e.type, Object(c.forEach)(["attributes", "style"], function(t) {
Object(c.isEmpty)(n[t]) && Object(c.isEmpty)(e[t]) && delete e[t]
}), Object(c.forEach)(["classes", "components"], function(t) {
(!e[t] || Object(c.isEmpty)(n[t]) && !e[t].length) && delete e[t]
}), e
},
getId: function() {
return (this.get("attributes") || {}).id || this.ccid || this.cid
},
setId: function(t, e) {
var n = O({}, this.get("attributes"));
return n.id = t, this.set("attributes", n, e), this
},
getEl: function(t) {
var e = this.getView(t);
return e && e.el
},
getView: function(t) {
var e = this.view,
n = this.views;
return t && (e = n.filter(function(e) {
return e._getFrame() === t.view
})[0]), e
},
getCurrentView: function() {
var t = (this.em.get("currentFrame") || {}).model;
return this.getView(t)
},
__getScriptProps: function() {
var t = this.props();
return (this.get("script-props") || []).reduce(function(e, n) {
return e[n] = t[n], e
}, {})
},
getScriptString: function(t) {
var e = this,
n = t || this.get("script");
if (!n) return n;
if (this.get("script-props")) n = n.toString().trim();
else {
if ("function" == typeof n) {
var r = n.toString().trim();
n = (r = r.replace(/^function[\s\w]*\(\)\s?\{/, "").replace(/\}$/, "")).trim()
}
var o = this.em.getConfig(),
a = C(o.tagVarStart || "{[ "),
s = C(o.tagVarEnd || " ]}"),
l = new RegExp("".concat(a, "([\\w\\d-]*)").concat(s), "g");
n = n.replace(l, function(t, n) {
e.scriptUpdated();
var r = e.attributes[n] || "";
return Object(c.isArray)(r) || "object" == i()(r) ? JSON.stringify(r) : r
})
}
return n
},
emitUpdate: function(t) {
for (var e = this.em, n = "component:update" + (t ? ":".concat(t) : ""), r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++) i[o - 1] = arguments[o];
t && this.updated.apply(this, [t, t && this.get(t), t && this.previous(t)].concat(i)), this.trigger.apply(this, [n].concat(i)), e && e.trigger.apply(e, [n, this].concat(i))
},
onAll: function(t) {
return Object(c.isFunction)(t) && (t(this), this.components().forEach(function(e) {
return e.onAll(t)
})), this
},
remove: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.collection;
return e && e.remove(this, t)
},
move: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return this.remove({
temporary: 1
}), t && t.append(this, e), this
},
resetId: function() {
var t = this.em,
e = this.getId();
if (e) {
var n = k.createId(this);
this.setId(n);
var r = t && t.get("CssComposer").getIdRule(e),
i = r && r.get("selectors").at(0);
return i && i.set("name", n), this
}
},
_getStyleRule: function() {
var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).id,
e = this.em,
n = t || this.getId();
return e && e.get("CssComposer").getIdRule(n)
},
_getStyleSelector: function(t) {
var e = this._getStyleRule(t);
return e && e.get("selectors").at(0)
},
_idUpdated: function(t, e) {
if (!(arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).idUpdate) {
var n = this.ccid,
r = (this.get("attributes") || {}).id,
i = (this.previous("attributes") || {}).id || n,
o = k.getList(this);
if (o[r] || !r && i) return this.setId(i, {
idUpdate: 1
});
delete o[i], o[r] = this, this.ccid = r;
var a = this._getStyleSelector({
id: i
});
a && a.set({
name: r,
label: r
})
}
}
}, {
isComponent: function(t) {
return {
tagName: t.tagName ? t.tagName.toLowerCase() : ""
}
},
ensureInList: function(t) {
var e = k.getList(t),
n = t.getId(),
r = e[n];
if (r) {
if (r !== t) {
var i = k.getIncrementId(n, e);
t.setId(i), e[i] = t
}
} else e[n] = t;
t.components().forEach(function(t) {
return k.ensureInList(t)
})
},
createId: function(t) {
var e, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = k.getList(t),
i = t.get("attributes").id;
return i ? (e = k.getIncrementId(i, r, n), t.setId(e)) : e = k.getNewId(r), r[e] = t, e
},
getNewId: function(t) {
for (var e = Object.keys(t).length.toString().length + 2, n = (Math.random() + 1.1).toString(36).slice(-e), r = "i".concat(n); t[r];) r = k.getNewId(t);
return r
},
getIncrementId: function(t, e) {
var n = (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).keepIds,
r = 1,
i = t;
if ((void 0 === n ? [] : n).indexOf(t) < 0)
for (; e[i];) r++, i = "".concat(t, "-").concat(r);
return i
},
getList: function(t) {
var e = t.opt && t.opt.domc;
return e ? e.componentsById : {}
},
checkId: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
i = Object(c.isArray)(t) ? t : [t],
o = r.keepIds,
a = void 0 === o ? [] : o;
i.forEach(function(t) {
var i = t.attributes,
o = void 0 === i ? {} : i,
s = t.components,
l = o.id;
if (l && n[l] && a.indexOf(l) < 0) {
var u = k.getIncrementId(l, n);
o.id = u, Object(c.isArray)(e) && e.forEach(function(t) {
var e = t.selectors;
e.forEach(function(t, n) {
t === "#".concat(l) && (e[n] = "#".concat(u))
})
})
}
s && k.checkId(s, e, n, r)
})
}
});
e.default = k
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(1),
a = n.n(o),
s = n(0),
l = n(21),
c = n(35),
u = n(12),
d = n(9),
h = n(3);
function f(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function p(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? f(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : f(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = a.a.View.extend({
className: function() {
return this.getClasses()
},
tagName: function() {
return this.model.get("tagName")
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model,
n = t.config || {},
r = n.em,
i = e.opt || {},
o = this.$el,
a = this.el;
n.draggableComponents, this.opts = t, this.modelOpt = i, this.config = n, this.em = r || "", this.pfx = n.stylePrefix || "", this.ppfx = n.pStylePrefix || "", this.attr = e.get("attributes"), this.classe = this.attr.class || [], this.listenTo(e, "change:style", this.updateStyle), this.listenTo(e, "change:attributes change:_innertext", this.renderAttributes), this.listenTo(e, "change:highlightable", this.updateHighlight), this.listenTo(e, "change:status", this.updateStatus), this.listenTo(e, "change:script rerender", this.reset), this.listenTo(e, "change:content", this.updateContent), this.listenTo(e, "change", this.handleChange), this.listenTo(e, "active", this.onActive), this.listenTo(e, "disable", this.onDisable), o.data("model", e), Object(h.w)(a, this), e.view = this, this._getFrame() && e.views.push(this), this.initClasses(), this.initComponents({
avoidRender: 1
}), this.events = p(p({}, this.events), this.__isDraggable() && {
dragstart: "handleDragStart"
}), this.delegateEvents(), !i.temporary && this.init(this._clbObj())
},
__isDraggable: function() {
var t = this.model,
e = this.config,
n = t.attributes,
r = n._innertext,
i = n.draggable;
return e.draggableComponents && i && !r
},
_clbObj: function() {
var t = this.em,
e = this.model,
n = this.el;
return {
editor: t && t.getEditor(),
model: e,
el: n
}
},
init: function() {},
removed: function() {},
onActive: function() {},
onDisable: function() {},
remove: function() {
var t = this;
a.a.View.prototype.remove.apply(t, arguments);
var e = t.model,
n = (t._getFrame() || {}).model;
e.components().forEach(function(t) {
var e = t.getView(n);
e && e.remove()
});
var r = e.views;
return r.splice(r.indexOf(t), 1), t.removed(t._clbObj()), t.$el.data({
model: "",
collection: "",
view: ""
}), delete t.model, delete t.$el, delete t.el.__gjsv, delete t.childrenView, delete t.scriptContainer, delete t.opts, t
},
handleDragStart: function(t) {
t.preventDefault(), t.stopPropagation(), this.em.get("Commands").run("tlb-move", {
target: this.model,
event: t
})
},
initClasses: function() {
var t = this.model,
e = "change:classes",
n = t.get("classes");
n instanceof u.a && (this.stopListening(t, e, this.initClasses), this.listenTo(t, e, this.initClasses), this.listenTo(n, "add remove change", this.updateClasses), n.length && this.importClasses())
},
initComponents: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model,
n = this.$el,
r = this.childrenView,
i = e.get("components"),
o = [e, "change:components", this.initComponents];
i instanceof l.a && (n.data("collection", i), r && r.remove(), this.stopListening.apply(this, o), !t.avoidRender && this.renderChildren(), this.listenTo.apply(this, o))
},
handleChange: function() {
var t = this.model,
e = Object(s.keys)(t.changed);
if (1 !== e.length || "status" !== e[0])
for (var n in t.emitUpdate(), t.changed) t.emitUpdate(n)
},
importClasses: function() {
var t = this.config.em.get("SelectorManager");
t && this.model.get("classes").each(function(e) {
t.add(e.get("name"))
})
},
updateStatus: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = (this.em, this.el),
n = this.model.get("status"),
r = (this.pfx, this.ppfx),
i = "".concat(r, "selected"),
o = "".concat(i, "-parent"),
a = "".concat(r, "freezed"),
s = "".concat(r, "hovered"),
l = [i, o, a, s];
this.$el.removeClass(l.join(" "));
var c = e.getAttribute("class") || "",
u = "";
switch (n) {
case "selected":
u = "".concat(c, " ").concat(i);
break;
case "selected-parent":
u = "".concat(c, " ").concat(o);
break;
case "freezed":
u = "".concat(c, " ").concat(a);
break;
case "freezed-selected":
u = "".concat(c, " ").concat(a, " ").concat(i);
break;
case "hovered":
u = t.avoidHover ? "" : "".concat(c, " ").concat(s)
}(u = u.trim()) && e.setAttribute("class", u)
},
updateHighlight: function() {
var t = this.model.get("highlightable");
this.setAttribute("data-highlightable", t ? 1 : "")
},
updateStyle: function() {
var t = this.model,
e = this.em,
n = this.el;
if (e && e.getConfig("avoidInlineStyle")) {
var r = t.getStyle(),
i = Object(s.isEmpty)(r);
!i && t.setStyle(r), t.get("_innertext") && i ? n.removeAttribute("id") : n.id = t.getId()
} else this.setAttribute("style", t.styleToString())
},
updateClasses: function() {
var t = this.model.get("classes").pluck("name").join(" ");
this.setAttribute("class", t), this.updateStatus()
},
setAttribute: function(t, e) {
var n = this.$el;
e ? n.attr(t, e) : n.removeAttr(t)
},
getClasses: function() {
return this.model.getClasses().join(" ")
},
updateAttributes: function() {
var t = [],
e = this.model,
n = this.$el,
r = this.el,
i = (this.config, e.attributes),
o = i.highlightable,
a = i.textable,
l = p(p(p({
"data-gjs-type": i.type || "default"
}, this.__isDraggable() ? {
draggable: !0
} : {}), o ? {
"data-highlightable": 1
} : {}), a ? {
contenteditable: "false",
"data-gjs-textable": "true"
} : {});
Object(s.each)(r.attributes, function(e) {
return t.push(e.nodeName)
}), t.forEach(function(t) {
return n.removeAttr(t)
});
var c = p(p({}, l), e.getAttributes());
Object(s.keys)(c).forEach(function(t) {
return !1 === c[t] && delete c[t]
}), n.attr(c), this.updateStyle()
},
updateContent: function() {
this.getChildrenContainer().innerHTML = this.model.get("content")
},
prevDef: function(t) {
t.preventDefault()
},
updateScript: function() {
var t = this.model,
e = this.em;
t.get("script") && e && e.get("Canvas").getCanvasView().updateScript(this)
},
getChildrenContainer: function() {
var t = this.el;
return "function" == typeof this.getChildrenSelector ? t = this.el.querySelector(this.getChildrenSelector()) : this.getTemplate, t
},
getOffsetRect: function() {
var t = {},
e = this.el,
n = 0,
r = 0;
return function i(o) {
var a = o.offsetParent;
a ? (n += a.offsetTop, r += a.offsetLeft, i(a)) : (t.top = e.offsetTop + n, t.left = e.offsetLeft + r, t.bottom = t.top + e.offsetHeight, t.right = t.left + e.offsetWidth)
}(e), t
},
isInViewport: function() {
var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).rect,
e = this.el.ownerDocument,
n = e.body,
r = e.defaultView.frameElement,
i = t || this.getOffsetRect(),
o = i.top,
a = i.left,
s = this._getFrame().getOffsetRect();
return o >= s.scrollTop && a >= s.scrollLeft && o <= s.scrollBottom && a <= r.offsetWidth + n.scrollLeft
},
scrollIntoView: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.getOffsetRect();
if (!this.isInViewport({
rect: e
}) || t.force) {
var n = this.el;
"smooth" !== t.behavior ? n.ownerDocument.defaultView.scrollTo(0, e.top) : n.scrollIntoView(p({
behavior: "smooth",
block: "nearest"
}, t))
}
},
reset: function() {
var t = this.el;
this.el = "", this._ensureElement(), this._setData(), Object(d.j)(t, this.el), this.render()
},
_setData: function() {
var t = this.model,
e = t.components();
this.$el.data({
model: t,
collection: e,
view: this
})
},
_getFrame: function() {
return this.config.frameView
},
renderChildren: function() {
this.updateContent();
var t = this.getChildrenContainer(),
e = this.childrenView || new c.a({
collection: this.model.get("components"),
config: this.config,
componentTypes: this.opts.componentTypes
});
e.render(t), this.childrenView = e;
for (var n = Array.prototype.slice.call(e.el.childNodes), r = 0, i = n.length; r < i; r++) t.appendChild(n.shift())
},
renderAttributes: function() {
this.updateAttributes(), this.updateClasses()
},
render: function() {
return this.renderAttributes(), this.modelOpt.temporary || (this.renderChildren(), this.updateScript(), Object(h.w)(this.el, this), this.postRender()), this
},
postRender: function() {
var t = this.em,
e = this.model;
this.modelOpt.temporary || (this.onRender(this._clbObj()), t && t.trigger("component:mount", e))
},
onRender: function() {}
})
}, function(t, e, n) {
var r = n(74),
i = n(75),
o = n(43),
a = n(76);
t.exports = function(t) {
return r(t) || i(t) || o(t) || a()
}
}, function(t, e) {
function n(e) {
return "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? t.exports = n = function(t) {
return typeof t
} : t.exports = n = function(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
}, n(e)
}
t.exports = n
}, function(t, e, n) {
"use strict";
n.d(e, "i", function() {
return i
}), n.d(e, "g", function() {
return o
}), n.d(e, "h", function() {
return a
}), n.d(e, "f", function() {
return s
}), n.d(e, "j", function() {
return l
}), n.d(e, "b", function() {
return c
}), n.d(e, "a", function() {
return u
}), n.d(e, "e", function() {
return d
}), n.d(e, "d", function() {
return h
}), n.d(e, "c", function() {
return f
});
var r = n(0),
i = "transitionend oTransitionEnd transitionend webkitTransitionEnd",
o = function(t) {
return t && 9 === t.nodeType
},
a = function(t) {
return t && !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length)
},
s = function(t) {
for (; t.firstChild;) t.removeChild(t.firstChild)
},
l = function(t, e) {
t.parentNode.replaceChild(e, t)
},
c = function(t, e, n) {
var i = t.childNodes,
o = i.length,
a = Object(r.isUndefined)(n) ? o : n;
Object(r.isString)(e) && (t.insertAdjacentHTML("beforeEnd", e), e = t.lastChild, t.removeChild(e)), a >= o ? t.appendChild(e) : t.insertBefore(e, i[a])
},
u = function(t, e) {
return c(t, e)
},
d = function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
n = arguments.length > 2 ? arguments[2] : void 0,
i = document.createElement(t);
return e && Object(r.each)(e, function(t, e) {
return i.setAttribute(e, t)
}), n && (Object(r.isString)(n) ? i.innerHTML = n : i.appendChild(n)), i
},
h = function(t, e) {
var n;
try {
n = new window[e](t.type, t)
} catch (t) {
(n = document.createEvent(e)).initEvent(t.type, !0, !0)
}
return n.keyCodeVal = t.keyCode, n._parentEvent = t, ["keyCode", "which"].forEach(function(t) {
Object.defineProperty(n, t, {
get: function() {
return this.keyCodeVal
}
})
}), n
},
f = function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
(Array.isArray(e) ? e : [e]).forEach(function(e) {
var n = e.tag || "div",
i = e.attributes || {},
o = document.createElement(n);
Object(r.each)(i, function(t, e) {
o.setAttribute(e, t)
}), t.appendChild(o)
})
}
}, function(t, e, n) {
"use strict";
var r = n(1),
i = n.n(r),
o = n(0),
a = i.a.Model,
s = a.extend({
idAttribute: "name",
defaults: {
name: "",
label: "",
type: 1,
active: !0,
private: !1,
protected: !1
},
initialize: function(t) {
var e = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).config,
n = void 0 === e ? {} : e,
r = this.get("name"),
i = this.get("label");
r ? i || this.set("label", r) : this.set("name", i);
var o = this.get("name"),
a = n.escapeName,
l = a ? a(o) : s.escapeName(o);
this.set("name", l), this.em = n.em
},
getFullName: function() {
var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).escape,
e = this.get("name"),
n = "";
switch (this.get("type")) {
case 1:
n = ".";
break;
case 2:
n = "#"
}
return n + (t ? t(e) : e)
},
toJSON: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.em,
n = a.prototype.toJSON.call(this, [t]),
r = Object(o.result)(this, "defaults");
if (e && e.getConfig("avoidDefaults")) {
Object(o.forEach)(r, function(t, e) {
n[e] === t && delete n[e]
}), n.label === n.name && delete n.label;
var i = Object(o.keys)(n).length;
1 === i && n.name && (n = n.name), 2 === i && n.name && n.type && (n = this.getFullName())
}
return n
}
}, {
TYPE_CLASS: 1,
TYPE_ID: 2,
escapeName: function(t) {
return "".concat(t).trim().replace(/([^a-z0-9\w-\:]+)/gi, "-")
}
});
e.a = s
}, function(t, e, n) {
"use strict";
n.r(e);
var r = document,
i = window,
o = Array.prototype,
a = o.filter,
s = o.indexOf,
l = o.map,
c = o.push,
u = o.reverse,
d = o.slice,
h = o.splice,
f = /^#[\w-]*$/,
p = /^\.[\w-]*$/,
g = /<.+>/,
v = /^\w+$/;
function m(t, e) {
return void 0 === e && (e = r), p.test(t) ? e.getElementsByClassName(t.slice(1)) : v.test(t) ? e.getElementsByTagName(t) : e.querySelectorAll(t)
}
function b(t, e) {
if (void 0 === e && (e = r), t) {
if (t.__cash) return t;
var n = t;
if (P(t)) {
if (e.__cash && (e = e[0]), !(n = f.test(t) ? e.getElementById(t.slice(1)) : g.test(t) ? ht(t) : m(t, e))) return
} else if (T(t)) return this.ready(t);
(n.nodeType || n === i) && (n = [n]), this.length = n.length;
for (var o = 0, a = this.length; o < a; o++) this[o] = n[o]
}
}
function y(t, e) {
return new b(t, e)
}
var w = y.fn = y.prototype = b.prototype = {
constructor: y,
__cash: !0,
length: 0,
splice: h
};
w.get = function(t) {
return void 0 === t ? d.call(this) : this[t < 0 ? t + this.length : t]
}, w.eq = function(t) {
return y(this.get(t))
}, w.first = function() {
return this.eq(0)
}, w.last = function() {
return this.eq(-1)
}, w.map = function(t) {
return y(l.call(this, function(e, n) {
return t.call(e, n, e)
}))
}, w.slice = function() {
return y(d.apply(this, arguments))
};
var x = /(?:^\w|[A-Z]|\b\w)/g,
O = /[\s-_]+/g;
function C(t) {
return t.replace(x, function(t, e) {
return t[e ? "toUpperCase" : "toLowerCase"]()
}).replace(O, "")
}
function S(t, e) {
for (var n = 0, r = t.length; n < r && !1 !== e.call(t[n], t[n], n, t); n++);
}
y.camelCase = C, y.each = S, w.each = function(t) {
return S(this, function(e, n) {
return t.call(e, n, e)
}), this
}, w.removeProp = function(t) {
return this.each(function(e, n) {
delete n[t]
})
}, y.extend = w.extend = function(t) {
void 0 === t && (t = this);
for (var e = arguments, n = e.length, r = n < 2 ? 0 : 1; r < n; r++)
for (var i in e[r]) t[i] = e[r][i];
return t
};
var k = 1;
function j(t, e) {
var n = t && (t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector || t.oMatchesSelector);
return !!n && n.call(t, e)
}
function T(t) {
return "function" == typeof t
}
function P(t) {
return "string" == typeof t
}
function E(t) {
return !isNaN(parseFloat(t)) && isFinite(t)
}
y.guid = k, y.matches = j, y.isFunction = T, y.isString = P, y.isNumeric = E;
var M = Array.isArray;
function D(t) {
return P(t) ? function(e, n) {
return j(n, t)
} : t.__cash ? function(e, n) {
return t.is(n)
} : function(t, e, n) {
return e === n
}
}
y.isArray = M, w.prop = function(t, e) {
if (t) {
if (P(t)) return arguments.length < 2 ? this[0] && this[0][t] : this.each(function(n, r) {
r[t] = e
});
for (var n in t) this.prop(n, t[n]);
return this
}
}, w.filter = function(t) {
if (!t) return y();
var e = T(t) ? t : D(t);
return y(a.call(this, function(n, r) {
return e.call(n, r, n, t)
}))
};
var A = /\S+/g;
function L(t) {
return P(t) && t.match(A) || []
}
function _(t) {
return t.filter(function(t, e, n) {
return n.indexOf(t) === e
})
}
function N(t, e, n) {
if (1 === t.nodeType) {
var r = i.getComputedStyle(t, null);
return e ? n ? r.getPropertyValue(e) : r[e] : r
}
}
function I(t, e) {
return parseInt(N(t, e), 10) || 0
}
w.hasClass = function(t) {
var e = L(t),
n = !1;
return e.length && this.each(function(t, r) {
return !(n = r.classList.contains(e[0]))
}), n
}, w.removeAttr = function(t) {
var e = L(t);
return e.length ? this.each(function(t, n) {
S(e, function(t) {
n.removeAttribute(t)
})
}) : this
}, w.attr = function(t, e) {
if (t) {
if (P(t)) {
if (arguments.length < 2) {
if (!this[0]) return;
var n = this[0].getAttribute(t);
return null === n ? void 0 : n
}
return null === e ? this.removeAttr(t) : this.each(function(n, r) {
r.setAttribute(t, e)
})
}
for (var r in t) this.attr(r, t[r]);
return this
}
}, w.toggleClass = function(t, e) {
var n = L(t),
r = void 0 !== e;
return n.length ? this.each(function(t, i) {
S(n, function(t) {
r ? e ? i.classList.add(t) : i.classList.remove(t) : i.classList.toggle(t)
})
}) : this
}, w.addClass = function(t) {
return this.toggleClass(t, !0)
}, w.removeClass = function(t) {
return arguments.length ? this.toggleClass(t, !1) : this.attr("class", "")
}, y.unique = _, w.add = function(t, e) {
return y(_(this.get().concat(y(t, e).get())))
};
var F = /^--/;
function V(t) {
return F.test(t)
}
var R = {},
z = r.createElement("div").style,
H = ["webkit", "moz", "ms", "o"];
function $(t, e) {
if (void 0 === e && (e = V(t)), e) return t;
if (!R[t]) {
var n = C(t),
r = "" + n.charAt(0).toUpperCase() + n.slice(1);
S((n + " " + H.join(r + " ") + r).split(" "), function(e) {
if (e in z) return R[t] = e, !1
})
}
return R[t]
}
y.prefixedProp = $;
var U = {
animationIterationCount: !0,
columnCount: !0,
flexGrow: !0,
flexShrink: !0,
fontWeight: !0,
lineHeight: !0,
opacity: !0,
order: !0,
orphans: !0,
widows: !0,
zIndex: !0
};
function B(t, e, n) {
return void 0 === n && (n = V(t)), n || U[t] || !E(e) ? e : e + "px"
}
w.css = function(t, e) {
if (P(t)) {
var n = V(t);
return t = $(t, n), arguments.length < 2 ? this[0] && N(this[0], t, n) : t ? (e = B(t, e, n), this.each(function(r, i) {
1 === i.nodeType && (n ? i.style.setProperty(t, e) : i.style[t] = e)
})) : this
}
for (var r in t) this.css(r, t[r]);
return this
};
var W = "__cashData",
q = /^data-(.*)/;
function G(t) {
return t[W] = t[W] || {}
}
function K(t, e) {
var n = G(t);
if (e) {
if (!(e in n)) {
var r = t.dataset ? t.dataset[e] || t.dataset[C(e)] : y(t).attr("data-" + e);
if (void 0 !== r) {
try {
r = JSON.parse(r)
} catch (t) {}
n[e] = r
}
}
return n[e]
}
return n
}
function Y(t, e) {
return I(t, "border" + (e ? "Left" : "Top") + "Width") + I(t, "padding" + (e ? "Left" : "Top")) + I(t, "padding" + (e ? "Right" : "Bottom")) + I(t, "border" + (e ? "Right" : "Bottom") + "Width")
}
function X(t, e) {
for (var n = 0, r = e.length; n < r; n++)
if (t.indexOf(e[n]) < 0) return !1;
return !0
}
function J(t, e, n) {
S(t[n], function(t) {
t[0];
var r = t[1];
e.removeEventListener(n, r)
}), delete t[n]
}
y.hasData = function(t) {
return W in t
}, w.data = function(t, e) {
var n = this;
if (!t) {
if (!this[0]) return;
return S(this[0].attributes, function(t) {
var e = t.name.match(q);
e && n.data(e[1])
}), K(this[0])
}
if (P(t)) return void 0 === e ? this[0] && K(this[0], t) : this.each(function(n, r) {
return function(t, e, n) {
G(r)[e] = n
}(0, t, e)
});
for (var r in t) this.data(r, t[r]);
return this
}, w.removeData = function(t) {
return this.each(function(e, n) {
return function(t, e) {
void 0 === e ? delete t[W] : delete G(t)[e]
}(n, t)
})
}, S(["Width", "Height"], function(t) {
w["inner" + t] = function() {
if (this[0]) return this[0] === i ? i["inner" + t] : this[0]["client" + t]
}
}), S(["width", "height"], function(t, e) {
w[t] = function(n) {
return this[0] ? arguments.length ? (n = parseInt(n, 10), this.each(function(r, i) {
if (1 === i.nodeType) {
var o = N(i, "boxSizing");
i.style[t] = B(t, n + ("border-box" === o ? Y(i, !e) : 0))
}
})) : this[0] === i ? this[0][C("outer-" + t)] : this[0].getBoundingClientRect()[t] - Y(this[0], !e) : void 0 === n ? void 0 : this
}
}), S(["Width", "Height"], function(t, e) {
w["outer" + t] = function(n) {
if (this[0]) return this[0] === i ? i["outer" + t] : this[0]["offset" + t] + (n ? I(this[0], "margin" + (e ? "Top" : "Left")) + I(this[0], "margin" + (e ? "Bottom" : "Right")) : 0)
}
});
var Z = "__cashEvents",
Q = ".";
function tt(t) {
return t[Z] = t[Z] || {}
}
function et(t) {
var e = t.split(Q);
return [e[0], e.slice(1).sort()]
}
function nt(t, e, n, r) {
var i = tt(t);
if (e) {
var o = i[e];
if (!o) return;
r && (r.guid = r.guid || k++), i[e] = o.filter(function(i) {
var o = i[0],
a = i[1];
if (r && a.guid !== r.guid || !X(o, n)) return !0;
t.removeEventListener(e, a)
})
} else if (n && n.length)
for (e in i) nt(t, e, n, r);
else
for (e in i) J(i, t, e)
}
w.off = function(t, e) {
var n = this;
return void 0 === t ? this.each(function(t, e) {
return nt(e)
}) : S(L(t), function(t) {
var r = et(t),
i = r[0],
o = r[1];
n.each(function(t, n) {
return nt(n, i, o, e)
})
}), this
}, w.on = function(t, e, n, r) {
var i = this;
if (!P(t)) {
for (var o in t) this.on(o, e, t[o]);
return this
}
return T(e) && (n = e, e = !1), S(L(t), function(t) {
var o = et(t),
a = o[0],
s = o[1];
i.each(function(t, i) {
var o = function t(o) {
if (!o.namespace || X(s, o.namespace.split(Q))) {
var l = i;
if (e) {
for (var c = o.target; !j(c, e);) {
if (c === i) return;
if (!(c = c.parentNode)) return
}
l = c
}
o.namespace = o.namespace || "";
var u = n.call(l, o, o.data);
r && nt(i, a, s, t), !1 === u && (o.preventDefault(), o.stopPropagation())
}
};
o.guid = n.guid = n.guid || k++,
function(t, e, n, r) {
r.guid = r.guid || k++;
var i = tt(t);
i[e] = i[e] || [], i[e].push([n, r]), t.addEventListener(e, r)
}(i, a, s, o)
})
}), this
}, w.one = function(t, e, n) {
return this.on(t, e, n, !0)
}, w.ready = function(t) {
var e = function() {
return t(y)
};
return "loading" !== r.readyState ? setTimeout(e) : r.addEventListener("DOMContentLoaded", e), this
}, w.trigger = function(t, e) {
var n = t;
if (P(t)) {
var i = et(t),
o = i[0],
a = i[1];
(n = r.createEvent("HTMLEvents")).initEvent(o, !0, !0), n.namespace = a.join(Q)
}
return n.data = e, this.each(function(t, e) {
e.dispatchEvent(n)
})
};
var rt = /select-one/i,
it = /select-multiple/i;
function ot(t) {
var e = t.type;
return rt.test(e) ? function(t) {
return t.selectedIndex < 0 ? null : t.options[t.selectedIndex].value
}(t) : it.test(e) ? function(t) {
var e = [];
return S(t.options, function(t) {
!t.selected || t.disabled || t.parentNode.disabled || e.push(t.value)
}), e
}(t) : t.value
}
var at = /%20/g,
st = /file|reset|submit|button|image/i,
lt = /radio|checkbox/i;
w.serialize = function() {
var t = "";
return this.each(function(e, n) {
S(n.elements || [n], function(e) {
if (!e.disabled && e.name && "FIELDSET" !== e.tagName && !st.test(e.type) && (!lt.test(e.type) || e.checked)) {
var n = ot(e);
void 0 !== n && S(M(n) ? n : [n], function(n) {
t += function(t, e) {
return "&" + encodeURIComponent(t) + "=" + encodeURIComponent(e).replace(at, "+")
}(e.name, n)
})
}
})
}), t.substr(1)
}, w.val = function(t) {
return void 0 === t ? this[0] && ot(this[0]) : this.each(function(e, n) {
var r = it.test(n.type),
i = null === t ? r ? [] : "" : t;
r && M(i) ? S(n.options, function(t) {
t.selected = i.indexOf(t.value) >= 0
}) : n.value = i
})
}, w.clone = function() {
return this.map(function(t, e) {
return e.cloneNode(!0)
})
}, w.detach = function() {
return this.each(function(t, e) {
e.parentNode && e.parentNode.removeChild(e)
})
};
var ct, ut = /^\s*<(\w+)[^>]*>/,
dt = /^\s*<(\w+)\s*\/?>(?:<\/\1>)?\s*$/;
function ht(t) {
if (function() {
if (!ct) {
var t = r.createElement("table"),
e = r.createElement("tr");
ct = {
"*": r.createElement("div"),
tr: r.createElement("tbody"),
td: e,
th: e,
thead: t,
tbody: t,
tfoot: t
}
}
}(), !P(t)) return [];
if (dt.test(t)) return [r.createElement(RegExp.$1)];
var e = ut.test(t) && RegExp.$1,
n = ct[e] || ct["*"];
return n.innerHTML = t, y(n.childNodes).detach().get()
}
function ft(t, e, n) {
if (void 0 !== e) {
var r = P(e);
!r && e.length ? S(e, function(e) {
return ft(t, e, n)
}) : S(t, r ? function(t) {
t.insertAdjacentHTML(n ? "afterbegin" : "beforeend", e)
} : function(t, r) {
return function(t, e, n) {
n ? t.insertBefore(e, t.childNodes[0]) : t.appendChild(e)
}(t, r ? e.cloneNode(!0) : e, n)
})
}
}
y.parseHTML = ht, w.empty = function() {
var t = this[0];
if (t)
for (; t.firstChild;) t.removeChild(t.firstChild);
return this
}, w.append = function() {
var t = this;
return S(arguments, function(e) {
ft(t, e)
}), this
}, w.appendTo = function(t) {
return ft(y(t), this), this
}, w.html = function(t) {
if (void 0 === t) return this[0] && this[0].innerHTML;
var e = t.nodeType ? t[0].outerHTML : t;
return this.each(function(t, n) {
n.innerHTML = e
})
}, w.insertAfter = function(t) {
var e = this;
return y(t).each(function(t, n) {
var r = n.parentNode;
e.each(function(e, i) {
r.insertBefore(t ? i.cloneNode(!0) : i, n.nextSibling)
})
}), this
}, w.after = function() {
var t = this;
return S(u.apply(arguments), function(e) {
u.apply(y(e).slice()).insertAfter(t)
}), this
}, w.insertBefore = function(t) {
var e = this;
return y(t).each(function(t, n) {
var r = n.parentNode;
e.each(function(e, i) {
r.insertBefore(t ? i.cloneNode(!0) : i, n)
})
}), this
}, w.before = function() {
var t = this;
return S(arguments, function(e) {
y(e).insertBefore(t)
}), this
}, w.prepend = function() {
var t = this;
return S(arguments, function(e) {
ft(t, e, !0)
}), this
}, w.prependTo = function(t) {
return ft(y(t), u.apply(this.slice()), !0), this
}, w.remove = function() {
return this.detach().off()
}, w.replaceWith = function(t) {
var e = this;
return this.each(function(n, r) {
var i = r.parentNode;
if (i) {
var o = n ? y(t).clone() : y(t);
if (!o[0]) return e.remove(), !1;
i.replaceChild(o[0], r), y(o[0]).after(o.slice(1))
}
})
}, w.replaceAll = function(t) {
return y(t).replaceWith(this), this
}, w.text = function(t) {
return void 0 === t ? this[0] ? this[0].textContent : "" : this.each(function(e, n) {
n.textContent = t
})
};
var pt = r.documentElement;
w.offset = function() {
var t = this[0];
if (t) {
var e = t.getBoundingClientRect();
return {
top: e.top + i.pageYOffset - pt.clientTop,
left: e.left + i.pageXOffset - pt.clientLeft
}
}
}, w.offsetParent = function() {
return y(this[0] && this[0].offsetParent)
}, w.position = function() {
var t = this[0];
if (t) return {
left: t.offsetLeft,
top: t.offsetTop
}
}, w.children = function(t) {
var e = [];
return this.each(function(t, n) {
c.apply(e, n.children)
}), e = y(_(e)), t ? e.filter(function(e, n) {
return j(n, t)
}) : e
}, w.contents = function() {
var t = [];
return this.each(function(e, n) {
c.apply(t, "IFRAME" === n.tagName ? [n.contentDocument] : n.childNodes)
}), y(t.length && _(t))
}, w.find = function(t) {
for (var e = [], n = 0, r = this.length; n < r; n++) {
var i = m(t, this[n]);
i.length && c.apply(e, i)
}
return y(e.length && _(e))
}, w.has = function(t) {
var e = P(t) ? function(e, n) {
return !!m(t, n).length
} : function(e, n) {
return n.contains(t)
};
return this.filter(e)
}, w.is = function(t) {
if (!t || !this[0]) return !1;
var e = D(t),
n = !1;
return this.each(function(r, i) {
return !(n = e(r, i, t))
}), n
}, w.next = function() {
return y(this[0] && this[0].nextElementSibling)
}, w.not = function(t) {
if (!t || !this[0]) return this;
var e = D(t);
return this.filter(function(n, r) {
return !e(n, r, t)
})
}, w.parent = function() {
var t = [];
return this.each(function(e, n) {
n && n.parentNode && t.push(n.parentNode)
}), y(_(t))
}, w.index = function(t) {
var e = t ? y(t)[0] : this[0],
n = t ? this : y(e).parent().children();
return s.call(n, e)
}, w.closest = function(t) {
return t && this[0] ? this.is(t) ? this.filter(t) : this.parent().closest(t) : y()
}, w.parents = function(t) {
var e, n = [];
return this.each(function(i, o) {
for (e = o; e && e.parentNode && e !== r.body.parentNode;) e = e.parentNode, (!t || t && j(e, t)) && n.push(e)
}), y(_(n))
}, w.prev = function() {
return y(this[0] && this[0].previousElementSibling)
}, w.siblings = function() {
var t = this[0];
return this.parent().children().filter(function(e, n) {
return n !== t
})
}, e.default = y
}, function(t, e, n) {
"use strict";
var r = n(0),
i = n(1),
o = n.n(i),
a = n(10);
e.a = o.a.Collection.extend({
model: a.a,
modelId: function(t) {
return "".concat(t.name, "_").concat(t.type || a.a.TYPE_CLASS)
},
getStyleable: function() {
return Object(r.filter)(this.models, function(t) {
return t.get("active") && !t.get("private")
})
},
getValid: function() {
var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).noDisabled;
return Object(r.filter)(this.models, function(t) {
return !t.get("private")
}).filter(function(e) {
return t ? e.get("active") : 1
})
},
getFullString: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = [];
return (t || this).forEach(function(t) {
return n.push(t.getFullName(e))
}), n.join("").trim()
}
})
}, function(t, e, n) {
t.exports = function() {
"use strict";
var t = navigator.userAgent,
e = navigator.platform,
n = /gecko\/\d/i.test(t),
r = /MSIE \d/.test(t),
i = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(t),
o = /Edge\/(\d+)/.exec(t),
a = r || i || o,
s = a && (r ? document.documentMode || 6 : +(o || i)[1]),
l = !o && /WebKit\//.test(t),
c = l && /Qt\/\d+\.\d+/.test(t),
u = !o && /Chrome\//.test(t),
d = /Opera\//.test(t),
h = /Apple Computer/.test(navigator.vendor),
f = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(t),
p = /PhantomJS/.test(t),
g = h && (/Mobile\/\w+/.test(t) || navigator.maxTouchPoints > 2),
v = /Android/.test(t),
m = g || v || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(t),
b = g || /Mac/.test(e),
y = /\bCrOS\b/.test(t),
w = /win/i.test(e),
x = d && t.match(/Version\/(\d*\.\d*)/);
x && (x = Number(x[1])), x && x >= 15 && (d = !1, l = !0);
var O = b && (c || d && (null == x || x < 12.11)),
C = n || a && s >= 9;
function S(t) {
return new RegExp("(^|\\s)" + t + "(?:$|\\s)\\s*")
}
var k, j = function(t, e) {
var n = t.className,
r = S(e).exec(n);
if (r) {
var i = n.slice(r.index + r[0].length);
t.className = n.slice(0, r.index) + (i ? r[1] + i : "")
}
};
function T(t) {
for (var e = t.childNodes.length; e > 0; --e) t.removeChild(t.firstChild);
return t
}
function P(t, e) {
return T(t).appendChild(e)
}
function E(t, e, n, r) {
var i = document.createElement(t);
if (n && (i.className = n), r && (i.style.cssText = r), "string" == typeof e) i.appendChild(document.createTextNode(e));
else if (e)
for (var o = 0; o < e.length; ++o) i.appendChild(e[o]);
return i
}
function M(t, e, n, r) {
var i = E(t, e, n, r);
return i.setAttribute("role", "presentation"), i
}
function D(t, e) {
if (3 == e.nodeType && (e = e.parentNode), t.contains) return t.contains(e);
do {
if (11 == e.nodeType && (e = e.host), e == t) return !0
} while (e = e.parentNode)
}
function A() {
var t;
try {
t = document.activeElement
} catch (e) {
t = document.body || null
}
for (; t && t.shadowRoot && t.shadowRoot.activeElement;) t = t.shadowRoot.activeElement;
return t
}
function L(t, e) {
var n = t.className;
S(e).test(n) || (t.className += (n ? " " : "") + e)
}
function _(t, e) {
for (var n = t.split(" "), r = 0; r < n.length; r++) n[r] && !S(n[r]).test(e) && (e += " " + n[r]);
return e
}
k = document.createRange ? function(t, e, n, r) {
var i = document.createRange();
return i.setEnd(r || t, n), i.setStart(t, e), i
} : function(t, e, n) {
var r = document.body.createTextRange();
try {
r.moveToElementText(t.parentNode)
} catch (t) {
return r
}
return r.collapse(!0), r.moveEnd("character", n), r.moveStart("character", e), r
};
var N = function(t) {
t.select()
};
function I(t) {
var e = Array.prototype.slice.call(arguments, 1);
return function() {
return t.apply(null, e)
}
}
function F(t, e, n) {
for (var r in e || (e = {}), t) !t.hasOwnProperty(r) || !1 === n && e.hasOwnProperty(r) || (e[r] = t[r]);
return e
}
function V(t, e, n, r, i) {
null == e && -1 == (e = t.search(/[^\s\u00a0]/)) && (e = t.length);
for (var o = r || 0, a = i || 0;;) {
var s = t.indexOf("\t", o);
if (s < 0 || s >= e) return a + (e - o);
a += s - o, a += n - a % n, o = s + 1
}
}
g ? N = function(t) {
t.selectionStart = 0, t.selectionEnd = t.value.length
} : a && (N = function(t) {
try {
t.select()
} catch (t) {}
});
var R = function() {
this.id = null, this.f = null, this.time = 0, this.handler = I(this.onTimeout, this)
};
function z(t, e) {
for (var n = 0; n < t.length; ++n)
if (t[n] == e) return n;
return -1
}
R.prototype.onTimeout = function(t) {
t.id = 0, t.time <= +new Date ? t.f() : setTimeout(t.handler, t.time - +new Date)
}, R.prototype.set = function(t, e) {
this.f = e;
var n = +new Date + t;
(!this.id || n < this.time) && (clearTimeout(this.id), this.id = setTimeout(this.handler, t), this.time = n)
};
var H = 50,
$ = {
toString: function() {
return "CodeMirror.Pass"
}
},
U = {
scroll: !1
},
B = {
origin: "*mouse"
},
W = {
origin: "+move"
};
function q(t, e, n) {
for (var r = 0, i = 0;;) {
var o = t.indexOf("\t", r); - 1 == o && (o = t.length);
var a = o - r;
if (o == t.length || i + a >= e) return r + Math.min(a, e - i);
if (i += o - r, r = o + 1, (i += n - i % n) >= e) return r
}
}
var G = [""];
function K(t) {
for (; G.length <= t;) G.push(Y(G) + " ");
return G[t]
}
function Y(t) {
return t[t.length - 1]
}
function X(t, e) {
for (var n = [], r = 0; r < t.length; r++) n[r] = e(t[r], r);
return n
}
function J() {}
function Z(t, e) {
var n;
return Object.create ? n = Object.create(t) : (J.prototype = t, n = new J), e && F(e, n), n
}
var Q = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;
function tt(t) {
return /\w/.test(t) || t > "" && (t.toUpperCase() != t.toLowerCase() || Q.test(t))
}
function et(t, e) {
return e ? !!(e.source.indexOf("\\w") > -1 && tt(t)) || e.test(t) : tt(t)
}
function nt(t) {
for (var e in t)
if (t.hasOwnProperty(e) && t[e]) return !1;
return !0
}
var rt = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\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\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\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\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;
function it(t) {
return t.charCodeAt(0) >= 768 && rt.test(t)
}
function ot(t, e, n) {
for (;
(n < 0 ? e > 0 : e < t.length) && it(t.charAt(e));) e += n;
return e
}
function at(t, e, n) {
for (var r = e > n ? -1 : 1;;) {
if (e == n) return e;
var i = (e + n) / 2,
o = r < 0 ? Math.ceil(i) : Math.floor(i);
if (o == e) return t(o) ? e : n;
t(o) ? n = o : e = o + r
}
}
var st = null;
function lt(t, e, n) {
var r;
st = null;
for (var i = 0; i < t.length; ++i) {
var o = t[i];
if (o.from < e && o.to > e) return i;
o.to == e && (o.from != o.to && "before" == n ? r = i : st = i), o.from == e && (o.from != o.to && "before" != n ? r = i : st = i)
}
return null != r ? r : st
}
var ct = function() {
var t = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,
e = /[stwN]/,
n = /[LRr]/,
r = /[Lb1n]/,
i = /[1n]/;
function o(t, e, n) {
this.level = t, this.from = e, this.to = n
}
return function(a, s) {
var l = "ltr" == s ? "L" : "R";
if (0 == a.length || "ltr" == s && !t.test(a)) return !1;
for (var c, u = a.length, d = [], h = 0; h < u; ++h) d.push((c = a.charCodeAt(h)) <= 247 ? "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN".charAt(c) : 1424 <= c && c <= 1524 ? "R" : 1536 <= c && c <= 1785 ? "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111".charAt(c - 1536) : 1774 <= c && c <= 2220 ? "r" : 8192 <= c && c <= 8203 ? "w" : 8204 == c ? "b" : "L");
for (var f = 0, p = l; f < u; ++f) {
var g = d[f];
"m" == g ? d[f] = p : p = g
}
for (var v = 0, m = l; v < u; ++v) {
var b = d[v];
"1" == b && "r" == m ? d[v] = "n" : n.test(b) && (m = b, "r" == b && (d[v] = "R"))
}
for (var y = 1, w = d[0]; y < u - 1; ++y) {
var x = d[y];
"+" == x && "1" == w && "1" == d[y + 1] ? d[y] = "1" : "," != x || w != d[y + 1] || "1" != w && "n" != w || (d[y] = w), w = x
}
for (var O = 0; O < u; ++O) {
var C = d[O];
if ("," == C) d[O] = "N";
else if ("%" == C) {
var S = void 0;
for (S = O + 1; S < u && "%" == d[S]; ++S);
for (var k = O && "!" == d[O - 1] || S < u && "1" == d[S] ? "1" : "N", j = O; j < S; ++j) d[j] = k;
O = S - 1
}
}
for (var T = 0, P = l; T < u; ++T) {
var E = d[T];
"L" == P && "1" == E ? d[T] = "L" : n.test(E) && (P = E)
}
for (var M = 0; M < u; ++M)
if (e.test(d[M])) {
var D = void 0;
for (D = M + 1; D < u && e.test(d[D]); ++D);
for (var A = "L" == (M ? d[M - 1] : l), L = A == ("L" == (D < u ? d[D] : l)) ? A ? "L" : "R" : l, _ = M; _ < D; ++_) d[_] = L;
M = D - 1
} for (var N, I = [], F = 0; F < u;)
if (r.test(d[F])) {
var V = F;
for (++F; F < u && r.test(d[F]); ++F);
I.push(new o(0, V, F))
} else {
var R = F,
z = I.length,
H = "rtl" == s ? 1 : 0;
for (++F; F < u && "L" != d[F]; ++F);
for (var $ = R; $ < F;)
if (i.test(d[$])) {
R < $ && (I.splice(z, 0, new o(1, R, $)), z += H);
var U = $;
for (++$; $ < F && i.test(d[$]); ++$);
I.splice(z, 0, new o(2, U, $)), z += H, R = $
} else ++$;
R < F && I.splice(z, 0, new o(1, R, F))
} return "ltr" == s && (1 == I[0].level && (N = a.match(/^\s+/)) && (I[0].from = N[0].length, I.unshift(new o(0, 0, N[0].length))), 1 == Y(I).level && (N = a.match(/\s+$/)) && (Y(I).to -= N[0].length, I.push(new o(0, u - N[0].length, u)))), "rtl" == s ? I.reverse() : I
}
}();
function ut(t, e) {
var n = t.order;
return null == n && (n = t.order = ct(t.text, e)), n
}
var dt = [],
ht = function(t, e, n) {
if (t.addEventListener) t.addEventListener(e, n, !1);
else if (t.attachEvent) t.attachEvent("on" + e, n);
else {
var r = t._handlers || (t._handlers = {});
r[e] = (r[e] || dt).concat(n)
}
};
function ft(t, e) {
return t._handlers && t._handlers[e] || dt
}
function pt(t, e, n) {
if (t.removeEventListener) t.removeEventListener(e, n, !1);
else if (t.detachEvent) t.detachEvent("on" + e, n);
else {
var r = t._handlers,
i = r && r[e];
if (i) {
var o = z(i, n);
o > -1 && (r[e] = i.slice(0, o).concat(i.slice(o + 1)))
}
}
}
function gt(t, e) {
var n = ft(t, e);
if (n.length)
for (var r = Array.prototype.slice.call(arguments, 2), i = 0; i < n.length; ++i) n[i].apply(null, r)
}
function vt(t, e, n) {
return "string" == typeof e && (e = {
type: e,
preventDefault: function() {
this.defaultPrevented = !0
}
}), gt(t, n || e.type, t, e), Ot(e) || e.codemirrorIgnore
}
function mt(t) {
var e = t._handlers && t._handlers.cursorActivity;
if (e)
for (var n = t.curOp.cursorActivityHandlers || (t.curOp.cursorActivityHandlers = []), r = 0; r < e.length; ++r) - 1 == z(n, e[r]) && n.push(e[r])
}
function bt(t, e) {
return ft(t, e).length > 0
}
function yt(t) {
t.prototype.on = function(t, e) {
ht(this, t, e)
}, t.prototype.off = function(t, e) {
pt(this, t, e)
}
}
function wt(t) {
t.preventDefault ? t.preventDefault() : t.returnValue = !1
}
function xt(t) {
t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0
}
function Ot(t) {
return null != t.defaultPrevented ? t.defaultPrevented : 0 == t.returnValue
}
function Ct(t) {
wt(t), xt(t)
}
function St(t) {
return t.target || t.srcElement
}
function kt(t) {
var e = t.which;
return null == e && (1 & t.button ? e = 1 : 2 & t.button ? e = 3 : 4 & t.button && (e = 2)), b && t.ctrlKey && 1 == e && (e = 3), e
}
var jt, Tt, Pt = function() {
if (a && s < 9) return !1;
var t = E("div");
return "draggable" in t || "dragDrop" in t
}();
function Et(t) {
if (null == jt) {
var e = E("span", "");
P(t, E("span", [e, document.createTextNode("x")])), 0 != t.firstChild.offsetHeight && (jt = e.offsetWidth <= 1 && e.offsetHeight > 2 && !(a && s < 8))
}
var n = jt ? E("span", "") : E("span", " ", null, "display: inline-block; width: 1px; margin-right: -1px");
return n.setAttribute("cm-text", ""), n
}
function Mt(t) {
if (null != Tt) return Tt;
var e = P(t, document.createTextNode("AخA")),
n = k(e, 0, 1).getBoundingClientRect(),
r = k(e, 1, 2).getBoundingClientRect();
return T(t), !(!n || n.left == n.right) && (Tt = r.right - n.right < 3)
}
var Dt, At = 3 != "\n\nb".split(/\n/).length ? function(t) {
for (var e = 0, n = [], r = t.length; e <= r;) {
var i = t.indexOf("\n", e); - 1 == i && (i = t.length);
var o = t.slice(e, "\r" == t.charAt(i - 1) ? i - 1 : i),
a = o.indexOf("\r"); - 1 != a ? (n.push(o.slice(0, a)), e += a + 1) : (n.push(o), e = i + 1)
}
return n
} : function(t) {
return t.split(/\r\n?|\n/)
},
Lt = window.getSelection ? function(t) {
try {
return t.selectionStart != t.selectionEnd
} catch (t) {
return !1
}
} : function(t) {
var e;
try {
e = t.ownerDocument.selection.createRange()
} catch (t) {}
return !(!e || e.parentElement() != t) && 0 != e.compareEndPoints("StartToEnd", e)
},
_t = "oncopy" in (Dt = E("div")) || (Dt.setAttribute("oncopy", "return;"), "function" == typeof Dt.oncopy),
Nt = null,
It = {},
Ft = {};
function Vt(t) {
if ("string" == typeof t && Ft.hasOwnProperty(t)) t = Ft[t];
else if (t && "string" == typeof t.name && Ft.hasOwnProperty(t.name)) {
var e = Ft[t.name];
"string" == typeof e && (e = {
name: e
}), (t = Z(e, t)).name = e.name
} else {
if ("string" == typeof t && /^[\w\-]+\/[\w\-]+\+xml$/.test(t)) return Vt("application/xml");
if ("string" == typeof t && /^[\w\-]+\/[\w\-]+\+json$/.test(t)) return Vt("application/json")
}
return "string" == typeof t ? {
name: t
} : t || {
name: "null"
}
}
function Rt(t, e) {
e = Vt(e);
var n = It[e.name];
if (!n) return Rt(t, "text/plain");
var r = n(t, e);
if (zt.hasOwnProperty(e.name)) {
var i = zt[e.name];
for (var o in i) i.hasOwnProperty(o) && (r.hasOwnProperty(o) && (r["_" + o] = r[o]), r[o] = i[o])
}
if (r.name = e.name, e.helperType && (r.helperType = e.helperType), e.modeProps)
for (var a in e.modeProps) r[a] = e.modeProps[a];
return r
}
var zt = {};
function Ht(t, e) {
F(e, zt.hasOwnProperty(t) ? zt[t] : zt[t] = {})
}
function $t(t, e) {
if (!0 === e) return e;
if (t.copyState) return t.copyState(e);
var n = {};
for (var r in e) {
var i = e[r];
i instanceof Array && (i = i.concat([])), n[r] = i
}
return n
}
function Ut(t, e) {
for (var n; t.innerMode && (n = t.innerMode(e)) && n.mode != t;) e = n.state, t = n.mode;
return n || {
mode: t,
state: e
}
}
function Bt(t, e, n) {
return !t.startState || t.startState(e, n)
}
var Wt = function(t, e, n) {
this.pos = this.start = 0, this.string = t, this.tabSize = e || 8, this.lastColumnPos = this.lastColumnValue = 0, this.lineStart = 0, this.lineOracle = n
};
function qt(t, e) {
if ((e -= t.first) < 0 || e >= t.size) throw new Error("There is no line " + (e + t.first) + " in the document.");
for (var n = t; !n.lines;)
for (var r = 0;; ++r) {
var i = n.children[r],
o = i.chunkSize();
if (e < o) {
n = i;
break
}
e -= o
}
return n.lines[e]
}
function Gt(t, e, n) {
var r = [],
i = e.line;
return t.iter(e.line, n.line + 1, function(t) {
var o = t.text;
i == n.line && (o = o.slice(0, n.ch)), i == e.line && (o = o.slice(e.ch)), r.push(o), ++i
}), r
}
function Kt(t, e, n) {
var r = [];
return t.iter(e, n, function(t) {
r.push(t.text)
}), r
}
function Yt(t, e) {
var n = e - t.height;
if (n)
for (var r = t; r; r = r.parent) r.height += n
}
function Xt(t) {
if (null == t.parent) return null;
for (var e = t.parent, n = z(e.lines, t), r = e.parent; r; e = r, r = r.parent)
for (var i = 0; r.children[i] != e; ++i) n += r.children[i].chunkSize();
return n + e.first
}
function Jt(t, e) {
var n = t.first;
t: do {
for (var r = 0; r < t.children.length; ++r) {
var i = t.children[r],
o = i.height;
if (e < o) {
t = i;
continue t
}
e -= o, n += i.chunkSize()
}
return n
} while (!t.lines);
for (var a = 0; a < t.lines.length; ++a) {
var s = t.lines[a].height;
if (e < s) break;
e -= s
}
return n + a
}
function Zt(t, e) {
return e >= t.first && e < t.first + t.size
}
function Qt(t, e) {
return String(t.lineNumberFormatter(e + t.firstLineNumber))
}
function te(t, e, n) {
if (void 0 === n && (n = null), !(this instanceof te)) return new te(t, e, n);
this.line = t, this.ch = e, this.sticky = n
}
function ee(t, e) {
return t.line - e.line || t.ch - e.ch
}
function ne(t, e) {
return t.sticky == e.sticky && 0 == ee(t, e)
}
function re(t) {
return te(t.line, t.ch)
}
function ie(t, e) {
return ee(t, e) < 0 ? e : t
}
function oe(t, e) {
return ee(t, e) < 0 ? t : e
}
function ae(t, e) {
return Math.max(t.first, Math.min(e, t.first + t.size - 1))
}
function se(t, e) {
if (e.line < t.first) return te(t.first, 0);
var n = t.first + t.size - 1;
return e.line > n ? te(n, qt(t, n).text.length) : function(t, e) {
var n = t.ch;
return null == n || n > e ? te(t.line, e) : n < 0 ? te(t.line, 0) : t
}(e, qt(t, e.line).text.length)
}
function le(t, e) {
for (var n = [], r = 0; r < e.length; r++) n[r] = se(t, e[r]);
return n
}
Wt.prototype.eol = function() {
return this.pos >= this.string.length
}, Wt.prototype.sol = function() {
return this.pos == this.lineStart
}, Wt.prototype.peek = function() {
return this.string.charAt(this.pos) || void 0
}, Wt.prototype.next = function() {
if (this.pos < this.string.length) return this.string.charAt(this.pos++)
}, Wt.prototype.eat = function(t) {
var e = this.string.charAt(this.pos);
if ("string" == typeof t ? e == t : e && (t.test ? t.test(e) : t(e))) return ++this.pos, e
}, Wt.prototype.eatWhile = function(t) {
for (var e = this.pos; this.eat(t););
return this.pos > e
}, Wt.prototype.eatSpace = function() {
for (var t = this.pos;
/[\s\u00a0]/.test(this.string.charAt(this.pos));) ++this.pos;
return this.pos > t
}, Wt.prototype.skipToEnd = function() {
this.pos = this.string.length
}, Wt.prototype.skipTo = function(t) {
var e = this.string.indexOf(t, this.pos);
if (e > -1) return this.pos = e, !0
}, Wt.prototype.backUp = function(t) {
this.pos -= t
}, Wt.prototype.column = function() {
return this.lastColumnPos < this.start && (this.lastColumnValue = V(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue), this.lastColumnPos = this.start), this.lastColumnValue - (this.lineStart ? V(this.string, this.lineStart, this.tabSize) : 0)
}, Wt.prototype.indentation = function() {
return V(this.string, null, this.tabSize) - (this.lineStart ? V(this.string, this.lineStart, this.tabSize) : 0)
}, Wt.prototype.match = function(t, e, n) {
if ("string" != typeof t) {
var r = this.string.slice(this.pos).match(t);
return r && r.index > 0 ? null : (r && !1 !== e && (this.pos += r[0].length), r)
}
var i = function(t) {
return n ? t.toLowerCase() : t
};
if (i(this.string.substr(this.pos, t.length)) == i(t)) return !1 !== e && (this.pos += t.length), !0
}, Wt.prototype.current = function() {
return this.string.slice(this.start, this.pos)
}, Wt.prototype.hideFirstChars = function(t, e) {
this.lineStart += t;
try {
return e()
} finally {
this.lineStart -= t
}
}, Wt.prototype.lookAhead = function(t) {
var e = this.lineOracle;
return e && e.lookAhead(t)
}, Wt.prototype.baseToken = function() {
var t = this.lineOracle;
return t && t.baseToken(this.pos)
};
var ce = function(t, e) {
this.state = t, this.lookAhead = e
},
ue = function(t, e, n, r) {
this.state = e, this.doc = t, this.line = n, this.maxLookAhead = r || 0, this.baseTokens = null, this.baseTokenPos = 1
};
function de(t, e, n, r) {
var i = [t.state.modeGen],
o = {};
we(t, e.text, t.doc.mode, n, function(t, e) {
return i.push(t, e)
}, o, r);
for (var a = n.state, s = function(r) {
n.baseTokens = i;
var s = t.state.overlays[r],
l = 1,
c = 0;
n.state = !0, we(t, e.text, s.mode, n, function(t, e) {
for (var n = l; c < t;) {
var r = i[l];
r > t && i.splice(l, 1, t, i[l + 1], r), l += 2, c = Math.min(t, r)
}
if (e)
if (s.opaque) i.splice(n, l - n, t, "overlay " + e), l = n + 2;
else
for (; n < l; n += 2) {
var o = i[n + 1];
i[n + 1] = (o ? o + " " : "") + "overlay " + e
}
}, o), n.state = a, n.baseTokens = null, n.baseTokenPos = 1
}, l = 0; l < t.state.overlays.length; ++l) s(l);
return {
styles: i,
classes: o.bgClass || o.textClass ? o : null
}
}
function he(t, e, n) {
if (!e.styles || e.styles[0] != t.state.modeGen) {
var r = fe(t, Xt(e)),
i = e.text.length > t.options.maxHighlightLength && $t(t.doc.mode, r.state),
o = de(t, e, r);
i && (r.state = i), e.stateAfter = r.save(!i), e.styles = o.styles, o.classes ? e.styleClasses = o.classes : e.styleClasses && (e.styleClasses = null), n === t.doc.highlightFrontier && (t.doc.modeFrontier = Math.max(t.doc.modeFrontier, ++t.doc.highlightFrontier))
}
return e.styles
}
function fe(t, e, n) {
var r = t.doc,
i = t.display;
if (!r.mode.startState) return new ue(r, !0, e);
var o = function(t, e, n) {
for (var r, i, o = t.doc, a = n ? -1 : e - (t.doc.mode.innerMode ? 1e3 : 100), s = e; s > a; --s) {
if (s <= o.first) return o.first;
var l = qt(o, s - 1),
c = l.stateAfter;
if (c && (!n || s + (c instanceof ce ? c.lookAhead : 0) <= o.modeFrontier)) return s;
var u = V(l.text, null, t.options.tabSize);
(null == i || r > u) && (i = s - 1, r = u)
}
return i
}(t, e, n),
a = o > r.first && qt(r, o - 1).stateAfter,
s = a ? ue.fromSaved(r, a, o) : new ue(r, Bt(r.mode), o);
return r.iter(o, e, function(n) {
pe(t, n.text, s);
var r = s.line;
n.stateAfter = r == e - 1 || r % 5 == 0 || r >= i.viewFrom && r < i.viewTo ? s.save() : null, s.nextLine()
}), n && (r.modeFrontier = s.line), s
}
function pe(t, e, n, r) {
var i = t.doc.mode,
o = new Wt(e, t.options.tabSize, n);
for (o.start = o.pos = r || 0, "" == e && ge(i, n.state); !o.eol();) ve(i, o, n.state), o.start = o.pos
}
function ge(t, e) {
if (t.blankLine) return t.blankLine(e);
if (t.innerMode) {
var n = Ut(t, e);
return n.mode.blankLine ? n.mode.blankLine(n.state) : void 0
}
}
function ve(t, e, n, r) {
for (var i = 0; i < 10; i++) {
r && (r[0] = Ut(t, n).mode);
var o = t.token(e, n);
if (e.pos > e.start) return o
}
throw new Error("Mode " + t.name + " failed to advance stream.")
}
ue.prototype.lookAhead = function(t) {
var e = this.doc.getLine(this.line + t);
return null != e && t > this.maxLookAhead && (this.maxLookAhead = t), e
}, ue.prototype.baseToken = function(t) {
if (!this.baseTokens) return null;
for (; this.baseTokens[this.baseTokenPos] <= t;) this.baseTokenPos += 2;
var e = this.baseTokens[this.baseTokenPos + 1];
return {
type: e && e.replace(/( |^)overlay .*/, ""),
size: this.baseTokens[this.baseTokenPos] - t
}
}, ue.prototype.nextLine = function() {
this.line++, this.maxLookAhead > 0 && this.maxLookAhead--
}, ue.fromSaved = function(t, e, n) {
return e instanceof ce ? new ue(t, $t(t.mode, e.state), n, e.lookAhead) : new ue(t, $t(t.mode, e), n)
}, ue.prototype.save = function(t) {
var e = !1 !== t ? $t(this.doc.mode, this.state) : this.state;
return this.maxLookAhead > 0 ? new ce(e, this.maxLookAhead) : e
};
var me = function(t, e, n) {
this.start = t.start, this.end = t.pos, this.string = t.current(), this.type = e || null, this.state = n
};
function be(t, e, n, r) {
var i, o, a = t.doc,
s = a.mode,
l = qt(a, (e = se(a, e)).line),
c = fe(t, e.line, n),
u = new Wt(l.text, t.options.tabSize, c);
for (r && (o = []);
(r || u.pos < e.ch) && !u.eol();) u.start = u.pos, i = ve(s, u, c.state), r && o.push(new me(u, i, $t(a.mode, c.state)));
return r ? o : new me(u, i, c.state)
}
function ye(t, e) {
if (t)
for (;;) {
var n = t.match(/(?:^|\s+)line-(background-)?(\S+)/);
if (!n) break;
t = t.slice(0, n.index) + t.slice(n.index + n[0].length);
var r = n[1] ? "bgClass" : "textClass";
null == e[r] ? e[r] = n[2] : new RegExp("(?:^|\\s)" + n[2] + "(?:$|\\s)").test(e[r]) || (e[r] += " " + n[2])
}
return t
}
function we(t, e, n, r, i, o, a) {
var s = n.flattenSpans;
null == s && (s = t.options.flattenSpans);
var l, c = 0,
u = null,
d = new Wt(e, t.options.tabSize, r),
h = t.options.addModeClass && [null];
for ("" == e && ye(ge(n, r.state), o); !d.eol();) {
if (d.pos > t.options.maxHighlightLength ? (s = !1, a && pe(t, e, r, d.pos), d.pos = e.length, l = null) : l = ye(ve(n, d, r.state, h), o), h) {
var f = h[0].name;
f && (l = "m-" + (l ? f + " " + l : f))
}
if (!s || u != l) {
for (; c < d.start;) i(c = Math.min(d.start, c + 5e3), u);
u = l
}
d.start = d.pos
}
for (; c < d.pos;) {
var p = Math.min(d.pos, c + 5e3);
i(p, u), c = p
}
}
var xe = !1,
Oe = !1;
function Ce(t, e, n) {
this.marker = t, this.from = e, this.to = n
}
function Se(t, e) {
if (t)
for (var n = 0; n < t.length; ++n) {
var r = t[n];
if (r.marker == e) return r
}
}
function ke(t, e) {
for (var n, r = 0; r < t.length; ++r) t[r] != e && (n || (n = [])).push(t[r]);
return n
}
function je(t, e) {
if (e.full) return null;
var n = Zt(t, e.from.line) && qt(t, e.from.line).markedSpans,
r = Zt(t, e.to.line) && qt(t, e.to.line).markedSpans;
if (!n && !r) return null;
var i = e.from.ch,
o = e.to.ch,
a = 0 == ee(e.from, e.to),
s = function(t, e, n) {
var r;
if (t)
for (var i = 0; i < t.length; ++i) {
var o = t[i],
a = o.marker;
if (null == o.from || (a.inclusiveLeft ? o.from <= e : o.from < e) || o.from == e && "bookmark" == a.type && (!n || !o.marker.insertLeft)) {
var s = null == o.to || (a.inclusiveRight ? o.to >= e : o.to > e);
(r || (r = [])).push(new Ce(a, o.from, s ? null : o.to))
}
}
return r
}(n, i, a),
l = function(t, e, n) {
var r;
if (t)
for (var i = 0; i < t.length; ++i) {
var o = t[i],
a = o.marker;
if (null == o.to || (a.inclusiveRight ? o.to >= e : o.to > e) || o.from == e && "bookmark" == a.type && (!n || o.marker.insertLeft)) {
var s = null == o.from || (a.inclusiveLeft ? o.from <= e : o.from < e);
(r || (r = [])).push(new Ce(a, s ? null : o.from - e, null == o.to ? null : o.to - e))
}
}
return r
}(r, o, a),
c = 1 == e.text.length,
u = Y(e.text).length + (c ? i : 0);
if (s)
for (var d = 0; d < s.length; ++d) {
var h = s[d];
if (null == h.to) {
var f = Se(l, h.marker);
f ? c && (h.to = null == f.to ? null : f.to + u) : h.to = i
}
}
if (l)
for (var p = 0; p < l.length; ++p) {
var g = l[p];
null != g.to && (g.to += u), null == g.from ? Se(s, g.marker) || (g.from = u, c && (s || (s = [])).push(g)) : (g.from += u, c && (s || (s = [])).push(g))
}
s && (s = Te(s)), l && l != s && (l = Te(l));
var v = [s];
if (!c) {
var m, b = e.text.length - 2;
if (b > 0 && s)
for (var y = 0; y < s.length; ++y) null == s[y].to && (m || (m = [])).push(new Ce(s[y].marker, null, null));
for (var w = 0; w < b; ++w) v.push(m);
v.push(l)
}
return v
}
function Te(t) {
for (var e = 0; e < t.length; ++e) {
var n = t[e];
null != n.from && n.from == n.to && !1 !== n.marker.clearWhenEmpty && t.splice(e--, 1)
}
return t.length ? t : null
}
function Pe(t) {
var e = t.markedSpans;
if (e) {
for (var n = 0; n < e.length; ++n) e[n].marker.detachLine(t);
t.markedSpans = null
}
}
function Ee(t, e) {
if (e) {
for (var n = 0; n < e.length; ++n) e[n].marker.attachLine(t);
t.markedSpans = e
}
}
function Me(t) {
return t.inclusiveLeft ? -1 : 0
}
function De(t) {
return t.inclusiveRight ? 1 : 0
}
function Ae(t, e) {
var n = t.lines.length - e.lines.length;
if (0 != n) return n;
var r = t.find(),
i = e.find(),
o = ee(r.from, i.from) || Me(t) - Me(e);
return o ? -o : ee(r.to, i.to) || De(t) - De(e) || e.id - t.id
}
function Le(t, e) {
var n, r = Oe && t.markedSpans;
if (r)
for (var i = void 0, o = 0; o < r.length; ++o)(i = r[o]).marker.collapsed && null == (e ? i.from : i.to) && (!n || Ae(n, i.marker) < 0) && (n = i.marker);
return n
}
function _e(t) {
return Le(t, !0)
}
function Ne(t) {
return Le(t, !1)
}
function Ie(t, e) {
var n, r = Oe && t.markedSpans;
if (r)
for (var i = 0; i < r.length; ++i) {
var o = r[i];
o.marker.collapsed && (null == o.from || o.from < e) && (null == o.to || o.to > e) && (!n || Ae(n, o.marker) < 0) && (n = o.marker)
}
return n
}
function Fe(t, e, n, r, i) {
var o = qt(t, e),
a = Oe && o.markedSpans;
if (a)
for (var s = 0; s < a.length; ++s) {
var l = a[s];
if (l.marker.collapsed) {
var c = l.marker.find(0),
u = ee(c.from, n) || Me(l.marker) - Me(i),
d = ee(c.to, r) || De(l.marker) - De(i);
if (!(u >= 0 && d <= 0 || u <= 0 && d >= 0) && (u <= 0 && (l.marker.inclusiveRight && i.inclusiveLeft ? ee(c.to, n) >= 0 : ee(c.to, n) > 0) || u >= 0 && (l.marker.inclusiveRight && i.inclusiveLeft ? ee(c.from, r) <= 0 : ee(c.from, r) < 0))) return !0
}
}
}
function Ve(t) {
for (var e; e = _e(t);) t = e.find(-1, !0).line;
return t
}
function Re(t, e) {
var n = qt(t, e),
r = Ve(n);
return n == r ? e : Xt(r)
}
function ze(t, e) {
if (e > t.lastLine()) return e;
var n, r = qt(t, e);
if (!He(t, r)) return e;
for (; n = Ne(r);) r = n.find(1, !0).line;
return Xt(r) + 1
}
function He(t, e) {
var n = Oe && e.markedSpans;
if (n)
for (var r = void 0, i = 0; i < n.length; ++i)
if ((r = n[i]).marker.collapsed) {
if (null == r.from) return !0;
if (!r.marker.widgetNode && 0 == r.from && r.marker.inclusiveLeft && $e(t, e, r)) return !0
}
}
function $e(t, e, n) {
if (null == n.to) {
var r = n.marker.find(1, !0);
return $e(t, r.line, Se(r.line.markedSpans, n.marker))
}
if (n.marker.inclusiveRight && n.to == e.text.length) return !0;
for (var i = void 0, o = 0; o < e.markedSpans.length; ++o)
if ((i = e.markedSpans[o]).marker.collapsed && !i.marker.widgetNode && i.from == n.to && (null == i.to || i.to != n.from) && (i.marker.inclusiveLeft || n.marker.inclusiveRight) && $e(t, e, i)) return !0
}
function Ue(t) {
for (var e = 0, n = (t = Ve(t)).parent, r = 0; r < n.lines.length; ++r) {
var i = n.lines[r];
if (i == t) break;
e += i.height
}
for (var o = n.parent; o; o = (n = o).parent)
for (var a = 0; a < o.children.length; ++a) {
var s = o.children[a];
if (s == n) break;
e += s.height
}
return e
}
function Be(t) {
if (0 == t.height) return 0;
for (var e, n = t.text.length, r = t; e = _e(r);) {
var i = e.find(0, !0);
r = i.from.line, n += i.from.ch - i.to.ch
}
for (r = t; e = Ne(r);) {
var o = e.find(0, !0);
n -= r.text.length - o.from.ch, n += (r = o.to.line).text.length - o.to.ch
}
return n
}
function We(t) {
var e = t.display,
n = t.doc;
e.maxLine = qt(n, n.first), e.maxLineLength = Be(e.maxLine), e.maxLineChanged = !0, n.iter(function(t) {
var n = Be(t);
n > e.maxLineLength && (e.maxLineLength = n, e.maxLine = t)
})
}
var qe = function(t, e, n) {
this.text = t, Ee(this, e), this.height = n ? n(this) : 1
};
function Ge(t) {
t.parent = null, Pe(t)
}
qe.prototype.lineNo = function() {
return Xt(this)
}, yt(qe);
var Ke = {},
Ye = {};
function Xe(t, e) {
if (!t || /^\s*$/.test(t)) return null;
var n = e.addModeClass ? Ye : Ke;
return n[t] || (n[t] = t.replace(/\S+/g, "cm-$&"))
}
function Je(t, e) {
var n = M("span", null, null, l ? "padding-right: .1px" : null),
r = {
pre: M("pre", [n], "CodeMirror-line"),
content: n,
col: 0,
pos: 0,
cm: t,
trailingSpace: !1,
splitSpaces: t.getOption("lineWrapping")
};
e.measure = {};
for (var i = 0; i <= (e.rest ? e.rest.length : 0); i++) {
var o = i ? e.rest[i - 1] : e.line,
a = void 0;
r.pos = 0, r.addToken = Qe, Mt(t.display.measure) && (a = ut(o, t.doc.direction)) && (r.addToken = tn(r.addToken, a)), r.map = [], nn(o, r, he(t, o, e != t.display.externalMeasured && Xt(o))), o.styleClasses && (o.styleClasses.bgClass && (r.bgClass = _(o.styleClasses.bgClass, r.bgClass || "")), o.styleClasses.textClass && (r.textClass = _(o.styleClasses.textClass, r.textClass || ""))), 0 == r.map.length && r.map.push(0, 0, r.content.appendChild(Et(t.display.measure))), 0 == i ? (e.measure.map = r.map, e.measure.cache = {}) : ((e.measure.maps || (e.measure.maps = [])).push(r.map), (e.measure.caches || (e.measure.caches = [])).push({}))
}
if (l) {
var s = r.content.lastChild;
(/\bcm-tab\b/.test(s.className) || s.querySelector && s.querySelector(".cm-tab")) && (r.content.className = "cm-tab-wrap-hack")
}
return gt(t, "renderLine", t, e.line, r.pre), r.pre.className && (r.textClass = _(r.pre.className, r.textClass || "")), r
}
function Ze(t) {
var e = E("span", "•", "cm-invalidchar");
return e.title = "\\u" + t.charCodeAt(0).toString(16), e.setAttribute("aria-label", e.title), e
}
function Qe(t, e, n, r, i, o, l) {
if (e) {
var c, u = t.splitSpaces ? function(t, e) {
if (t.length > 1 && !/ /.test(t)) return t;
for (var n = e, r = "", i = 0; i < t.length; i++) {
var o = t.charAt(i);
" " != o || !n || i != t.length - 1 && 32 != t.charCodeAt(i + 1) || (o = " "), r += o, n = " " == o
}
return r
}(e, t.trailingSpace) : e,
d = t.cm.state.specialChars,
h = !1;
if (d.test(e)) {
c = document.createDocumentFragment();
for (var f = 0;;) {
d.lastIndex = f;
var p = d.exec(e),
g = p ? p.index - f : e.length - f;
if (g) {
var v = document.createTextNode(u.slice(f, f + g));
a && s < 9 ? c.appendChild(E("span", [v])) : c.appendChild(v), t.map.push(t.pos, t.pos + g, v), t.col += g, t.pos += g
}
if (!p) break;
f += g + 1;
var m = void 0;
if ("\t" == p[0]) {
var b = t.cm.options.tabSize,
y = b - t.col % b;
(m = c.appendChild(E("span", K(y), "cm-tab"))).setAttribute("role", "presentation"), m.setAttribute("cm-text", "\t"), t.col += y
} else "\r" == p[0] || "\n" == p[0] ? ((m = c.appendChild(E("span", "\r" == p[0] ? "␍" : "", "cm-invalidchar"))).setAttribute("cm-text", p[0]), t.col += 1) : ((m = t.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text", p[0]), a && s < 9 ? c.appendChild(E("span", [m])) : c.appendChild(m), t.col += 1);
t.map.push(t.pos, t.pos + 1, m), t.pos++
}
} else t.col += e.length, c = document.createTextNode(u), t.map.push(t.pos, t.pos + e.length, c), a && s < 9 && (h = !0), t.pos += e.length;
if (t.trailingSpace = 32 == u.charCodeAt(e.length - 1), n || r || i || h || o || l) {
var w = n || "";
r && (w += r), i && (w += i);
var x = E("span", [c], w, o);
if (l)
for (var O in l) l.hasOwnProperty(O) && "style" != O && "class" != O && x.setAttribute(O, l[O]);
return t.content.appendChild(x)
}
t.content.appendChild(c)
}
}
function tn(t, e) {
return function(n, r, i, o, a, s, l) {
i = i ? i + " cm-force-border" : "cm-force-border";
for (var c = n.pos, u = c + r.length;;) {
for (var d = void 0, h = 0; h < e.length && !((d = e[h]).to > c && d.from <= c); h++);
if (d.to >= u) return t(n, r, i, o, a, s, l);
t(n, r.slice(0, d.to - c), i, o, null, s, l), o = null, r = r.slice(d.to - c), c = d.to
}
}
}
function en(t, e, n, r) {
var i = !r && n.widgetNode;
i && t.map.push(t.pos, t.pos + e, i), !r && t.cm.display.input.needsContentAttribute && (i || (i = t.content.appendChild(document.createElement("span"))), i.setAttribute("cm-marker", n.id)), i && (t.cm.display.input.setUneditable(i), t.content.appendChild(i)), t.pos += e, t.trailingSpace = !1
}
function nn(t, e, n) {
var r = t.markedSpans,
i = t.text,
o = 0;
if (r)
for (var a, s, l, c, u, d, h, f = i.length, p = 0, g = 1, v = "", m = 0;;) {
if (m == p) {
l = c = u = s = "", h = null, d = null, m = 1 / 0;
for (var b = [], y = void 0, w = 0; w < r.length; ++w) {
var x = r[w],
O = x.marker;
if ("bookmark" == O.type && x.from == p && O.widgetNode) b.push(O);
else if (x.from <= p && (null == x.to || x.to > p || O.collapsed && x.to == p && x.from == p)) {
if (null != x.to && x.to != p && m > x.to && (m = x.to, c = ""), O.className && (l += " " + O.className), O.css && (s = (s ? s + ";" : "") + O.css), O.startStyle && x.from == p && (u += " " + O.startStyle), O.endStyle && x.to == m && (y || (y = [])).push(O.endStyle, x.to), O.title && ((h || (h = {})).title = O.title), O.attributes)
for (var C in O.attributes)(h || (h = {}))[C] = O.attributes[C];
O.collapsed && (!d || Ae(d.marker, O) < 0) && (d = x)
} else x.from > p && m > x.from && (m = x.from)
}
if (y)
for (var S = 0; S < y.length; S += 2) y[S + 1] == m && (c += " " + y[S]);
if (!d || d.from == p)
for (var k = 0; k < b.length; ++k) en(e, 0, b[k]);
if (d && (d.from || 0) == p) {
if (en(e, (null == d.to ? f + 1 : d.to) - p, d.marker, null == d.from), null == d.to) return;
d.to == p && (d = !1)
}
}
if (p >= f) break;
for (var j = Math.min(f, m);;) {
if (v) {
var T = p + v.length;
if (!d) {
var P = T > j ? v.slice(0, j - p) : v;
e.addToken(e, P, a ? a + l : l, u, p + P.length == m ? c : "", s, h)
}
if (T >= j) {
v = v.slice(j - p), p = j;
break
}
p = T, u = ""
}
v = i.slice(o, o = n[g++]), a = Xe(n[g++], e.cm.options)
}
} else
for (var E = 1; E < n.length; E += 2) e.addToken(e, i.slice(o, o = n[E]), Xe(n[E + 1], e.cm.options))
}
function rn(t, e, n) {
this.line = e, this.rest = function(t) {
for (var e, n; e = Ne(t);) t = e.find(1, !0).line, (n || (n = [])).push(t);
return n
}(e), this.size = this.rest ? Xt(Y(this.rest)) - n + 1 : 1, this.node = this.text = null, this.hidden = He(t, e)
}
function on(t, e, n) {
for (var r, i = [], o = e; o < n; o = r) {
var a = new rn(t.doc, qt(t.doc, o), o);
r = o + a.size, i.push(a)
}
return i
}
var an = null,
sn = null;
function ln(t, e) {
var n = ft(t, e);
if (n.length) {
var r, i = Array.prototype.slice.call(arguments, 2);
an ? r = an.delayedCallbacks : sn ? r = sn : (r = sn = [], setTimeout(cn, 0));
for (var o = function(t) {
r.push(function() {
return n[t].apply(null, i)
})
}, a = 0; a < n.length; ++a) o(a)
}
}
function cn() {
var t = sn;
sn = null;
for (var e = 0; e < t.length; ++e) t[e]()
}
function un(t, e, n, r) {
for (var i = 0; i < e.changes.length; i++) {
var o = e.changes[i];
"text" == o ? fn(t, e) : "gutter" == o ? gn(t, e, n, r) : "class" == o ? pn(t, e) : "widget" == o && vn(t, e, r)
}
e.changes = null
}
function dn(t) {
return t.node == t.text && (t.node = E("div", null, null, "position: relative"), t.text.parentNode && t.text.parentNode.replaceChild(t.node, t.text), t.node.appendChild(t.text), a && s < 8 && (t.node.style.zIndex = 2)), t.node
}
function hn(t, e) {
var n = t.display.externalMeasured;
return n && n.line == e.line ? (t.display.externalMeasured = null, e.measure = n.measure, n.built) : Je(t, e)
}
function fn(t, e) {
var n = e.text.className,
r = hn(t, e);
e.text == e.node && (e.node = r.pre), e.text.parentNode.replaceChild(r.pre, e.text), e.text = r.pre, r.bgClass != e.bgClass || r.textClass != e.textClass ? (e.bgClass = r.bgClass, e.textClass = r.textClass, pn(t, e)) : n && (e.text.className = n)
}
function pn(t, e) {
! function(t, e) {
var n = e.bgClass ? e.bgClass + " " + (e.line.bgClass || "") : e.line.bgClass;
if (n && (n += " CodeMirror-linebackground"), e.background) n ? e.background.className = n : (e.background.parentNode.removeChild(e.background), e.background = null);
else if (n) {
var r = dn(e);
e.background = r.insertBefore(E("div", null, n), r.firstChild), t.display.input.setUneditable(e.background)
}
}(t, e), e.line.wrapClass ? dn(e).className = e.line.wrapClass : e.node != e.text && (e.node.className = "");
var n = e.textClass ? e.textClass + " " + (e.line.textClass || "") : e.line.textClass;
e.text.className = n || ""
}
function gn(t, e, n, r) {
if (e.gutter && (e.node.removeChild(e.gutter), e.gutter = null), e.gutterBackground && (e.node.removeChild(e.gutterBackground), e.gutterBackground = null), e.line.gutterClass) {
var i = dn(e);
e.gutterBackground = E("div", null, "CodeMirror-gutter-background " + e.line.gutterClass, "left: " + (t.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) + "px; width: " + r.gutterTotalWidth + "px"), t.display.input.setUneditable(e.gutterBackground), i.insertBefore(e.gutterBackground, e.text)
}
var o = e.line.gutterMarkers;
if (t.options.lineNumbers || o) {
var a = dn(e),
s = e.gutter = E("div", null, "CodeMirror-gutter-wrapper", "left: " + (t.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) + "px");
if (t.display.input.setUneditable(s), a.insertBefore(s, e.text), e.line.gutterClass && (s.className += " " + e.line.gutterClass), !t.options.lineNumbers || o && o["CodeMirror-linenumbers"] || (e.lineNumber = s.appendChild(E("div", Qt(t.options, n), "CodeMirror-linenumber CodeMirror-gutter-elt", "left: " + r.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + t.display.lineNumInnerWidth + "px"))), o)
for (var l = 0; l < t.display.gutterSpecs.length; ++l) {
var c = t.display.gutterSpecs[l].className,
u = o.hasOwnProperty(c) && o[c];
u && s.appendChild(E("div", [u], "CodeMirror-gutter-elt", "left: " + r.gutterLeft[c] + "px; width: " + r.gutterWidth[c] + "px"))
}
}
}
function vn(t, e, n) {
e.alignable && (e.alignable = null);
for (var r = S("CodeMirror-linewidget"), i = e.node.firstChild, o = void 0; i; i = o) o = i.nextSibling, r.test(i.className) && e.node.removeChild(i);
bn(t, e, n)
}
function mn(t, e, n, r) {
var i = hn(t, e);
return e.text = e.node = i.pre, i.bgClass && (e.bgClass = i.bgClass), i.textClass && (e.textClass = i.textClass), pn(t, e), gn(t, e, n, r), bn(t, e, r), e.node
}
function bn(t, e, n) {
if (yn(t, e.line, e, n, !0), e.rest)
for (var r = 0; r < e.rest.length; r++) yn(t, e.rest[r], e, n, !1)
}
function yn(t, e, n, r, i) {
if (e.widgets)
for (var o = dn(n), a = 0, s = e.widgets; a < s.length; ++a) {
var l = s[a],
c = E("div", [l.node], "CodeMirror-linewidget" + (l.className ? " " + l.className : ""));
l.handleMouseEvents || c.setAttribute("cm-ignore-events", "true"), wn(l, c, n, r), t.display.input.setUneditable(c), i && l.above ? o.insertBefore(c, n.gutter || n.text) : o.appendChild(c), ln(l, "redraw")
}
}
function wn(t, e, n, r) {
if (t.noHScroll) {
(n.alignable || (n.alignable = [])).push(e);
var i = r.wrapperWidth;
e.style.left = r.fixedPos + "px", t.coverGutter || (i -= r.gutterTotalWidth, e.style.paddingLeft = r.gutterTotalWidth + "px"), e.style.width = i + "px"
}
t.coverGutter && (e.style.zIndex = 5, e.style.position = "relative", t.noHScroll || (e.style.marginLeft = -r.gutterTotalWidth + "px"))
}
function xn(t) {
if (null != t.height) return t.height;
var e = t.doc.cm;
if (!e) return 0;
if (!D(document.body, t.node)) {
var n = "position: relative;";
t.coverGutter && (n += "margin-left: -" + e.display.gutters.offsetWidth + "px;"), t.noHScroll && (n += "width: " + e.display.wrapper.clientWidth + "px;"), P(e.display.measure, E("div", [t.node], null, n))
}
return t.height = t.node.parentNode.offsetHeight
}
function On(t, e) {
for (var n = St(e); n != t.wrapper; n = n.parentNode)
if (!n || 1 == n.nodeType && "true" == n.getAttribute("cm-ignore-events") || n.parentNode == t.sizer && n != t.mover) return !0
}
function Cn(t) {
return t.lineSpace.offsetTop
}
function Sn(t) {
return t.mover.offsetHeight - t.lineSpace.offsetHeight
}
function kn(t) {
if (t.cachedPaddingH) return t.cachedPaddingH;
var e = P(t.measure, E("pre", "x", "CodeMirror-line-like")),
n = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle,
r = {
left: parseInt(n.paddingLeft),
right: parseInt(n.paddingRight)
};
return isNaN(r.left) || isNaN(r.right) || (t.cachedPaddingH = r), r
}
function jn(t) {
return H - t.display.nativeBarWidth
}
function Tn(t) {
return t.display.scroller.clientWidth - jn(t) - t.display.barWidth
}
function Pn(t) {
return t.display.scroller.clientHeight - jn(t) - t.display.barHeight
}
function En(t, e, n) {
if (t.line == e) return {
map: t.measure.map,
cache: t.measure.cache
};
for (var r = 0; r < t.rest.length; r++)
if (t.rest[r] == e) return {
map: t.measure.maps[r],
cache: t.measure.caches[r]
};
for (var i = 0; i < t.rest.length; i++)
if (Xt(t.rest[i]) > n) return {
map: t.measure.maps[i],
cache: t.measure.caches[i],
before: !0
}
}
function Mn(t, e, n, r) {
return Ln(t, An(t, e), n, r)
}
function Dn(t, e) {
if (e >= t.display.viewFrom && e < t.display.viewTo) return t.display.view[lr(t, e)];
var n = t.display.externalMeasured;
return n && e >= n.lineN && e < n.lineN + n.size ? n : void 0
}
function An(t, e) {
var n = Xt(e),
r = Dn(t, n);
r && !r.text ? r = null : r && r.changes && (un(t, r, n, rr(t)), t.curOp.forceUpdate = !0), r || (r = function(t, e) {
var n = Xt(e = Ve(e)),
r = t.display.externalMeasured = new rn(t.doc, e, n);
r.lineN = n;
var i = r.built = Je(t, r);
return r.text = i.pre, P(t.display.lineMeasure, i.pre), r
}(t, e));
var i = En(r, e, n);
return {
line: e,
view: r,
rect: null,
map: i.map,
cache: i.cache,
before: i.before,
hasHeights: !1
}
}
function Ln(t, e, n, r, i) {
e.before && (n = -1);
var o, l = n + (r || "");
return e.cache.hasOwnProperty(l) ? o = e.cache[l] : (e.rect || (e.rect = e.view.text.getBoundingClientRect()), e.hasHeights || (function(t, e, n) {
var r = t.options.lineWrapping,
i = r && Tn(t);
if (!e.measure.heights || r && e.measure.width != i) {
var o = e.measure.heights = [];
if (r) {
e.measure.width = i;
for (var a = e.text.firstChild.getClientRects(), s = 0; s < a.length - 1; s++) {
var l = a[s],
c = a[s + 1];
Math.abs(l.bottom - c.bottom) > 2 && o.push((l.bottom + c.top) / 2 - n.top)
}
}
o.push(n.bottom - n.top)
}
}(t, e.view, e.rect), e.hasHeights = !0), (o = function(t, e, n, r) {
var i, o = In(e.map, n, r),
l = o.node,
c = o.start,
u = o.end,
d = o.collapse;
if (3 == l.nodeType) {
for (var h = 0; h < 4; h++) {
for (; c && it(e.line.text.charAt(o.coverStart + c));) --c;
for (; o.coverStart + u < o.coverEnd && it(e.line.text.charAt(o.coverStart + u));) ++u;
if ((i = a && s < 9 && 0 == c && u == o.coverEnd - o.coverStart ? l.parentNode.getBoundingClientRect() : Fn(k(l, c, u).getClientRects(), r)).left || i.right || 0 == c) break;
u = c, c -= 1, d = "right"
}
a && s < 11 && (i = function(t, e) {
if (!window.screen || null == screen.logicalXDPI || screen.logicalXDPI == screen.deviceXDPI || ! function(t) {
if (null != Nt) return Nt;
var e = P(t, E("span", "x")),
n = e.getBoundingClientRect(),
r = k(e, 0, 1).getBoundingClientRect();
return Nt = Math.abs(n.left - r.left) > 1
}(t)) return e;
var n = screen.logicalXDPI / screen.deviceXDPI,
r = screen.logicalYDPI / screen.deviceYDPI;
return {
left: e.left * n,
right: e.right * n,
top: e.top * r,
bottom: e.bottom * r
}
}(t.display.measure, i))
} else {
var f;
c > 0 && (d = r = "right"), i = t.options.lineWrapping && (f = l.getClientRects()).length > 1 ? f["right" == r ? f.length - 1 : 0] : l.getBoundingClientRect()
}
if (a && s < 9 && !c && (!i || !i.left && !i.right)) {
var p = l.parentNode.getClientRects()[0];
i = p ? {
left: p.left,
right: p.left + nr(t.display),
top: p.top,
bottom: p.bottom
} : Nn
}
for (var g = i.top - e.rect.top, v = i.bottom - e.rect.top, m = (g + v) / 2, b = e.view.measure.heights, y = 0; y < b.length - 1 && !(m < b[y]); y++);
var w = y ? b[y - 1] : 0,
x = b[y],
O = {
left: ("right" == d ? i.right : i.left) - e.rect.left,
right: ("left" == d ? i.left : i.right) - e.rect.left,
top: w,
bottom: x
};
return i.left || i.right || (O.bogus = !0), t.options.singleCursorHeightPerLine || (O.rtop = g, O.rbottom = v), O
}(t, e, n, r)).bogus || (e.cache[l] = o)), {
left: o.left,
right: o.right,
top: i ? o.rtop : o.top,
bottom: i ? o.rbottom : o.bottom
}
}
var _n, Nn = {
left: 0,
right: 0,
top: 0,
bottom: 0
};
function In(t, e, n) {
for (var r, i, o, a, s, l, c = 0; c < t.length; c += 3)
if (s = t[c], l = t[c + 1], e < s ? (i = 0, o = 1, a = "left") : e < l ? o = 1 + (i = e - s) : (c == t.length - 3 || e == l && t[c + 3] > e) && (i = (o = l - s) - 1, e >= l && (a = "right")), null != i) {
if (r = t[c + 2], s == l && n == (r.insertLeft ? "left" : "right") && (a = n), "left" == n && 0 == i)
for (; c && t[c - 2] == t[c - 3] && t[c - 1].insertLeft;) r = t[2 + (c -= 3)], a = "left";
if ("right" == n && i == l - s)
for (; c < t.length - 3 && t[c + 3] == t[c + 4] && !t[c + 5].insertLeft;) r = t[(c += 3) + 2], a = "right";
break
} return {
node: r,
start: i,
end: o,
collapse: a,
coverStart: s,
coverEnd: l
}
}
function Fn(t, e) {
var n = Nn;
if ("left" == e)
for (var r = 0; r < t.length && (n = t[r]).left == n.right; r++);
else
for (var i = t.length - 1; i >= 0 && (n = t[i]).left == n.right; i--);
return n
}
function Vn(t) {
if (t.measure && (t.measure.cache = {}, t.measure.heights = null, t.rest))
for (var e = 0; e < t.rest.length; e++) t.measure.caches[e] = {}
}
function Rn(t) {
t.display.externalMeasure = null, T(t.display.lineMeasure);
for (var e = 0; e < t.display.view.length; e++) Vn(t.display.view[e])
}
function zn(t) {
Rn(t), t.display.cachedCharWidth = t.display.cachedTextHeight = t.display.cachedPaddingH = null, t.options.lineWrapping || (t.display.maxLineChanged = !0), t.display.lineNumChars = null
}
function Hn() {
return u && v ? -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) : window.pageXOffset || (document.documentElement || document.body).scrollLeft
}
function $n() {
return u && v ? -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) : window.pageYOffset || (document.documentElement || document.body).scrollTop
}
function Un(t) {
var e = 0;
if (t.widgets)
for (var n = 0; n < t.widgets.length; ++n) t.widgets[n].above && (e += xn(t.widgets[n]));
return e
}
function Bn(t, e, n, r, i) {
if (!i) {
var o = Un(e);
n.top += o, n.bottom += o
}
if ("line" == r) return n;
r || (r = "local");
var a = Ue(e);
if ("local" == r ? a += Cn(t.display) : a -= t.display.viewOffset, "page" == r || "window" == r) {
var s = t.display.lineSpace.getBoundingClientRect();
a += s.top + ("window" == r ? 0 : $n());
var l = s.left + ("window" == r ? 0 : Hn());
n.left += l, n.right += l
}
return n.top += a, n.bottom += a, n
}
function Wn(t, e, n) {
if ("div" == n) return e;
var r = e.left,
i = e.top;
if ("page" == n) r -= Hn(), i -= $n();
else if ("local" == n || !n) {
var o = t.display.sizer.getBoundingClientRect();
r += o.left, i += o.top
}
var a = t.display.lineSpace.getBoundingClientRect();
return {
left: r - a.left,
top: i - a.top
}
}
function qn(t, e, n, r, i) {
return r || (r = qt(t.doc, e.line)), Bn(t, r, Mn(t, r, e.ch, i), n)
}
function Gn(t, e, n, r, i, o) {
function a(e, a) {
var s = Ln(t, i, e, a ? "right" : "left", o);
return a ? s.left = s.right : s.right = s.left, Bn(t, r, s, n)
}
r = r || qt(t.doc, e.line), i || (i = An(t, r));
var s = ut(r, t.doc.direction),
l = e.ch,
c = e.sticky;
if (l >= r.text.length ? (l = r.text.length, c = "before") : l <= 0 && (l = 0, c = "after"), !s) return a("before" == c ? l - 1 : l, "before" == c);
function u(t, e, n) {
return a(n ? t - 1 : t, 1 == s[e].level != n)
}
var d = lt(s, l, c),
h = st,
f = u(l, d, "before" == c);
return null != h && (f.other = u(l, h, "before" != c)), f
}
function Kn(t, e) {
var n = 0;
e = se(t.doc, e), t.options.lineWrapping || (n = nr(t.display) * e.ch);
var r = qt(t.doc, e.line),
i = Ue(r) + Cn(t.display);
return {
left: n,
right: n,
top: i,
bottom: i + r.height
}
}
function Yn(t, e, n, r, i) {
var o = te(t, e, n);
return o.xRel = i, r && (o.outside = r), o
}
function Xn(t, e, n) {
var r = t.doc;
if ((n += t.display.viewOffset) < 0) return Yn(r.first, 0, null, -1, -1);
var i = Jt(r, n),
o = r.first + r.size - 1;
if (i > o) return Yn(r.first + r.size - 1, qt(r, o).text.length, null, 1, 1);
e < 0 && (e = 0);
for (var a = qt(r, i);;) {
var s = tr(t, a, i, e, n),
l = Ie(a, s.ch + (s.xRel > 0 || s.outside > 0 ? 1 : 0));
if (!l) return s;
var c = l.find(1);
if (c.line == i) return c;
a = qt(r, i = c.line)
}
}
function Jn(t, e, n, r) {
r -= Un(e);
var i = e.text.length,
o = at(function(e) {
return Ln(t, n, e - 1).bottom <= r
}, i, 0);
return {
begin: o,
end: i = at(function(e) {
return Ln(t, n, e).top > r
}, o, i)
}
}
function Zn(t, e, n, r) {
return n || (n = An(t, e)), Jn(t, e, n, Bn(t, e, Ln(t, n, r), "line").top)
}
function Qn(t, e, n, r) {
return !(t.bottom <= n) && (t.top > n || (r ? t.left : t.right) > e)
}
function tr(t, e, n, r, i) {
i -= Ue(e);
var o = An(t, e),
a = Un(e),
s = 0,
l = e.text.length,
c = !0,
u = ut(e, t.doc.direction);
if (u) {
var d = (t.options.lineWrapping ? function(t, e, n, r, i, o, a) {
var s = Jn(t, e, r, a),
l = s.begin,
c = s.end;
/\s/.test(e.text.charAt(c - 1)) && c--;
for (var u = null, d = null, h = 0; h < i.length; h++) {
var f = i[h];
if (!(f.from >= c || f.to <= l)) {
var p = Ln(t, r, 1 != f.level ? Math.min(c, f.to) - 1 : Math.max(l, f.from)).right,
g = p < o ? o - p + 1e9 : p - o;
(!u || d > g) && (u = f, d = g)
}
}
return u || (u = i[i.length - 1]), u.from < l && (u = {
from: l,
to: u.to,
level: u.level
}), u.to > c && (u = {
from: u.from,
to: c,
level: u.level
}), u
} : function(t, e, n, r, i, o, a) {
var s = at(function(s) {
var l = i[s],
c = 1 != l.level;
return Qn(Gn(t, te(n, c ? l.to : l.from, c ? "before" : "after"), "line", e, r), o, a, !0)
}, 0, i.length - 1),
l = i[s];
if (s > 0) {
var c = 1 != l.level,
u = Gn(t, te(n, c ? l.from : l.to, c ? "after" : "before"), "line", e, r);
Qn(u, o, a, !0) && u.top > a && (l = i[s - 1])
}
return l
})(t, e, n, o, u, r, i);
s = (c = 1 != d.level) ? d.from : d.to - 1, l = c ? d.to : d.from - 1
}
var h, f, p = null,
g = null,
v = at(function(e) {
var n = Ln(t, o, e);
return n.top += a, n.bottom += a, !!Qn(n, r, i, !1) && (n.top <= i && n.left <= r && (p = e, g = n), !0)
}, s, l),
m = !1;
if (g) {
var b = r - g.left < g.right - r,
y = b == c;
v = p + (y ? 0 : 1), f = y ? "after" : "before", h = b ? g.left : g.right
} else {
c || v != l && v != s || v++, f = 0 == v ? "after" : v == e.text.length ? "before" : Ln(t, o, v - (c ? 1 : 0)).bottom + a <= i == c ? "after" : "before";
var w = Gn(t, te(n, v, f), "line", e, o);
h = w.left, m = i < w.top ? -1 : i >= w.bottom ? 1 : 0
}
return Yn(n, v = ot(e.text, v, 1), f, m, r - h)
}
function er(t) {
if (null != t.cachedTextHeight) return t.cachedTextHeight;
if (null == _n) {
_n = E("pre", null, "CodeMirror-line-like");
for (var e = 0; e < 49; ++e) _n.appendChild(document.createTextNode("x")), _n.appendChild(E("br"));
_n.appendChild(document.createTextNode("x"))
}
P(t.measure, _n);
var n = _n.offsetHeight / 50;
return n > 3 && (t.cachedTextHeight = n), T(t.measure), n || 1
}
function nr(t) {
if (null != t.cachedCharWidth) return t.cachedCharWidth;
var e = E("span", "xxxxxxxxxx"),
n = E("pre", [e], "CodeMirror-line-like");
P(t.measure, n);
var r = e.getBoundingClientRect(),
i = (r.right - r.left) / 10;
return i > 2 && (t.cachedCharWidth = i), i || 10
}
function rr(t) {
for (var e = t.display, n = {}, r = {}, i = e.gutters.clientLeft, o = e.gutters.firstChild, a = 0; o; o = o.nextSibling, ++a) {
var s = t.display.gutterSpecs[a].className;
n[s] = o.offsetLeft + o.clientLeft + i, r[s] = o.clientWidth
}
return {
fixedPos: ir(e),
gutterTotalWidth: e.gutters.offsetWidth,
gutterLeft: n,
gutterWidth: r,
wrapperWidth: e.wrapper.clientWidth
}
}
function ir(t) {
return t.scroller.getBoundingClientRect().left - t.sizer.getBoundingClientRect().left
}
function or(t) {
var e = er(t.display),
n = t.options.lineWrapping,
r = n && Math.max(5, t.display.scroller.clientWidth / nr(t.display) - 3);
return function(i) {
if (He(t.doc, i)) return 0;
var o = 0;
if (i.widgets)
for (var a = 0; a < i.widgets.length; a++) i.widgets[a].height && (o += i.widgets[a].height);
return n ? o + (Math.ceil(i.text.length / r) || 1) * e : o + e
}
}
function ar(t) {
var e = t.doc,
n = or(t);
e.iter(function(t) {
var e = n(t);
e != t.height && Yt(t, e)
})
}
function sr(t, e, n, r) {
var i = t.display;
if (!n && "true" == St(e).getAttribute("cm-not-content")) return null;
var o, a, s = i.lineSpace.getBoundingClientRect();
try {
o = e.clientX - s.left, a = e.clientY - s.top
} catch (t) {
return null
}
var l, c = Xn(t, o, a);
if (r && c.xRel > 0 && (l = qt(t.doc, c.line).text).length == c.ch) {
var u = V(l, l.length, t.options.tabSize) - l.length;
c = te(c.line, Math.max(0, Math.round((o - kn(t.display).left) / nr(t.display)) - u))
}
return c
}
function lr(t, e) {
if (e >= t.display.viewTo) return null;
if ((e -= t.display.viewFrom) < 0) return null;
for (var n = t.display.view, r = 0; r < n.length; r++)
if ((e -= n[r].size) < 0) return r
}
function cr(t, e, n, r) {
null == e && (e = t.doc.first), null == n && (n = t.doc.first + t.doc.size), r || (r = 0);
var i = t.display;
if (r && n < i.viewTo && (null == i.updateLineNumbers || i.updateLineNumbers > e) && (i.updateLineNumbers = e), t.curOp.viewChanged = !0, e >= i.viewTo) Oe && Re(t.doc, e) < i.viewTo && dr(t);
else if (n <= i.viewFrom) Oe && ze(t.doc, n + r) > i.viewFrom ? dr(t) : (i.viewFrom += r, i.viewTo += r);
else if (e <= i.viewFrom && n >= i.viewTo) dr(t);
else if (e <= i.viewFrom) {
var o = hr(t, n, n + r, 1);
o ? (i.view = i.view.slice(o.index), i.viewFrom = o.lineN, i.viewTo += r) : dr(t)
} else if (n >= i.viewTo) {
var a = hr(t, e, e, -1);
a ? (i.view = i.view.slice(0, a.index), i.viewTo = a.lineN) : dr(t)
} else {
var s = hr(t, e, e, -1),
l = hr(t, n, n + r, 1);
s && l ? (i.view = i.view.slice(0, s.index).concat(on(t, s.lineN, l.lineN)).concat(i.view.slice(l.index)), i.viewTo += r) : dr(t)
}
var c = i.externalMeasured;
c && (n < c.lineN ? c.lineN += r : e < c.lineN + c.size && (i.externalMeasured = null))
}
function ur(t, e, n) {
t.curOp.viewChanged = !0;
var r = t.display,
i = t.display.externalMeasured;
if (i && e >= i.lineN && e < i.lineN + i.size && (r.externalMeasured = null), !(e < r.viewFrom || e >= r.viewTo)) {
var o = r.view[lr(t, e)];
if (null != o.node) {
var a = o.changes || (o.changes = []); - 1 == z(a, n) && a.push(n)
}
}
}
function dr(t) {
t.display.viewFrom = t.display.viewTo = t.doc.first, t.display.view = [], t.display.viewOffset = 0
}
function hr(t, e, n, r) {
var i, o = lr(t, e),
a = t.display.view;
if (!Oe || n == t.doc.first + t.doc.size) return {
index: o,
lineN: n
};
for (var s = t.display.viewFrom, l = 0; l < o; l++) s += a[l].size;
if (s != e) {
if (r > 0) {
if (o == a.length - 1) return null;
i = s + a[o].size - e, o++
} else i = s - e;
e += i, n += i
}
for (; Re(t.doc, n) != n;) {
if (o == (r < 0 ? 0 : a.length - 1)) return null;
n += r * a[o - (r < 0 ? 1 : 0)].size, o += r
}
return {
index: o,
lineN: n
}
}
function fr(t) {
for (var e = t.display.view, n = 0, r = 0; r < e.length; r++) {
var i = e[r];
i.hidden || i.node && !i.changes || ++n
}
return n
}
function pr(t) {
t.display.input.showSelection(t.display.input.prepareSelection())
}
function gr(t, e) {
void 0 === e && (e = !0);
for (var n = t.doc, r = {}, i = r.cursors = document.createDocumentFragment(), o = r.selection = document.createDocumentFragment(), a = 0; a < n.sel.ranges.length; a++)
if (e || a != n.sel.primIndex) {
var s = n.sel.ranges[a];
if (!(s.from().line >= t.display.viewTo || s.to().line < t.display.viewFrom)) {
var l = s.empty();
(l || t.options.showCursorWhenSelecting) && vr(t, s.head, i), l || br(t, s, o)
}
} return r
}
function vr(t, e, n) {
var r = Gn(t, e, "div", null, null, !t.options.singleCursorHeightPerLine),
i = n.appendChild(E("div", " ", "CodeMirror-cursor"));
if (i.style.left = r.left + "px", i.style.top = r.top + "px", i.style.height = Math.max(0, r.bottom - r.top) * t.options.cursorHeight + "px", r.other) {
var o = n.appendChild(E("div", " ", "CodeMirror-cursor CodeMirror-secondarycursor"));
o.style.display = "", o.style.left = r.other.left + "px", o.style.top = r.other.top + "px", o.style.height = .85 * (r.other.bottom - r.other.top) + "px"
}
}
function mr(t, e) {
return t.top - e.top || t.left - e.left
}
function br(t, e, n) {
var r = t.display,
i = t.doc,
o = document.createDocumentFragment(),
a = kn(t.display),
s = a.left,
l = Math.max(r.sizerWidth, Tn(t) - r.sizer.offsetLeft) - a.right,
c = "ltr" == i.direction;
function u(t, e, n, r) {
e < 0 && (e = 0), e = Math.round(e), r = Math.round(r), o.appendChild(E("div", null, "CodeMirror-selected", "position: absolute; left: " + t + "px;\n top: " + e + "px; width: " + (null == n ? l - t : n) + "px;\n height: " + (r - e) + "px"))
}
function d(e, n, r) {
var o, a, d = qt(i, e),
h = d.text.length;
function f(n, r) {
return qn(t, te(e, n), "div", d, r)
}
function p(e, n, r) {
var i = Zn(t, d, null, e),
o = "ltr" == n == ("after" == r) ? "left" : "right";
return f("after" == r ? i.begin : i.end - (/\s/.test(d.text.charAt(i.end - 1)) ? 2 : 1), o)[o]
}
var g = ut(d, i.direction);
return function(t, e, n, r) {
if (!t) return r(e, n, "ltr", 0);
for (var i = !1, o = 0; o < t.length; ++o) {
var a = t[o];
(a.from < n && a.to > e || e == n && a.to == e) && (r(Math.max(a.from, e), Math.min(a.to, n), 1 == a.level ? "rtl" : "ltr", o), i = !0)
}
i || r(e, n, "ltr")
}(g, n || 0, null == r ? h : r, function(t, e, i, d) {
var v = "ltr" == i,
m = f(t, v ? "left" : "right"),
b = f(e - 1, v ? "right" : "left"),
y = null == n && 0 == t,
w = null == r && e == h,
x = 0 == d,
O = !g || d == g.length - 1;
if (b.top - m.top <= 3) {
var C = (c ? w : y) && O,
S = (c ? y : w) && x ? s : (v ? m : b).left,
k = C ? l : (v ? b : m).right;
u(S, m.top, k - S, m.bottom)
} else {
var j, T, P, E;
v ? (j = c && y && x ? s : m.left, T = c ? l : p(t, i, "before"), P = c ? s : p(e, i, "after"), E = c && w && O ? l : b.right) : (j = c ? p(t, i, "before") : s, T = !c && y && x ? l : m.right, P = !c && w && O ? s : b.left, E = c ? p(e, i, "after") : l), u(j, m.top, T - j, m.bottom), m.bottom < b.top && u(s, m.bottom, null, b.top), u(P, b.top, E - P, b.bottom)
}(!o || mr(m, o) < 0) && (o = m), mr(b, o) < 0 && (o = b), (!a || mr(m, a) < 0) && (a = m), mr(b, a) < 0 && (a = b)
}), {
start: o,
end: a
}
}
var h = e.from(),
f = e.to();
if (h.line == f.line) d(h.line, h.ch, f.ch);
else {
var p = qt(i, h.line),
g = qt(i, f.line),
v = Ve(p) == Ve(g),
m = d(h.line, h.ch, v ? p.text.length + 1 : null).end,
b = d(f.line, v ? 0 : null, f.ch).start;
v && (m.top < b.top - 2 ? (u(m.right, m.top, null, m.bottom), u(s, b.top, b.left, b.bottom)) : u(m.right, m.top, b.left - m.right, m.bottom)), m.bottom < b.top && u(s, m.bottom, null, b.top)
}
n.appendChild(o)
}
function yr(t) {
if (t.state.focused) {
var e = t.display;
clearInterval(e.blinker);
var n = !0;
e.cursorDiv.style.visibility = "", t.options.cursorBlinkRate > 0 ? e.blinker = setInterval(function() {
t.hasFocus() || Cr(t), e.cursorDiv.style.visibility = (n = !n) ? "" : "hidden"
}, t.options.cursorBlinkRate) : t.options.cursorBlinkRate < 0 && (e.cursorDiv.style.visibility = "hidden")
}
}
function wr(t) {
t.hasFocus() || (t.display.input.focus(), t.state.focused || Or(t))
}
function xr(t) {
t.state.delayingBlurEvent = !0, setTimeout(function() {
t.state.delayingBlurEvent && (t.state.delayingBlurEvent = !1, t.state.focused && Cr(t))
}, 100)
}
function Or(t, e) {
t.state.delayingBlurEvent && !t.state.draggingText && (t.state.delayingBlurEvent = !1), "nocursor" != t.options.readOnly && (t.state.focused || (gt(t, "focus", t, e), t.state.focused = !0, L(t.display.wrapper, "CodeMirror-focused"), t.curOp || t.display.selForContextMenu == t.doc.sel || (t.display.input.reset(), l && setTimeout(function() {
return t.display.input.reset(!0)
}, 20)), t.display.input.receivedFocus()), yr(t))
}
function Cr(t, e) {
t.state.delayingBlurEvent || (t.state.focused && (gt(t, "blur", t, e), t.state.focused = !1, j(t.display.wrapper, "CodeMirror-focused")), clearInterval(t.display.blinker), setTimeout(function() {
t.state.focused || (t.display.shift = !1)
}, 150))
}
function Sr(t) {
for (var e = t.display, n = e.lineDiv.offsetTop, r = 0; r < e.view.length; r++) {
var i = e.view[r],
o = t.options.lineWrapping,
l = void 0,
c = 0;
if (!i.hidden) {
if (a && s < 8) {
var u = i.node.offsetTop + i.node.offsetHeight;
l = u - n, n = u
} else {
var d = i.node.getBoundingClientRect();
l = d.bottom - d.top, !o && i.text.firstChild && (c = i.text.firstChild.getBoundingClientRect().right - d.left - 1)
}
var h = i.line.height - l;
if ((h > .005 || h < -.005) && (Yt(i.line, l), kr(i.line), i.rest))
for (var f = 0; f < i.rest.length; f++) kr(i.rest[f]);
if (c > t.display.sizerWidth) {
var p = Math.ceil(c / nr(t.display));
p > t.display.maxLineLength && (t.display.maxLineLength = p, t.display.maxLine = i.line, t.display.maxLineChanged = !0)
}
}
}
}
function kr(t) {
if (t.widgets)
for (var e = 0; e < t.widgets.length; ++e) {
var n = t.widgets[e],
r = n.node.parentNode;
r && (n.height = r.offsetHeight)
}
}
function jr(t, e, n) {
var r = n && null != n.top ? Math.max(0, n.top) : t.scroller.scrollTop;
r = Math.floor(r - Cn(t));
var i = n && null != n.bottom ? n.bottom : r + t.wrapper.clientHeight,
o = Jt(e, r),
a = Jt(e, i);
if (n && n.ensure) {
var s = n.ensure.from.line,
l = n.ensure.to.line;
s < o ? (o = s, a = Jt(e, Ue(qt(e, s)) + t.wrapper.clientHeight)) : Math.min(l, e.lastLine()) >= a && (o = Jt(e, Ue(qt(e, l)) - t.wrapper.clientHeight), a = l)
}
return {
from: o,
to: Math.max(a, o + 1)
}
}
function Tr(t, e) {
var n = t.display,
r = er(t.display);
e.top < 0 && (e.top = 0);
var i = t.curOp && null != t.curOp.scrollTop ? t.curOp.scrollTop : n.scroller.scrollTop,
o = Pn(t),
a = {};
e.bottom - e.top > o && (e.bottom = e.top + o);
var s = t.doc.height + Sn(n),
l = e.top < r,
c = e.bottom > s - r;
if (e.top < i) a.scrollTop = l ? 0 : e.top;
else if (e.bottom > i + o) {
var u = Math.min(e.top, (c ? s : e.bottom) - o);
u != i && (a.scrollTop = u)
}
var d = t.options.fixedGutter ? 0 : n.gutters.offsetWidth,
h = t.curOp && null != t.curOp.scrollLeft ? t.curOp.scrollLeft : n.scroller.scrollLeft - d,
f = Tn(t) - n.gutters.offsetWidth,
p = e.right - e.left > f;
return p && (e.right = e.left + f), e.left < 10 ? a.scrollLeft = 0 : e.left < h ? a.scrollLeft = Math.max(0, e.left + d - (p ? 0 : 10)) : e.right > f + h - 3 && (a.scrollLeft = e.right + (p ? 0 : 10) - f), a
}
function Pr(t, e) {
null != e && (Dr(t), t.curOp.scrollTop = (null == t.curOp.scrollTop ? t.doc.scrollTop : t.curOp.scrollTop) + e)
}
function Er(t) {
Dr(t);
var e = t.getCursor();
t.curOp.scrollToPos = {
from: e,
to: e,
margin: t.options.cursorScrollMargin
}
}
function Mr(t, e, n) {
null == e && null == n || Dr(t), null != e && (t.curOp.scrollLeft = e), null != n && (t.curOp.scrollTop = n)
}
function Dr(t) {
var e = t.curOp.scrollToPos;
e && (t.curOp.scrollToPos = null, Ar(t, Kn(t, e.from), Kn(t, e.to), e.margin))
}
function Ar(t, e, n, r) {
var i = Tr(t, {
left: Math.min(e.left, n.left),
top: Math.min(e.top, n.top) - r,
right: Math.max(e.right, n.right),
bottom: Math.max(e.bottom, n.bottom) + r
});
Mr(t, i.scrollLeft, i.scrollTop)
}
function Lr(t, e) {
Math.abs(t.doc.scrollTop - e) < 2 || (n || ai(t, {
top: e
}), _r(t, e, !0), n && ai(t), ei(t, 100))
}
function _r(t, e, n) {
e = Math.max(0, Math.min(t.display.scroller.scrollHeight - t.display.scroller.clientHeight, e)), (t.display.scroller.scrollTop != e || n) && (t.doc.scrollTop = e, t.display.scrollbars.setScrollTop(e), t.display.scroller.scrollTop != e && (t.display.scroller.scrollTop = e))
}
function Nr(t, e, n, r) {
e = Math.max(0, Math.min(e, t.display.scroller.scrollWidth - t.display.scroller.clientWidth)), (n ? e == t.doc.scrollLeft : Math.abs(t.doc.scrollLeft - e) < 2) && !r || (t.doc.scrollLeft = e, ci(t), t.display.scroller.scrollLeft != e && (t.display.scroller.scrollLeft = e), t.display.scrollbars.setScrollLeft(e))
}
function Ir(t) {
var e = t.display,
n = e.gutters.offsetWidth,
r = Math.round(t.doc.height + Sn(t.display));
return {
clientHeight: e.scroller.clientHeight,
viewHeight: e.wrapper.clientHeight,
scrollWidth: e.scroller.scrollWidth,
clientWidth: e.scroller.clientWidth,
viewWidth: e.wrapper.clientWidth,
barLeft: t.options.fixedGutter ? n : 0,
docHeight: r,
scrollHeight: r + jn(t) + e.barHeight,
nativeBarWidth: e.nativeBarWidth,
gutterWidth: n
}
}
var Fr = function(t, e, n) {
this.cm = n;
var r = this.vert = E("div", [E("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"),
i = this.horiz = E("div", [E("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar");
r.tabIndex = i.tabIndex = -1, t(r), t(i), ht(r, "scroll", function() {
r.clientHeight && e(r.scrollTop, "vertical")
}), ht(i, "scroll", function() {
i.clientWidth && e(i.scrollLeft, "horizontal")
}), this.checkedZeroWidth = !1, a && s < 8 && (this.horiz.style.minHeight = this.vert.style.minWidth = "18px")
};
Fr.prototype.update = function(t) {
var e = t.scrollWidth > t.clientWidth + 1,
n = t.scrollHeight > t.clientHeight + 1,
r = t.nativeBarWidth;
if (n) {
this.vert.style.display = "block", this.vert.style.bottom = e ? r + "px" : "0";
var i = t.viewHeight - (e ? r : 0);
this.vert.firstChild.style.height = Math.max(0, t.scrollHeight - t.clientHeight + i) + "px"
} else this.vert.style.display = "", this.vert.firstChild.style.height = "0";
if (e) {
this.horiz.style.display = "block", this.horiz.style.right = n ? r + "px" : "0", this.horiz.style.left = t.barLeft + "px";
var o = t.viewWidth - t.barLeft - (n ? r : 0);
this.horiz.firstChild.style.width = Math.max(0, t.scrollWidth - t.clientWidth + o) + "px"
} else this.horiz.style.display = "", this.horiz.firstChild.style.width = "0";
return !this.checkedZeroWidth && t.clientHeight > 0 && (0 == r && this.zeroWidthHack(), this.checkedZeroWidth = !0), {
right: n ? r : 0,
bottom: e ? r : 0
}
}, Fr.prototype.setScrollLeft = function(t) {
this.horiz.scrollLeft != t && (this.horiz.scrollLeft = t), this.disableHoriz && this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz")
}, Fr.prototype.setScrollTop = function(t) {
this.vert.scrollTop != t && (this.vert.scrollTop = t), this.disableVert && this.enableZeroWidthBar(this.vert, this.disableVert, "vert")
}, Fr.prototype.zeroWidthHack = function() {
var t = b && !f ? "12px" : "18px";
this.horiz.style.height = this.vert.style.width = t, this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none", this.disableHoriz = new R, this.disableVert = new R
}, Fr.prototype.enableZeroWidthBar = function(t, e, n) {
t.style.pointerEvents = "auto", e.set(1e3, function r() {
var i = t.getBoundingClientRect();
("vert" == n ? document.elementFromPoint(i.right - 1, (i.top + i.bottom) / 2) : document.elementFromPoint((i.right + i.left) / 2, i.bottom - 1)) != t ? t.style.pointerEvents = "none" : e.set(1e3, r)
})
}, Fr.prototype.clear = function() {
var t = this.horiz.parentNode;
t.removeChild(this.horiz), t.removeChild(this.vert)
};
var Vr = function() {};
function Rr(t, e) {
e || (e = Ir(t));
var n = t.display.barWidth,
r = t.display.barHeight;
zr(t, e);
for (var i = 0; i < 4 && n != t.display.barWidth || r != t.display.barHeight; i++) n != t.display.barWidth && t.options.lineWrapping && Sr(t), zr(t, Ir(t)), n = t.display.barWidth, r = t.display.barHeight
}
function zr(t, e) {
var n = t.display,
r = n.scrollbars.update(e);
n.sizer.style.paddingRight = (n.barWidth = r.right) + "px", n.sizer.style.paddingBottom = (n.barHeight = r.bottom) + "px", n.heightForcer.style.borderBottom = r.bottom + "px solid transparent", r.right && r.bottom ? (n.scrollbarFiller.style.display = "block", n.scrollbarFiller.style.height = r.bottom + "px", n.scrollbarFiller.style.width = r.right + "px") : n.scrollbarFiller.style.display = "", r.bottom && t.options.coverGutterNextToScrollbar && t.options.fixedGutter ? (n.gutterFiller.style.display = "block", n.gutterFiller.style.height = r.bottom + "px", n.gutterFiller.style.width = e.gutterWidth + "px") : n.gutterFiller.style.display = ""
}
Vr.prototype.update = function() {
return {
bottom: 0,
right: 0
}
}, Vr.prototype.setScrollLeft = function() {}, Vr.prototype.setScrollTop = function() {}, Vr.prototype.clear = function() {};
var Hr = {
native: Fr,
null: Vr
};
function $r(t) {
t.display.scrollbars && (t.display.scrollbars.clear(), t.display.scrollbars.addClass && j(t.display.wrapper, t.display.scrollbars.addClass)), t.display.scrollbars = new Hr[t.options.scrollbarStyle](function(e) {
t.display.wrapper.insertBefore(e, t.display.scrollbarFiller), ht(e, "mousedown", function() {
t.state.focused && setTimeout(function() {
return t.display.input.focus()
}, 0)
}), e.setAttribute("cm-not-content", "true")
}, function(e, n) {
"horizontal" == n ? Nr(t, e) : Lr(t, e)
}, t), t.display.scrollbars.addClass && L(t.display.wrapper, t.display.scrollbars.addClass)
}
var Ur = 0;
function Br(t) {
var e;
t.curOp = {
cm: t,
viewChanged: !1,
startHeight: t.doc.height,
forceUpdate: !1,
updateInput: 0,
typing: !1,
changeObjs: null,
cursorActivityHandlers: null,
cursorActivityCalled: 0,
selectionChanged: !1,
updateMaxLine: !1,
scrollLeft: null,
scrollTop: null,
scrollToPos: null,
focus: !1,
id: ++Ur
}, e = t.curOp, an ? an.ops.push(e) : e.ownsGroup = an = {
ops: [e],
delayedCallbacks: []
}
}
function Wr(t) {
var e = t.curOp;
e && function(t, e) {
var n = t.ownsGroup;
if (n) try {
! function(t) {
var e = t.delayedCallbacks,
n = 0;
do {
for (; n < e.length; n++) e[n].call(null);
for (var r = 0; r < t.ops.length; r++) {
var i = t.ops[r];
if (i.cursorActivityHandlers)
for (; i.cursorActivityCalled < i.cursorActivityHandlers.length;) i.cursorActivityHandlers[i.cursorActivityCalled++].call(null, i.cm)
}
} while (n < e.length)
}(n)
} finally {
an = null,
function(t) {
for (var e = 0; e < t.ops.length; e++) t.ops[e].cm.curOp = null;
! function(t) {
for (var e = t.ops, n = 0; n < e.length; n++) qr(e[n]);
for (var r = 0; r < e.length; r++) Gr(e[r]);
for (var i = 0; i < e.length; i++) Kr(e[i]);
for (var o = 0; o < e.length; o++) Yr(e[o]);
for (var a = 0; a < e.length; a++) Xr(e[a])
}(t)
}(n)
}
}(e)
}
function qr(t) {
var e = t.cm,
n = e.display;
! function(t) {
var e = t.display;
!e.scrollbarsClipped && e.scroller.offsetWidth && (e.nativeBarWidth = e.scroller.offsetWidth - e.scroller.clientWidth, e.heightForcer.style.height = jn(t) + "px", e.sizer.style.marginBottom = -e.nativeBarWidth + "px", e.sizer.style.borderRightWidth = jn(t) + "px", e.scrollbarsClipped = !0)
}(e), t.updateMaxLine && We(e), t.mustUpdate = t.viewChanged || t.forceUpdate || null != t.scrollTop || t.scrollToPos && (t.scrollToPos.from.line < n.viewFrom || t.scrollToPos.to.line >= n.viewTo) || n.maxLineChanged && e.options.lineWrapping, t.update = t.mustUpdate && new ri(e, t.mustUpdate && {
top: t.scrollTop,
ensure: t.scrollToPos
}, t.forceUpdate)
}
function Gr(t) {
t.updatedDisplay = t.mustUpdate && ii(t.cm, t.update)
}
function Kr(t) {
var e = t.cm,
n = e.display;
t.updatedDisplay && Sr(e), t.barMeasure = Ir(e), n.maxLineChanged && !e.options.lineWrapping && (t.adjustWidthTo = Mn(e, n.maxLine, n.maxLine.text.length).left + 3, e.display.sizerWidth = t.adjustWidthTo, t.barMeasure.scrollWidth = Math.max(n.scroller.clientWidth, n.sizer.offsetLeft + t.adjustWidthTo + jn(e) + e.display.barWidth), t.maxScrollLeft = Math.max(0, n.sizer.offsetLeft + t.adjustWidthTo - Tn(e))), (t.updatedDisplay || t.selectionChanged) && (t.preparedSelection = n.input.prepareSelection())
}
function Yr(t) {
var e = t.cm;
null != t.adjustWidthTo && (e.display.sizer.style.minWidth = t.adjustWidthTo + "px", t.maxScrollLeft < e.doc.scrollLeft && Nr(e, Math.min(e.display.scroller.scrollLeft, t.maxScrollLeft), !0), e.display.maxLineChanged = !1);
var n = t.focus && t.focus == A();
t.preparedSelection && e.display.input.showSelection(t.preparedSelection, n), (t.updatedDisplay || t.startHeight != e.doc.height) && Rr(e, t.barMeasure), t.updatedDisplay && li(e, t.barMeasure), t.selectionChanged && yr(e), e.state.focused && t.updateInput && e.display.input.reset(t.typing), n && wr(t.cm)
}
function Xr(t) {
var e = t.cm,
n = e.display,
r = e.doc;
t.updatedDisplay && oi(e, t.update), null == n.wheelStartX || null == t.scrollTop && null == t.scrollLeft && !t.scrollToPos || (n.wheelStartX = n.wheelStartY = null), null != t.scrollTop && _r(e, t.scrollTop, t.forceScroll), null != t.scrollLeft && Nr(e, t.scrollLeft, !0, !0), t.scrollToPos && function(t, e) {
if (!vt(t, "scrollCursorIntoView")) {
var n = t.display,
r = n.sizer.getBoundingClientRect(),
i = null;
if (e.top + r.top < 0 ? i = !0 : e.bottom + r.top > (window.innerHeight || document.documentElement.clientHeight) && (i = !1), null != i && !p) {
var o = E("div", "", null, "position: absolute;\n top: " + (e.top - n.viewOffset - Cn(t.display)) + "px;\n height: " + (e.bottom - e.top + jn(t) + n.barHeight) + "px;\n left: " + e.left + "px; width: " + Math.max(2, e.right - e.left) + "px;");
t.display.lineSpace.appendChild(o), o.scrollIntoView(i), t.display.lineSpace.removeChild(o)
}
}
}(e, function(t, e, n, r) {
var i;
null == r && (r = 0), t.options.lineWrapping || e != n || (n = "before" == (e = e.ch ? te(e.line, "before" == e.sticky ? e.ch - 1 : e.ch, "after") : e).sticky ? te(e.line, e.ch + 1, "before") : e);
for (var o = 0; o < 5; o++) {
var a = !1,
s = Gn(t, e),
l = n && n != e ? Gn(t, n) : s,
c = Tr(t, i = {
left: Math.min(s.left, l.left),
top: Math.min(s.top, l.top) - r,
right: Math.max(s.left, l.left),
bottom: Math.max(s.bottom, l.bottom) + r
}),
u = t.doc.scrollTop,
d = t.doc.scrollLeft;
if (null != c.scrollTop && (Lr(t, c.scrollTop), Math.abs(t.doc.scrollTop - u) > 1 && (a = !0)), null != c.scrollLeft && (Nr(t, c.scrollLeft), Math.abs(t.doc.scrollLeft - d) > 1 && (a = !0)), !a) break
}
return i
}(e, se(r, t.scrollToPos.from), se(r, t.scrollToPos.to), t.scrollToPos.margin));
var i = t.maybeHiddenMarkers,
o = t.maybeUnhiddenMarkers;
if (i)
for (var a = 0; a < i.length; ++a) i[a].lines.length || gt(i[a], "hide");
if (o)
for (var s = 0; s < o.length; ++s) o[s].lines.length && gt(o[s], "unhide");
n.wrapper.offsetHeight && (r.scrollTop = e.display.scroller.scrollTop), t.changeObjs && gt(e, "changes", e, t.changeObjs), t.update && t.update.finish()
}
function Jr(t, e) {
if (t.curOp) return e();
Br(t);
try {
return e()
} finally {
Wr(t)
}
}
function Zr(t, e) {
return function() {
if (t.curOp) return e.apply(t, arguments);
Br(t);
try {
return e.apply(t, arguments)
} finally {
Wr(t)
}
}
}
function Qr(t) {
return function() {
if (this.curOp) return t.apply(this, arguments);
Br(this);
try {
return t.apply(this, arguments)
} finally {
Wr(this)
}
}
}
function ti(t) {
return function() {
var e = this.cm;
if (!e || e.curOp) return t.apply(this, arguments);
Br(e);
try {
return t.apply(this, arguments)
} finally {
Wr(e)
}
}
}
function ei(t, e) {
t.doc.highlightFrontier < t.display.viewTo && t.state.highlight.set(e, I(ni, t))
}
function ni(t) {
var e = t.doc;
if (!(e.highlightFrontier >= t.display.viewTo)) {
var n = +new Date + t.options.workTime,
r = fe(t, e.highlightFrontier),
i = [];
e.iter(r.line, Math.min(e.first + e.size, t.display.viewTo + 500), function(o) {
if (r.line >= t.display.viewFrom) {
var a = o.styles,
s = o.text.length > t.options.maxHighlightLength ? $t(e.mode, r.state) : null,
l = de(t, o, r, !0);
s && (r.state = s), o.styles = l.styles;
var c = o.styleClasses,
u = l.classes;
u ? o.styleClasses = u : c && (o.styleClasses = null);
for (var d = !a || a.length != o.styles.length || c != u && (!c || !u || c.bgClass != u.bgClass || c.textClass != u.textClass), h = 0; !d && h < a.length; ++h) d = a[h] != o.styles[h];
d && i.push(r.line), o.stateAfter = r.save(), r.nextLine()
} else o.text.length <= t.options.maxHighlightLength && pe(t, o.text, r), o.stateAfter = r.line % 5 == 0 ? r.save() : null, r.nextLine();
if (+new Date > n) return ei(t, t.options.workDelay), !0
}), e.highlightFrontier = r.line, e.modeFrontier = Math.max(e.modeFrontier, r.line), i.length && Jr(t, function() {
for (var e = 0; e < i.length; e++) ur(t, i[e], "text")
})
}
}
var ri = function(t, e, n) {
var r = t.display;
this.viewport = e, this.visible = jr(r, t.doc, e), this.editorIsHidden = !r.wrapper.offsetWidth, this.wrapperHeight = r.wrapper.clientHeight, this.wrapperWidth = r.wrapper.clientWidth, this.oldDisplayWidth = Tn(t), this.force = n, this.dims = rr(t), this.events = []
};
function ii(t, e) {
var n = t.display,
r = t.doc;
if (e.editorIsHidden) return dr(t), !1;
if (!e.force && e.visible.from >= n.viewFrom && e.visible.to <= n.viewTo && (null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo) && n.renderedView == n.view && 0 == fr(t)) return !1;
ui(t) && (dr(t), e.dims = rr(t));
var i = r.first + r.size,
o = Math.max(e.visible.from - t.options.viewportMargin, r.first),
a = Math.min(i, e.visible.to + t.options.viewportMargin);
n.viewFrom < o && o - n.viewFrom < 20 && (o = Math.max(r.first, n.viewFrom)), n.viewTo > a && n.viewTo - a < 20 && (a = Math.min(i, n.viewTo)), Oe && (o = Re(t.doc, o), a = ze(t.doc, a));
var s = o != n.viewFrom || a != n.viewTo || n.lastWrapHeight != e.wrapperHeight || n.lastWrapWidth != e.wrapperWidth;
! function(t, e, n) {
var r = t.display;
0 == r.view.length || e >= r.viewTo || n <= r.viewFrom ? (r.view = on(t, e, n), r.viewFrom = e) : (r.viewFrom > e ? r.view = on(t, e, r.viewFrom).concat(r.view) : r.viewFrom < e && (r.view = r.view.slice(lr(t, e))), r.viewFrom = e, r.viewTo < n ? r.view = r.view.concat(on(t, r.viewTo, n)) : r.viewTo > n && (r.view = r.view.slice(0, lr(t, n)))), r.viewTo = n
}(t, o, a), n.viewOffset = Ue(qt(t.doc, n.viewFrom)), t.display.mover.style.top = n.viewOffset + "px";
var c = fr(t);
if (!s && 0 == c && !e.force && n.renderedView == n.view && (null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo)) return !1;
var u = function(t) {
if (t.hasFocus()) return null;
var e = A();
if (!e || !D(t.display.lineDiv, e)) return null;
var n = {
activeElt: e
};
if (window.getSelection) {
var r = window.getSelection();
r.anchorNode && r.extend && D(t.display.lineDiv, r.anchorNode) && (n.anchorNode = r.anchorNode, n.anchorOffset = r.anchorOffset, n.focusNode = r.focusNode, n.focusOffset = r.focusOffset)
}
return n
}(t);
return c > 4 && (n.lineDiv.style.display = "none"),
function(t, e, n) {
var r = t.display,
i = t.options.lineNumbers,
o = r.lineDiv,
a = o.firstChild;
function s(e) {
var n = e.nextSibling;
return l && b && t.display.currentWheelTarget == e ? e.style.display = "none" : e.parentNode.removeChild(e), n
}
for (var c = r.view, u = r.viewFrom, d = 0; d < c.length; d++) {
var h = c[d];
if (h.hidden);
else if (h.node && h.node.parentNode == o) {
for (; a != h.node;) a = s(a);
var f = i && null != e && e <= u && h.lineNumber;
h.changes && (z(h.changes, "gutter") > -1 && (f = !1), un(t, h, u, n)), f && (T(h.lineNumber), h.lineNumber.appendChild(document.createTextNode(Qt(t.options, u)))), a = h.node.nextSibling
} else {
var p = mn(t, h, u, n);
o.insertBefore(p, a)
}
u += h.size
}
for (; a;) a = s(a)
}(t, n.updateLineNumbers, e.dims), c > 4 && (n.lineDiv.style.display = ""), n.renderedView = n.view,
function(t) {
if (t && t.activeElt && t.activeElt != A() && (t.activeElt.focus(), !/^(INPUT|TEXTAREA)$/.test(t.activeElt.nodeName) && t.anchorNode && D(document.body, t.anchorNode) && D(document.body, t.focusNode))) {
var e = window.getSelection(),
n = document.createRange();
n.setEnd(t.anchorNode, t.anchorOffset), n.collapse(!1), e.removeAllRanges(), e.addRange(n), e.extend(t.focusNode, t.focusOffset)
}
}(u), T(n.cursorDiv), T(n.selectionDiv), n.gutters.style.height = n.sizer.style.minHeight = 0, s && (n.lastWrapHeight = e.wrapperHeight, n.lastWrapWidth = e.wrapperWidth, ei(t, 400)), n.updateLineNumbers = null, !0
}
function oi(t, e) {
for (var n = e.viewport, r = !0;; r = !1) {
if (r && t.options.lineWrapping && e.oldDisplayWidth != Tn(t)) r && (e.visible = jr(t.display, t.doc, n));
else if (n && null != n.top && (n = {
top: Math.min(t.doc.height + Sn(t.display) - Pn(t), n.top)
}), e.visible = jr(t.display, t.doc, n), e.visible.from >= t.display.viewFrom && e.visible.to <= t.display.viewTo) break;
if (!ii(t, e)) break;
Sr(t);
var i = Ir(t);
pr(t), Rr(t, i), li(t, i), e.force = !1
}
e.signal(t, "update", t), t.display.viewFrom == t.display.reportedViewFrom && t.display.viewTo == t.display.reportedViewTo || (e.signal(t, "viewportChange", t, t.display.viewFrom, t.display.viewTo), t.display.reportedViewFrom = t.display.viewFrom, t.display.reportedViewTo = t.display.viewTo)
}
function ai(t, e) {
var n = new ri(t, e);
if (ii(t, n)) {
Sr(t), oi(t, n);
var r = Ir(t);
pr(t), Rr(t, r), li(t, r), n.finish()
}
}
function si(t) {
var e = t.gutters.offsetWidth;
t.sizer.style.marginLeft = e + "px"
}
function li(t, e) {
t.display.sizer.style.minHeight = e.docHeight + "px", t.display.heightForcer.style.top = e.docHeight + "px", t.display.gutters.style.height = e.docHeight + t.display.barHeight + jn(t) + "px"
}
function ci(t) {
var e = t.display,
n = e.view;
if (e.alignWidgets || e.gutters.firstChild && t.options.fixedGutter) {
for (var r = ir(e) - e.scroller.scrollLeft + t.doc.scrollLeft, i = e.gutters.offsetWidth, o = r + "px", a = 0; a < n.length; a++)
if (!n[a].hidden) {
t.options.fixedGutter && (n[a].gutter && (n[a].gutter.style.left = o), n[a].gutterBackground && (n[a].gutterBackground.style.left = o));
var s = n[a].alignable;
if (s)
for (var l = 0; l < s.length; l++) s[l].style.left = o
} t.options.fixedGutter && (e.gutters.style.left = r + i + "px")
}
}
function ui(t) {
if (!t.options.lineNumbers) return !1;
var e = t.doc,
n = Qt(t.options, e.first + e.size - 1),
r = t.display;
if (n.length != r.lineNumChars) {
var i = r.measure.appendChild(E("div", [E("div", n)], "CodeMirror-linenumber CodeMirror-gutter-elt")),
o = i.firstChild.offsetWidth,
a = i.offsetWidth - o;
return r.lineGutter.style.width = "", r.lineNumInnerWidth = Math.max(o, r.lineGutter.offsetWidth - a) + 1, r.lineNumWidth = r.lineNumInnerWidth + a, r.lineNumChars = r.lineNumInnerWidth ? n.length : -1, r.lineGutter.style.width = r.lineNumWidth + "px", si(t.display), !0
}
return !1
}
function di(t, e) {
for (var n = [], r = !1, i = 0; i < t.length; i++) {
var o = t[i],
a = null;
if ("string" != typeof o && (a = o.style, o = o.className), "CodeMirror-linenumbers" == o) {
if (!e) continue;
r = !0
}
n.push({
className: o,
style: a
})
}
return e && !r && n.push({
className: "CodeMirror-linenumbers",
style: null
}), n
}
function hi(t) {
var e = t.gutters,
n = t.gutterSpecs;
T(e), t.lineGutter = null;
for (var r = 0; r < n.length; ++r) {
var i = n[r],
o = i.className,
a = i.style,
s = e.appendChild(E("div", null, "CodeMirror-gutter " + o));
a && (s.style.cssText = a), "CodeMirror-linenumbers" == o && (t.lineGutter = s, s.style.width = (t.lineNumWidth || 1) + "px")
}
e.style.display = n.length ? "" : "none", si(t)
}
function fi(t) {
hi(t.display), cr(t), ci(t)
}
function pi(t, e, r, i) {
var o = this;
this.input = r, o.scrollbarFiller = E("div", null, "CodeMirror-scrollbar-filler"), o.scrollbarFiller.setAttribute("cm-not-content", "true"), o.gutterFiller = E("div", null, "CodeMirror-gutter-filler"), o.gutterFiller.setAttribute("cm-not-content", "true"), o.lineDiv = M("div", null, "CodeMirror-code"), o.selectionDiv = E("div", null, null, "position: relative; z-index: 1"), o.cursorDiv = E("div", null, "CodeMirror-cursors"), o.measure = E("div", null, "CodeMirror-measure"), o.lineMeasure = E("div", null, "CodeMirror-measure"), o.lineSpace = M("div", [o.measure, o.lineMeasure, o.selectionDiv, o.cursorDiv, o.lineDiv], null, "position: relative; outline: none");
var c = M("div", [o.lineSpace], "CodeMirror-lines");
o.mover = E("div", [c], null, "position: relative"), o.sizer = E("div", [o.mover], "CodeMirror-sizer"), o.sizerWidth = null, o.heightForcer = E("div", null, null, "position: absolute; height: " + H + "px; width: 1px;"), o.gutters = E("div", null, "CodeMirror-gutters"), o.lineGutter = null, o.scroller = E("div", [o.sizer, o.heightForcer, o.gutters], "CodeMirror-scroll"), o.scroller.setAttribute("tabIndex", "-1"), o.wrapper = E("div", [o.scrollbarFiller, o.gutterFiller, o.scroller], "CodeMirror"), a && s < 8 && (o.gutters.style.zIndex = -1, o.scroller.style.paddingRight = 0), l || n && m || (o.scroller.draggable = !0), t && (t.appendChild ? t.appendChild(o.wrapper) : t(o.wrapper)), o.viewFrom = o.viewTo = e.first, o.reportedViewFrom = o.reportedViewTo = e.first, o.view = [], o.renderedView = null, o.externalMeasured = null, o.viewOffset = 0, o.lastWrapHeight = o.lastWrapWidth = 0, o.updateLineNumbers = null, o.nativeBarWidth = o.barHeight = o.barWidth = 0, o.scrollbarsClipped = !1, o.lineNumWidth = o.lineNumInnerWidth = o.lineNumChars = null, o.alignWidgets = !1, o.cachedCharWidth = o.cachedTextHeight = o.cachedPaddingH = null, o.maxLine = null, o.maxLineLength = 0, o.maxLineChanged = !1, o.wheelDX = o.wheelDY = o.wheelStartX = o.wheelStartY = null, o.shift = !1, o.selForContextMenu = null, o.activeTouch = null, o.gutterSpecs = di(i.gutters, i.lineNumbers), hi(o), r.init(o)
}
ri.prototype.signal = function(t, e) {
bt(t, e) && this.events.push(arguments)
}, ri.prototype.finish = function() {
for (var t = 0; t < this.events.length; t++) gt.apply(null, this.events[t])
};
var gi = 0,
vi = null;
function mi(t) {
var e = t.wheelDeltaX,
n = t.wheelDeltaY;
return null == e && t.detail && t.axis == t.HORIZONTAL_AXIS && (e = t.detail), null == n && t.detail && t.axis == t.VERTICAL_AXIS ? n = t.detail : null == n && (n = t.wheelDelta), {
x: e,
y: n
}
}
function bi(t) {
var e = mi(t);
return e.x *= vi, e.y *= vi, e
}
function yi(t, e) {
var r = mi(e),
i = r.x,
o = r.y,
a = t.display,
s = a.scroller,
c = s.scrollWidth > s.clientWidth,
u = s.scrollHeight > s.clientHeight;
if (i && c || o && u) {
if (o && b && l) t: for (var h = e.target, f = a.view; h != s; h = h.parentNode)
for (var p = 0; p < f.length; p++)
if (f[p].node == h) {
t.display.currentWheelTarget = h;
break t
} if (i && !n && !d && null != vi) return o && u && Lr(t, Math.max(0, s.scrollTop + o * vi)), Nr(t, Math.max(0, s.scrollLeft + i * vi)), (!o || o && u) && wt(e), void(a.wheelStartX = null);
if (o && null != vi) {
var g = o * vi,
v = t.doc.scrollTop,
m = v + a.wrapper.clientHeight;
g < 0 ? v = Math.max(0, v + g - 50) : m = Math.min(t.doc.height, m + g + 50), ai(t, {
top: v,
bottom: m
})
}
gi < 20 && (null == a.wheelStartX ? (a.wheelStartX = s.scrollLeft, a.wheelStartY = s.scrollTop, a.wheelDX = i, a.wheelDY = o, setTimeout(function() {
if (null != a.wheelStartX) {
var t = s.scrollLeft - a.wheelStartX,
e = s.scrollTop - a.wheelStartY,
n = e && a.wheelDY && e / a.wheelDY || t && a.wheelDX && t / a.wheelDX;
a.wheelStartX = a.wheelStartY = null, n && (vi = (vi * gi + n) / (gi + 1), ++gi)
}
}, 200)) : (a.wheelDX += i, a.wheelDY += o))
}
}
a ? vi = -.53 : n ? vi = 15 : u ? vi = -.7 : h && (vi = -1 / 3);
var wi = function(t, e) {
this.ranges = t, this.primIndex = e
};
wi.prototype.primary = function() {
return this.ranges[this.primIndex]
}, wi.prototype.equals = function(t) {
if (t == this) return !0;
if (t.primIndex != this.primIndex || t.ranges.length != this.ranges.length) return !1;
for (var e = 0; e < this.ranges.length; e++) {
var n = this.ranges[e],
r = t.ranges[e];
if (!ne(n.anchor, r.anchor) || !ne(n.head, r.head)) return !1
}
return !0
}, wi.prototype.deepCopy = function() {
for (var t = [], e = 0; e < this.ranges.length; e++) t[e] = new xi(re(this.ranges[e].anchor), re(this.ranges[e].head));
return new wi(t, this.primIndex)
}, wi.prototype.somethingSelected = function() {
for (var t = 0; t < this.ranges.length; t++)
if (!this.ranges[t].empty()) return !0;
return !1
}, wi.prototype.contains = function(t, e) {
e || (e = t);
for (var n = 0; n < this.ranges.length; n++) {
var r = this.ranges[n];
if (ee(e, r.from()) >= 0 && ee(t, r.to()) <= 0) return n
}
return -1
};
var xi = function(t, e) {
this.anchor = t, this.head = e
};
function Oi(t, e, n) {
var r = t && t.options.selectionsMayTouch,
i = e[n];
e.sort(function(t, e) {
return ee(t.from(), e.from())
}), n = z(e, i);
for (var o = 1; o < e.length; o++) {
var a = e[o],
s = e[o - 1],
l = ee(s.to(), a.from());
if (r && !a.empty() ? l > 0 : l >= 0) {
var c = oe(s.from(), a.from()),
u = ie(s.to(), a.to()),
d = s.empty() ? a.from() == a.head : s.from() == s.head;
o <= n && --n, e.splice(--o, 2, new xi(d ? u : c, d ? c : u))
}
}
return new wi(e, n)
}
function Ci(t, e) {
return new wi([new xi(t, e || t)], 0)
}
function Si(t) {
return t.text ? te(t.from.line + t.text.length - 1, Y(t.text).length + (1 == t.text.length ? t.from.ch : 0)) : t.to
}
function ki(t, e) {
if (ee(t, e.from) < 0) return t;
if (ee(t, e.to) <= 0) return Si(e);
var n = t.line + e.text.length - (e.to.line - e.from.line) - 1,
r = t.ch;
return t.line == e.to.line && (r += Si(e).ch - e.to.ch), te(n, r)
}
function ji(t, e) {
for (var n = [], r = 0; r < t.sel.ranges.length; r++) {
var i = t.sel.ranges[r];
n.push(new xi(ki(i.anchor, e), ki(i.head, e)))
}
return Oi(t.cm, n, t.sel.primIndex)
}
function Ti(t, e, n) {
return t.line == e.line ? te(n.line, t.ch - e.ch + n.ch) : te(n.line + (t.line - e.line), t.ch)
}
function Pi(t) {
t.doc.mode = Rt(t.options, t.doc.modeOption), Ei(t)
}
function Ei(t) {
t.doc.iter(function(t) {
t.stateAfter && (t.stateAfter = null), t.styles && (t.styles = null)
}), t.doc.modeFrontier = t.doc.highlightFrontier = t.doc.first, ei(t, 100), t.state.modeGen++, t.curOp && cr(t)
}
function Mi(t, e) {
return 0 == e.from.ch && 0 == e.to.ch && "" == Y(e.text) && (!t.cm || t.cm.options.wholeLineUpdateBefore)
}
function Di(t, e, n, r) {
function i(t) {
return n ? n[t] : null
}
function o(t, n, i) {
! function(t, e, n, r) {
t.text = e, t.stateAfter && (t.stateAfter = null), t.styles && (t.styles = null), null != t.order && (t.order = null), Pe(t), Ee(t, n);
var i = r ? r(t) : 1;
i != t.height && Yt(t, i)
}(t, n, i, r), ln(t, "change", t, e)
}
function a(t, e) {
for (var n = [], o = t; o < e; ++o) n.push(new qe(c[o], i(o), r));
return n
}
var s = e.from,
l = e.to,
c = e.text,
u = qt(t, s.line),
d = qt(t, l.line),
h = Y(c),
f = i(c.length - 1),
p = l.line - s.line;
if (e.full) t.insert(0, a(0, c.length)), t.remove(c.length, t.size - c.length);
else if (Mi(t, e)) {
var g = a(0, c.length - 1);
o(d, d.text, f), p && t.remove(s.line, p), g.length && t.insert(s.line, g)
} else if (u == d)
if (1 == c.length) o(u, u.text.slice(0, s.ch) + h + u.text.slice(l.ch), f);
else {
var v = a(1, c.length - 1);
v.push(new qe(h + u.text.slice(l.ch), f, r)), o(u, u.text.slice(0, s.ch) + c[0], i(0)), t.insert(s.line + 1, v)
}
else if (1 == c.length) o(u, u.text.slice(0, s.ch) + c[0] + d.text.slice(l.ch), i(0)), t.remove(s.line + 1, p);
else {
o(u, u.text.slice(0, s.ch) + c[0], i(0)), o(d, h + d.text.slice(l.ch), f);
var m = a(1, c.length - 1);
p > 1 && t.remove(s.line + 1, p - 1), t.insert(s.line + 1, m)
}
ln(t, "change", t, e)
}
function Ai(t, e, n) {
! function t(r, i, o) {
if (r.linked)
for (var a = 0; a < r.linked.length; ++a) {
var s = r.linked[a];
if (s.doc != i) {
var l = o && s.sharedHist;
n && !l || (e(s.doc, l), t(s.doc, r, l))
}
}
}(t, null, !0)
}
function Li(t, e) {
if (e.cm) throw new Error("This document is already in use.");
t.doc = e, e.cm = t, ar(t), Pi(t), _i(t), t.options.lineWrapping || We(t), t.options.mode = e.modeOption, cr(t)
}
function _i(t) {
("rtl" == t.doc.direction ? L : j)(t.display.lineDiv, "CodeMirror-rtl")
}
function Ni(t) {
this.done = [], this.undone = [], this.undoDepth = 1 / 0, this.lastModTime = this.lastSelTime = 0, this.lastOp = this.lastSelOp = null, this.lastOrigin = this.lastSelOrigin = null, this.generation = this.maxGeneration = t || 1
}
function Ii(t, e) {
var n = {
from: re(e.from),
to: Si(e),
text: Gt(t, e.from, e.to)
};
return zi(t, n, e.from.line, e.to.line + 1), Ai(t, function(t) {
return zi(t, n, e.from.line, e.to.line + 1)
}, !0), n
}
function Fi(t) {
for (; t.length && Y(t).ranges;) t.pop()
}
function Vi(t, e, n, r) {
var i = t.history;
i.undone.length = 0;
var o, a, s = +new Date;
if ((i.lastOp == r || i.lastOrigin == e.origin && e.origin && ("+" == e.origin.charAt(0) && i.lastModTime > s - (t.cm ? t.cm.options.historyEventDelay : 500) || "*" == e.origin.charAt(0))) && (o = function(t, e) {
return i.lastOp == r ? (Fi(t.done), Y(t.done)) : t.done.length && !Y(t.done).ranges ? Y(t.done) : t.done.length > 1 && !t.done[t.done.length - 2].ranges ? (t.done.pop(), Y(t.done)) : void 0
}(i))) a = Y(o.changes), 0 == ee(e.from, e.to) && 0 == ee(e.from, a.to) ? a.to = Si(e) : o.changes.push(Ii(t, e));
else {
var l = Y(i.done);
for (l && l.ranges || Ri(t.sel, i.done), o = {
changes: [Ii(t, e)],
generation: i.generation
}, i.done.push(o); i.done.length > i.undoDepth;) i.done.shift(), i.done[0].ranges || i.done.shift()
}
i.done.push(n), i.generation = ++i.maxGeneration, i.lastModTime = i.lastSelTime = s, i.lastOp = i.lastSelOp = r, i.lastOrigin = i.lastSelOrigin = e.origin, a || gt(t, "historyAdded")
}
function Ri(t, e) {
var n = Y(e);
n && n.ranges && n.equals(t) || e.push(t)
}
function zi(t, e, n, r) {
var i = e["spans_" + t.id],
o = 0;
t.iter(Math.max(t.first, n), Math.min(t.first + t.size, r), function(n) {
n.markedSpans && ((i || (i = e["spans_" + t.id] = {}))[o] = n.markedSpans), ++o
})
}
function Hi(t) {
if (!t) return null;
for (var e, n = 0; n < t.length; ++n) t[n].marker.explicitlyCleared ? e || (e = t.slice(0, n)) : e && e.push(t[n]);
return e ? e.length ? e : null : t
}
function $i(t, e) {
var n = function(t, e) {
var n = e["spans_" + t.id];
if (!n) return null;
for (var r = [], i = 0; i < e.text.length; ++i) r.push(Hi(n[i]));
return r
}(t, e),
r = je(t, e);
if (!n) return r;
if (!r) return n;
for (var i = 0; i < n.length; ++i) {
var o = n[i],
a = r[i];
if (o && a) t: for (var s = 0; s < a.length; ++s) {
for (var l = a[s], c = 0; c < o.length; ++c)
if (o[c].marker == l.marker) continue t;
o.push(l)
} else a && (n[i] = a)
}
return n
}
function Ui(t, e, n) {
for (var r = [], i = 0; i < t.length; ++i) {
var o = t[i];
if (o.ranges) r.push(n ? wi.prototype.deepCopy.call(o) : o);
else {
var a = o.changes,
s = [];
r.push({
changes: s
});
for (var l = 0; l < a.length; ++l) {
var c = a[l],
u = void 0;
if (s.push({
from: c.from,
to: c.to,
text: c.text
}), e)
for (var d in c)(u = d.match(/^spans_(\d+)$/)) && z(e, Number(u[1])) > -1 && (Y(s)[d] = c[d], delete c[d])
}
}
}
return r
}
function Bi(t, e, n, r) {
if (r) {
var i = t.anchor;
if (n) {
var o = ee(e, i) < 0;
o != ee(n, i) < 0 ? (i = e, e = n) : o != ee(e, n) < 0 && (e = n)
}
return new xi(i, e)
}
return new xi(n || e, e)
}
function Wi(t, e, n, r, i) {
null == i && (i = t.cm && (t.cm.display.shift || t.extend)), Xi(t, new wi([Bi(t.sel.primary(), e, n, i)], 0), r)
}
function qi(t, e, n) {
for (var r = [], i = t.cm && (t.cm.display.shift || t.extend), o = 0; o < t.sel.ranges.length; o++) r[o] = Bi(t.sel.ranges[o], e[o], null, i);
Xi(t, Oi(t.cm, r, t.sel.primIndex), n)
}
function Gi(t, e, n, r) {
var i = t.sel.ranges.slice(0);
i[e] = n, Xi(t, Oi(t.cm, i, t.sel.primIndex), r)
}
function Ki(t, e, n, r) {
Xi(t, Ci(e, n), r)
}
function Yi(t, e, n) {
var r = t.history.done,
i = Y(r);
i && i.ranges ? (r[r.length - 1] = e, Ji(t, e, n)) : Xi(t, e, n)
}
function Xi(t, e, n) {
Ji(t, e, n),
function(t, e, n, r) {
var i = t.history,
o = r && r.origin;
n == i.lastSelOp || o && i.lastSelOrigin == o && (i.lastModTime == i.lastSelTime && i.lastOrigin == o || function(t, e, n, r) {
var i = e.charAt(0);
return "*" == i || "+" == i && n.ranges.length == r.ranges.length && n.somethingSelected() == r.somethingSelected() && new Date - t.history.lastSelTime <= (t.cm ? t.cm.options.historyEventDelay : 500)
}(t, o, Y(i.done), e)) ? i.done[i.done.length - 1] = e : Ri(e, i.done), i.lastSelTime = +new Date, i.lastSelOrigin = o, i.lastSelOp = n, r && !1 !== r.clearRedo && Fi(i.undone)
}(t, t.sel, t.cm ? t.cm.curOp.id : NaN, n)
}
function Ji(t, e, n) {
(bt(t, "beforeSelectionChange") || t.cm && bt(t.cm, "beforeSelectionChange")) && (e = function(t, e, n) {
var r = {
ranges: e.ranges,
update: function(e) {
this.ranges = [];
for (var n = 0; n < e.length; n++) this.ranges[n] = new xi(se(t, e[n].anchor), se(t, e[n].head))
},
origin: n && n.origin
};
return gt(t, "beforeSelectionChange", t, r), t.cm && gt(t.cm, "beforeSelectionChange", t.cm, r), r.ranges != e.ranges ? Oi(t.cm, r.ranges, r.ranges.length - 1) : e
}(t, e, n));
var r = n && n.bias || (ee(e.primary().head, t.sel.primary().head) < 0 ? -1 : 1);
Zi(t, to(t, e, r, !0)), n && !1 === n.scroll || !t.cm || Er(t.cm)
}
function Zi(t, e) {
e.equals(t.sel) || (t.sel = e, t.cm && (t.cm.curOp.updateInput = 1, t.cm.curOp.selectionChanged = !0, mt(t.cm)), ln(t, "cursorActivity", t))
}
function Qi(t) {
Zi(t, to(t, t.sel, null, !1))
}
function to(t, e, n, r) {
for (var i, o = 0; o < e.ranges.length; o++) {
var a = e.ranges[o],
s = e.ranges.length == t.sel.ranges.length && t.sel.ranges[o],
l = no(t, a.anchor, s && s.anchor, n, r),
c = no(t, a.head, s && s.head, n, r);
(i || l != a.anchor || c != a.head) && (i || (i = e.ranges.slice(0, o)), i[o] = new xi(l, c))
}
return i ? Oi(t.cm, i, e.primIndex) : e
}
function eo(t, e, n, r, i) {
var o = qt(t, e.line);
if (o.markedSpans)
for (var a = 0; a < o.markedSpans.length; ++a) {
var s = o.markedSpans[a],
l = s.marker,
c = "selectLeft" in l ? !l.selectLeft : l.inclusiveLeft,
u = "selectRight" in l ? !l.selectRight : l.inclusiveRight;
if ((null == s.from || (c ? s.from <= e.ch : s.from < e.ch)) && (null == s.to || (u ? s.to >= e.ch : s.to > e.ch))) {
if (i && (gt(l, "beforeCursorEnter"), l.explicitlyCleared)) {
if (o.markedSpans) {
--a;
continue
}
break
}
if (!l.atomic) continue;
if (n) {
var d = l.find(r < 0 ? 1 : -1),
h = void 0;
if ((r < 0 ? u : c) && (d = ro(t, d, -r, d && d.line == e.line ? o : null)), d && d.line == e.line && (h = ee(d, n)) && (r < 0 ? h < 0 : h > 0)) return eo(t, d, e, r, i)
}
var f = l.find(r < 0 ? -1 : 1);
return (r < 0 ? c : u) && (f = ro(t, f, r, f.line == e.line ? o : null)), f ? eo(t, f, e, r, i) : null
}
}
return e
}
function no(t, e, n, r, i) {
var o = r || 1;
return eo(t, e, n, o, i) || !i && eo(t, e, n, o, !0) || eo(t, e, n, -o, i) || !i && eo(t, e, n, -o, !0) || (t.cantEdit = !0, te(t.first, 0))
}
function ro(t, e, n, r) {
return n < 0 && 0 == e.ch ? e.line > t.first ? se(t, te(e.line - 1)) : null : n > 0 && e.ch == (r || qt(t, e.line)).text.length ? e.line < t.first + t.size - 1 ? te(e.line + 1, 0) : null : new te(e.line, e.ch + n)
}
function io(t) {
t.setSelection(te(t.firstLine(), 0), te(t.lastLine()), U)
}
function oo(t, e, n) {
var r = {
canceled: !1,
from: e.from,
to: e.to,
text: e.text,
origin: e.origin,
cancel: function() {
return r.canceled = !0
}
};
return n && (r.update = function(e, n, i, o) {
e && (r.from = se(t, e)), n && (r.to = se(t, n)), i && (r.text = i), void 0 !== o && (r.origin = o)
}), gt(t, "beforeChange", t, r), t.cm && gt(t.cm, "beforeChange", t.cm, r), r.canceled ? (t.cm && (t.cm.curOp.updateInput = 2), null) : {
from: r.from,
to: r.to,
text: r.text,
origin: r.origin
}
}
function ao(t, e, n) {
if (t.cm) {
if (!t.cm.curOp) return Zr(t.cm, ao)(t, e, n);
if (t.cm.state.suppressEdits) return
}
if (!(bt(t, "beforeChange") || t.cm && bt(t.cm, "beforeChange")) || (e = oo(t, e, !0))) {
var r = xe && !n && function(t, e, n) {
var r = null;
if (t.iter(e.line, n.line + 1, function(t) {
if (t.markedSpans)
for (var e = 0; e < t.markedSpans.length; ++e) {
var n = t.markedSpans[e].marker;
!n.readOnly || r && -1 != z(r, n) || (r || (r = [])).push(n)
}
}), !r) return null;
for (var i = [{
from: e,
to: n
}], o = 0; o < r.length; ++o)
for (var a = r[o], s = a.find(0), l = 0; l < i.length; ++l) {
var c = i[l];
if (!(ee(c.to, s.from) < 0 || ee(c.from, s.to) > 0)) {
var u = [l, 1],
d = ee(c.from, s.from),
h = ee(c.to, s.to);
(d < 0 || !a.inclusiveLeft && !d) && u.push({
from: c.from,
to: s.from
}), (h > 0 || !a.inclusiveRight && !h) && u.push({
from: s.to,
to: c.to
}), i.splice.apply(i, u), l += u.length - 3
}
}
return i
}(t, e.from, e.to);
if (r)
for (var i = r.length - 1; i >= 0; --i) so(t, {
from: r[i].from,
to: r[i].to,
text: i ? [""] : e.text,
origin: e.origin
});
else so(t, e)
}
}
function so(t, e) {
if (1 != e.text.length || "" != e.text[0] || 0 != ee(e.from, e.to)) {
var n = ji(t, e);
Vi(t, e, n, t.cm ? t.cm.curOp.id : NaN), uo(t, e, n, je(t, e));
var r = [];
Ai(t, function(t, n) {
n || -1 != z(r, t.history) || (go(t.history, e), r.push(t.history)), uo(t, e, null, je(t, e))
})
}
}
function lo(t, e, n) {
var r = t.cm && t.cm.state.suppressEdits;
if (!r || n) {
for (var i, o = t.history, a = t.sel, s = "undo" == e ? o.done : o.undone, l = "undo" == e ? o.undone : o.done, c = 0; c < s.length && (i = s[c], n ? !i.ranges || i.equals(t.sel) : i.ranges); c++);
if (c != s.length) {
for (o.lastOrigin = o.lastSelOrigin = null;;) {
if (!(i = s.pop()).ranges) {
if (r) return void s.push(i);
break
}
if (Ri(i, l), n && !i.equals(t.sel)) return void Xi(t, i, {
clearRedo: !1
});
a = i
}
var u = [];
Ri(a, l), l.push({
changes: u,
generation: o.generation
}), o.generation = i.generation || ++o.maxGeneration;
for (var d = bt(t, "beforeChange") || t.cm && bt(t.cm, "beforeChange"), h = function(n) {
var r = i.changes[n];
if (r.origin = e, d && !oo(t, r, !1)) return s.length = 0, {};
u.push(Ii(t, r));
var o = n ? ji(t, r) : Y(s);
uo(t, r, o, $i(t, r)), !n && t.cm && t.cm.scrollIntoView({
from: r.from,
to: Si(r)
});
var a = [];
Ai(t, function(t, e) {
e || -1 != z(a, t.history) || (go(t.history, r), a.push(t.history)), uo(t, r, null, $i(t, r))
})
}, f = i.changes.length - 1; f >= 0; --f) {
var p = h(f);
if (p) return p.v
}
}
}
}
function co(t, e) {
if (0 != e && (t.first += e, t.sel = new wi(X(t.sel.ranges, function(t) {
return new xi(te(t.anchor.line + e, t.anchor.ch), te(t.head.line + e, t.head.ch))
}), t.sel.primIndex), t.cm)) {
cr(t.cm, t.first, t.first - e, e);
for (var n = t.cm.display, r = n.viewFrom; r < n.viewTo; r++) ur(t.cm, r, "gutter")
}
}
function uo(t, e, n, r) {
if (t.cm && !t.cm.curOp) return Zr(t.cm, uo)(t, e, n, r);
if (e.to.line < t.first) co(t, e.text.length - 1 - (e.to.line - e.from.line));
else if (!(e.from.line > t.lastLine())) {
if (e.from.line < t.first) {
var i = e.text.length - 1 - (t.first - e.from.line);
co(t, i), e = {
from: te(t.first, 0),
to: te(e.to.line + i, e.to.ch),
text: [Y(e.text)],
origin: e.origin
}
}
var o = t.lastLine();
e.to.line > o && (e = {
from: e.from,
to: te(o, qt(t, o).text.length),
text: [e.text[0]],
origin: e.origin
}), e.removed = Gt(t, e.from, e.to), n || (n = ji(t, e)), t.cm ? function(t, e, n) {
var r = t.doc,
i = t.display,
o = e.from,
a = e.to,
s = !1,
l = o.line;
t.options.lineWrapping || (l = Xt(Ve(qt(r, o.line))), r.iter(l, a.line + 1, function(t) {
if (t == i.maxLine) return s = !0, !0
})), r.sel.contains(e.from, e.to) > -1 && mt(t), Di(r, e, n, or(t)), t.options.lineWrapping || (r.iter(l, o.line + e.text.length, function(t) {
var e = Be(t);
e > i.maxLineLength && (i.maxLine = t, i.maxLineLength = e, i.maxLineChanged = !0, s = !1)
}), s && (t.curOp.updateMaxLine = !0)),
function(t, e) {
if (t.modeFrontier = Math.min(t.modeFrontier, e), !(t.highlightFrontier < e - 10)) {
for (var n = t.first, r = e - 1; r > n; r--) {
var i = qt(t, r).stateAfter;
if (i && (!(i instanceof ce) || r + i.lookAhead < e)) {
n = r + 1;
break
}
}
t.highlightFrontier = Math.min(t.highlightFrontier, n)
}
}(r, o.line), ei(t, 400);
var c = e.text.length - (a.line - o.line) - 1;
e.full ? cr(t) : o.line != a.line || 1 != e.text.length || Mi(t.doc, e) ? cr(t, o.line, a.line + 1, c) : ur(t, o.line, "text");
var u = bt(t, "changes"),
d = bt(t, "change");
if (d || u) {
var h = {
from: o,
to: a,
text: e.text,
removed: e.removed,
origin: e.origin
};
d && ln(t, "change", t, h), u && (t.curOp.changeObjs || (t.curOp.changeObjs = [])).push(h)
}
t.display.selForContextMenu = null
}(t.cm, e, r) : Di(t, e, r), Ji(t, n, U), t.cantEdit && no(t, te(t.firstLine(), 0)) && (t.cantEdit = !1)
}
}
function ho(t, e, n, r, i) {
var o;
r || (r = n), ee(r, n) < 0 && (n = (o = [r, n])[0], r = o[1]), "string" == typeof e && (e = t.splitLines(e)), ao(t, {
from: n,
to: r,
text: e,
origin: i
})
}
function fo(t, e, n, r) {
n < t.line ? t.line += r : e < t.line && (t.line = e, t.ch = 0)
}
function po(t, e, n, r) {
for (var i = 0; i < t.length; ++i) {
var o = t[i],
a = !0;
if (o.ranges) {
o.copied || ((o = t[i] = o.deepCopy()).copied = !0);
for (var s = 0; s < o.ranges.length; s++) fo(o.ranges[s].anchor, e, n, r), fo(o.ranges[s].head, e, n, r)
} else {
for (var l = 0; l < o.changes.length; ++l) {
var c = o.changes[l];
if (n < c.from.line) c.from = te(c.from.line + r, c.from.ch), c.to = te(c.to.line + r, c.to.ch);
else if (e <= c.to.line) {
a = !1;
break
}
}
a || (t.splice(0, i + 1), i = 0)
}
}
}
function go(t, e) {
var n = e.from.line,
r = e.to.line,
i = e.text.length - (r - n) - 1;
po(t.done, n, r, i), po(t.undone, n, r, i)
}
function vo(t, e, n, r) {
var i = e,
o = e;
return "number" == typeof e ? o = qt(t, ae(t, e)) : i = Xt(e), null == i ? null : (r(o, i) && t.cm && ur(t.cm, i, n), o)
}
function mo(t) {
this.lines = t, this.parent = null;
for (var e = 0, n = 0; n < t.length; ++n) t[n].parent = this, e += t[n].height;
this.height = e
}
function bo(t) {
this.children = t;
for (var e = 0, n = 0, r = 0; r < t.length; ++r) {
var i = t[r];
e += i.chunkSize(), n += i.height, i.parent = this
}
this.size = e, this.height = n, this.parent = null
}
xi.prototype.from = function() {
return oe(this.anchor, this.head)
}, xi.prototype.to = function() {
return ie(this.anchor, this.head)
}, xi.prototype.empty = function() {
return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch
}, mo.prototype = {
chunkSize: function() {
return this.lines.length
},
removeInner: function(t, e) {
for (var n = t, r = t + e; n < r; ++n) {
var i = this.lines[n];
this.height -= i.height, Ge(i), ln(i, "delete")
}
this.lines.splice(t, e)
},
collapse: function(t) {
t.push.apply(t, this.lines)
},
insertInner: function(t, e, n) {
this.height += n, this.lines = this.lines.slice(0, t).concat(e).concat(this.lines.slice(t));
for (var r = 0; r < e.length; ++r) e[r].parent = this
},
iterN: function(t, e, n) {
for (var r = t + e; t < r; ++t)
if (n(this.lines[t])) return !0
}
}, bo.prototype = {
chunkSize: function() {
return this.size
},
removeInner: function(t, e) {
this.size -= e;
for (var n = 0; n < this.children.length; ++n) {
var r = this.children[n],
i = r.chunkSize();
if (t < i) {
var o = Math.min(e, i - t),
a = r.height;
if (r.removeInner(t, o), this.height -= a - r.height, i == o && (this.children.splice(n--, 1), r.parent = null), 0 == (e -= o)) break;
t = 0
} else t -= i
}
if (this.size - e < 25 && (this.children.length > 1 || !(this.children[0] instanceof mo))) {
var s = [];
this.collapse(s), this.children = [new mo(s)], this.children[0].parent = this
}
},
collapse: function(t) {
for (var e = 0; e < this.children.length; ++e) this.children[e].collapse(t)
},
insertInner: function(t, e, n) {
this.size += e.length, this.height += n;
for (var r = 0; r < this.children.length; ++r) {
var i = this.children[r],
o = i.chunkSize();
if (t <= o) {
if (i.insertInner(t, e, n), i.lines && i.lines.length > 50) {
for (var a = i.lines.length % 25 + 25, s = a; s < i.lines.length;) {
var l = new mo(i.lines.slice(s, s += 25));
i.height -= l.height, this.children.splice(++r, 0, l), l.parent = this
}
i.lines = i.lines.slice(0, a), this.maybeSpill()
}
break
}
t -= o
}
},
maybeSpill: function() {
if (!(this.children.length <= 10)) {
var t = this;
do {
var e = new bo(t.children.splice(t.children.length - 5, 5));
if (t.parent) {
t.size -= e.size, t.height -= e.height;
var n = z(t.parent.children, t);
t.parent.children.splice(n + 1, 0, e)
} else {
var r = new bo(t.children);
r.parent = t, t.children = [r, e], t = r
}
e.parent = t.parent
} while (t.children.length > 10);
t.parent.maybeSpill()
}
},
iterN: function(t, e, n) {
for (var r = 0; r < this.children.length; ++r) {
var i = this.children[r],
o = i.chunkSize();
if (t < o) {
var a = Math.min(e, o - t);
if (i.iterN(t, a, n)) return !0;
if (0 == (e -= a)) break;
t = 0
} else t -= o
}
}
};
var yo = function(t, e, n) {
if (n)
for (var r in n) n.hasOwnProperty(r) && (this[r] = n[r]);
this.doc = t, this.node = e
};
function wo(t, e, n) {
Ue(e) < (t.curOp && t.curOp.scrollTop || t.doc.scrollTop) && Pr(t, n)
}
yo.prototype.clear = function() {
var t = this.doc.cm,
e = this.line.widgets,
n = this.line,
r = Xt(n);
if (null != r && e) {
for (var i = 0; i < e.length; ++i) e[i] == this && e.splice(i--, 1);
e.length || (n.widgets = null);
var o = xn(this);
Yt(n, Math.max(0, n.height - o)), t && (Jr(t, function() {
wo(t, n, -o), ur(t, r, "widget")
}), ln(t, "lineWidgetCleared", t, this, r))
}
}, yo.prototype.changed = function() {
var t = this,
e = this.height,
n = this.doc.cm,
r = this.line;
this.height = null;
var i = xn(this) - e;
i && (He(this.doc, r) || Yt(r, r.height + i), n && Jr(n, function() {
n.curOp.forceUpdate = !0, wo(n, r, i), ln(n, "lineWidgetChanged", n, t, Xt(r))
}))
}, yt(yo);
var xo = 0,
Oo = function(t, e) {
this.lines = [], this.type = e, this.doc = t, this.id = ++xo
};
function Co(t, e, n, r, i) {
if (r && r.shared) return function(t, e, n, r, i) {
(r = F(r)).shared = !1;
var o = [Co(t, e, n, r, i)],
a = o[0],
s = r.widgetNode;
return Ai(t, function(t) {
s && (r.widgetNode = s.cloneNode(!0)), o.push(Co(t, se(t, e), se(t, n), r, i));
for (var l = 0; l < t.linked.length; ++l)
if (t.linked[l].isParent) return;
a = Y(o)
}), new So(o, a)
}(t, e, n, r, i);
if (t.cm && !t.cm.curOp) return Zr(t.cm, Co)(t, e, n, r, i);
var o = new Oo(t, i),
a = ee(e, n);
if (r && F(r, o, !1), a > 0 || 0 == a && !1 !== o.clearWhenEmpty) return o;
if (o.replacedWith && (o.collapsed = !0, o.widgetNode = M("span", [o.replacedWith], "CodeMirror-widget"), r.handleMouseEvents || o.widgetNode.setAttribute("cm-ignore-events", "true"), r.insertLeft && (o.widgetNode.insertLeft = !0)), o.collapsed) {
if (Fe(t, e.line, e, n, o) || e.line != n.line && Fe(t, n.line, e, n, o)) throw new Error("Inserting collapsed marker partially overlapping an existing one");
Oe = !0
}
o.addToHistory && Vi(t, {
from: e,
to: n,
origin: "markText"
}, t.sel, NaN);
var s, l = e.line,
c = t.cm;
if (t.iter(l, n.line + 1, function(t) {
c && o.collapsed && !c.options.lineWrapping && Ve(t) == c.display.maxLine && (s = !0), o.collapsed && l != e.line && Yt(t, 0),
function(t, e) {
t.markedSpans = t.markedSpans ? t.markedSpans.concat([e]) : [e], e.marker.attachLine(t)
}(t, new Ce(o, l == e.line ? e.ch : null, l == n.line ? n.ch : null)), ++l
}), o.collapsed && t.iter(e.line, n.line + 1, function(e) {
He(t, e) && Yt(e, 0)
}), o.clearOnEnter && ht(o, "beforeCursorEnter", function() {
return o.clear()
}), o.readOnly && (xe = !0, (t.history.done.length || t.history.undone.length) && t.clearHistory()), o.collapsed && (o.id = ++xo, o.atomic = !0), c) {
if (s && (c.curOp.updateMaxLine = !0), o.collapsed) cr(c, e.line, n.line + 1);
else if (o.className || o.startStyle || o.endStyle || o.css || o.attributes || o.title)
for (var u = e.line; u <= n.line; u++) ur(c, u, "text");
o.atomic && Qi(c.doc), ln(c, "markerAdded", c, o)
}
return o
}
Oo.prototype.clear = function() {
if (!this.explicitlyCleared) {
var t = this.doc.cm,
e = t && !t.curOp;
if (e && Br(t), bt(this, "clear")) {
var n = this.find();
n && ln(this, "clear", n.from, n.to)
}
for (var r = null, i = null, o = 0; o < this.lines.length; ++o) {
var a = this.lines[o],
s = Se(a.markedSpans, this);
t && !this.collapsed ? ur(t, Xt(a), "text") : t && (null != s.to && (i = Xt(a)), null != s.from && (r = Xt(a))), a.markedSpans = ke(a.markedSpans, s), null == s.from && this.collapsed && !He(this.doc, a) && t && Yt(a, er(t.display))
}
if (t && this.collapsed && !t.options.lineWrapping)
for (var l = 0; l < this.lines.length; ++l) {
var c = Ve(this.lines[l]),
u = Be(c);
u > t.display.maxLineLength && (t.display.maxLine = c, t.display.maxLineLength = u, t.display.maxLineChanged = !0)
}
null != r && t && this.collapsed && cr(t, r, i + 1), this.lines.length = 0, this.explicitlyCleared = !0, this.atomic && this.doc.cantEdit && (this.doc.cantEdit = !1, t && Qi(t.doc)), t && ln(t, "markerCleared", t, this, r, i), e && Wr(t), this.parent && this.parent.clear()
}
}, Oo.prototype.find = function(t, e) {
var n, r;
null == t && "bookmark" == this.type && (t = 1);
for (var i = 0; i < this.lines.length; ++i) {
var o = this.lines[i],
a = Se(o.markedSpans, this);
if (null != a.from && (n = te(e ? o : Xt(o), a.from), -1 == t)) return n;
if (null != a.to && (r = te(e ? o : Xt(o), a.to), 1 == t)) return r
}
return n && {
from: n,
to: r
}
}, Oo.prototype.changed = function() {
var t = this,
e = this.find(-1, !0),
n = this,
r = this.doc.cm;
e && r && Jr(r, function() {
var i = e.line,
o = Xt(e.line),
a = Dn(r, o);
if (a && (Vn(a), r.curOp.selectionChanged = r.curOp.forceUpdate = !0), r.curOp.updateMaxLine = !0, !He(n.doc, i) && null != n.height) {
var s = n.height;
n.height = null;
var l = xn(n) - s;
l && Yt(i, i.height + l)
}
ln(r, "markerChanged", r, t)
})
}, Oo.prototype.attachLine = function(t) {
if (!this.lines.length && this.doc.cm) {
var e = this.doc.cm.curOp;
e.maybeHiddenMarkers && -1 != z(e.maybeHiddenMarkers, this) || (e.maybeUnhiddenMarkers || (e.maybeUnhiddenMarkers = [])).push(this)
}
this.lines.push(t)
}, Oo.prototype.detachLine = function(t) {
if (this.lines.splice(z(this.lines, t), 1), !this.lines.length && this.doc.cm) {
var e = this.doc.cm.curOp;
(e.maybeHiddenMarkers || (e.maybeHiddenMarkers = [])).push(this)
}
}, yt(Oo);
var So = function(t, e) {
this.markers = t, this.primary = e;
for (var n = 0; n < t.length; ++n) t[n].parent = this
};
function ko(t) {
return t.findMarks(te(t.first, 0), t.clipPos(te(t.lastLine())), function(t) {
return t.parent
})
}
function jo(t) {
for (var e = function(e) {
var n = t[e],
r = [n.primary.doc];
Ai(n.primary.doc, function(t) {
return r.push(t)
});
for (var i = 0; i < n.markers.length; i++) {
var o = n.markers[i]; - 1 == z(r, o.doc) && (o.parent = null, n.markers.splice(i--, 1))
}
}, n = 0; n < t.length; n++) e(n)
}
So.prototype.clear = function() {
if (!this.explicitlyCleared) {
this.explicitlyCleared = !0;
for (var t = 0; t < this.markers.length; ++t) this.markers[t].clear();
ln(this, "clear")
}
}, So.prototype.find = function(t, e) {
return this.primary.find(t, e)
}, yt(So);
var To = 0,
Po = function(t, e, n, r, i) {
if (!(this instanceof Po)) return new Po(t, e, n, r, i);
null == n && (n = 0), bo.call(this, [new mo([new qe("", null)])]), this.first = n, this.scrollTop = this.scrollLeft = 0, this.cantEdit = !1, this.cleanGeneration = 1, this.modeFrontier = this.highlightFrontier = n;
var o = te(n, 0);
this.sel = Ci(o), this.history = new Ni(null), this.id = ++To, this.modeOption = e, this.lineSep = r, this.direction = "rtl" == i ? "rtl" : "ltr", this.extend = !1, "string" == typeof t && (t = this.splitLines(t)), Di(this, {
from: o,
to: o,
text: t
}), Xi(this, Ci(o), U)
};
Po.prototype = Z(bo.prototype, {
constructor: Po,
iter: function(t, e, n) {
n ? this.iterN(t - this.first, e - t, n) : this.iterN(this.first, this.first + this.size, t)
},
insert: function(t, e) {
for (var n = 0, r = 0; r < e.length; ++r) n += e[r].height;
this.insertInner(t - this.first, e, n)
},
remove: function(t, e) {
this.removeInner(t - this.first, e)
},
getValue: function(t) {
var e = Kt(this, this.first, this.first + this.size);
return !1 === t ? e : e.join(t || this.lineSeparator())
},
setValue: ti(function(t) {
var e = te(this.first, 0),
n = this.first + this.size - 1;
ao(this, {
from: e,
to: te(n, qt(this, n).text.length),
text: this.splitLines(t),
origin: "setValue",
full: !0
}, !0), this.cm && Mr(this.cm, 0, 0), Xi(this, Ci(e), U)
}),
replaceRange: function(t, e, n, r) {
ho(this, t, e = se(this, e), n = n ? se(this, n) : e, r)
},
getRange: function(t, e, n) {
var r = Gt(this, se(this, t), se(this, e));
return !1 === n ? r : r.join(n || this.lineSeparator())
},
getLine: function(t) {
var e = this.getLineHandle(t);
return e && e.text
},
getLineHandle: function(t) {
if (Zt(this, t)) return qt(this, t)
},
getLineNumber: function(t) {
return Xt(t)
},
getLineHandleVisualStart: function(t) {
return "number" == typeof t && (t = qt(this, t)), Ve(t)
},
lineCount: function() {
return this.size
},
firstLine: function() {
return this.first
},
lastLine: function() {
return this.first + this.size - 1
},
clipPos: function(t) {
return se(this, t)
},
getCursor: function(t) {
var e = this.sel.primary();
return null == t || "head" == t ? e.head : "anchor" == t ? e.anchor : "end" == t || "to" == t || !1 === t ? e.to() : e.from()
},
listSelections: function() {
return this.sel.ranges
},
somethingSelected: function() {
return this.sel.somethingSelected()
},
setCursor: ti(function(t, e, n) {
Ki(this, se(this, "number" == typeof t ? te(t, e || 0) : t), null, n)
}),
setSelection: ti(function(t, e, n) {
Ki(this, se(this, t), se(this, e || t), n)
}),
extendSelection: ti(function(t, e, n) {
Wi(this, se(this, t), e && se(this, e), n)
}),
extendSelections: ti(function(t, e) {
qi(this, le(this, t), e)
}),
extendSelectionsBy: ti(function(t, e) {
qi(this, le(this, X(this.sel.ranges, t)), e)
}),
setSelections: ti(function(t, e, n) {
if (t.length) {
for (var r = [], i = 0; i < t.length; i++) r[i] = new xi(se(this, t[i].anchor), se(this, t[i].head));
null == e && (e = Math.min(t.length - 1, this.sel.primIndex)), Xi(this, Oi(this.cm, r, e), n)
}
}),
addSelection: ti(function(t, e, n) {
var r = this.sel.ranges.slice(0);
r.push(new xi(se(this, t), se(this, e || t))), Xi(this, Oi(this.cm, r, r.length - 1), n)
}),
getSelection: function(t) {
for (var e, n = this.sel.ranges, r = 0; r < n.length; r++) {
var i = Gt(this, n[r].from(), n[r].to());
e = e ? e.concat(i) : i
}
return !1 === t ? e : e.join(t || this.lineSeparator())
},
getSelections: function(t) {
for (var e = [], n = this.sel.ranges, r = 0; r < n.length; r++) {
var i = Gt(this, n[r].from(), n[r].to());
!1 !== t && (i = i.join(t || this.lineSeparator())), e[r] = i
}
return e
},
replaceSelection: function(t, e, n) {
for (var r = [], i = 0; i < this.sel.ranges.length; i++) r[i] = t;
this.replaceSelections(r, e, n || "+input")
},
replaceSelections: ti(function(t, e, n) {
for (var r = [], i = this.sel, o = 0; o < i.ranges.length; o++) {
var a = i.ranges[o];
r[o] = {
from: a.from(),
to: a.to(),
text: this.splitLines(t[o]),
origin: n
}
}
for (var s = e && "end" != e && function(t, e, n) {
for (var r = [], i = te(t.first, 0), o = i, a = 0; a < e.length; a++) {
var s = e[a],
l = Ti(s.from, i, o),
c = Ti(Si(s), i, o);
if (i = s.to, o = c, "around" == n) {
var u = t.sel.ranges[a],
d = ee(u.head, u.anchor) < 0;
r[a] = new xi(d ? c : l, d ? l : c)
} else r[a] = new xi(l, l)
}
return new wi(r, t.sel.primIndex)
}(this, r, e), l = r.length - 1; l >= 0; l--) ao(this, r[l]);
s ? Yi(this, s) : this.cm && Er(this.cm)
}),
undo: ti(function() {
lo(this, "undo")
}),
redo: ti(function() {
lo(this, "redo")
}),
undoSelection: ti(function() {
lo(this, "undo", !0)
}),
redoSelection: ti(function() {
lo(this, "redo", !0)
}),
setExtending: function(t) {
this.extend = t
},
getExtending: function() {
return this.extend
},
historySize: function() {
for (var t = this.history, e = 0, n = 0, r = 0; r < t.done.length; r++) t.done[r].ranges || ++e;
for (var i = 0; i < t.undone.length; i++) t.undone[i].ranges || ++n;
return {
undo: e,
redo: n
}
},
clearHistory: function() {
var t = this;
this.history = new Ni(this.history.maxGeneration), Ai(this, function(e) {
return e.history = t.history
}, !0)
},
markClean: function() {
this.cleanGeneration = this.changeGeneration(!0)
},
changeGeneration: function(t) {
return t && (this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null), this.history.generation
},
isClean: function(t) {
return this.history.generation == (t || this.cleanGeneration)
},
getHistory: function() {
return {
done: Ui(this.history.done),
undone: Ui(this.history.undone)
}
},
setHistory: function(t) {
var e = this.history = new Ni(this.history.maxGeneration);
e.done = Ui(t.done.slice(0), null, !0), e.undone = Ui(t.undone.slice(0), null, !0)
},
setGutterMarker: ti(function(t, e, n) {
return vo(this, t, "gutter", function(t) {
var r = t.gutterMarkers || (t.gutterMarkers = {});
return r[e] = n, !n && nt(r) && (t.gutterMarkers = null), !0
})
}),
clearGutter: ti(function(t) {
var e = this;
this.iter(function(n) {
n.gutterMarkers && n.gutterMarkers[t] && vo(e, n, "gutter", function() {
return n.gutterMarkers[t] = null, nt(n.gutterMarkers) && (n.gutterMarkers = null), !0
})
})
}),
lineInfo: function(t) {
var e;
if ("number" == typeof t) {
if (!Zt(this, t)) return null;
if (e = t, !(t = qt(this, t))) return null
} else if (null == (e = Xt(t))) return null;
return {
line: e,
handle: t,
text: t.text,
gutterMarkers: t.gutterMarkers,
textClass: t.textClass,
bgClass: t.bgClass,
wrapClass: t.wrapClass,
widgets: t.widgets
}
},
addLineClass: ti(function(t, e, n) {
return vo(this, t, "gutter" == e ? "gutter" : "class", function(t) {
var r = "text" == e ? "textClass" : "background" == e ? "bgClass" : "gutter" == e ? "gutterClass" : "wrapClass";
if (t[r]) {
if (S(n).test(t[r])) return !1;
t[r] += " " + n
} else t[r] = n;
return !0
})
}),
removeLineClass: ti(function(t, e, n) {
return vo(this, t, "gutter" == e ? "gutter" : "class", function(t) {
var r = "text" == e ? "textClass" : "background" == e ? "bgClass" : "gutter" == e ? "gutterClass" : "wrapClass",
i = t[r];
if (!i) return !1;
if (null == n) t[r] = null;
else {
var o = i.match(S(n));
if (!o) return !1;
var a = o.index + o[0].length;
t[r] = i.slice(0, o.index) + (o.index && a != i.length ? " " : "") + i.slice(a) || null
}
return !0
})
}),
addLineWidget: ti(function(t, e, n) {
return function(t, e, n, r) {
var i = new yo(t, n, r),
o = t.cm;
return o && i.noHScroll && (o.display.alignWidgets = !0), vo(t, e, "widget", function(e) {
var n = e.widgets || (e.widgets = []);
if (null == i.insertAt ? n.push(i) : n.splice(Math.min(n.length, Math.max(0, i.insertAt)), 0, i), i.line = e, o && !He(t, e)) {
var r = Ue(e) < t.scrollTop;
Yt(e, e.height + xn(i)), r && Pr(o, i.height), o.curOp.forceUpdate = !0
}
return !0
}), o && ln(o, "lineWidgetAdded", o, i, "number" == typeof e ? e : Xt(e)), i
}(this, t, e, n)
}),
removeLineWidget: function(t) {
t.clear()
},
markText: function(t, e, n) {
return Co(this, se(this, t), se(this, e), n, n && n.type || "range")
},
setBookmark: function(t, e) {
var n = {
replacedWith: e && (null == e.nodeType ? e.widget : e),
insertLeft: e && e.insertLeft,
clearWhenEmpty: !1,
shared: e && e.shared,
handleMouseEvents: e && e.handleMouseEvents
};
return Co(this, t = se(this, t), t, n, "bookmark")
},
findMarksAt: function(t) {
var e = [],
n = qt(this, (t = se(this, t)).line).markedSpans;
if (n)
for (var r = 0; r < n.length; ++r) {
var i = n[r];
(null == i.from || i.from <= t.ch) && (null == i.to || i.to >= t.ch) && e.push(i.marker.parent || i.marker)
}
return e
},
findMarks: function(t, e, n) {
t = se(this, t), e = se(this, e);
var r = [],
i = t.line;
return this.iter(t.line, e.line + 1, function(o) {
var a = o.markedSpans;
if (a)
for (var s = 0; s < a.length; s++) {
var l = a[s];
null != l.to && i == t.line && t.ch >= l.to || null == l.from && i != t.line || null != l.from && i == e.line && l.from >= e.ch || n && !n(l.marker) || r.push(l.marker.parent || l.marker)
}++i
}), r
},
getAllMarks: function() {
var t = [];
return this.iter(function(e) {
var n = e.markedSpans;
if (n)
for (var r = 0; r < n.length; ++r) null != n[r].from && t.push(n[r].marker)
}), t
},
posFromIndex: function(t) {
var e, n = this.first,
r = this.lineSeparator().length;
return this.iter(function(i) {
var o = i.text.length + r;
if (o > t) return e = t, !0;
t -= o, ++n
}), se(this, te(n, e))
},
indexFromPos: function(t) {
var e = (t = se(this, t)).ch;
if (t.line < this.first || t.ch < 0) return 0;
var n = this.lineSeparator().length;
return this.iter(this.first, t.line, function(t) {
e += t.text.length + n
}), e
},
copy: function(t) {
var e = new Po(Kt(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);
return e.scrollTop = this.scrollTop, e.scrollLeft = this.scrollLeft, e.sel = this.sel, e.extend = !1, t && (e.history.undoDepth = this.history.undoDepth, e.setHistory(this.getHistory())), e
},
linkedDoc: function(t) {
t || (t = {});
var e = this.first,
n = this.first + this.size;
null != t.from && t.from > e && (e = t.from), null != t.to && t.to < n && (n = t.to);
var r = new Po(Kt(this, e, n), t.mode || this.modeOption, e, this.lineSep, this.direction);
return t.sharedHist && (r.history = this.history), (this.linked || (this.linked = [])).push({
doc: r,
sharedHist: t.sharedHist
}), r.linked = [{
doc: this,
isParent: !0,
sharedHist: t.sharedHist
}],
function(t, e) {
for (var n = 0; n < e.length; n++) {
var r = e[n],
i = r.find(),
o = t.clipPos(i.from),
a = t.clipPos(i.to);
if (ee(o, a)) {
var s = Co(t, o, a, r.primary, r.primary.type);
r.markers.push(s), s.parent = r
}
}
}(r, ko(this)), r
},
unlinkDoc: function(t) {
if (t instanceof Ca && (t = t.doc), this.linked)
for (var e = 0; e < this.linked.length; ++e)
if (this.linked[e].doc == t) {
this.linked.splice(e, 1), t.unlinkDoc(this), jo(ko(this));
break
} if (t.history == this.history) {
var n = [t.id];
Ai(t, function(t) {
return n.push(t.id)
}, !0), t.history = new Ni(null), t.history.done = Ui(this.history.done, n), t.history.undone = Ui(this.history.undone, n)
}
},
iterLinkedDocs: function(t) {
Ai(this, t)
},
getMode: function() {
return this.mode
},
getEditor: function() {
return this.cm
},
splitLines: function(t) {
return this.lineSep ? t.split(this.lineSep) : At(t)
},
lineSeparator: function() {
return this.lineSep || "\n"
},
setDirection: ti(function(t) {
var e;
"rtl" != t && (t = "ltr"), t != this.direction && (this.direction = t, this.iter(function(t) {
return t.order = null
}), this.cm && Jr(e = this.cm, function() {
_i(e), cr(e)
}))
})
}), Po.prototype.eachLine = Po.prototype.iter;
var Eo = 0;
function Mo(t) {
var e = this;
if (Do(e), !vt(e, t) && !On(e.display, t)) {
wt(t), a && (Eo = +new Date);
var n = sr(e, t, !0),
r = t.dataTransfer.files;
if (n && !e.isReadOnly())
if (r && r.length && window.FileReader && window.File)
for (var i = r.length, o = Array(i), s = 0, l = function() {
++s == i && Zr(e, function() {
var t = {
from: n = se(e.doc, n),
to: n,
text: e.doc.splitLines(o.filter(function(t) {
return null != t
}).join(e.doc.lineSeparator())),
origin: "paste"
};
ao(e.doc, t), Yi(e.doc, Ci(se(e.doc, n), se(e.doc, Si(t))))
})()
}, c = function(t, n) {
if (e.options.allowDropFileTypes && -1 == z(e.options.allowDropFileTypes, t.type)) l();
else {
var r = new FileReader;
r.onerror = function() {
return l()
}, r.onload = function() {
var t = r.result;
/[\x00-\x08\x0e-\x1f]{2}/.test(t) || (o[n] = t), l()
}, r.readAsText(t)
}
}, u = 0; u < r.length; u++) c(r[u], u);
else {
if (e.state.draggingText && e.doc.sel.contains(n) > -1) return e.state.draggingText(t), void setTimeout(function() {
return e.display.input.focus()
}, 20);
try {
var d = t.dataTransfer.getData("Text");
if (d) {
var h;
if (e.state.draggingText && !e.state.draggingText.copy && (h = e.listSelections()), Ji(e.doc, Ci(n, n)), h)
for (var f = 0; f < h.length; ++f) ho(e.doc, "", h[f].anchor, h[f].head, "drag");
e.replaceSelection(d, "around", "paste"), e.display.input.focus()
}
} catch (t) {}
}
}
}
function Do(t) {
t.display.dragCursor && (t.display.lineSpace.removeChild(t.display.dragCursor), t.display.dragCursor = null)
}
function Ao(t) {
if (document.getElementsByClassName) {
for (var e = document.getElementsByClassName("CodeMirror"), n = [], r = 0; r < e.length; r++) {
var i = e[r].CodeMirror;
i && n.push(i)
}
n.length && n[0].operation(function() {
for (var e = 0; e < n.length; e++) t(n[e])
})
}
}
var Lo = !1;
function _o(t) {
var e = t.display;
e.cachedCharWidth = e.cachedTextHeight = e.cachedPaddingH = null, e.scrollbarsClipped = !1, t.setSize()
}
for (var No = {
3: "Pause",
8: "Backspace",
9: "Tab",
13: "Enter",
16: "Shift",
17: "Ctrl",
18: "Alt",
19: "Pause",
20: "CapsLock",
27: "Esc",
32: "Space",
33: "PageUp",
34: "PageDown",
35: "End",
36: "Home",
37: "Left",
38: "Up",
39: "Right",
40: "Down",
44: "PrintScrn",
45: "Insert",
46: "Delete",
59: ";",
61: "=",
91: "Mod",
92: "Mod",
93: "Mod",
106: "*",
107: "=",
109: "-",
110: ".",
111: "/",
145: "ScrollLock",
173: "-",
186: ";",
187: "=",
188: ",",
189: "-",
190: ".",
191: "/",
192: "`",
219: "[",
220: "\\",
221: "]",
222: "'",
224: "Mod",
63232: "Up",
63233: "Down",
63234: "Left",
63235: "Right",
63272: "Delete",
63273: "Home",
63275: "End",
63276: "PageUp",
63277: "PageDown",
63302: "Insert"
}, Io = 0; Io < 10; Io++) No[Io + 48] = No[Io + 96] = String(Io);
for (var Fo = 65; Fo <= 90; Fo++) No[Fo] = String.fromCharCode(Fo);
for (var Vo = 1; Vo <= 12; Vo++) No[Vo + 111] = No[Vo + 63235] = "F" + Vo;
var Ro = {};
function zo(t) {
var e, n, r, i, o = t.split(/-(?!$)/);
t = o[o.length - 1];
for (var a = 0; a < o.length - 1; a++) {
var s = o[a];
if (/^(cmd|meta|m)$/i.test(s)) i = !0;
else if (/^a(lt)?$/i.test(s)) e = !0;
else if (/^(c|ctrl|control)$/i.test(s)) n = !0;
else {
if (!/^s(hift)?$/i.test(s)) throw new Error("Unrecognized modifier name: " + s);
r = !0
}
}
return e && (t = "Alt-" + t), n && (t = "Ctrl-" + t), i && (t = "Cmd-" + t), r && (t = "Shift-" + t), t
}
function Ho(t) {
var e = {};
for (var n in t)
if (t.hasOwnProperty(n)) {
var r = t[n];
if (/^(name|fallthrough|(de|at)tach)$/.test(n)) continue;
if ("..." == r) {
delete t[n];
continue
}
for (var i = X(n.split(" "), zo), o = 0; o < i.length; o++) {
var a = void 0,
s = void 0;
o == i.length - 1 ? (s = i.join(" "), a = r) : (s = i.slice(0, o + 1).join(" "), a = "...");
var l = e[s];
if (l) {
if (l != a) throw new Error("Inconsistent bindings for " + s)
} else e[s] = a
}
delete t[n]
} for (var c in e) t[c] = e[c];
return t
}
function $o(t, e, n, r) {
var i = (e = qo(e)).call ? e.call(t, r) : e[t];
if (!1 === i) return "nothing";
if ("..." === i) return "multi";
if (null != i && n(i)) return "handled";
if (e.fallthrough) {
if ("[object Array]" != Object.prototype.toString.call(e.fallthrough)) return $o(t, e.fallthrough, n, r);
for (var o = 0; o < e.fallthrough.length; o++) {
var a = $o(t, e.fallthrough[o], n, r);
if (a) return a
}
}
}
function Uo(t) {
var e = "string" == typeof t ? t : No[t.keyCode];
return "Ctrl" == e || "Alt" == e || "Shift" == e || "Mod" == e
}
function Bo(t, e, n) {
var r = t;
return e.altKey && "Alt" != r && (t = "Alt-" + t), (O ? e.metaKey : e.ctrlKey) && "Ctrl" != r && (t = "Ctrl-" + t), (O ? e.ctrlKey : e.metaKey) && "Mod" != r && (t = "Cmd-" + t), !n && e.shiftKey && "Shift" != r && (t = "Shift-" + t), t
}
function Wo(t, e) {
if (d && 34 == t.keyCode && t.char) return !1;
var n = No[t.keyCode];
return null != n && !t.altGraphKey && (3 == t.keyCode && t.code && (n = t.code), Bo(n, t, e))
}
function qo(t) {
return "string" == typeof t ? Ro[t] : t
}
function Go(t, e) {
for (var n = t.doc.sel.ranges, r = [], i = 0; i < n.length; i++) {
for (var o = e(n[i]); r.length && ee(o.from, Y(r).to) <= 0;) {
var a = r.pop();
if (ee(a.from, o.from) < 0) {
o.from = a.from;
break
}
}
r.push(o)
}
Jr(t, function() {
for (var e = r.length - 1; e >= 0; e--) ho(t.doc, "", r[e].from, r[e].to, "+delete");
Er(t)
})
}
function Ko(t, e, n) {
var r = ot(t.text, e + n, n);
return r < 0 || r > t.text.length ? null : r
}
function Yo(t, e, n) {
var r = Ko(t, e.ch, n);
return null == r ? null : new te(e.line, r, n < 0 ? "after" : "before")
}
function Xo(t, e, n, r, i) {
if (t) {
"rtl" == e.doc.direction && (i = -i);
var o = ut(n, e.doc.direction);
if (o) {
var a, s = i < 0 ? Y(o) : o[0],
l = i < 0 == (1 == s.level) ? "after" : "before";
if (s.level > 0 || "rtl" == e.doc.direction) {
var c = An(e, n);
a = i < 0 ? n.text.length - 1 : 0;
var u = Ln(e, c, a).top;
a = at(function(t) {
return Ln(e, c, t).top == u
}, i < 0 == (1 == s.level) ? s.from : s.to - 1, a), "before" == l && (a = Ko(n, a, 1))
} else a = i < 0 ? s.to : s.from;
return new te(r, a, l)
}
}
return new te(r, i < 0 ? n.text.length : 0, i < 0 ? "before" : "after")
}
Ro.basic = {
Left: "goCharLeft",
Right: "goCharRight",
Up: "goLineUp",
Down: "goLineDown",
End: "goLineEnd",
Home: "goLineStartSmart",
PageUp: "goPageUp",
PageDown: "goPageDown",
Delete: "delCharAfter",
Backspace: "delCharBefore",
"Shift-Backspace": "delCharBefore",
Tab: "defaultTab",
"Shift-Tab": "indentAuto",
Enter: "newlineAndIndent",
Insert: "toggleOverwrite",
Esc: "singleSelection"
}, Ro.pcDefault = {
"Ctrl-A": "selectAll",
"Ctrl-D": "deleteLine",
"Ctrl-Z": "undo",
"Shift-Ctrl-Z": "redo",
"Ctrl-Y": "redo",
"Ctrl-Home": "goDocStart",
"Ctrl-End": "goDocEnd",
"Ctrl-Up": "goLineUp",
"Ctrl-Down": "goLineDown",
"Ctrl-Left": "goGroupLeft",
"Ctrl-Right": "goGroupRight",
"Alt-Left": "goLineStart",
"Alt-Right": "goLineEnd",
"Ctrl-Backspace": "delGroupBefore",
"Ctrl-Delete": "delGroupAfter",
"Ctrl-S": "save",
"Ctrl-F": "find",
"Ctrl-G": "findNext",
"Shift-Ctrl-G": "findPrev",
"Shift-Ctrl-F": "replace",
"Shift-Ctrl-R": "replaceAll",
"Ctrl-[": "indentLess",
"Ctrl-]": "indentMore",
"Ctrl-U": "undoSelection",
"Shift-Ctrl-U": "redoSelection",
"Alt-U": "redoSelection",
fallthrough: "basic"
}, Ro.emacsy = {
"Ctrl-F": "goCharRight",
"Ctrl-B": "goCharLeft",
"Ctrl-P": "goLineUp",
"Ctrl-N": "goLineDown",
"Alt-F": "goWordRight",
"Alt-B": "goWordLeft",
"Ctrl-A": "goLineStart",
"Ctrl-E": "goLineEnd",
"Ctrl-V": "goPageDown",
"Shift-Ctrl-V": "goPageUp",
"Ctrl-D": "delCharAfter",
"Ctrl-H": "delCharBefore",
"Alt-D": "delWordAfter",
"Alt-Backspace": "delWordBefore",
"Ctrl-K": "killLine",
"Ctrl-T": "transposeChars",
"Ctrl-O": "openLine"
}, Ro.macDefault = {
"Cmd-A": "selectAll",
"Cmd-D": "deleteLine",
"Cmd-Z": "undo",
"Shift-Cmd-Z": "redo",
"Cmd-Y": "redo",
"Cmd-Home": "goDocStart",
"Cmd-Up": "goDocStart",
"Cmd-End": "goDocEnd",
"Cmd-Down": "goDocEnd",
"Alt-Left": "goGroupLeft",
"Alt-Right": "goGroupRight",
"Cmd-Left": "goLineLeft",
"Cmd-Right": "goLineRight",
"Alt-Backspace": "delGroupBefore",
"Ctrl-Alt-Backspace": "delGroupAfter",
"Alt-Delete": "delGroupAfter",
"Cmd-S": "save",
"Cmd-F": "find",
"Cmd-G": "findNext",
"Shift-Cmd-G": "findPrev",
"Cmd-Alt-F": "replace",
"Shift-Cmd-Alt-F": "replaceAll",
"Cmd-[": "indentLess",
"Cmd-]": "indentMore",
"Cmd-Backspace": "delWrappedLineLeft",
"Cmd-Delete": "delWrappedLineRight",
"Cmd-U": "undoSelection",
"Shift-Cmd-U": "redoSelection",
"Ctrl-Up": "goDocStart",
"Ctrl-Down": "goDocEnd",
fallthrough: ["basic", "emacsy"]
}, Ro.default = b ? Ro.macDefault : Ro.pcDefault;
var Jo = {
selectAll: io,
singleSelection: function(t) {
return t.setSelection(t.getCursor("anchor"), t.getCursor("head"), U)
},
killLine: function(t) {
return Go(t, function(e) {
if (e.empty()) {
var n = qt(t.doc, e.head.line).text.length;
return e.head.ch == n && e.head.line < t.lastLine() ? {
from: e.head,
to: te(e.head.line + 1, 0)
} : {
from: e.head,
to: te(e.head.line, n)
}
}
return {
from: e.from(),
to: e.to()
}
})
},
deleteLine: function(t) {
return Go(t, function(e) {
return {
from: te(e.from().line, 0),
to: se(t.doc, te(e.to().line + 1, 0))
}
})
},
delLineLeft: function(t) {
return Go(t, function(t) {
return {
from: te(t.from().line, 0),
to: t.from()
}
})
},
delWrappedLineLeft: function(t) {
return Go(t, function(e) {
var n = t.charCoords(e.head, "div").top + 5;
return {
from: t.coordsChar({
left: 0,
top: n
}, "div"),
to: e.from()
}
})
},
delWrappedLineRight: function(t) {
return Go(t, function(e) {
var n = t.charCoords(e.head, "div").top + 5,
r = t.coordsChar({
left: t.display.lineDiv.offsetWidth + 100,
top: n
}, "div");
return {
from: e.from(),
to: r
}
})
},
undo: function(t) {
return t.undo()
},
redo: function(t) {
return t.redo()
},
undoSelection: function(t) {
return t.undoSelection()
},
redoSelection: function(t) {
return t.redoSelection()
},
goDocStart: function(t) {
return t.extendSelection(te(t.firstLine(), 0))
},
goDocEnd: function(t) {
return t.extendSelection(te(t.lastLine()))
},
goLineStart: function(t) {
return t.extendSelectionsBy(function(e) {
return Zo(t, e.head.line)
}, {
origin: "+move",
bias: 1
})
},
goLineStartSmart: function(t) {
return t.extendSelectionsBy(function(e) {
return Qo(t, e.head)
}, {
origin: "+move",
bias: 1
})
},
goLineEnd: function(t) {
return t.extendSelectionsBy(function(e) {
return function(t, e) {
var n = qt(t.doc, e),
r = function(t) {
for (var e; e = Ne(t);) t = e.find(1, !0).line;
return t
}(n);
return r != n && (e = Xt(r)), Xo(!0, t, n, e, -1)
}(t, e.head.line)
}, {
origin: "+move",
bias: -1
})
},
goLineRight: function(t) {
return t.extendSelectionsBy(function(e) {
var n = t.cursorCoords(e.head, "div").top + 5;
return t.coordsChar({
left: t.display.lineDiv.offsetWidth + 100,
top: n
}, "div")
}, W)
},
goLineLeft: function(t) {
return t.extendSelectionsBy(function(e) {
var n = t.cursorCoords(e.head, "div").top + 5;
return t.coordsChar({
left: 0,
top: n
}, "div")
}, W)
},
goLineLeftSmart: function(t) {
return t.extendSelectionsBy(function(e) {
var n = t.cursorCoords(e.head, "div").top + 5,
r = t.coordsChar({
left: 0,
top: n
}, "div");
return r.ch < t.getLine(r.line).search(/\S/) ? Qo(t, e.head) : r
}, W)
},
goLineUp: function(t) {
return t.moveV(-1, "line")
},
goLineDown: function(t) {
return t.moveV(1, "line")
},
goPageUp: function(t) {
return t.moveV(-1, "page")
},
goPageDown: function(t) {
return t.moveV(1, "page")
},
goCharLeft: function(t) {
return t.moveH(-1, "char")
},
goCharRight: function(t) {
return t.moveH(1, "char")
},
goColumnLeft: function(t) {
return t.moveH(-1, "column")
},
goColumnRight: function(t) {
return t.moveH(1, "column")
},
goWordLeft: function(t) {
return t.moveH(-1, "word")
},
goGroupRight: function(t) {
return t.moveH(1, "group")
},
goGroupLeft: function(t) {
return t.moveH(-1, "group")
},
goWordRight: function(t) {
return t.moveH(1, "word")
},
delCharBefore: function(t) {
return t.deleteH(-1, "codepoint")
},
delCharAfter: function(t) {
return t.deleteH(1, "char")
},
delWordBefore: function(t) {
return t.deleteH(-1, "word")
},
delWordAfter: function(t) {
return t.deleteH(1, "word")
},
delGroupBefore: function(t) {
return t.deleteH(-1, "group")
},
delGroupAfter: function(t) {
return t.deleteH(1, "group")
},
indentAuto: function(t) {
return t.indentSelection("smart")
},
indentMore: function(t) {
return t.indentSelection("add")
},
indentLess: function(t) {
return t.indentSelection("subtract")
},
insertTab: function(t) {
return t.replaceSelection("\t")
},
insertSoftTab: function(t) {
for (var e = [], n = t.listSelections(), r = t.options.tabSize, i = 0; i < n.length; i++) {
var o = n[i].from(),
a = V(t.getLine(o.line), o.ch, r);
e.push(K(r - a % r))
}
t.replaceSelections(e)
},
defaultTab: function(t) {
t.somethingSelected() ? t.indentSelection("add") : t.execCommand("insertTab")
},
transposeChars: function(t) {
return Jr(t, function() {
for (var e = t.listSelections(), n = [], r = 0; r < e.length; r++)
if (e[r].empty()) {
var i = e[r].head,
o = qt(t.doc, i.line).text;
if (o)
if (i.ch == o.length && (i = new te(i.line, i.ch - 1)), i.ch > 0) i = new te(i.line, i.ch + 1), t.replaceRange(o.charAt(i.ch - 1) + o.charAt(i.ch - 2), te(i.line, i.ch - 2), i, "+transpose");
else if (i.line > t.doc.first) {
var a = qt(t.doc, i.line - 1).text;
a && (i = new te(i.line, 1), t.replaceRange(o.charAt(0) + t.doc.lineSeparator() + a.charAt(a.length - 1), te(i.line - 1, a.length - 1), i, "+transpose"))
}
n.push(new xi(i, i))
} t.setSelections(n)
})
},
newlineAndIndent: function(t) {
return Jr(t, function() {
for (var e = t.listSelections(), n = e.length - 1; n >= 0; n--) t.replaceRange(t.doc.lineSeparator(), e[n].anchor, e[n].head, "+input");
e = t.listSelections();
for (var r = 0; r < e.length; r++) t.indentLine(e[r].from().line, null, !0);
Er(t)
})
},
openLine: function(t) {
return t.replaceSelection("\n", "start")
},
toggleOverwrite: function(t) {
return t.toggleOverwrite()
}
};
function Zo(t, e) {
var n = qt(t.doc, e),
r = Ve(n);
return r != n && (e = Xt(r)), Xo(!0, t, r, e, 1)
}
function Qo(t, e) {
var n = Zo(t, e.line),
r = qt(t.doc, n.line),
i = ut(r, t.doc.direction);
if (!i || 0 == i[0].level) {
var o = Math.max(n.ch, r.text.search(/\S/)),
a = e.line == n.line && e.ch <= o && e.ch;
return te(n.line, a ? 0 : o, n.sticky)
}
return n
}
function ta(t, e, n) {
if ("string" == typeof e && !(e = Jo[e])) return !1;
t.display.input.ensurePolled();
var r = t.display.shift,
i = !1;
try {
t.isReadOnly() && (t.state.suppressEdits = !0), n && (t.display.shift = !1), i = e(t) != $
} finally {
t.display.shift = r, t.state.suppressEdits = !1
}
return i
}
var ea = new R;
function na(t, e, n, r) {
var i = t.state.keySeq;
if (i) {
if (Uo(e)) return "handled";
if (/\'$/.test(e) ? t.state.keySeq = null : ea.set(50, function() {
t.state.keySeq == i && (t.state.keySeq = null, t.display.input.reset())
}), ra(t, i + " " + e, n, r)) return !0
}
return ra(t, e, n, r)
}
function ra(t, e, n, r) {
var i = function(t, e, n) {
for (var r = 0; r < t.state.keyMaps.length; r++) {
var i = $o(e, t.state.keyMaps[r], n, t);
if (i) return i
}
return t.options.extraKeys && $o(e, t.options.extraKeys, n, t) || $o(e, t.options.keyMap, n, t)
}(t, e, r);
return "multi" == i && (t.state.keySeq = e), "handled" == i && ln(t, "keyHandled", t, e, n), "handled" != i && "multi" != i || (wt(n), yr(t)), !!i
}
function ia(t, e) {
var n = Wo(e, !0);
return !!n && (e.shiftKey && !t.state.keySeq ? na(t, "Shift-" + n, e, function(e) {
return ta(t, e, !0)
}) || na(t, n, e, function(e) {
if ("string" == typeof e ? /^go[A-Z]/.test(e) : e.motion) return ta(t, e)
}) : na(t, n, e, function(e) {
return ta(t, e)
}))
}
var oa = null;
function aa(t) {
var e = this;
if (!(t.target && t.target != e.display.input.getField() || (e.curOp.focus = A(), vt(e, t)))) {
a && s < 11 && 27 == t.keyCode && (t.returnValue = !1);
var r = t.keyCode;
e.display.shift = 16 == r || t.shiftKey;
var i = ia(e, t);
d && (oa = i ? r : null, i || 88 != r || _t || !(b ? t.metaKey : t.ctrlKey) || e.replaceSelection("", null, "cut")), n && !b && !i && 46 == r && t.shiftKey && !t.ctrlKey && document.execCommand && document.execCommand("cut"), 18 != r || /\bCodeMirror-crosshair\b/.test(e.display.lineDiv.className) || function(t) {
var e = t.display.lineDiv;
function n(t) {
18 != t.keyCode && t.altKey || (j(e, "CodeMirror-crosshair"), pt(document, "keyup", n), pt(document, "mouseover", n))
}
L(e, "CodeMirror-crosshair"), ht(document, "keyup", n), ht(document, "mouseover", n)
}(e)
}
}
function sa(t) {
16 == t.keyCode && (this.doc.sel.shift = !1), vt(this, t)
}
function la(t) {
var e = this;
if (!(t.target && t.target != e.display.input.getField() || On(e.display, t) || vt(e, t) || t.ctrlKey && !t.altKey || b && t.metaKey)) {
var n = t.keyCode,
r = t.charCode;
if (d && n == oa) return oa = null, void wt(t);
if (!d || t.which && !(t.which < 10) || !ia(e, t)) {
var i = String.fromCharCode(null == r ? n : r);
"\b" != i && (function(t, e, n) {
return na(t, "'" + i + "'", e, function(e) {
return ta(t, e, !0)
})
}(e, t) || e.display.input.onKeyPress(t))
}
}
}
var ca, ua, da = function(t, e, n) {
this.time = t, this.pos = e, this.button = n
};
function ha(t) {
var e = this,
n = e.display;
if (!(vt(e, t) || n.activeTouch && n.input.supportsTouch()))
if (n.input.ensurePolled(), n.shift = t.shiftKey, On(n, t)) l || (n.scroller.draggable = !1, setTimeout(function() {
return n.scroller.draggable = !0
}, 100));
else if (!ga(e, t)) {
var r = sr(e, t),
i = kt(t),
o = r ? function(t, e) {
var n = +new Date;
return ua && ua.compare(n, t, e) ? (ca = ua = null, "triple") : ca && ca.compare(n, t, e) ? (ua = new da(n, t, e), ca = null, "double") : (ca = new da(n, t, e), ua = null, "single")
}(r, i) : "single";
window.focus(), 1 == i && e.state.selectingText && e.state.selectingText(t), r && function(t, e, n, r, i) {
var o = "Click";
return "double" == r ? o = "Double" + o : "triple" == r && (o = "Triple" + o), na(t, Bo(o = (1 == e ? "Left" : 2 == e ? "Middle" : "Right") + o, i), i, function(e) {
if ("string" == typeof e && (e = Jo[e]), !e) return !1;
var r = !1;
try {
t.isReadOnly() && (t.state.suppressEdits = !0), r = e(t, n) != $
} finally {
t.state.suppressEdits = !1
}
return r
})
}(e, i, r, o, t) || (1 == i ? r ? function(t, e, n, r) {
a ? setTimeout(I(wr, t), 0) : t.curOp.focus = A();
var i, o = function(t, e, n) {
var r = t.getOption("configureMouse"),
i = r ? r(t, e, n) : {};
if (null == i.unit) {
var o = y ? n.shiftKey && n.metaKey : n.altKey;
i.unit = o ? "rectangle" : "single" == e ? "char" : "double" == e ? "word" : "line"
}
return (null == i.extend || t.doc.extend) && (i.extend = t.doc.extend || n.shiftKey), null == i.addNew && (i.addNew = b ? n.metaKey : n.ctrlKey), null == i.moveOnDrag && (i.moveOnDrag = !(b ? n.altKey : n.ctrlKey)), i
}(t, n, r),
c = t.doc.sel;
t.options.dragDrop && Pt && !t.isReadOnly() && "single" == n && (i = c.contains(e)) > -1 && (ee((i = c.ranges[i]).from(), e) < 0 || e.xRel > 0) && (ee(i.to(), e) > 0 || e.xRel < 0) ? function(t, e, n, r) {
var i = t.display,
o = !1,
c = Zr(t, function(e) {
l && (i.scroller.draggable = !1), t.state.draggingText = !1, t.state.delayingBlurEvent && (t.hasFocus() ? t.state.delayingBlurEvent = !1 : xr(t)), pt(i.wrapper.ownerDocument, "mouseup", c), pt(i.wrapper.ownerDocument, "mousemove", u), pt(i.scroller, "dragstart", d), pt(i.scroller, "drop", c), o || (wt(e), r.addNew || Wi(t.doc, n, null, null, r.extend), l && !h || a && 9 == s ? setTimeout(function() {
i.wrapper.ownerDocument.body.focus({
preventScroll: !0
}), i.input.focus()
}, 20) : i.input.focus())
}),
u = function(t) {
o = o || Math.abs(e.clientX - t.clientX) + Math.abs(e.clientY - t.clientY) >= 10
},
d = function() {
return o = !0
};
l && (i.scroller.draggable = !0), t.state.draggingText = c, c.copy = !r.moveOnDrag, ht(i.wrapper.ownerDocument, "mouseup", c), ht(i.wrapper.ownerDocument, "mousemove", u), ht(i.scroller, "dragstart", d), ht(i.scroller, "drop", c), t.state.delayingBlurEvent = !0, setTimeout(function() {
return i.input.focus()
}, 20), i.scroller.dragDrop && i.scroller.dragDrop()
}(t, r, e, o) : function(t, e, n, r) {
a && xr(t);
var i = t.display,
o = t.doc;
wt(e);
var s, l, c = o.sel,
u = c.ranges;
if (r.addNew && !r.extend ? (l = o.sel.contains(n), s = l > -1 ? u[l] : new xi(n, n)) : (s = o.sel.primary(), l = o.sel.primIndex), "rectangle" == r.unit) r.addNew || (s = new xi(n, n)), n = sr(t, e, !0, !0), l = -1;
else {
var d = fa(t, n, r.unit);
s = r.extend ? Bi(s, d.anchor, d.head, r.extend) : d
}
r.addNew ? -1 == l ? (l = u.length, Xi(o, Oi(t, u.concat([s]), l), {
scroll: !1,
origin: "*mouse"
})) : u.length > 1 && u[l].empty() && "char" == r.unit && !r.extend ? (Xi(o, Oi(t, u.slice(0, l).concat(u.slice(l + 1)), 0), {
scroll: !1,
origin: "*mouse"
}), c = o.sel) : Gi(o, l, s, B) : (l = 0, Xi(o, new wi([s], 0), B), c = o.sel);
var h = n;
function f(e) {
if (0 != ee(h, e))
if (h = e, "rectangle" == r.unit) {
for (var i = [], a = t.options.tabSize, u = V(qt(o, n.line).text, n.ch, a), d = V(qt(o, e.line).text, e.ch, a), f = Math.min(u, d), p = Math.max(u, d), g = Math.min(n.line, e.line), v = Math.min(t.lastLine(), Math.max(n.line, e.line)); g <= v; g++) {
var m = qt(o, g).text,
b = q(m, f, a);
f == p ? i.push(new xi(te(g, b), te(g, b))) : m.length > b && i.push(new xi(te(g, b), te(g, q(m, p, a))))
}
i.length || i.push(new xi(n, n)), Xi(o, Oi(t, c.ranges.slice(0, l).concat(i), l), {
origin: "*mouse",
scroll: !1
}), t.scrollIntoView(e)
} else {
var y, w = s,
x = fa(t, e, r.unit),
O = w.anchor;
ee(x.anchor, O) > 0 ? (y = x.head, O = oe(w.from(), x.anchor)) : (y = x.anchor, O = ie(w.to(), x.head));
var C = c.ranges.slice(0);
C[l] = function(t, e) {
var n = e.anchor,
r = e.head,
i = qt(t.doc, n.line);
if (0 == ee(n, r) && n.sticky == r.sticky) return e;
var o = ut(i);
if (!o) return e;
var a = lt(o, n.ch, n.sticky),
s = o[a];
if (s.from != n.ch && s.to != n.ch) return e;
var l, c = a + (s.from == n.ch == (1 != s.level) ? 0 : 1);
if (0 == c || c == o.length) return e;
if (r.line != n.line) l = (r.line - n.line) * ("ltr" == t.doc.direction ? 1 : -1) > 0;
else {
var u = lt(o, r.ch, r.sticky),
d = u - a || (r.ch - n.ch) * (1 == s.level ? -1 : 1);
l = u == c - 1 || u == c ? d < 0 : d > 0
}
var h = o[c + (l ? -1 : 0)],
f = l == (1 == h.level),
p = f ? h.from : h.to,
g = f ? "after" : "before";
return n.ch == p && n.sticky == g ? e : new xi(new te(n.line, p, g), r)
}(t, new xi(se(o, O), y)), Xi(o, Oi(t, C, l), B)
}
}
var p = i.wrapper.getBoundingClientRect(),
g = 0;
function v(e) {
t.state.selectingText = !1, g = 1 / 0, e && (wt(e), i.input.focus()), pt(i.wrapper.ownerDocument, "mousemove", m), pt(i.wrapper.ownerDocument, "mouseup", b), o.history.lastSelOrigin = null
}
var m = Zr(t, function(e) {
0 !== e.buttons && kt(e) ? function e(n) {
var a = ++g,
s = sr(t, n, !0, "rectangle" == r.unit);
if (s)
if (0 != ee(s, h)) {
t.curOp.focus = A(), f(s);
var l = jr(i, o);
(s.line >= l.to || s.line < l.from) && setTimeout(Zr(t, function() {
g == a && e(n)
}), 150)
} else {
var c = n.clientY < p.top ? -20 : n.clientY > p.bottom ? 20 : 0;
c && setTimeout(Zr(t, function() {
g == a && (i.scroller.scrollTop += c, e(n))
}), 50)
}
}(e) : v(e)
}),
b = Zr(t, v);
t.state.selectingText = b, ht(i.wrapper.ownerDocument, "mousemove", m), ht(i.wrapper.ownerDocument, "mouseup", b)
}(t, r, e, o)
}(e, r, o, t) : St(t) == n.scroller && wt(t) : 2 == i ? (r && Wi(e.doc, r), setTimeout(function() {
return n.input.focus()
}, 20)) : 3 == i && (C ? e.display.input.onContextMenu(t) : xr(e)))
}
}
function fa(t, e, n) {
if ("char" == n) return new xi(e, e);
if ("word" == n) return t.findWordAt(e);
if ("line" == n) return new xi(te(e.line, 0), se(t.doc, te(e.line + 1, 0)));
var r = n(t, e);
return new xi(r.from, r.to)
}
function pa(t, e, n, r) {
var i, o;
if (e.touches) i = e.touches[0].clientX, o = e.touches[0].clientY;
else try {
i = e.clientX, o = e.clientY
} catch (t) {
return !1
}
if (i >= Math.floor(t.display.gutters.getBoundingClientRect().right)) return !1;
r && wt(e);
var a = t.display,
s = a.lineDiv.getBoundingClientRect();
if (o > s.bottom || !bt(t, n)) return Ot(e);
o -= s.top - a.viewOffset;
for (var l = 0; l < t.display.gutterSpecs.length; ++l) {
var c = a.gutters.childNodes[l];
if (c && c.getBoundingClientRect().right >= i) return gt(t, n, t, Jt(t.doc, o), t.display.gutterSpecs[l].className, e), Ot(e)
}
}
function ga(t, e) {
return pa(t, e, "gutterClick", !0)
}
function va(t, e) {
On(t.display, e) || function(t, e) {
return !!bt(t, "gutterContextMenu") && pa(t, e, "gutterContextMenu", !1)
}(t, e) || vt(t, e, "contextmenu") || C || t.display.input.onContextMenu(e)
}
function ma(t) {
t.display.wrapper.className = t.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + t.options.theme.replace(/(^|\s)\s*/g, " cm-s-"), zn(t)
}
da.prototype.compare = function(t, e, n) {
return this.time + 400 > t && 0 == ee(e, this.pos) && n == this.button
};
var ba = {
toString: function() {
return "CodeMirror.Init"
}
},
ya = {},
wa = {};
function xa(t, e, n) {
if (!e != !(n && n != ba)) {
var r = t.display.dragFunctions,
i = e ? ht : pt;
i(t.display.scroller, "dragstart", r.start), i(t.display.scroller, "dragenter", r.enter), i(t.display.scroller, "dragover", r.over), i(t.display.scroller, "dragleave", r.leave), i(t.display.scroller, "drop", r.drop)
}
}
function Oa(t) {
t.options.lineWrapping ? (L(t.display.wrapper, "CodeMirror-wrap"), t.display.sizer.style.minWidth = "", t.display.sizerWidth = null) : (j(t.display.wrapper, "CodeMirror-wrap"), We(t)), ar(t), cr(t), zn(t), setTimeout(function() {
return Rr(t)
}, 100)
}
function Ca(t, e) {
var n = this;
if (!(this instanceof Ca)) return new Ca(t, e);
this.options = e = e ? F(e) : {}, F(ya, e, !1);
var r = e.value;
"string" == typeof r ? r = new Po(r, e.mode, null, e.lineSeparator, e.direction) : e.mode && (r.modeOption = e.mode), this.doc = r;
var i = new Ca.inputStyles[e.inputStyle](this),
o = this.display = new pi(t, r, i, e);
for (var c in o.wrapper.CodeMirror = this, ma(this), e.lineWrapping && (this.display.wrapper.className += " CodeMirror-wrap"), $r(this), this.state = {
keyMaps: [],
overlays: [],
modeGen: 0,
overwrite: !1,
delayingBlurEvent: !1,
focused: !1,
suppressEdits: !1,
pasteIncoming: -1,
cutIncoming: -1,
selectingText: !1,
draggingText: !1,
highlight: new R,
keySeq: null,
specialChars: null
}, e.autofocus && !m && o.input.focus(), a && s < 11 && setTimeout(function() {
return n.display.input.reset(!0)
}, 20),
function(t) {
var e = t.display;
ht(e.scroller, "mousedown", Zr(t, ha)), ht(e.scroller, "dblclick", a && s < 11 ? Zr(t, function(e) {
if (!vt(t, e)) {
var n = sr(t, e);
if (n && !ga(t, e) && !On(t.display, e)) {
wt(e);
var r = t.findWordAt(n);
Wi(t.doc, r.anchor, r.head)
}
}
}) : function(e) {
return vt(t, e) || wt(e)
}), ht(e.scroller, "contextmenu", function(e) {
return va(t, e)
}), ht(e.input.getField(), "contextmenu", function(n) {
e.scroller.contains(n.target) || va(t, n)
});
var n, r = {
end: 0
};
function i() {
e.activeTouch && (n = setTimeout(function() {
return e.activeTouch = null
}, 1e3), (r = e.activeTouch).end = +new Date)
}
function o(t, e) {
if (null == e.left) return !0;
var n = e.left - t.left,
r = e.top - t.top;
return n * n + r * r > 400
}
ht(e.scroller, "touchstart", function(i) {
if (!vt(t, i) && ! function(t) {
if (1 != t.touches.length) return !1;
var e = t.touches[0];
return e.radiusX <= 1 && e.radiusY <= 1
}(i) && !ga(t, i)) {
e.input.ensurePolled(), clearTimeout(n);
var o = +new Date;
e.activeTouch = {
start: o,
moved: !1,
prev: o - r.end <= 300 ? r : null
}, 1 == i.touches.length && (e.activeTouch.left = i.touches[0].pageX, e.activeTouch.top = i.touches[0].pageY)
}
}), ht(e.scroller, "touchmove", function() {
e.activeTouch && (e.activeTouch.moved = !0)
}), ht(e.scroller, "touchend", function(n) {
var r = e.activeTouch;
if (r && !On(e, n) && null != r.left && !r.moved && new Date - r.start < 300) {
var a, s = t.coordsChar(e.activeTouch, "page");
a = !r.prev || o(r, r.prev) ? new xi(s, s) : !r.prev.prev || o(r, r.prev.prev) ? t.findWordAt(s) : new xi(te(s.line, 0), se(t.doc, te(s.line + 1, 0))), t.setSelection(a.anchor, a.head), t.focus(), wt(n)
}
i()
}), ht(e.scroller, "touchcancel", i), ht(e.scroller, "scroll", function() {
e.scroller.clientHeight && (Lr(t, e.scroller.scrollTop), Nr(t, e.scroller.scrollLeft, !0), gt(t, "scroll", t))
}), ht(e.scroller, "mousewheel", function(e) {
return yi(t, e)
}), ht(e.scroller, "DOMMouseScroll", function(e) {
return yi(t, e)
}), ht(e.wrapper, "scroll", function() {
return e.wrapper.scrollTop = e.wrapper.scrollLeft = 0
}), e.dragFunctions = {
enter: function(e) {
vt(t, e) || Ct(e)
},
over: function(e) {
vt(t, e) || (function(t, e) {
var n = sr(t, e);
if (n) {
var r = document.createDocumentFragment();
vr(t, n, r), t.display.dragCursor || (t.display.dragCursor = E("div", null, "CodeMirror-cursors CodeMirror-dragcursors"), t.display.lineSpace.insertBefore(t.display.dragCursor, t.display.cursorDiv)), P(t.display.dragCursor, r)
}
}(t, e), Ct(e))
},
start: function(e) {
return function(t, e) {
if (a && (!t.state.draggingText || +new Date - Eo < 100)) Ct(e);
else if (!vt(t, e) && !On(t.display, e) && (e.dataTransfer.setData("Text", t.getSelection()), e.dataTransfer.effectAllowed = "copyMove", e.dataTransfer.setDragImage && !h)) {
var n = E("img", null, null, "position: fixed; left: 0; top: 0;");
n.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", d && (n.width = n.height = 1, t.display.wrapper.appendChild(n), n._top = n.offsetTop), e.dataTransfer.setDragImage(n, 0, 0), d && n.parentNode.removeChild(n)
}
}(t, e)
},
drop: Zr(t, Mo),
leave: function(e) {
vt(t, e) || Do(t)
}
};
var l = e.input.getField();
ht(l, "keyup", function(e) {
return sa.call(t, e)
}), ht(l, "keydown", Zr(t, aa)), ht(l, "keypress", Zr(t, la)), ht(l, "focus", function(e) {
return Or(t, e)
}), ht(l, "blur", function(e) {
return Cr(t, e)
})
}(this),
function() {
var t;
Lo || (ht(window, "resize", function() {
null == t && (t = setTimeout(function() {
t = null, Ao(_o)
}, 100))
}), ht(window, "blur", function() {
return Ao(Cr)
}), Lo = !0)
}(), Br(this), this.curOp.forceUpdate = !0, Li(this, r), e.autofocus && !m || this.hasFocus() ? setTimeout(function() {
n.hasFocus() && !n.state.focused && Or(n)
}, 20) : Cr(this), wa) wa.hasOwnProperty(c) && wa[c](this, e[c], ba);
ui(this), e.finishInit && e.finishInit(this);
for (var u = 0; u < Sa.length; ++u) Sa[u](this);
Wr(this), l && e.lineWrapping && "optimizelegibility" == getComputedStyle(o.lineDiv).textRendering && (o.lineDiv.style.textRendering = "auto")
}
Ca.defaults = ya, Ca.optionHandlers = wa;
var Sa = [];
function ka(t, e, n, r) {
var i, o = t.doc;
null == n && (n = "add"), "smart" == n && (o.mode.indent ? i = fe(t, e).state : n = "prev");
var a = t.options.tabSize,
s = qt(o, e),
l = V(s.text, null, a);
s.stateAfter && (s.stateAfter = null);
var c, u = s.text.match(/^\s*/)[0];
if (r || /\S/.test(s.text)) {
if ("smart" == n && ((c = o.mode.indent(i, s.text.slice(u.length), s.text)) == $ || c > 150)) {
if (!r) return;
n = "prev"
}
} else c = 0, n = "not";
"prev" == n ? c = e > o.first ? V(qt(o, e - 1).text, null, a) : 0 : "add" == n ? c = l + t.options.indentUnit : "subtract" == n ? c = l - t.options.indentUnit : "number" == typeof n && (c = l + n), c = Math.max(0, c);
var d = "",
h = 0;
if (t.options.indentWithTabs)
for (var f = Math.floor(c / a); f; --f) h += a, d += "\t";
if (h < c && (d += K(c - h)), d != u) return ho(o, d, te(e, 0), te(e, u.length), "+input"), s.stateAfter = null, !0;
for (var p = 0; p < o.sel.ranges.length; p++) {
var g = o.sel.ranges[p];
if (g.head.line == e && g.head.ch < u.length) {
var v = te(e, u.length);
Gi(o, p, new xi(v, v));
break
}
}
}
Ca.defineInitHook = function(t) {
return Sa.push(t)
};
var ja = null;
function Ta(t) {
ja = t
}
function Pa(t, e, n, r, i) {
var o = t.doc;
t.display.shift = !1, r || (r = o.sel);
var a = +new Date - 200,
s = "paste" == i || t.state.pasteIncoming > a,
l = At(e),
c = null;
if (s && r.ranges.length > 1)
if (ja && ja.text.join("\n") == e) {
if (r.ranges.length % ja.text.length == 0) {
c = [];
for (var u = 0; u < ja.text.length; u++) c.push(o.splitLines(ja.text[u]))
}
} else l.length == r.ranges.length && t.options.pasteLinesPerSelection && (c = X(l, function(t) {
return [t]
}));
for (var d = t.curOp.updateInput, h = r.ranges.length - 1; h >= 0; h--) {
var f = r.ranges[h],
p = f.from(),
g = f.to();
f.empty() && (n && n > 0 ? p = te(p.line, p.ch - n) : t.state.overwrite && !s ? g = te(g.line, Math.min(qt(o, g.line).text.length, g.ch + Y(l).length)) : s && ja && ja.lineWise && ja.text.join("\n") == l.join("\n") && (p = g = te(p.line, 0)));
var v = {
from: p,
to: g,
text: c ? c[h % c.length] : l,
origin: i || (s ? "paste" : t.state.cutIncoming > a ? "cut" : "+input")
};
ao(t.doc, v), ln(t, "inputRead", t, v)
}
e && !s && Ma(t, e), Er(t), t.curOp.updateInput < 2 && (t.curOp.updateInput = d), t.curOp.typing = !0, t.state.pasteIncoming = t.state.cutIncoming = -1
}
function Ea(t, e) {
var n = t.clipboardData && t.clipboardData.getData("Text");
if (n) return t.preventDefault(), e.isReadOnly() || e.options.disableInput || Jr(e, function() {
return Pa(e, n, 0, null, "paste")
}), !0
}
function Ma(t, e) {
if (t.options.electricChars && t.options.smartIndent)
for (var n = t.doc.sel, r = n.ranges.length - 1; r >= 0; r--) {
var i = n.ranges[r];
if (!(i.head.ch > 100 || r && n.ranges[r - 1].head.line == i.head.line)) {
var o = t.getModeAt(i.head),
a = !1;
if (o.electricChars) {
for (var s = 0; s < o.electricChars.length; s++)
if (e.indexOf(o.electricChars.charAt(s)) > -1) {
a = ka(t, i.head.line, "smart");
break
}
} else o.electricInput && o.electricInput.test(qt(t.doc, i.head.line).text.slice(0, i.head.ch)) && (a = ka(t, i.head.line, "smart"));
a && ln(t, "electricInput", t, i.head.line)
}
}
}
function Da(t) {
for (var e = [], n = [], r = 0; r < t.doc.sel.ranges.length; r++) {
var i = t.doc.sel.ranges[r].head.line,
o = {
anchor: te(i, 0),
head: te(i + 1, 0)
};
n.push(o), e.push(t.getRange(o.anchor, o.head))
}
return {
text: e,
ranges: n
}
}
function Aa(t, e, n, r) {
t.setAttribute("autocorrect", n ? "" : "off"), t.setAttribute("autocapitalize", r ? "" : "off"), t.setAttribute("spellcheck", !!e)
}
function La() {
var t = E("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),
e = E("div", [t], null, "overflow: hidden; position: relative; width: 3px; height: 0px;");
return l ? t.style.width = "1000px" : t.setAttribute("wrap", "off"), g && (t.style.border = "1px solid black"), Aa(t), e
}
function _a(t, e, n, r, i) {
var o = e,
a = n,
s = qt(t, e.line),
l = i && "rtl" == t.direction ? -n : n;
function c(o) {
var a, c;
if ("codepoint" == r) {
var u = s.text.charCodeAt(e.ch + (r > 0 ? 0 : -1));
if (isNaN(u)) a = null;
else {
var d = n > 0 ? u >= 55296 && u < 56320 : u >= 56320 && u < 57343;
a = new te(e.line, Math.max(0, Math.min(s.text.length, e.ch + n * (d ? 2 : 1))), -n)
}
} else a = i ? function(t, e, n, r) {
var i = ut(e, t.doc.direction);
if (!i) return Yo(e, n, r);
n.ch >= e.text.length ? (n.ch = e.text.length, n.sticky = "before") : n.ch <= 0 && (n.ch = 0, n.sticky = "after");
var o = lt(i, n.ch, n.sticky),
a = i[o];
if ("ltr" == t.doc.direction && a.level % 2 == 0 && (r > 0 ? a.to > n.ch : a.from < n.ch)) return Yo(e, n, r);
var s, l = function(t, n) {
return Ko(e, t instanceof te ? t.ch : t, n)
},
c = function(n) {
return t.options.lineWrapping ? (s = s || An(t, e), Zn(t, e, s, n)) : {
begin: 0,
end: e.text.length
}
},
u = c("before" == n.sticky ? l(n, -1) : n.ch);
if ("rtl" == t.doc.direction || 1 == a.level) {
var d = 1 == a.level == r < 0,
h = l(n, d ? 1 : -1);
if (null != h && (d ? h <= a.to && h <= u.end : h >= a.from && h >= u.begin)) {
var f = d ? "before" : "after";
return new te(n.line, h, f)
}
}
var p = function(t, e, r) {
for (var o = function(t, e) {
return e ? new te(n.line, l(t, 1), "before") : new te(n.line, t, "after")
}; t >= 0 && t < i.length; t += e) {
var a = i[t],
s = e > 0 == (1 != a.level),
c = s ? r.begin : l(r.end, -1);
if (a.from <= c && c < a.to) return o(c, s);
if (c = s ? a.from : l(a.to, -1), r.begin <= c && c < r.end) return o(c, s)
}
},
g = p(o + r, r, u);
if (g) return g;
var v = r > 0 ? u.end : l(u.begin, -1);
return null == v || r > 0 && v == e.text.length || !(g = p(r > 0 ? 0 : i.length - 1, r, c(v))) ? null : g
}(t.cm, s, e, n) : Yo(s, e, n);
if (null == a) {
if (o || (c = e.line + l) < t.first || c >= t.first + t.size || (e = new te(c, e.ch, e.sticky), !(s = qt(t, c)))) return !1;
e = Xo(i, t.cm, s, e.line, l)
} else e = a;
return !0
}
if ("char" == r || "codepoint" == r) c();
else if ("column" == r) c(!0);
else if ("word" == r || "group" == r)
for (var u = null, d = "group" == r, h = t.cm && t.cm.getHelper(e, "wordChars"), f = !0; !(n < 0) || c(!f); f = !1) {
var p = s.text.charAt(e.ch) || "\n",
g = et(p, h) ? "w" : d && "\n" == p ? "n" : !d || /\s/.test(p) ? null : "p";
if (!d || f || g || (g = "s"), u && u != g) {
n < 0 && (n = 1, c(), e.sticky = "after");
break
}
if (g && (u = g), n > 0 && !c(!f)) break
}
var v = no(t, e, o, a, !0);
return ne(o, v) && (v.hitSide = !0), v
}
function Na(t, e, n, r) {
var i, o, a = t.doc,
s = e.left;
if ("page" == r) {
var l = Math.min(t.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight),
c = Math.max(l - .5 * er(t.display), 3);
i = (n > 0 ? e.bottom : e.top) + n * c
} else "line" == r && (i = n > 0 ? e.bottom + 3 : e.top - 3);
for (;
(o = Xn(t, s, i)).outside;) {
if (n < 0 ? i <= 0 : i >= a.height) {
o.hitSide = !0;
break
}
i += 5 * n
}
return o
}
var Ia = function(t) {
this.cm = t, this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null, this.polling = new R, this.composing = null, this.gracePeriod = !1, this.readDOMTimeout = null
};
function Fa(t, e) {
var n = Dn(t, e.line);
if (!n || n.hidden) return null;
var r = qt(t.doc, e.line),
i = En(n, r, e.line),
o = ut(r, t.doc.direction),
a = "left";
o && (a = lt(o, e.ch) % 2 ? "right" : "left");
var s = In(i.map, e.ch, a);
return s.offset = "right" == s.collapse ? s.end : s.start, s
}
function Va(t, e) {
return e && (t.bad = !0), t
}
function Ra(t, e, n) {
var r;
if (e == t.display.lineDiv) {
if (!(r = t.display.lineDiv.childNodes[n])) return Va(t.clipPos(te(t.display.viewTo - 1)), !0);
e = null, n = 0
} else
for (r = e;; r = r.parentNode) {
if (!r || r == t.display.lineDiv) return null;
if (r.parentNode && r.parentNode == t.display.lineDiv) break
}
for (var i = 0; i < t.display.view.length; i++) {
var o = t.display.view[i];
if (o.node == r) return za(o, e, n)
}
}
function za(t, e, n) {
var r = t.text.firstChild,
i = !1;
if (!e || !D(r, e)) return Va(te(Xt(t.line), 0), !0);
if (e == r && (i = !0, e = r.childNodes[n], n = 0, !e)) {
var o = t.rest ? Y(t.rest) : t.line;
return Va(te(Xt(o), o.text.length), i)
}
var a = 3 == e.nodeType ? e : null,
s = e;
for (a || 1 != e.childNodes.length || 3 != e.firstChild.nodeType || (a = e.firstChild, n && (n = a.nodeValue.length)); s.parentNode != r;) s = s.parentNode;
var l = t.measure,
c = l.maps;
function u(e, n, r) {
for (var i = -1; i < (c ? c.length : 0); i++)
for (var o = i < 0 ? l.map : c[i], a = 0; a < o.length; a += 3) {
var s = o[a + 2];
if (s == e || s == n) {
var u = Xt(i < 0 ? t.line : t.rest[i]),
d = o[a] + r;
return (r < 0 || s != e) && (d = o[a + (r ? 1 : 0)]), te(u, d)
}
}
}
var d = u(a, s, n);
if (d) return Va(d, i);
for (var h = s.nextSibling, f = a ? a.nodeValue.length - n : 0; h; h = h.nextSibling) {
if (d = u(h, h.firstChild, 0)) return Va(te(d.line, d.ch - f), i);
f += h.textContent.length
}
for (var p = s.previousSibling, g = n; p; p = p.previousSibling) {
if (d = u(p, p.firstChild, -1)) return Va(te(d.line, d.ch + g), i);
g += p.textContent.length
}
}
Ia.prototype.init = function(t) {
var e = this,
n = this,
r = n.cm,
i = n.div = t.lineDiv;
function o(t) {
for (var e = t.target; e; e = e.parentNode) {
if (e == i) return !0;
if (/\bCodeMirror-(?:line)?widget\b/.test(e.className)) break
}
return !1
}
function a(t) {
if (o(t) && !vt(r, t)) {
if (r.somethingSelected()) Ta({
lineWise: !1,
text: r.getSelections()
}), "cut" == t.type && r.replaceSelection("", null, "cut");
else {
if (!r.options.lineWiseCopyCut) return;
var e = Da(r);
Ta({
lineWise: !0,
text: e.text
}), "cut" == t.type && r.operation(function() {
r.setSelections(e.ranges, 0, U), r.replaceSelection("", null, "cut")
})
}
if (t.clipboardData) {
t.clipboardData.clearData();
var a = ja.text.join("\n");
if (t.clipboardData.setData("Text", a), t.clipboardData.getData("Text") == a) return void t.preventDefault()
}
var s = La(),
l = s.firstChild;
r.display.lineSpace.insertBefore(s, r.display.lineSpace.firstChild), l.value = ja.text.join("\n");
var c = document.activeElement;
N(l), setTimeout(function() {
r.display.lineSpace.removeChild(s), c.focus(), c == i && n.showPrimarySelection()
}, 50)
}
}
Aa(i, r.options.spellcheck, r.options.autocorrect, r.options.autocapitalize), ht(i, "paste", function(t) {
!o(t) || vt(r, t) || Ea(t, r) || s <= 11 && setTimeout(Zr(r, function() {
return e.updateFromDOM()
}), 20)
}), ht(i, "compositionstart", function(t) {
e.composing = {
data: t.data,
done: !1
}
}), ht(i, "compositionupdate", function(t) {
e.composing || (e.composing = {
data: t.data,
done: !1
})
}), ht(i, "compositionend", function(t) {
e.composing && (t.data != e.composing.data && e.readFromDOMSoon(), e.composing.done = !0)
}), ht(i, "touchstart", function() {
return n.forceCompositionEnd()
}), ht(i, "input", function() {
e.composing || e.readFromDOMSoon()
}), ht(i, "copy", a), ht(i, "cut", a)
}, Ia.prototype.screenReaderLabelChanged = function(t) {
t ? this.div.setAttribute("aria-label", t) : this.div.removeAttribute("aria-label")
}, Ia.prototype.prepareSelection = function() {
var t = gr(this.cm, !1);
return t.focus = document.activeElement == this.div, t
}, Ia.prototype.showSelection = function(t, e) {
t && this.cm.display.view.length && ((t.focus || e) && this.showPrimarySelection(), this.showMultipleSelections(t))
}, Ia.prototype.getSelection = function() {
return this.cm.display.wrapper.ownerDocument.getSelection()
}, Ia.prototype.showPrimarySelection = function() {
var t = this.getSelection(),
e = this.cm,
r = e.doc.sel.primary(),
i = r.from(),
o = r.to();
if (e.display.viewTo == e.display.viewFrom || i.line >= e.display.viewTo || o.line < e.display.viewFrom) t.removeAllRanges();
else {
var a = Ra(e, t.anchorNode, t.anchorOffset),
s = Ra(e, t.focusNode, t.focusOffset);
if (!a || a.bad || !s || s.bad || 0 != ee(oe(a, s), i) || 0 != ee(ie(a, s), o)) {
var l = e.display.view,
c = i.line >= e.display.viewFrom && Fa(e, i) || {
node: l[0].measure.map[2],
offset: 0
},
u = o.line < e.display.viewTo && Fa(e, o);
if (!u) {
var d = l[l.length - 1].measure,
h = d.maps ? d.maps[d.maps.length - 1] : d.map;
u = {
node: h[h.length - 1],
offset: h[h.length - 2] - h[h.length - 3]
}
}
if (c && u) {
var f, p = t.rangeCount && t.getRangeAt(0);
try {
f = k(c.node, c.offset, u.offset, u.node)
} catch (t) {}
f && (!n && e.state.focused ? (t.collapse(c.node, c.offset), f.collapsed || (t.removeAllRanges(), t.addRange(f))) : (t.removeAllRanges(), t.addRange(f)), p && null == t.anchorNode ? t.addRange(p) : n && this.startGracePeriod()), this.rememberSelection()
} else t.removeAllRanges()
}
}
}, Ia.prototype.startGracePeriod = function() {
var t = this;
clearTimeout(this.gracePeriod), this.gracePeriod = setTimeout(function() {
t.gracePeriod = !1, t.selectionChanged() && t.cm.operation(function() {
return t.cm.curOp.selectionChanged = !0
})
}, 20)
}, Ia.prototype.showMultipleSelections = function(t) {
P(this.cm.display.cursorDiv, t.cursors), P(this.cm.display.selectionDiv, t.selection)
}, Ia.prototype.rememberSelection = function() {
var t = this.getSelection();
this.lastAnchorNode = t.anchorNode, this.lastAnchorOffset = t.anchorOffset, this.lastFocusNode = t.focusNode, this.lastFocusOffset = t.focusOffset
}, Ia.prototype.selectionInEditor = function() {
var t = this.getSelection();
if (!t.rangeCount) return !1;
var e = t.getRangeAt(0).commonAncestorContainer;
return D(this.div, e)
}, Ia.prototype.focus = function() {
"nocursor" != this.cm.options.readOnly && (this.selectionInEditor() && document.activeElement == this.div || this.showSelection(this.prepareSelection(), !0), this.div.focus())
}, Ia.prototype.blur = function() {
this.div.blur()
}, Ia.prototype.getField = function() {
return this.div
}, Ia.prototype.supportsTouch = function() {
return !0
}, Ia.prototype.receivedFocus = function() {
var t = this;
this.selectionInEditor() ? this.pollSelection() : Jr(this.cm, function() {
return t.cm.curOp.selectionChanged = !0
}), this.polling.set(this.cm.options.pollInterval, function e() {
t.cm.state.focused && (t.pollSelection(), t.polling.set(t.cm.options.pollInterval, e))
})
}, Ia.prototype.selectionChanged = function() {
var t = this.getSelection();
return t.anchorNode != this.lastAnchorNode || t.anchorOffset != this.lastAnchorOffset || t.focusNode != this.lastFocusNode || t.focusOffset != this.lastFocusOffset
}, Ia.prototype.pollSelection = function() {
if (null == this.readDOMTimeout && !this.gracePeriod && this.selectionChanged()) {
var t = this.getSelection(),
e = this.cm;
if (v && u && this.cm.display.gutterSpecs.length && function(t) {
for (var e = t; e; e = e.parentNode)
if (/CodeMirror-gutter-wrapper/.test(e.className)) return !0;
return !1
}(t.anchorNode)) return this.cm.triggerOnKeyDown({
type: "keydown",
keyCode: 8,
preventDefault: Math.abs
}), this.blur(), void this.focus();
if (!this.composing) {
this.rememberSelection();
var n = Ra(e, t.anchorNode, t.anchorOffset),
r = Ra(e, t.focusNode, t.focusOffset);
n && r && Jr(e, function() {
Xi(e.doc, Ci(n, r), U), (n.bad || r.bad) && (e.curOp.selectionChanged = !0)
})
}
}
}, Ia.prototype.pollContent = function() {
null != this.readDOMTimeout && (clearTimeout(this.readDOMTimeout), this.readDOMTimeout = null);
var t, e, n, r = this.cm,
i = r.display,
o = r.doc.sel.primary(),
a = o.from(),
s = o.to();
if (0 == a.ch && a.line > r.firstLine() && (a = te(a.line - 1, qt(r.doc, a.line - 1).length)), s.ch == qt(r.doc, s.line).text.length && s.line < r.lastLine() && (s = te(s.line + 1, 0)), a.line < i.viewFrom || s.line > i.viewTo - 1) return !1;
a.line == i.viewFrom || 0 == (t = lr(r, a.line)) ? (e = Xt(i.view[0].line), n = i.view[0].node) : (e = Xt(i.view[t].line), n = i.view[t - 1].node.nextSibling);
var l, c, u = lr(r, s.line);
if (u == i.view.length - 1 ? (l = i.viewTo - 1, c = i.lineDiv.lastChild) : (l = Xt(i.view[u + 1].line) - 1, c = i.view[u + 1].node.previousSibling), !n) return !1;
for (var d = r.doc.splitLines(function(t, e, n, r, i) {
var o = "",
a = !1,
s = t.doc.lineSeparator(),
l = !1;
function c() {
a && (o += s, l && (o += s), a = l = !1)
}
function u(t) {
t && (c(), o += t)
}
function d(e) {
if (1 == e.nodeType) {
var n = e.getAttribute("cm-text");
if (n) return void u(n);
var o, h = e.getAttribute("cm-marker");
if (h) {
var f = t.findMarks(te(r, 0), te(i + 1, 0), (v = +h, function(t) {
return t.id == v
}));
return void(f.length && (o = f[0].find(0)) && u(Gt(t.doc, o.from, o.to).join(s)))
}
if ("false" == e.getAttribute("contenteditable")) return;
var p = /^(pre|div|p|li|table|br)$/i.test(e.nodeName);
if (!/^br$/i.test(e.nodeName) && 0 == e.textContent.length) return;
p && c();
for (var g = 0; g < e.childNodes.length; g++) d(e.childNodes[g]);
/^(pre|p)$/i.test(e.nodeName) && (l = !0), p && (a = !0)
} else 3 == e.nodeType && u(e.nodeValue.replace(/\u200b/g, "").replace(/\u00a0/g, " "));
var v
}
for (; d(e), e != n;) e = e.nextSibling, l = !1;
return o
}(r, n, c, e, l)), h = Gt(r.doc, te(e, 0), te(l, qt(r.doc, l).text.length)); d.length > 1 && h.length > 1;)
if (Y(d) == Y(h)) d.pop(), h.pop(), l--;
else {
if (d[0] != h[0]) break;
d.shift(), h.shift(), e++
} for (var f = 0, p = 0, g = d[0], v = h[0], m = Math.min(g.length, v.length); f < m && g.charCodeAt(f) == v.charCodeAt(f);) ++f;
for (var b = Y(d), y = Y(h), w = Math.min(b.length - (1 == d.length ? f : 0), y.length - (1 == h.length ? f : 0)); p < w && b.charCodeAt(b.length - p - 1) == y.charCodeAt(y.length - p - 1);) ++p;
if (1 == d.length && 1 == h.length && e == a.line)
for (; f && f > a.ch && b.charCodeAt(b.length - p - 1) == y.charCodeAt(y.length - p - 1);) f--, p++;
d[d.length - 1] = b.slice(0, b.length - p).replace(/^\u200b+/, ""), d[0] = d[0].slice(f).replace(/\u200b+$/, "");
var x = te(e, f),
O = te(l, h.length ? Y(h).length - p : 0);
return d.length > 1 || d[0] || ee(x, O) ? (ho(r.doc, d, x, O, "+input"), !0) : void 0
}, Ia.prototype.ensurePolled = function() {
this.forceCompositionEnd()
}, Ia.prototype.reset = function() {
this.forceCompositionEnd()
}, Ia.prototype.forceCompositionEnd = function() {
this.composing && (clearTimeout(this.readDOMTimeout), this.composing = null, this.updateFromDOM(), this.div.blur(), this.div.focus())
}, Ia.prototype.readFromDOMSoon = function() {
var t = this;
null == this.readDOMTimeout && (this.readDOMTimeout = setTimeout(function() {
if (t.readDOMTimeout = null, t.composing) {
if (!t.composing.done) return;
t.composing = null
}
t.updateFromDOM()
}, 80))
}, Ia.prototype.updateFromDOM = function() {
var t = this;
!this.cm.isReadOnly() && this.pollContent() || Jr(this.cm, function() {
return cr(t.cm)
})
}, Ia.prototype.setUneditable = function(t) {
t.contentEditable = "false"
}, Ia.prototype.onKeyPress = function(t) {
0 == t.charCode || this.composing || (t.preventDefault(), this.cm.isReadOnly() || Zr(this.cm, Pa)(this.cm, String.fromCharCode(null == t.charCode ? t.keyCode : t.charCode), 0))
}, Ia.prototype.readOnlyChanged = function(t) {
this.div.contentEditable = String("nocursor" != t)
}, Ia.prototype.onContextMenu = function() {}, Ia.prototype.resetPosition = function() {}, Ia.prototype.needsContentAttribute = !0;
var Ha = function(t) {
this.cm = t, this.prevInput = "", this.pollingFast = !1, this.polling = new R, this.hasSelection = !1, this.composing = null
};
Ha.prototype.init = function(t) {
var e = this,
n = this,
r = this.cm;
this.createField(t);
var i = this.textarea;
function o(t) {
if (!vt(r, t)) {
if (r.somethingSelected()) Ta({
lineWise: !1,
text: r.getSelections()
});
else {
if (!r.options.lineWiseCopyCut) return;
var e = Da(r);
Ta({
lineWise: !0,
text: e.text
}), "cut" == t.type ? r.setSelections(e.ranges, null, U) : (n.prevInput = "", i.value = e.text.join("\n"), N(i))
}
"cut" == t.type && (r.state.cutIncoming = +new Date)
}
}
t.wrapper.insertBefore(this.wrapper, t.wrapper.firstChild), g && (i.style.width = "0px"), ht(i, "input", function() {
a && s >= 9 && e.hasSelection && (e.hasSelection = null), n.poll()
}), ht(i, "paste", function(t) {
vt(r, t) || Ea(t, r) || (r.state.pasteIncoming = +new Date, n.fastPoll())
}), ht(i, "cut", o), ht(i, "copy", o), ht(t.scroller, "paste", function(e) {
if (!On(t, e) && !vt(r, e)) {
if (!i.dispatchEvent) return r.state.pasteIncoming = +new Date, void n.focus();
var o = new Event("paste");
o.clipboardData = e.clipboardData, i.dispatchEvent(o)
}
}), ht(t.lineSpace, "selectstart", function(e) {
On(t, e) || wt(e)
}), ht(i, "compositionstart", function() {
var t = r.getCursor("from");
n.composing && n.composing.range.clear(), n.composing = {
start: t,
range: r.markText(t, r.getCursor("to"), {
className: "CodeMirror-composing"
})
}
}), ht(i, "compositionend", function() {
n.composing && (n.poll(), n.composing.range.clear(), n.composing = null)
})
}, Ha.prototype.createField = function(t) {
this.wrapper = La(), this.textarea = this.wrapper.firstChild
}, Ha.prototype.screenReaderLabelChanged = function(t) {
t ? this.textarea.setAttribute("aria-label", t) : this.textarea.removeAttribute("aria-label")
}, Ha.prototype.prepareSelection = function() {
var t = this.cm,
e = t.display,
n = t.doc,
r = gr(t);
if (t.options.moveInputWithCursor) {
var i = Gn(t, n.sel.primary().head, "div"),
o = e.wrapper.getBoundingClientRect(),
a = e.lineDiv.getBoundingClientRect();
r.teTop = Math.max(0, Math.min(e.wrapper.clientHeight - 10, i.top + a.top - o.top)), r.teLeft = Math.max(0, Math.min(e.wrapper.clientWidth - 10, i.left + a.left - o.left))
}
return r
}, Ha.prototype.showSelection = function(t) {
var e = this.cm.display;
P(e.cursorDiv, t.cursors), P(e.selectionDiv, t.selection), null != t.teTop && (this.wrapper.style.top = t.teTop + "px", this.wrapper.style.left = t.teLeft + "px")
}, Ha.prototype.reset = function(t) {
if (!this.contextMenuPending && !this.composing) {
var e = this.cm;
if (e.somethingSelected()) {
this.prevInput = "";
var n = e.getSelection();
this.textarea.value = n, e.state.focused && N(this.textarea), a && s >= 9 && (this.hasSelection = n)
} else t || (this.prevInput = this.textarea.value = "", a && s >= 9 && (this.hasSelection = null))
}
}, Ha.prototype.getField = function() {
return this.textarea
}, Ha.prototype.supportsTouch = function() {
return !1
}, Ha.prototype.focus = function() {
if ("nocursor" != this.cm.options.readOnly && (!m || A() != this.textarea)) try {
this.textarea.focus()
} catch (t) {}
}, Ha.prototype.blur = function() {
this.textarea.blur()
}, Ha.prototype.resetPosition = function() {
this.wrapper.style.top = this.wrapper.style.left = 0
}, Ha.prototype.receivedFocus = function() {
this.slowPoll()
}, Ha.prototype.slowPoll = function() {
var t = this;
this.pollingFast || this.polling.set(this.cm.options.pollInterval, function() {
t.poll(), t.cm.state.focused && t.slowPoll()
})
}, Ha.prototype.fastPoll = function() {
var t = !1,
e = this;
e.pollingFast = !0, e.polling.set(20, function n() {
e.poll() || t ? (e.pollingFast = !1, e.slowPoll()) : (t = !0, e.polling.set(60, n))
})
}, Ha.prototype.poll = function() {
var t = this,
e = this.cm,
n = this.textarea,
r = this.prevInput;
if (this.contextMenuPending || !e.state.focused || Lt(n) && !r && !this.composing || e.isReadOnly() || e.options.disableInput || e.state.keySeq) return !1;
var i = n.value;
if (i == r && !e.somethingSelected()) return !1;
if (a && s >= 9 && this.hasSelection === i || b && /[\uf700-\uf7ff]/.test(i)) return e.display.input.reset(), !1;
if (e.doc.sel == e.display.selForContextMenu) {
var o = i.charCodeAt(0);
if (8203 != o || r || (r = ""), 8666 == o) return this.reset(), this.cm.execCommand("undo")
}
for (var l = 0, c = Math.min(r.length, i.length); l < c && r.charCodeAt(l) == i.charCodeAt(l);) ++l;
return Jr(e, function() {
Pa(e, i.slice(l), r.length - l, null, t.composing ? "*compose" : null), i.length > 1e3 || i.indexOf("\n") > -1 ? n.value = t.prevInput = "" : t.prevInput = i, t.composing && (t.composing.range.clear(), t.composing.range = e.markText(t.composing.start, e.getCursor("to"), {
className: "CodeMirror-composing"
}))
}), !0
}, Ha.prototype.ensurePolled = function() {
this.pollingFast && this.poll() && (this.pollingFast = !1)
}, Ha.prototype.onKeyPress = function() {
a && s >= 9 && (this.hasSelection = null), this.fastPoll()
}, Ha.prototype.onContextMenu = function(t) {
var e = this,
n = e.cm,
r = n.display,
i = e.textarea;
e.contextMenuPending && e.contextMenuPending();
var o = sr(n, t),
c = r.scroller.scrollTop;
if (o && !d) {
n.options.resetSelectionOnContextMenu && -1 == n.doc.sel.contains(o) && Zr(n, Xi)(n.doc, Ci(o), U);
var u, h = i.style.cssText,
f = e.wrapper.style.cssText,
p = e.wrapper.offsetParent.getBoundingClientRect();
if (e.wrapper.style.cssText = "position: static", i.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (t.clientY - p.top - 5) + "px; left: " + (t.clientX - p.left - 5) + "px;\n z-index: 1000; background: " + (a ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);", l && (u = window.scrollY), r.input.focus(), l && window.scrollTo(null, u), r.input.reset(), n.somethingSelected() || (i.value = e.prevInput = " "), e.contextMenuPending = m, r.selForContextMenu = n.doc.sel, clearTimeout(r.detectingSelectAll), a && s >= 9 && v(), C) {
Ct(t);
var g = function() {
pt(window, "mouseup", g), setTimeout(m, 20)
};
ht(window, "mouseup", g)
} else setTimeout(m, 50)
}
function v() {
if (null != i.selectionStart) {
var t = n.somethingSelected(),
o = "" + (t ? i.value : "");
i.value = "⇚", i.value = o, e.prevInput = t ? "" : "", i.selectionStart = 1, i.selectionEnd = o.length, r.selForContextMenu = n.doc.sel
}
}
function m() {
if (e.contextMenuPending == m && (e.contextMenuPending = !1, e.wrapper.style.cssText = f, i.style.cssText = h, a && s < 9 && r.scrollbars.setScrollTop(r.scroller.scrollTop = c), null != i.selectionStart)) {
(!a || a && s < 9) && v();
var t = 0,
o = function() {
r.selForContextMenu == n.doc.sel && 0 == i.selectionStart && i.selectionEnd > 0 && "" == e.prevInput ? Zr(n, io)(n) : t++ < 10 ? r.detectingSelectAll = setTimeout(o, 500) : (r.selForContextMenu = null, r.input.reset())
};
r.detectingSelectAll = setTimeout(o, 200)
}
}
}, Ha.prototype.readOnlyChanged = function(t) {
t || this.reset(), this.textarea.disabled = "nocursor" == t, this.textarea.readOnly = !!t
}, Ha.prototype.setUneditable = function() {}, Ha.prototype.needsContentAttribute = !1,
function(t) {
var e = t.optionHandlers;
function n(n, r, i, o) {
t.defaults[n] = r, i && (e[n] = o ? function(t, e, n) {
n != ba && i(t, e, n)
} : i)
}
t.defineOption = n, t.Init = ba, n("value", "", function(t, e) {
return t.setValue(e)
}, !0), n("mode", null, function(t, e) {
t.doc.modeOption = e, Pi(t)
}, !0), n("indentUnit", 2, Pi, !0), n("indentWithTabs", !1), n("smartIndent", !0), n("tabSize", 4, function(t) {
Ei(t), zn(t), cr(t)
}, !0), n("lineSeparator", null, function(t, e) {
if (t.doc.lineSep = e, e) {
var n = [],
r = t.doc.first;
t.doc.iter(function(t) {
for (var i = 0;;) {
var o = t.text.indexOf(e, i);
if (-1 == o) break;
i = o + e.length, n.push(te(r, o))
}
r++
});
for (var i = n.length - 1; i >= 0; i--) ho(t.doc, e, n[i], te(n[i].line, n[i].ch + e.length))
}
}), n("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, function(t, e, n) {
t.state.specialChars = new RegExp(e.source + (e.test("\t") ? "" : "|\t"), "g"), n != ba && t.refresh()
}), n("specialCharPlaceholder", Ze, function(t) {
return t.refresh()
}, !0), n("electricChars", !0), n("inputStyle", m ? "contenteditable" : "textarea", function() {
throw new Error("inputStyle can not (yet) be changed in a running editor")
}, !0), n("spellcheck", !1, function(t, e) {
return t.getInputField().spellcheck = e
}, !0), n("autocorrect", !1, function(t, e) {
return t.getInputField().autocorrect = e
}, !0), n("autocapitalize", !1, function(t, e) {
return t.getInputField().autocapitalize = e
}, !0), n("rtlMoveVisually", !w), n("wholeLineUpdateBefore", !0), n("theme", "default", function(t) {
ma(t), fi(t)
}, !0), n("keyMap", "default", function(t, e, n) {
var r = qo(e),
i = n != ba && qo(n);
i && i.detach && i.detach(t, r), r.attach && r.attach(t, i || null)
}), n("extraKeys", null), n("configureMouse", null), n("lineWrapping", !1, Oa, !0), n("gutters", [], function(t, e) {
t.display.gutterSpecs = di(e, t.options.lineNumbers), fi(t)
}, !0), n("fixedGutter", !0, function(t, e) {
t.display.gutters.style.left = e ? ir(t.display) + "px" : "0", t.refresh()
}, !0), n("coverGutterNextToScrollbar", !1, function(t) {
return Rr(t)
}, !0), n("scrollbarStyle", "native", function(t) {
$r(t), Rr(t), t.display.scrollbars.setScrollTop(t.doc.scrollTop), t.display.scrollbars.setScrollLeft(t.doc.scrollLeft)
}, !0), n("lineNumbers", !1, function(t, e) {
t.display.gutterSpecs = di(t.options.gutters, e), fi(t)
}, !0), n("firstLineNumber", 1, fi, !0), n("lineNumberFormatter", function(t) {
return t
}, fi, !0), n("showCursorWhenSelecting", !1, pr, !0), n("resetSelectionOnContextMenu", !0), n("lineWiseCopyCut", !0), n("pasteLinesPerSelection", !0), n("selectionsMayTouch", !1), n("readOnly", !1, function(t, e) {
"nocursor" == e && (Cr(t), t.display.input.blur()), t.display.input.readOnlyChanged(e)
}), n("screenReaderLabel", null, function(t, e) {
e = "" === e ? null : e, t.display.input.screenReaderLabelChanged(e)
}), n("disableInput", !1, function(t, e) {
e || t.display.input.reset()
}, !0), n("dragDrop", !0, xa), n("allowDropFileTypes", null), n("cursorBlinkRate", 530), n("cursorScrollMargin", 0), n("cursorHeight", 1, pr, !0), n("singleCursorHeightPerLine", !0, pr, !0), n("workTime", 100), n("workDelay", 100), n("flattenSpans", !0, Ei, !0), n("addModeClass", !1, Ei, !0), n("pollInterval", 100), n("undoDepth", 200, function(t, e) {
return t.doc.history.undoDepth = e
}), n("historyEventDelay", 1250), n("viewportMargin", 10, function(t) {
return t.refresh()
}, !0), n("maxHighlightLength", 1e4, Ei, !0), n("moveInputWithCursor", !0, function(t, e) {
e || t.display.input.resetPosition()
}), n("tabindex", null, function(t, e) {
return t.display.input.getField().tabIndex = e || ""
}), n("autofocus", null), n("direction", "ltr", function(t, e) {
return t.doc.setDirection(e)
}, !0), n("phrases", null)
}(Ca),
function(t) {
var e = t.optionHandlers,
n = t.helpers = {};
t.prototype = {
constructor: t,
focus: function() {
window.focus(), this.display.input.focus()
},
setOption: function(t, n) {
var r = this.options,
i = r[t];
r[t] == n && "mode" != t || (r[t] = n, e.hasOwnProperty(t) && Zr(this, e[t])(this, n, i), gt(this, "optionChange", this, t))
},
getOption: function(t) {
return this.options[t]
},
getDoc: function() {
return this.doc
},
addKeyMap: function(t, e) {
this.state.keyMaps[e ? "push" : "unshift"](qo(t))
},
removeKeyMap: function(t) {
for (var e = this.state.keyMaps, n = 0; n < e.length; ++n)
if (e[n] == t || e[n].name == t) return e.splice(n, 1), !0
},
addOverlay: Qr(function(e, n) {
var r = e.token ? e : t.getMode(this.options, e);
if (r.startState) throw new Error("Overlays may not be stateful.");
! function(t, e, n) {
for (var r = 0, i = n(e); r < t.length && n(t[r]) <= i;) r++;
t.splice(r, 0, e)
}(this.state.overlays, {
mode: r,
modeSpec: e,
opaque: n && n.opaque,
priority: n && n.priority || 0
}, function(t) {
return t.priority
}), this.state.modeGen++, cr(this)
}),
removeOverlay: Qr(function(t) {
for (var e = this.state.overlays, n = 0; n < e.length; ++n) {
var r = e[n].modeSpec;
if (r == t || "string" == typeof t && r.name == t) return e.splice(n, 1), this.state.modeGen++, void cr(this)
}
}),
indentLine: Qr(function(t, e, n) {
"string" != typeof e && "number" != typeof e && (e = null == e ? this.options.smartIndent ? "smart" : "prev" : e ? "add" : "subtract"), Zt(this.doc, t) && ka(this, t, e, n)
}),
indentSelection: Qr(function(t) {
for (var e = this.doc.sel.ranges, n = -1, r = 0; r < e.length; r++) {
var i = e[r];
if (i.empty()) i.head.line > n && (ka(this, i.head.line, t, !0), n = i.head.line, r == this.doc.sel.primIndex && Er(this));
else {
var o = i.from(),
a = i.to(),
s = Math.max(n, o.line);
n = Math.min(this.lastLine(), a.line - (a.ch ? 0 : 1)) + 1;
for (var l = s; l < n; ++l) ka(this, l, t);
var c = this.doc.sel.ranges;
0 == o.ch && e.length == c.length && c[r].from().ch > 0 && Gi(this.doc, r, new xi(o, c[r].to()), U)
}
}
}),
getTokenAt: function(t, e) {
return be(this, t, e)
},
getLineTokens: function(t, e) {
return be(this, te(t), e, !0)
},
getTokenTypeAt: function(t) {
t = se(this.doc, t);
var e, n = he(this, qt(this.doc, t.line)),
r = 0,
i = (n.length - 1) / 2,
o = t.ch;
if (0 == o) e = n[2];
else
for (;;) {
var a = r + i >> 1;
if ((a ? n[2 * a - 1] : 0) >= o) i = a;
else {
if (!(n[2 * a + 1] < o)) {
e = n[2 * a + 2];
break
}
r = a + 1
}
}
var s = e ? e.indexOf("overlay ") : -1;
return s < 0 ? e : 0 == s ? null : e.slice(0, s - 1)
},
getModeAt: function(e) {
var n = this.doc.mode;
return n.innerMode ? t.innerMode(n, this.getTokenAt(e).state).mode : n
},
getHelper: function(t, e) {
return this.getHelpers(t, e)[0]
},
getHelpers: function(t, e) {
var r = [];
if (!n.hasOwnProperty(e)) return r;
var i = n[e],
o = this.getModeAt(t);
if ("string" == typeof o[e]) i[o[e]] && r.push(i[o[e]]);
else if (o[e])
for (var a = 0; a < o[e].length; a++) {
var s = i[o[e][a]];
s && r.push(s)
} else o.helperType && i[o.helperType] ? r.push(i[o.helperType]) : i[o.name] && r.push(i[o.name]);
for (var l = 0; l < i._global.length; l++) {
var c = i._global[l];
c.pred(o, this) && -1 == z(r, c.val) && r.push(c.val)
}
return r
},
getStateAfter: function(t, e) {
var n = this.doc;
return fe(this, (t = ae(n, null == t ? n.first + n.size - 1 : t)) + 1, e).state
},
cursorCoords: function(t, e) {
var n = this.doc.sel.primary();
return Gn(this, null == t ? n.head : "object" == typeof t ? se(this.doc, t) : t ? n.from() : n.to(), e || "page")
},
charCoords: function(t, e) {
return qn(this, se(this.doc, t), e || "page")
},
coordsChar: function(t, e) {
return Xn(this, (t = Wn(this, t, e || "page")).left, t.top)
},
lineAtHeight: function(t, e) {
return t = Wn(this, {
top: t,
left: 0
}, e || "page").top, Jt(this.doc, t + this.display.viewOffset)
},
heightAtLine: function(t, e, n) {
var r, i = !1;
if ("number" == typeof t) {
var o = this.doc.first + this.doc.size - 1;
t < this.doc.first ? t = this.doc.first : t > o && (t = o, i = !0), r = qt(this.doc, t)
} else r = t;
return Bn(this, r, {
top: 0,
left: 0
}, e || "page", n || i).top + (i ? this.doc.height - Ue(r) : 0)
},
defaultTextHeight: function() {
return er(this.display)
},
defaultCharWidth: function() {
return nr(this.display)
},
getViewport: function() {
return {
from: this.display.viewFrom,
to: this.display.viewTo
}
},
addWidget: function(t, e, n, r, i) {
var o, a, s = this.display,
l = (t = Gn(this, se(this.doc, t))).bottom,
c = t.left;
if (e.style.position = "absolute", e.setAttribute("cm-ignore-events", "true"), this.display.input.setUneditable(e), s.sizer.appendChild(e), "over" == r) l = t.top;
else if ("above" == r || "near" == r) {
var u = Math.max(s.wrapper.clientHeight, this.doc.height),
d = Math.max(s.sizer.clientWidth, s.lineSpace.clientWidth);
("above" == r || t.bottom + e.offsetHeight > u) && t.top > e.offsetHeight ? l = t.top - e.offsetHeight : t.bottom + e.offsetHeight <= u && (l = t.bottom), c + e.offsetWidth > d && (c = d - e.offsetWidth)
}
e.style.top = l + "px", e.style.left = e.style.right = "", "right" == i ? (c = s.sizer.clientWidth - e.offsetWidth, e.style.right = "0px") : ("left" == i ? c = 0 : "middle" == i && (c = (s.sizer.clientWidth - e.offsetWidth) / 2), e.style.left = c + "px"), n && (null != (a = Tr(o = this, {
left: c,
top: l,
right: c + e.offsetWidth,
bottom: l + e.offsetHeight
})).scrollTop && Lr(o, a.scrollTop), null != a.scrollLeft && Nr(o, a.scrollLeft))
},
triggerOnKeyDown: Qr(aa),
triggerOnKeyPress: Qr(la),
triggerOnKeyUp: sa,
triggerOnMouseDown: Qr(ha),
execCommand: function(t) {
if (Jo.hasOwnProperty(t)) return Jo[t].call(null, this)
},
triggerElectric: Qr(function(t) {
Ma(this, t)
}),
findPosH: function(t, e, n, r) {
var i = 1;
e < 0 && (i = -1, e = -e);
for (var o = se(this.doc, t), a = 0; a < e && !(o = _a(this.doc, o, i, n, r)).hitSide; ++a);
return o
},
moveH: Qr(function(t, e) {
var n = this;
this.extendSelectionsBy(function(r) {
return n.display.shift || n.doc.extend || r.empty() ? _a(n.doc, r.head, t, e, n.options.rtlMoveVisually) : t < 0 ? r.from() : r.to()
}, W)
}),
deleteH: Qr(function(t, e) {
var n = this.doc.sel,
r = this.doc;
n.somethingSelected() ? r.replaceSelection("", null, "+delete") : Go(this, function(n) {
var i = _a(r, n.head, t, e, !1);
return t < 0 ? {
from: i,
to: n.head
} : {
from: n.head,
to: i
}
})
}),
findPosV: function(t, e, n, r) {
var i = 1,
o = r;
e < 0 && (i = -1, e = -e);
for (var a = se(this.doc, t), s = 0; s < e; ++s) {
var l = Gn(this, a, "div");
if (null == o ? o = l.left : l.left = o, (a = Na(this, l, i, n)).hitSide) break
}
return a
},
moveV: Qr(function(t, e) {
var n = this,
r = this.doc,
i = [],
o = !this.display.shift && !r.extend && r.sel.somethingSelected();
if (r.extendSelectionsBy(function(a) {
if (o) return t < 0 ? a.from() : a.to();
var s = Gn(n, a.head, "div");
null != a.goalColumn && (s.left = a.goalColumn), i.push(s.left);
var l = Na(n, s, t, e);
return "page" == e && a == r.sel.primary() && Pr(n, qn(n, l, "div").top - s.top), l
}, W), i.length)
for (var a = 0; a < r.sel.ranges.length; a++) r.sel.ranges[a].goalColumn = i[a]
}),
findWordAt: function(t) {
var e = qt(this.doc, t.line).text,
n = t.ch,
r = t.ch;
if (e) {
var i = this.getHelper(t, "wordChars");
"before" != t.sticky && r != e.length || !n ? ++r : --n;
for (var o = e.charAt(n), a = et(o, i) ? function(t) {
return et(t, i)
} : /\s/.test(o) ? function(t) {
return /\s/.test(t)
} : function(t) {
return !/\s/.test(t) && !et(t)
}; n > 0 && a(e.charAt(n - 1));) --n;
for (; r < e.length && a(e.charAt(r));) ++r
}
return new xi(te(t.line, n), te(t.line, r))
},
toggleOverwrite: function(t) {
null != t && t == this.state.overwrite || ((this.state.overwrite = !this.state.overwrite) ? L(this.display.cursorDiv, "CodeMirror-overwrite") : j(this.display.cursorDiv, "CodeMirror-overwrite"), gt(this, "overwriteToggle", this, this.state.overwrite))
},
hasFocus: function() {
return this.display.input.getField() == A()
},
isReadOnly: function() {
return !(!this.options.readOnly && !this.doc.cantEdit)
},
scrollTo: Qr(function(t, e) {
Mr(this, t, e)
}),
getScrollInfo: function() {
var t = this.display.scroller;
return {
left: t.scrollLeft,
top: t.scrollTop,
height: t.scrollHeight - jn(this) - this.display.barHeight,
width: t.scrollWidth - jn(this) - this.display.barWidth,
clientHeight: Pn(this),
clientWidth: Tn(this)
}
},
scrollIntoView: Qr(function(t, e) {
null == t ? (t = {
from: this.doc.sel.primary().head,
to: null
}, null == e && (e = this.options.cursorScrollMargin)) : "number" == typeof t ? t = {
from: te(t, 0),
to: null
} : null == t.from && (t = {
from: t,
to: null
}), t.to || (t.to = t.from), t.margin = e || 0, null != t.from.line ? function(t, e) {
Dr(t), t.curOp.scrollToPos = e
}(this, t) : Ar(this, t.from, t.to, t.margin)
}),
setSize: Qr(function(t, e) {
var n = this,
r = function(t) {
return "number" == typeof t || /^\d+$/.test(String(t)) ? t + "px" : t
};
null != t && (this.display.wrapper.style.width = r(t)), null != e && (this.display.wrapper.style.height = r(e)), this.options.lineWrapping && Rn(this);
var i = this.display.viewFrom;
this.doc.iter(i, this.display.viewTo, function(t) {
if (t.widgets)
for (var e = 0; e < t.widgets.length; e++)
if (t.widgets[e].noHScroll) {
ur(n, i, "widget");
break
}++ i
}), this.curOp.forceUpdate = !0, gt(this, "refresh", this)
}),
operation: function(t) {
return Jr(this, t)
},
startOperation: function() {
return Br(this)
},
endOperation: function() {
return Wr(this)
},
refresh: Qr(function() {
var t = this.display.cachedTextHeight;
cr(this), this.curOp.forceUpdate = !0, zn(this), Mr(this, this.doc.scrollLeft, this.doc.scrollTop), si(this.display), (null == t || Math.abs(t - er(this.display)) > .5 || this.options.lineWrapping) && ar(this), gt(this, "refresh", this)
}),
swapDoc: Qr(function(t) {
var e = this.doc;
return e.cm = null, this.state.selectingText && this.state.selectingText(), Li(this, t), zn(this), this.display.input.reset(), Mr(this, t.scrollLeft, t.scrollTop), this.curOp.forceScroll = !0, ln(this, "swapDoc", this, e), e
}),
phrase: function(t) {
var e = this.options.phrases;
return e && Object.prototype.hasOwnProperty.call(e, t) ? e[t] : t
},
getInputField: function() {
return this.display.input.getField()
},
getWrapperElement: function() {
return this.display.wrapper
},
getScrollerElement: function() {
return this.display.scroller
},
getGutterElement: function() {
return this.display.gutters
}
}, yt(t), t.registerHelper = function(e, r, i) {
n.hasOwnProperty(e) || (n[e] = t[e] = {
_global: []
}), n[e][r] = i
}, t.registerGlobalHelper = function(e, r, i, o) {
t.registerHelper(e, r, o), n[e]._global.push({
pred: i,
val: o
})
}
}(Ca);
var $a = "iter insert remove copy getEditor constructor".split(" ");
for (var Ua in Po.prototype) Po.prototype.hasOwnProperty(Ua) && z($a, Ua) < 0 && (Ca.prototype[Ua] = function(t) {
return function() {
return t.apply(this.doc, arguments)
}
}(Po.prototype[Ua]));
return yt(Po), Ca.inputStyles = {
textarea: Ha,
contenteditable: Ia
}, Ca.defineMode = function(t) {
Ca.defaults.mode || "null" == t || (Ca.defaults.mode = t),
function(t, e) {
arguments.length > 2 && (e.dependencies = Array.prototype.slice.call(arguments, 2)), It[t] = e
}.apply(this, arguments)
}, Ca.defineMIME = function(t, e) {
Ft[t] = e
}, Ca.defineMode("null", function() {
return {
token: function(t) {
return t.skipToEnd()
}
}
}), Ca.defineMIME("text/plain", "null"), Ca.defineExtension = function(t, e) {
Ca.prototype[t] = e
}, Ca.defineDocExtension = function(t, e) {
Po.prototype[t] = e
}, Ca.fromTextArea = function(t, e) {
if ((e = e ? F(e) : {}).value = t.value, !e.tabindex && t.tabIndex && (e.tabindex = t.tabIndex), !e.placeholder && t.placeholder && (e.placeholder = t.placeholder), null == e.autofocus) {
var n = A();
e.autofocus = n == t || null != t.getAttribute("autofocus") && n == document.body
}
function r() {
t.value = s.getValue()
}
var i;
if (t.form && (ht(t.form, "submit", r), !e.leaveSubmitMethodAlone)) {
var o = t.form;
i = o.submit;
try {
var a = o.submit = function() {
r(), o.submit = i, o.submit(), o.submit = a
}
} catch (t) {}
}
e.finishInit = function(n) {
n.save = r, n.getTextArea = function() {
return t
}, n.toTextArea = function() {
n.toTextArea = isNaN, r(), t.parentNode.removeChild(n.getWrapperElement()), t.style.display = "", t.form && (pt(t.form, "submit", r), e.leaveSubmitMethodAlone || "function" != typeof t.form.submit || (t.form.submit = i))
}
}, t.style.display = "none";
var s = Ca(function(e) {
return t.parentNode.insertBefore(e, t.nextSibling)
}, e);
return s
},
function(t) {
t.off = pt, t.on = ht, t.wheelEventPixels = bi, t.Doc = Po, t.splitLines = At, t.countColumn = V, t.findColumn = q, t.isWordChar = tt, t.Pass = $, t.signal = gt, t.Line = qe, t.changeEnd = Si, t.scrollbarModel = Hr, t.Pos = te, t.cmpPos = ee, t.modes = It, t.mimeModes = Ft, t.resolveMode = Vt, t.getMode = Rt, t.modeExtensions = zt, t.extendMode = Ht, t.copyState = $t, t.startState = Bt, t.innerMode = Ut, t.commands = Jo, t.keyMap = Ro, t.keyName = Wo, t.isModifierKey = Uo, t.lookupKey = $o, t.normalizeKeyMap = Ho, t.StringStream = Wt, t.SharedTextMarker = So, t.TextMarker = Oo, t.LineWidget = yo, t.e_preventDefault = wt, t.e_stopPropagation = xt, t.e_stop = Ct, t.addClass = L, t.contains = D, t.rmClass = j, t.keyNames = No
}(Ca), Ca.version = "5.59.1", Ca
}()
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(8),
i = n.n(r),
o = n(2),
a = n.n(o),
s = n(1),
l = n.n(s),
c = n(0),
u = n(3),
d = n(9),
h = n(20);
function f(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function p(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? f(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : f(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var g = l.a.View.extend({
events: function() {
return this.model.get("events") || {
mousedown: "handleClick"
}
},
attributes: function() {
return this.model.get("attributes")
},
initialize: function() {
var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).config,
e = void 0 === t ? {} : t;
this.em = e.em, this.editor = e.editor
},
handleClick: function(t) {
t.preventDefault(), t.stopPropagation();
var e = this.editor,
n = this.em,
r = e.Canvas.getFrameEl().getBoundingClientRect(),
i = r.left,
o = r.top,
a = p(p({}, t), {}, {
clientX: t.clientX - i,
clientY: t.clientY - o
});
n.trigger("toolbar:run:before"), this.execCommand(a)
},
execCommand: function(t) {
var e = {
event: t
},
n = this.model.get("command"),
r = this.editor;
"function" == typeof n && n(r, null, e), "string" == typeof n && r.runCommand(n, e)
},
render: function() {
var t = this.editor,
e = this.$el,
n = this.model,
r = n.get("id"),
i = n.get("label"),
o = t.getConfig("stylePrefix");
return e.addClass("".concat(o, "toolbar-item")), r && e.addClass("".concat(o, "toolbar-item__").concat(r)), i && e.append(i), this
}
}),
v = h.a.extend({
itemView: g,
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.config = {
editor: t.editor || "",
em: t.em
}, this.listenTo(this.collection, "reset", this.render)
}
}),
m = l.a.Model.extend({
defaults: {
command: "",
attributes: {}
}
}),
b = l.a.Collection.extend({
model: m
});
function y(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function w(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? y(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : y(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var x, O = l.a.$;
e.default = {
init: function(t) {
Object(c.bindAll)(this, "onHover", "onOut", "onClick", "onFrameScroll", "onFrameUpdated", "onContainerChange")
},
enable: function() {
this.frameOff = this.canvasOff = this.adjScroll = null, this.startSelectComponent(), x = 1
},
startSelectComponent: function() {
this.toggleSelectComponent(1), this.em.getSelected() && this.onSelect()
},
stopSelectComponent: function() {
this.toggleSelectComponent()
},
toggleSelectComponent: function(t) {
var e = this,
n = this.em,
r = n.getConfig("listenToEl"),
i = n.getContainer().parentNode,
o = t ? "on" : "off",
a = {
on: u.v,
off: u.u
};
!r.length && i && r.push(i), a[o](window, "resize", this.onFrameUpdated), a[o](r, "scroll", this.onContainerChange), n[o]("component:toggled component:remove", this.onSelect, this), n[o]("change:componentHovered", this.onHovered, this), n[o]("component:resize component:styleUpdate component:input", this.updateGlobalPos, this), n[o]("component:update:toolbar", this._upToolbar, this), n[o]("change:canvasOffset", this.updateAttached, this), n[o]("frame:updated", this.onFrameUpdated, this), n[o]("canvas:updateTools", this.onFrameUpdated, this), n.get("Canvas").getFrames().forEach(function(t) {
var n, r, i = t.view;
i && (n = i.getWindow(), r = i.getBody(), a[o](r, "mouseover", e.onHover), a[o](r, "mouseleave", e.onOut), a[o](r, "click touchend", e.onClick), a[o](n, "scroll", e.onFrameScroll))
})
},
onHover: function(t) {
t.stopPropagation();
var e = t.target,
n = Object(u.j)(e),
r = n && n._getFrame(),
i = O(e),
o = i.data("model");
if (!o)
for (var a = i.parent(); !o && a.length && !Object(d.g)(a[0]);) o = a.data("model"), a = a.parent();
if (o && !o.get("hoverable")) {
for (var s = o && o.parent(); s && !s.get("hoverable");) s = s.parent();
o = s
}
this.currentDoc = e.ownerDocument, this.em.setHovered(o), r && this.em.set("currentFrame", r)
},
onFrameUpdated: function() {
this.updateLocalPos(), this.updateGlobalPos()
},
onHovered: function(t, e) {
var n = this,
r = {};
e ? e.views.forEach(function(t) {
var i = t.el,
o = n.getElementPos(i);
r = {
el: i,
pos: o,
component: e,
view: Object(u.j)(i)
}, n.updateToolsLocal(r), i.ownerDocument === n.currentDoc && (n.elHovered = r)
}) : (this.currentDoc = null, this.elHovered = 0, this.updateToolsLocal(), this.canvas.getFrames().forEach(function(t) {
var e = t.view,
r = e && e.getToolsEl();
r && n.toggleToolsEl(0, 0, {
el: r
})
}))
},
onSelect: Object(c.debounce)(function() {
var t = this.em,
e = t.getSelected(),
n = t.get("currentFrame") || {},
r = e && e.getView(n.model),
i = r && r.el,
o = {};
i && Object(d.h)(i) && (o = {
el: i,
pos: this.getElementPos(i),
component: e,
view: Object(u.j)(i)
}), this.elSelected = o, this.updateToolsGlobal(), this.updateToolsLocal(o), this.initResize(e)
}),
updateGlobalPos: function() {
var t = this.getElSelected();
t.el && (t.pos = this.getElementPos(t.el), this.updateToolsGlobal())
},
updateLocalPos: function() {
var t = this.getElHovered();
t.el && (t.pos = this.getElementPos(t.el), this.updateToolsLocal())
},
getElHovered: function() {
return this.elHovered || {}
},
getElSelected: function() {
return this.elSelected || {}
},
onOut: function() {
this.em.setHovered(0)
},
toggleToolsEl: function(t, e) {
var n = (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).el || this.canvas.getToolsEl(e);
return n && (n.style.opacity = t ? 1 : 0), n || {}
},
showElementOffset: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
x && this.editor.runCommand("show-offset", {
el: t,
elPos: e,
view: n.view,
force: 1,
top: 0,
left: 0
})
},
hideElementOffset: function(t) {
this.editor.stopCommand("show-offset", {
view: t
})
},
showFixedElementOffset: function(t, e) {
this.editor.runCommand("show-offset", {
el: t,
elPos: e,
state: "Fixed"
})
},
hideFixedElementOffset: function(t, e) {
this.editor && this.editor.stopCommand("show-offset", {
state: "Fixed"
})
},
hideHighlighter: function(t) {
this.canvas.getHighlighter(t).style.opacity = 0
},
onClick: function(t) {
t.stopPropagation(), t.preventDefault();
var e = this.em;
if (e.get("_cmpDrag")) return e.set("_cmpDrag");
var n = O(t.target),
r = n.data("model");
if (!r)
for (var i = n.parent(); !r && i.length && !Object(d.g)(i[0]);) r = i.data("model"), i = i.parent();
if (r)
if (r.get("selectable")) this.select(r, t);
else {
for (var o = r.parent(); o && !o.get("selectable");) o = o.parent();
this.select(o, t)
}
},
select: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
t && (this.editor.select(t, {
scroll: {},
event: e
}), this.initResize(t))
},
updateBadge: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = O(t).data("model");
if (r && r.get("badgable")) {
var i = this.getBadge(n);
if (!n.posOnly) {
var o = this.canvas.getConfig(),
a = r.getIcon(),
s = o.pStylePrefix || "",
l = "".concat(s, "badge"),
c = o.customBadgeLabel,
u = "".concat(a ? '<div class="'.concat(l, '__icon">').concat(a, "</div>") : "", '\n <div class="').concat(l, '__name">').concat(r.getName(), "</div>");
i.innerHTML = c ? c(r) : u
}
var d = i.style;
d.display = "block";
var h = i ? i.offsetHeight : 0,
f = 0 - h,
p = n.topOff - h < 0 ? -n.topOff : f,
g = n.leftOff < 0 ? -n.leftOff : 0;
d.top = p + "px", d.left = g + "px"
}
},
showHighlighter: function(t) {
this.canvas.getHighlighter(t).style.opacity = ""
},
initResize: function(t) {
var e, n = this.em,
r = this.canvas,
o = n ? n.get("Editor") : "",
a = (n ? n.get("Config") : "").stylePrefix || "",
s = "".concat(a, "resizing"),
l = !Object(c.isElement)(t) && Object(u.q)(t) ? t : n.getSelected(),
d = l && l.get("resizable"),
h = {},
f = function(t, e, n) {
var r = n.docs;
r && r.forEach(function(e) {
var n = e.body,
r = n.className || "";
n.className = ("add" == t ? "".concat(r, " ").concat(s) : r.replace(s, "")).trim()
})
};
if (o && d) {
var p = Object(c.isElement)(t) ? t : l.getEl();
h = {
onStart: function(t) {
var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
o = i.el,
a = i.config,
s = i.resizer,
c = a.keyHeight,
d = a.keyWidth,
h = a.currentUnit,
p = a.keepAutoHeight,
g = a.keepAutoWidth;
f("add", 0, i), e = n.get("StyleManager").getModelToStyle(l), r.toggleFramesEvents();
var v = getComputedStyle(o),
m = e.getStyle(),
b = m[d];
a.autoWidth = g && "auto" === b, isNaN(parseFloat(b)) && (b = v[d]);
var y = m[c];
a.autoHeight = p && "auto" === y, isNaN(parseFloat(y)) && (y = v[c]), s.startDim.w = parseFloat(b), s.startDim.h = parseFloat(y), x = 0, h && (a.unitHeight = Object(u.i)(y), a.unitWidth = Object(u.i)(b))
},
onMove: function() {
o.trigger("component:resize")
},
onEnd: function(t, e) {
f("remove", 0, e), o.trigger("component:resize"), r.toggleFramesEvents(1), x = 1
},
updateTarget: function(t, i) {
var o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (e) {
var a = o.store,
s = o.selectedHandler,
l = o.config,
c = l.keyHeight,
u = l.keyWidth,
d = l.autoHeight,
h = l.autoWidth,
f = l.unitWidth,
p = l.unitHeight,
g = ["tc", "bc"].indexOf(s) >= 0,
v = ["cl", "cr"].indexOf(s) >= 0,
m = {},
b = a ? "" : 1;
if (!g) {
var y = r.getBody().offsetWidth,
x = i.w < y ? i.w : y;
m[u] = h ? "auto" : "".concat(x).concat(f)
}
v || (m[c] = d ? "auto" : "".concat(i.h).concat(p)), e.addStyle(w(w({}, m), {}, {
en: b
}), {
avoidStore: !a
});
var O = "update:component:style",
C = "".concat(O, ":").concat(c, " ").concat(O, ":").concat(u);
n && n.trigger(C, null, null, {
noEmit: 1
})
}
}
}, "object" == i()(d) && (h = w(w({}, h), d)), this.resizer = o.runCommand("resize", {
el: p,
options: h,
force: 1
})
} else o.stopCommand("resize"), this.resizer = null
},
updateToolbar: function(t) {
var e = this.config.em,
n = t == e ? e.getSelected() : t,
r = this.canvas.getToolbarEl(),
i = r.style;
if (n) {
var o = n.get("toolbar");
if (e.get("Config").showToolbar && o && o.length) {
if (i.opacity = "", i.display = "", !this.toolbar) {
r.innerHTML = "", this.toolbar = new b(o);
var a = new v({
collection: this.toolbar,
editor: this.editor,
em: e
});
r.appendChild(a.render().el)
}
this.toolbar.reset(o), i.top = "-100px", i.left = 0
} else i.display = "none"
} else i.opacity = 0
},
updateToolbarPos: function(t) {
var e = this.canvas.getToolbarEl().style;
e.top = "".concat(t.top).concat("px"), e.left = "".concat(t.left).concat("px"), e.opacity = ""
},
getCanvasPosition: function() {
return this.canvas.getCanvasView().getPosition()
},
getBadge: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return this.canvas.getBadgeEl(t.view)
},
onFrameScroll: function() {
this.updateTools()
},
updateTools: function() {
this.updateToolsLocal(), this.updateGlobalPos()
},
isCompSelected: function(t) {
return t && "selected" === t.get("status")
},
updateToolsLocal: function(t) {
var e = t || this.getElHovered(),
n = e.el,
r = e.pos,
i = e.view,
o = e.component;
if (n) {
var a = o.get("hoverable"),
s = this.lastHovered !== n,
l = s ? {} : {
posOnly: 1
};
s && a && (this.lastHovered = n, this.showHighlighter(i), this.showElementOffset(n, r, {
view: i
})), this.isCompSelected(o) && (this.hideHighlighter(i), this.hideElementOffset(i));
var c = "px",
u = this.toggleToolsEl(1, i).style,
d = this.canvas.canvasRectOffset(n, r),
h = d.top,
f = d.left;
this.updateBadge(n, r, w(w({}, l), {}, {
view: i,
topOff: h,
leftOff: f
})), u.top = h + c, u.left = f + c, u.width = r.width + c, u.height = r.height + c
} else this.lastHovered = 0
},
_upToolbar: Object(c.debounce)(function() {
this.updateToolsGlobal({
force: 1
})
}),
updateToolsGlobal: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.getElSelected(),
n = e.el,
r = e.pos,
i = e.component;
if (!n) return this.toggleToolsEl(), void(this.lastSelected = 0);
var o = this.canvas;
(this.lastSelected !== n || t.force) && (this.lastSelected = n, this.updateToolbar(i));
var a = "px",
s = this.toggleToolsEl(1).style,
l = o.getTargetToElementFixed(n, o.getToolbarEl(), {
pos: r
}),
c = l.canvasOffsetTop,
u = l.canvasOffsetLeft;
s.top = c + a, s.left = u + a, s.width = r.width + a, s.height = r.height + a, this.updateToolbarPos({
top: l.top,
left: l.left
})
},
updateAttached: Object(c.debounce)(function() {
this.updateGlobalPos()
}),
onContainerChange: Object(c.debounce)(function() {
this.em.refreshCanvas()
}, 150),
getElementPos: function(t) {
return this.canvas.getCanvasView().getElementPos(t)
},
hideBadge: function() {
this.getBadge().style.display = "none"
},
cleanPrevious: function(t) {
t && t.set({
status: "",
state: ""
})
},
getContentWindow: function() {
return this.canvas.getWindow()
},
run: function(t) {
this.editor = t && t.get("Editor"), this.enable()
},
stop: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = this.em,
i = this.editor;
this.onHovered(), this.stopSelectComponent(), !n.preserveSelected && r.setSelected(null), this.toggleToolsEl(), i && i.stopCommand("resize")
}
}
}, function(t, e) {
t.exports = function(t, e) {
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
}
}, function(t, e) {
function n(t, e) {
for (var n = 0; n < e.length; n++) {
var r = e[n];
r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
}
}
t.exports = function(t, e, r) {
return e && n(t.prototype, e), r && n(t, r), t
}
}, function(t, e, n) {
"use strict";
n.d(e, "a", function() {
return f
});
var r = n(2),
i = n.n(r),
o = n(15),
a = n.n(o),
s = n(16),
l = n.n(s),
c = n(0),
u = n(3);
function d(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function h(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? d(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var f = function() {
function t() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return a()(this, t), this.opts = {
container: null,
onStart: null,
onDrag: null,
onEnd: null,
setPosition: null,
getPosition: null,
guidesStatic: null,
guidesTarget: null,
snapOffset: 5,
doc: 0,
scale: 1
}, Object(c.bindAll)(this, "drag", "stop", "keyHandle", "handleScroll"), this.setOptions(e), this.delta = {
x: 0,
y: 0
}, this
}
return l()(t, [{
key: "setOptions",
value: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.opts = h(h({}, this.opts), t)
}
}, {
key: "toggleDrag",
value: function(t) {
var e = this.getDocumentEl(),
n = this.getContainerEl(),
r = this.getWindowEl(),
i = t ? "on" : "off",
o = {
on: u.v,
off: u.u
};
o[i](n, "mousemove dragover", this.drag), o[i](e, "mouseup dragend touchend", this.stop), o[i](e, "keydown", this.keyHandle), o[i](r, "scroll", this.handleScroll)
}
}, {
key: "handleScroll",
value: function() {
var t = this.lastScroll,
e = this.delta,
n = this.getScrollInfo(),
r = {
x: n.x - t.x,
y: n.y - t.y
};
this.move(e.x + r.x, e.y + r.y), this.lastScrollDiff = r
}
}, {
key: "start",
value: function(t) {
var e = this.opts,
n = e.onStart;
this.toggleDrag(1), this.startPointer = this.getPointerPos(t), this.guidesStatic = Object(c.result)(e, "guidesStatic") || [], this.guidesTarget = Object(c.result)(e, "guidesTarget") || [], Object(c.isFunction)(n) && n(t, this), this.startPosition = this.getStartPosition(), this.lastScrollDiff = {
x: 0,
y: 0
}, this.globScrollDiff = {
x: 0,
y: 0
}, this.drag(t)
}
}, {
key: "drag",
value: function(t) {
var e = this,
n = this.opts,
r = this.lastScrollDiff,
i = this.globScrollDiff,
o = n.onDrag,
a = this.startPointer,
s = this.getPointerPos(t),
l = {
x: i.x + r.x,
y: i.y + r.y
};
this.globScrollDiff = l;
var u = {
x: s.x - a.x + l.x,
y: s.y - a.y + l.y
};
this.lastScrollDiff = {
x: 0,
y: 0
};
var d = this.lockedAxis;
"x" === (d = t.shiftKey ? !d && this.detectAxisLock(u.x, u.y) : null) ? u.x = a.x: "y" === d && (u.y = a.y);
var f = function(r) {
["x", "y"].forEach(function(t) {
return r[t] = r[t] * Object(c.result)(n, "scale")
}), e.delta = r, e.move(r.x, r.y), Object(c.isFunction)(o) && o(t, e)
},
p = h({}, u);
if (this.currentPointer = s, this.lockedAxis = d, this.lastScroll = this.getScrollInfo(), f(u), this.guidesTarget.length) {
var g = this.snapGuides(p),
v = g.newDelta,
m = g.trgX,
b = g.trgY;
(m || b) && f(v)
}
0 === t.which && this.stop(t)
}
}, {
key: "snapGuides",
value: function(t) {
var e = this,
n = t,
r = this.trgX,
i = this.trgY;
return this.guidesTarget.forEach(function(n) {
n.x && e.trgX || n.y && e.trgY || (n.active = 0, e.guidesStatic.forEach(function(o) {
if (!(n.y && o.x || n.x && o.y)) {
var a = n.y && o.y,
s = a ? "y" : "x",
l = n[s],
u = o[s],
d = t[s],
h = a ? i : r;
if (e.isPointIn(l, u) && Object(c.isUndefined)(h)) {
var f = d - (l - u);
e.setGuideLock(n, f)
}
}
}))
}), r = this.trgX, i = this.trgY, ["x", "y"].forEach(function(r) {
var i = r.toUpperCase(),
o = e["trg".concat(i)];
o && !e.isPointIn(t[r], o.lock) && (e.setGuideLock(o, null), o = null), o && !Object(c.isUndefined)(o.lock) && (n[r] = o.lock)
}), {
newDelta: n,
trgX: this.trgX,
trgY: this.trgY
}
}
}, {
key: "isPointIn",
value: function(t, e) {
var n = (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).offset || this.opts.snapOffset;
return t >= e && t <= e + n || t <= e && t >= e - n
}
}, {
key: "setGuideLock",
value: function(t, e) {
var n = Object(c.isUndefined)(t.x) ? "Y" : "X",
r = "trg".concat(n);
return null !== e ? (t.active = 1, t.lock = e, this[r] = t) : (delete t.active, delete t.lock, delete this[r]), t
}
}, {
key: "stop",
value: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.delta,
r = e.cancel,
i = r ? 0 : n.x,
o = r ? 0 : n.y;
this.toggleDrag(), this.lockedAxis = null, this.move(i, o, 1);
var a = this.opts.onEnd;
Object(c.isFunction)(a) && a(t, this, {
cancelled: r
})
}
}, {
key: "keyHandle",
value: function(t) {
Object(u.n)(t) && this.stop(t, {
cancel: 1
})
}
}, {
key: "move",
value: function(t, e, n) {
var r = this.el,
i = this.opts,
o = this.startPosition;
if (o) {
var a = i.setPosition,
s = o.x + t,
l = o.y + e;
this.position = {
x: s,
y: l,
end: n
}, Object(c.isFunction)(a) && a(this.position), r && (r.style.left = "".concat(s, "px"), r.style.top = "".concat(l, "px"))
}
}
}, {
key: "getContainerEl",
value: function() {
var t = this.opts.container;
return t ? [t] : this.getDocumentEl()
}
}, {
key: "getWindowEl",
value: function() {
return this.getContainerEl().map(function(t) {
var e = t.ownerDocument || t;
return e.defaultView || e.parentWindow
})
}
}, {
key: "getDocumentEl",
value: function(t) {
var e = this.opts.doc;
if (t = t || this.el, !this.docs) {
var n = [document];
t && n.push(t.ownerDocument), e && n.push(e), this.docs = n
}
return this.docs
}
}, {
key: "getPointerPos",
value: function(t) {
var e = this.opts.getPointerPosition,
n = Object(u.h)(t);
return e ? e(t) : {
x: n.clientX,
y: n.clientY
}
}
}, {
key: "getStartPosition",
value: function() {
var t = this.el,
e = this.opts.getPosition,
n = {
x: 0,
y: 0
};
return Object(c.isFunction)(e) ? n = e() : t && (n = {
x: parseFloat(t.style.left),
y: parseFloat(t.style.top)
}), n
}
}, {
key: "getScrollInfo",
value: function() {
var t = this.opts.doc,
e = t && t.body;
return {
y: e ? e.scrollTop : 0,
x: e ? e.scrollLeft : 0
}
}
}, {
key: "detectAxisLock",
value: function(t, e) {
var n = t,
r = e,
i = Math.abs(n),
o = Math.abs(r);
return r >= i || r <= -i ? "x" : n > o || n < -o ? "y" : void 0
}
}]), t
}()
}, function(t, e, n) {
"use strict";
var r = n(1),
i = n.n(r),
o = i.a.$;
e.a = i.a.View.extend({
events: {
change: "handleChange"
},
template: function() {
return '<span class="'.concat(this.holderClass(), '"></span>')
},
inputClass: function() {
return "".concat(this.ppfx, "field")
},
holderClass: function() {
return "".concat(this.ppfx, "input-holder")
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.ppfx || "";
this.opts = t, this.ppfx = e, this.em = t.target || {}, this.listenTo(this.model, "change:value", this.handleModelChange)
},
elementUpdated: function() {
this.model.trigger("el:change")
},
setValue: function(t) {
var e = this.model,
n = t || e.get("defaults"),
r = this.getInputEl();
r && (r.value = n)
},
handleModelChange: function(t, e, n) {
this.setValue(e, n)
},
handleChange: function(t) {
t.stopPropagation();
var e = this.getInputEl().value;
this.model.set({
value: e
}, {
fromInput: 1
}), this.elementUpdated()
},
getInputEl: function() {
if (!this.inputEl) {
var t = this.model,
e = this.opts.type || "text",
n = t.get("placeholder") || t.get("defaults") || t.get("default") || "";
this.inputEl = o('<input type="'.concat(e, '" placeholder="').concat(n, '">'))
}
return this.inputEl.get(0)
},
render: function() {
this.inputEl = null;
var t = this.$el;
return t.addClass(this.inputClass()), t.html(this.template()), t.find(".".concat(this.holderClass())).append(this.getInputEl()), this
}
})
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r),
o = n(9);
e.default = i.a.View.extend({
initialize: function(t) {
this.config = t.config || {}, this.pfx = this.config.stylePrefix || "", this.target = t.target || {}, this.propTarget = t.propTarget || {}, this.onChange = t.onChange, this.onInputRender = t.onInputRender || {}, this.customValue = t.customValue || {}, this.properties = [];
var e = this.collection;
this.listenTo(e, "add", this.addTo), this.listenTo(e, "reset", this.render)
},
addTo: function(t, e, n) {
this.add(t, null, n)
},
add: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = e || this.el,
i = new t.typeView({
model: t,
name: t.get("name"),
id: this.pfx + t.get("property"),
target: this.target,
propTarget: this.propTarget,
onChange: this.onChange,
onInputRender: this.onInputRender,
config: this.config
});
"composite" != t.get("type") && (i.customValue = this.customValue), i.render();
var a = i.el;
this.properties.push(i), i.updateVisibility(), Object(o.b)(r, a, n.at)
},
render: function() {
var t = this,
e = this.$el;
this.clearItems();
var n = document.createDocumentFragment();
return this.collection.each(function(e) {
return t.add(e, n)
}), e.empty(), e.append(n), e.attr("class", "".concat(this.pfx, "properties")), this
},
remove: function() {
i.a.View.prototype.remove.apply(this, arguments), this.clearItems()
},
clearItems: function() {
this.properties.forEach(function(t) {
return t.remove()
}), this.properties = []
}
})
}, function(t, e, n) {
"use strict";
var r = n(0),
i = n(1),
o = n.n(i);
e.a = o.a.View.extend({
itemView: "",
itemsView: "",
itemType: "type",
autoAdd: 0,
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = arguments.length > 1 ? arguments[1] : void 0;
this.config = e || t.config || {}, this.autoAdd && this.listenTo(this.collection, "add", this.addTo), this.items = [], this.init()
},
init: function() {},
addTo: function(t) {
this.add(t)
},
itemViewNotFound: function(t) {
var e = this.config,
n = this.ns,
r = e.em,
i = "".concat(n ? "[".concat(n, "]: ") : "", "'").concat(t, "' type not found");
r && r.logWarning(i)
},
add: function(t, e) {
var n, i = this.config,
o = this.reuseView,
a = this.items,
s = this.itemsView,
l = void 0 === s ? {} : s,
c = e || null,
u = this.itemView,
d = t.get(this.itemType);
l[d] ? u = l[d] : !d || l[d] || Object(r.includes)(["button", "checkbox", "color", "date", "datetime-local", "email", "file", "hidden", "image", "month", "number", "password", "radio", "range", "reset", "search", "submit", "tel", "text", "time", "url", "week"], d) || this.itemViewNotFound(d), n = t.view && o ? t.view : new u({
model: t,
config: i
}, i), a && a.push(n);
var h = n.render().el;
c ? c.appendChild(h) : this.$el.append(h)
},
render: function() {
var t = document.createDocumentFragment();
return this.clearItems(), this.$el.empty(), this.collection.length && this.collection.each(function(e) {
this.add(e, t)
}, this), this.$el.append(t), this.onRender(), this
},
onRender: function() {},
remove: function() {
this.clearItems(), o.a.View.prototype.remove.apply(this, arguments)
},
clearItems: function() {
this.items
}
})
}, function(t, e, n) {
"use strict";
var r, i = n(8),
o = n.n(i),
a = n(2),
s = n.n(a),
l = n(1),
c = n.n(l),
u = n(0);
function d(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function h(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? d(Object(n), !0).forEach(function(e) {
s()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var f = function t(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
return (e || []).forEach(function(e) {
n.push(e.getId()), t(e.components(), n)
}), n
};
e.a = c.a.Collection.extend({
initialize: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
this.opt = e, this.listenTo(this, "add", this.onAdd), this.listenTo(this, "remove", this.removeChildren), this.listenTo(this, "reset", this.resetChildren), this.config = e.config, this.em = e.em, this.domc = e.domc
},
resetChildren: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = this,
i = n.previousModels || [],
o = i.filter(function(e) {
return !t.get(e.cid)
}),
a = function t(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
return e.map(function(e) {
n.push(e.getId()), t(e.components(), n)
}), n
}(t);
n.keepIds = f(i).filter(function(t) {
return a.indexOf(t) >= 0
}), o.forEach(function(t) {
return e.removeChildren(t, r, n)
}), t.each(function(t) {
return e.onAdd(t)
})
},
removeChildren: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (t) {
var i = this.domc,
o = this.em,
a = i ? i.allById() : {},
s = r.temporary;
if (t.prevColl = this, !s) {
var l = t.getId(),
c = o.get("SelectorManager").getAll(),
u = o.get("CssComposer").getAll(),
d = (r.keepIds || []).indexOf(l) < 0;
delete a[l];
var h = d ? u.remove(u.filter(function(t) {
return t.getSelectors().getFullString() === "#".concat(l)
}), r) : [];
if (c.remove(h.map(function(t) {
return t.getSelectors().at(0)
})), !t.opt.temporary) {
var f = o.get("Commands"),
p = t.get("style-signature"),
g = {
target: t
};
p && f.run("core:component-style-clear", g), t.removed(), t.trigger("removed"), o.trigger("component:remove", t)
}
t.components().forEach(function(t) {
return n.removeChildren(t, e, r)
})
}
var v = t.components(),
m = o.get("UndoManager");
o.stopListening(v), o.stopListening(t), o.stopListening(t.get("classes")), m.remove(t), m.remove(v)
}
},
model: function(t, e) {
var n, r = e.collection.opt,
i = r.em,
o = i.get("DomComponents").componentTypes;
e.em = i, e.config = r.config, e.componentTypes = o, e.domc = r.domc;
for (var a = 0; a < o.length; a++)
if (o[a].id == t.type) {
n = o[a].model;
break
} return n || (n = o[o.length - 1].model, i && t.type && i.logWarning("Component type '".concat(t.type, "' not found"), {
attrs: t,
options: e
})), new n(t, e)
},
parseString: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
i = this.em,
o = this.opt.domc,
a = i.get("CssComposer"),
s = i.get("Parser").parseHtml(t);
return r || (r = n(5).default), r.checkId(s.html, s.css, o.componentsById, e), s.css && a && !e.temporary && a.addCollection(s.css, h(h({}, e), {}, {
extend: 1
})), s.html
},
add: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
n.keepIds = f(n.previousModels), Object(u.isString)(t) ? t = this.parseString(t, n) : Object(u.isArray)(t) && t.forEach(function(r, i) {
if (Object(u.isString)(r)) {
var o = e.parseString(r, n);
t[i] = Object(u.isArray)(o) && !o.length ? null : o
}
});
var r = Object(u.isArray)(t);
t = (r ? t : [t]).filter(function(t) {
return t
}).map(function(t) {
return e.processDef(t)
}), t = r ? Object(u.flatten)(t, 1) : t[0];
var i = c.a.Collection.prototype.add.apply(this, [t, n]);
return this.__firstAdd = i, i
},
processDef: function(t) {
if (t.cid && t.ccid) return t;
var e = this.em,
n = this.config,
r = (void 0 === n ? {} : n).processor,
i = t;
if (r) {
var a = r(i = h({}, i));
a && (Object(u.each)(i, function(t, e) {
return delete i[e]
}), Object(u.extend)(i, a))
}
if (i.$$typeof && "object" == o()(i.props)) {
(i = h({}, i)).props = h({}, i.props);
var s = e.get("DomComponents"),
l = e.get("Parser").parserHtml;
Object(u.each)(i, function(t, e) {
Object(u.includes)(["props", "type"], e) || delete i[e]
});
var c = i.props,
d = c.children;
delete c.children, delete i.props;
var f = l.splitPropsFromAttr(c);
i.attributes = f.attrs, d && (i.components = d), i.type ? s.getType(i.type) || (i.tagName = i.type, delete i.type) : i.type = "textnode", Object(u.extend)(i, f.props)
}
return i
},
onAdd: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = this.domc,
i = this.em,
o = t.getStyle(),
a = i && i.getConfig("avoidInlineStyle");
if (r && r.Component.ensureInList(t), !Object(u.isEmpty)(o) && !a && i && i.get && i.getConfig("forceClass") && !n.temporary) {
var s = t.cid;
i.get("CssComposer").setClassRule(s, o), t.setStyle({}), t.addClass(s)
}
this.__onAddEnd()
},
__onAddEnd: Object(u.debounce)(function() {
var t = this.domc,
e = t && t.allById() || {},
n = this.__firstAdd,
r = Object(u.isArray)(n) ? n : [n],
i = {
silent: !0
};
! function t(n) {
n.forEach(function(n) {
var r = n.get("__symbol"),
o = n.get("__symbolOf");
r && Object(u.isArray)(r) && Object(u.isString)(r[0]) && n.set("__symbol", r.map(function(t) {
return e[t]
}).filter(function(t) {
return t
}), i), Object(u.isString)(o) && n.set("__symbolOf", e[o], i), t(n.components())
})
}(r)
})
})
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r);
i.a.$, e.default = i.a.View.extend({
initialize: function(t) {
this.config = t || {}, this.editorModel = this.em = this.config.em || {}, this.pfx = this.config.stylePrefix, this.ppfx = this.config.pStylePrefix, this.hoverClass = this.pfx + "hover", this.badgeClass = this.pfx + "badge", this.plhClass = this.pfx + "placeholder", this.freezClass = this.ppfx + "freezed", this.canvas = this.em.get && this.em.get("Canvas"), this.em.get && this.setElement(this.getCanvas()), this.canvas && (this.$canvas = this.$el, this.canvasTool = this.getCanvasTools()), this.init(this.config)
},
onFrameScroll: function(t) {},
getCanvas: function() {
return this.canvas.getElement()
},
getCanvasBody: function() {
return this.canvas.getBody()
},
getCanvasWrapper: function() {
return this.canvas.getWrapperEl()
},
getCanvasTools: function() {
return this.canvas.getToolsEl()
},
offset: function(t) {
var e = t.getBoundingClientRect();
return {
top: e.top + t.ownerDocument.body.scrollTop,
left: e.left + t.ownerDocument.body.scrollLeft
}
},
init: function(t) {},
callRun: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.id;
if (t.trigger("run:".concat(n, ":before"), e), !e || !e.abort) {
var r = e.sender || t,
i = this.run(t, r, e);
return t.trigger("run:".concat(n), i, e), t.trigger("run", n, i, e), i
}
t.trigger("abort:".concat(n), e)
},
callStop: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.id,
r = e.sender || t;
t.trigger("stop:".concat(n, ":before"), e);
var i = this.stop(t, r, e);
return t.trigger("stop:".concat(n), i, e), t.trigger("stop", n, i, e), i
},
stopCommand: function() {
this.em.get("Commands").stop(this.id)
},
run: function(t, e) {},
stop: function(t, e) {}
})
}, function(t, e, n) {
"use strict";
var r = n(2),
i = n.n(r),
o = n(0),
a = n(3),
s = n(29);
function l(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function c(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? l(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : l(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var u = Object(s.a)().parseStyle;
e.a = {
parseStyle: u,
extendStyle: function(t) {
return c(c({}, this.getStyle()), t)
},
getStyle: function() {
return c({}, this.get("style") || {})
},
setStyle: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
Object(o.isString)(e) && (e = u(e));
var r = this.getStyle(),
i = c({}, e);
this.set("style", i, n);
var s = Object(a.x)(r, i);
return Object(o.keys)(s).forEach(function(e) {
var n = t.em;
t.trigger("change:style:".concat(e)), n && (n.trigger("styleable:change", t, e), n.trigger("styleable:change:".concat(e), t, e))
}), i
},
addStyle: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
"string" == typeof t ? t = {
prop: e
} : n = e || {}, t = this.extendStyle(t), this.setStyle(t, n)
},
removeStyle: function(t) {
var e = this.getStyle();
delete e[t], this.setStyle(e)
},
styleToString: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = [],
n = this.getStyle();
for (var r in n) {
var i = t.important,
a = Object(o.isArray)(i) ? i.indexOf(r) >= 0 : i,
s = "".concat(n[r]).concat(a ? " !important" : ""),
l = "__" == r.substr(0, 2);
s && !l && e.push("".concat(r, ":").concat(s, ";"))
}
return e.join("")
},
getSelectors: function() {
return this.get("selectors") || this.get("classes")
},
getSelectorsString: function() {
return this.selectorsToString ? this.selectorsToString() : this.getSelectors().getFullString()
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(1),
a = n.n(o),
s = n(30),
l = n(0),
c = n(3);
function u(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function d(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? u(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var h = a.a.Model.extend({
defaults: {
name: "",
property: "",
type: "",
defaults: "",
info: "",
value: "",
icon: "",
functionName: "",
status: "",
visible: !0,
fixedValues: ["initial", "inherit"],
full: 0,
important: 0,
toRequire: 0,
requires: null,
requiresParent: null
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.get("id") || "",
r = this.get("name") || "";
!this.get("property") && this.set("property", (r || n).replace(/ /g, "-"));
var i = this.get("property");
!this.get("id") && this.set("id", i), !r && this.set("name", Object(c.c)(i).replace(/-/g, " ")), h.callInit(this, t, e)
},
init: function() {},
clearValue: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return this.set({
value: void 0,
status: ""
}, t), this
},
setValue: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = this.parseValue(t),
i = !e;
!i && this.set({
value: void 0
}, {
avoidStore: i,
silent: !0
}), this.set(r, d({
avoidStore: i
}, n))
},
setValueFromInput: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
this.setValue(t, e, d(d({}, n), {}, {
fromInput: 1
}))
},
parseValue: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = {
value: t
},
r = "!important";
if (Object(l.isString)(t) && -1 !== t.indexOf(r) && (n.value = t.replace(r, "").trim(), n.important = 1), !this.get("functionName") && !e.complete) return n;
var i = [],
o = "".concat(n.value),
a = o.indexOf("(") + 1,
s = o.lastIndexOf(")"),
c = o.substring(0, a - 1);
if (c && (n.functionName = c), i.push(a), s >= 0 && i.push(s), n.value = String.prototype.substring.apply(o, i), e.numeric) {
var u = parseFloat(n.value);
n.unit = n.value.replace(u, ""), n.value = u
}
return n
},
splitValues: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ",",
n = [],
r = "",
i = 0;
return (t || "").split("").forEach(function(t) {
"(" == t ? (i++, r += "(") : ")" == t && i > 0 ? (i--, r += ")") : t === e && 0 == i ? (n.push(r), r = "") : r += t
}), "" !== r && n.push(r), n.map(function(t) {
return t.trim()
})
},
getDefaultValue: function() {
return this.get("defaults")
},
getFullValue: function(t) {
var e = this.get("functionName"),
n = this.getDefaultValue(),
r = Object(l.isUndefined)(t) ? this.get("value") : t,
i = !Object(l.isUndefined)(r) && "" !== r;
if (r && n && r === n) return n;
if (e && i) {
var o = "url" === e ? "'".concat(r.replace(/'/g, ""), "'") : r;
r = "".concat(e, "(").concat(o, ")")
}
return i && this.get("important") && (r = "".concat(r, " !important")), r || ""
}
}, {
callParentInit: function(t, e, n) {
var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};
t.prototype.initialize.apply(e, [n, d(d({}, r), {}, {
skipInit: 1
})])
},
callInit: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
!n.skipInit && t.init(e, n)
}
}),
f = h;
function p(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function g(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? p(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : p(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var v = f.extend({
defaults: g(g({}, f.prototype.defaults), {}, {
detached: 0,
properties: [],
separator: " "
}),
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
f.callParentInit(f, this, t, e);
var r = this.get("properties") || [],
i = n(24).default;
this.set("properties", new i(r)), this.listenTo(this, "change:value", this.updateValues), f.callInit(this, t, e)
},
clearValue: function() {
return this.get("properties").each(function(t) {
return t.clearValue()
}), f.prototype.clearValue.apply(this, arguments)
},
updateValues: function() {
var t = this.getFullValue().split(this.getSplitSeparator());
this.get("properties").each(function(e, n) {
var r = t.length;
t[n] || t[n % r + (1 != r && r % 2 ? 1 : 0)]
})
},
getSplitSeparator: function() {
return new RegExp("".concat(this.get("separator"), "(?![^\\(]*\\))"))
},
getDefaultValue: function(t) {
var e = this.get("defaults");
return e && !t ? e : (e = "", this.get("properties").each(function(t, n) {
return e += "".concat(t.getDefaultValue(), " ")
}), e.trim())
},
getFullValue: function() {
return this.get("detached") ? "" : this.get("properties").getFullValue()
},
getPropertyAt: function(t) {
return this.get("properties").at(t)
}
}),
m = a.a.Model.extend({
defaults: {
index: "",
value: "",
values: {},
active: !1,
preview: !1,
properties: []
},
initialize: function() {
var t = this.get("properties"),
e = this.get("value");
this.set("properties", t instanceof bt ? t : new bt(t));
var n = this.get("properties");
if (n.forEach(this.onPropAdd, this), this.listenTo(n, "add", this.onPropAdd), !e) {
var r = "",
i = this.get("values");
for (var o in i) r += " " + i[o];
this.set("value", r.trim())
}
},
onPropAdd: function(t) {
var e = this.collection;
t.parent = e && e.property
},
getPropertyAt: function(t) {
return this.get("properties").at(t)
},
getPropertyValue: function(t) {
var e = "";
return this.get("properties").each(function(n) {
n.get("property") == t && (e = n.getFullValue())
}), e
},
getFullValue: function() {
var t = [];
return this.get("properties").each(function(e) {
return t.push(e.getFullValue())
}), t.join(" ").trim()
}
});
function b(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function y(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? b(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : b(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var w = a.a.Collection.extend({
model: m,
initialize: function() {
this.idx = 1, this.on("add", this.onAdd), this.on("reset", this.onReset)
},
onAdd: function(t, e, n) {
n.noIncrement || t.set("index", this.idx++), n.active && this.active(this.indexOf(t))
},
onReset: function() {
this.idx = 1
},
getSeparator: function() {
var t = this.property;
return t ? t.get("layerSeparator") : ", "
},
getLayersFromValue: function(t) {
var e = this,
n = [];
return t.replace(/\(([\w\s,.]*)\)/g, function(e) {
var n = e.replace(/,\s*/g, ",");
t = t.replace(e, n)
}), (t ? t.split(this.getSeparator()) : []).forEach(function(t) {
n.push({
properties: e.properties.parseValue(t)
})
}), n
},
getLayersFromStyle: function(t) {
var e = [],
n = this.properties;
return n.each(function(n) {
var r = t[n.get("property")];
(r ? r.split(", ") : []).forEach(function(t, r) {
t = n.parseValue(t.trim()).value;
var i = e[r],
o = y(y({}, n.attributes), {
value: t
});
i ? i.properties.push(o) : e[r] = {
properties: [o]
}
})
}), e.forEach(function(t) {
var e = t.properties.map(function(t) {
return t.property
});
n.each(function(n) {
var r = n.get("property");
e.indexOf(r) < 0 && t.properties.push(y({}, n.attributes))
})
}), e
},
active: function(t) {
this.each(function(t) {
return t.set("active", 0)
});
var e = this.at(t);
e && e.set("active", 1)
},
getFullValue: function() {
var t = [];
return this.each(function(e) {
return t.push(e.getFullValue())
}), t.join(this.getSeparator())
},
getPropertyValues: function(t, e) {
var n = [];
return this.each(function(r) {
var i = r.getPropertyValue(t);
i ? n.push(i) : !Object(l.isUndefined)(e) && n.push(e)
}), n.join(", ")
}
});
function x(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function O(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? x(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : x(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var C = v.extend({
defaults: O(O({}, v.prototype.defaults), {}, {
layers: [],
layerSeparator: ", ",
prepend: 0,
preview: 0
}),
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
v.callParentInit(v, this, t, e);
var n = this.get("layers"),
r = new w(n);
r.property = this, r.properties = this.get("properties"), this.set("layers", r), v.callInit(this, t, e)
},
getLayers: function() {
return this.get("layers")
},
getCurrentLayer: function() {
return this.getLayers().filter(function(t) {
return t.get("active")
})[0]
},
getFullValue: function() {
return this.get("detached") ? "" : this.get("layers").getFullValue()
},
getValueFromStyle: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.getLayers().getLayersFromStyle(t);
return new w(e).getFullValue()
},
clearValue: function() {
return this.getLayers().reset(), v.prototype.clearValue.apply(this, arguments)
},
getValueFromTarget: function(t) {
var e = this.attributes,
n = e.detached,
r = e.property,
i = e.properties,
o = t.getStyle(),
a = {};
return i.forEach(function(t) {
var e = t.get("property"),
n = o[e];
n && (a[e] = n)
}), n ? Object(l.keys)(a).length ? a : "" : o[r]
},
getLayersFromTarget: function(t) {}
}),
S = n(25),
k = n.n(S);
function j(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function T(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? j(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : j(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var P = "data-clear-style",
E = a.a.View.extend({
template: function() {
var t = this.pfx,
e = this.ppfx;
return '\n <div class="'.concat(t, 'label" data-sm-label></div>\n <div class="').concat(e, 'fields" data-sm-fields></div>\n ')
},
templateLabel: function(t) {
var e = this.pfx,
n = this.em,
r = t.parent,
i = t.attributes,
o = i.icon,
a = void 0 === o ? "" : o,
s = i.info,
l = void 0 === s ? "" : s,
c = i.id,
u = i.name,
d = n && n.t("styleManager.properties.".concat(c)) || u;
return '\n <span class="'.concat(e, "icon ").concat(a, '" title="').concat(l, '">\n ').concat(d, "\n </span>\n ").concat(r ? "" : '<b class="'.concat(e, 'clear" ').concat(P, ">⨯</b>"), "\n ")
},
templateInput: function(t) {
return '\n <div class="'.concat(this.ppfx, 'field">\n <input placeholder="').concat(t.getDefaultValue(), '"/>\n </div>\n ')
},
events: i()({
change: "inputValueChanged"
}, "click [".concat(P, "]"), "clear"),
initialize: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
Object(l.bindAll)(this, "targetUpdated", "__change", "__updateStyle"), this.config = e.config || {};
var n = this.config.em;
this.em = n, this.pfx = this.config.stylePrefix || "", this.ppfx = this.config.pStylePrefix || "", this.target = e.target || {}, this.propTarget = e.propTarget || {}, this.onChange = e.onChange, this.onInputRender = e.onInputRender || {}, this.customValue = e.customValue || {};
var r = this.model;
this.property = r.get("property"), this.input = null;
var i = this.pfx;
if (this.inputHolderId = "#" + i + "input-holder", this.sector = r.collection && r.collection.sector, this.__destroyFn = this.destroy ? this.destroy.bind(this) : function() {}, r.view = this, r.get("value") || r.set("value", r.getDefaultValue()), n) {
this.listenTo(n, "update:component:style:".concat(this.property), this.targetUpdated);
var o = r.get("requires") || {};
Object.keys(o).forEach(function(e) {
t.listenTo(n, "component:styleUpdate:".concat(e), t.targetUpdated)
})
}
this.listenTo(this.propTarget, "update", this.targetUpdated), this.listenTo(r, "destroy remove", this.remove), this.listenTo(r, "change:value", this.modelValueChanged), this.listenTo(r, "targetUpdated", this.targetUpdated), this.listenTo(r, "change:visible", this.updateVisibility), this.listenTo(r, "change:status", this.updateStatus), this.listenTo(r, "change:name change:className change:full", this.render);
var a = this.init && this.init.bind(this);
a && a()
},
remove: function() {
var t = this;
a.a.View.prototype.remove.apply(this, arguments), ["em", "target", "input", "$input", "propTarget", "sector"].forEach(function(e) {
return t[e] = {}
}), this.__destroyFn(this._getClbOpts())
},
updateStatus: function() {
var t = this.model,
e = t.get("status"),
n = t.parent,
r = this.pfx,
i = this.ppfx,
o = this.config,
a = "".concat(i, "four-color"),
s = "".concat(i, "color-warn"),
l = this.$el.children(".".concat(r, "label")),
c = this.getClearEl(),
u = c ? c.style : {};
switch (l.removeClass("".concat(a, " ").concat(s)), u.display = "none", e) {
case "updated":
!n && l.addClass(a), o.clearProperties && (u.display = "inline");
break;
case "computed":
l.addClass(s)
}
},
clear: function(t) {
var e = this;
t && t.stopPropagation(), this.model.clearValue(), setTimeout(function() {
return e.targetUpdated()
})
},
getClearEl: function() {
return this.clearEl || (this.clearEl = this.el.querySelector("[".concat(P, "]"))), this.clearEl
},
getTarget: function() {
return this.getTargetModel()
},
getTargets: function() {
return this.propTarget.targets || [this.getTarget()]
},
getFirstTarget: function() {
return this.getTargets()[0]
},
getTargetModel: function() {
return this.propTarget && this.propTarget.model
},
getHelperModel: function() {
return this.propTarget && this.propTarget.helper
},
inputValueChanged: function(t) {
t && t.stopPropagation(), this.emit || (this.model.setValueFromInput(this.getInputValue()), this.elementUpdated())
},
elementUpdated: function() {
this.setStatus("updated")
},
setStatus: function(t) {
this.model.set("status", t);
var e = this.model.parent;
e && "updated" == t && e.set("status", t)
},
emitUpdateTarget: Object(l.debounce)(function() {
var t = this.config.em;
t && t.trigger("styleManager:update:target", this.getFirstTarget())
}),
_getTargetData: function() {
var t = this.model,
e = this.config,
n = this.getTargetValue({
ignoreDefault: 1
}),
r = t.getDefaultValue(),
i = this.getComputedValue(),
o = "",
a = "";
return n ? (o = n, e.highlightChanged && (a = "updated")) : i && e.showComputed && i != r ? (o = i, e.highlightComputed && (a = "computed")) : (o = r, a = ""), {
value: o,
status: a,
targetValue: n,
defaultValue: r,
computedValue: i
}
},
targetUpdated: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (!this.config.fromLayer && (this.emitUpdateTarget(), this.checkVisibility())) {
var r = this.config.em,
i = this.model,
o = i.get("property"),
a = this._getTargetData(),
s = a.status,
l = a.value,
c = T({
status: s,
value: l
}, k()(a, ["status", "value"]));
return this.setStatus(s), i.setValue(l, 0, T({
fromTarget: 1
}, n)), r && (r.trigger("styleManager:change", this, o, l, c), r.trigger("styleManager:change:".concat(o), this, l, c), this._emitUpdate(c)), c
}
},
_emitUpdate: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.em,
n = this.model;
if (e) {
var r = n.get("property"),
i = T(T({}, this._getEventData()), t),
o = i.id;
e.trigger("style:update", i), e.trigger("style:update:".concat(r), i), r !== o && e.trigger("style:update:".concat(o), i)
}
},
_getEventData: function() {
var t = this.model;
return {
propertyView: this,
targets: this.getTargets(),
value: t.getFullValue(),
property: t,
id: t.get("id"),
name: t.get("property")
}
},
checkVisibility: function() {
var t = 1;
return this.config.hideNotStylable && (this.isTargetStylable() && this.isComponentStylable() ? this.show() : (this.hide(), t = 0), this.sector && this.sector.trigger("updateVisibility")), t
},
getTargetValue: function() {
var t, e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
n = this.model,
r = this.getFirstTarget(),
i = this.customValue;
if (!r) return t;
if ((t = r.getStyle()[n.get("property")]) || e.ignoreDefault || (t = n.getDefaultValue()), "function" == typeof i && !e.ignoreCustomValue) {
var o = i(this, n.collection.indexOf(n), t);
o && (t = o)
}
return t
},
getComputedValue: function() {
var t = this.propTarget,
e = t.computed || {},
n = t.computedDefault || {},
r = this.config.avoidComputed || [],
i = this.model.get("property"),
o = r.indexOf(i) < 0,
a = e[i],
s = n[Object(c.b)(i)];
return e && o && s !== a && a || ""
},
getInputValue: function() {
var t = this.getInputEl();
return t ? t.value : ""
},
modelValueChanged: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
o = this.model,
a = o.getFullValue();
if (r.fromInput || this.setValue(a), !r.fromTarget) {
this.getTargets().forEach(function(t) {
return n.__updateTarget(t, r)
});
var s = this.config.em;
if (!s) return;
var l = o.get("property"),
c = i()({}, l, a);
s.getSelectedAll().forEach(function(t) {
!r.noEmit && s.trigger("component:update", t, c, r), s.trigger("component:styleUpdate", t, l, r), s.trigger("component:styleUpdate:".concat(l), t, a, r), t.trigger("change:style", t, c, r), t.trigger("change:style:".concat(l), t, a, r)
})
}
},
__updateTarget: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.model.getFullValue(),
r = this.onChange;
t && this.isComponentStylable() && (e.fromTarget || (r && !e.fromParent ? r(t, this, e) : this.updateTargetStyle(n, null, T(T({}, e), {}, {
target: t
}))), this._emitUpdate())
},
updateTargetStyle: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = e || this.model.get("property"),
i = n.target || this.getFirstTarget(),
o = i.getStyle();
t ? o[r] = t : delete o[r], n.avoidStore ? o.__ = 1 : delete o.__, i.setStyle(o, n);
var a = this.getHelperModel();
a && a.setStyle(o, n)
},
isTargetStylable: function(t) {
var e = t || this.getFirstTarget(),
n = this.model,
r = n.get("id"),
i = n.get("property"),
o = n.get("toRequire"),
a = e.get("unstylable"),
s = e.get("stylable-require"),
c = n.get("requires"),
u = n.get("requiresParent"),
d = this.sector ? this.sector.collection : null,
h = this.em ? this.em.getSelected() : null,
f = e.get("stylable");
if (Object(l.isArray)(f) && (f = f.indexOf(i) >= 0), Object(l.isArray)(a) && (f = a.indexOf(i) < 0), o && (f = !t || s && (s.indexOf(r) >= 0 || s.indexOf(i) >= 0)), d && c) {
var p = Object.keys(c);
d.each(function(t) {
t.get("properties").each(function(t) {
if (Object(l.includes)(p, t.id)) {
var e = c[t.id];
f = f && Object(l.includes)(e, t.get("value"))
}
})
})
}
if (u) {
var g = h && h.parent(),
v = g && g.getEl();
if (v) {
var m = window.getComputedStyle(v);
Object(l.each)(u, function(t, e) {
f = f && m[e] && Object(l.includes)(t, m[e])
})
} else f = !1
}
return f
},
isComponentStylable: function() {
var t = this.em,
e = t && t.getSelected();
return !e || this.isTargetStylable(e)
},
setRawValue: function(t) {
this.setValue(this.model.parseValue(t))
},
setValue: function(t) {
var e = this.model,
n = Object(l.isUndefined)(t) ? e.getDefaultValue() : t;
if (this.update) return this.__update(n);
var r = this.getInputEl();
r && (r.value = n)
},
getInputEl: function() {
return this.input || (this.input = this.el.querySelector("input")), this.input
},
updateVisibility: function() {
this.el.style.display = this.model.get("visible") ? "" : "none"
},
show: function() {
this.model.set("visible", 1)
},
hide: function() {
this.model.set("visible", 0)
},
cleanValue: function() {
this.setValue("")
},
clearCached: function() {
this.clearEl = null, this.input = null, this.$input = null
},
__update: function(t) {
var e = this.update && this.update.bind(this);
e && e(T(T({}, this._getClbOpts()), {}, {
value: t
}))
},
__change: function() {
for (var t = this.emit && this.emit.bind(this), e = arguments.length, n = new Array(e), r = 0; r < e; r++) n[r] = arguments[r];
t && t.apply(void 0, [this._getClbOpts()].concat(n))
},
__updateStyle: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = e.complete,
r = k()(e, ["complete"]),
i = !1 !== n;
Object(c.o)(t) ? this.getTargets().forEach(function(e) {
return e.addStyle(t, {
avoidStore: !i
})
}) : this.model.setValueFromInput(t, n, r), i && this.elementUpdated()
},
_getClbOpts: function() {
var t = this.model;
return {
el: this.el,
props: t.attributes,
setProps: function() {
return t.set.apply(t, arguments)
},
change: this.__change,
updateStyle: this.__updateStyle,
targets: this.getTargets()
}
},
render: function() {
this.clearCached();
var t = this.pfx,
e = this.model,
n = this.el,
r = this.$el,
i = e.get("property"),
o = e.get("full"),
a = e.get("className") || "",
s = "".concat(t, "property");
this.createdEl && this.__destroyFn(this._getClbOpts()), r.empty().append(this.template(e)), r.find("[data-sm-label]").append(this.templateLabel(e));
var l = this.create && this.create.bind(this);
this.createdEl = l && l(this._getClbOpts()), r.find("[data-sm-fields]").append(this.createdEl || this.templateInput(e)), n.className = "".concat(s, " ").concat(t).concat(e.get("type"), " ").concat(s, "__").concat(i, " ").concat(a).trim(), n.className += o ? " ".concat(s, "--full") : "", this.updateStatus();
var c = this.onRender && this.onRender.bind(this);
c && c(), this.setValue(e.get("value"), {
fromTarget: 1
})
}
});
function M(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function D(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? M(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : M(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var A = a.a.$,
L = E.extend({
templateInput: function() {
var t = this.pfx;
return '\n <div class="'.concat(t, "field ").concat(t, 'composite">\n <span id="').concat(t, 'input-holder"></span>\n </div>\n ')
},
inputValueChanged: function() {
if (!this.model.get("detached")) {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
E.prototype.inputValueChanged.apply(this, e)
}
},
clear: function(t) {
var e = this.properties;
e && e.forEach(function(t) {
return t.clear()
}), E.prototype.clear.apply(this, arguments)
},
remove: function() {
var t = this;
this.model.get("properties").reset(), E.prototype.remove.apply(this, arguments), ["properties", "props", "$props"].forEach(function(e) {
return t[e] = {}
})
},
onRender: function() {
var t = this.model,
e = t.get("properties") || [];
if (this.properties = [], e.length && (this.$input || (this.$input = A('<input type="hidden" value="0">'), this.input = this.$input.get(0)), this.props || (this.props = t.get("properties")), !this.$props)) {
this.props.each(function(e, n) {
e && "composite" == e.get("type") && (this.props.remove(e), console.warn("Nested composite types not yet allowed.")), e.parent = t
}, this);
var r = new(0, n(19).default)(this.getPropsConfig());
this.$props = r.render().$el, this.properties = r.properties, this.$el.find("#".concat(this.pfx, "input-holder")).append(this.$props)
}
},
getPropsConfig: function(t) {
var e = this,
n = this.model,
r = {
config: D(D({}, this.config), {}, {
highlightComputed: 0
}),
collection: this.props,
target: this.target,
propTarget: this.propTarget,
onChange: function(t, e, r) {
n.set("value", n.getFullValue(), r)
},
customValue: function(t, n) {
return e.valueOnIndex(n, t)
}
};
return n.get("detached") && delete r.onChange, r
},
valueOnIndex: function(t, e) {
var n = this.getTargetValue({
ignoreDefault: 1
});
return n ? n.split(this.model.getSplitSeparator())[t] : e && e.getTargetValue({
ignoreCustomValue: 1,
ignoreDefault: 1
})
},
clearCached: function() {
E.prototype.clearCached.apply(this, arguments), this.$input = null, this.props = null, this.$props = null
}
}),
_ = n(19);
function N(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function I(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? N(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : N(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var F = a.a.View.extend({
events: {
click: "active",
"click [data-close-layer]": "removeItem",
"mousedown [data-move-layer]": "initSorter",
"touchstart [data-move-layer]": "initSorter"
},
template: function(t) {
var e = this.pfx,
n = this.ppfx,
r = this.em,
i = "".concat(r && r.t("styleManager.layer"), " ").concat(t.get("index"));
return '\n <div id="'.concat(e, 'move" class="').concat(n, 'no-touch-actions" data-move-layer>\n <i class="fa fa-arrows-alt"></i>\n </div>\n <div id="').concat(e, 'label">').concat(i, '</div>\n <div id="').concat(e, 'preview-box">\n \t<div id="').concat(e, 'preview" data-preview></div>\n </div>\n <div id="').concat(e, 'close-layer" class="').concat(e, 'btn-close" data-close-layer>\n ⨯\n </div>\n <div id="').concat(e, 'inputs" data-properties></div>\n <div style="clear:both"></div>\n ')
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model;
this.stackModel = t.stackModel, this.config = t.config || {}, this.em = this.config.em, this.pfx = this.config.stylePrefix || "", this.ppfx = this.config.pStylePrefix || "", this.sorter = t.sorter || null, this.propsConfig = t.propsConfig || {}, this.customPreview = t.onPreview, this.listenTo(e, "destroy remove", this.remove), this.listenTo(e, "change:active", this.updateVisibility), this.listenTo(e.get("properties"), "change", this.updatePreview), e.view = this, e.set({
droppable: 0,
draggable: 1
}), this.$el.data("model", e)
},
initSorter: function(t) {
this.sorter && this.sorter.startSort(this.el)
},
removeItem: function(t) {
t && t.stopPropagation(), this.remove()
},
remove: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model,
n = this.props,
r = e.collection,
i = this.stackModel;
a.a.View.prototype.remove.apply(this, arguments), r && r.contains(e) && r.remove(e), i && i.set && (i.set({
stackIndex: null
}, {
silent: !0
}), !t.fromTarget && i.trigger("updateValue")), n && n.remove()
},
onPreview: function(t) {
var e = this.stackModel,
n = e && e.get("detached"),
r = t.split(" "),
i = [],
o = {};
return this.model.get("properties").each(function(t, e) {
var a = t.get("property"),
s = n ? t.getFullValue() : r[e] || "";
if (s && "integer" == t.get("type")) {
var l = parseInt(s, 10),
c = s.replace(l, "");
s = (l = (l = (l = isNaN(l) ? 0 : l) > 3 ? 3 : l) < -3 ? -3 : l) + c
}
i.push(s), o[a] = s
}), n ? o : i.join(" ")
},
updatePreview: function() {
var t = this.stackModel,
e = this.customPreview,
n = this.getPreviewEl(),
r = this.model.getFullValue(),
i = e ? e(r) : this.onPreview(r);
if (i && t && n) {
var o = n.style;
if (Object(l.isString)(i)) o[t.get("property")] = i;
else {
var a = [];
Object(l.each)(i, function(t, e) {
return a.push("".concat(e, ":").concat(t))
}), n.setAttribute("style", a.join(";"))
}
}
},
getPropertiesWrapper: function() {
return this.propsWrapEl || (this.propsWrapEl = this.el.querySelector("[data-properties]")), this.propsWrapEl
},
getPreviewEl: function() {
return this.previewEl || (this.previewEl = this.el.querySelector("[data-preview]")), this.previewEl
},
active: function() {
var t = this.model,
e = t.collection;
e.active(e.indexOf(t))
},
updateVisibility: function() {
var t = this.pfx,
e = this.getPropertiesWrapper(),
n = this.model.get("active");
e.style.display = n ? "" : "none", this.$el[n ? "addClass" : "removeClass"]("".concat(t, "active"))
},
render: function() {
var t = this.propsConfig,
e = this.model,
n = this.el,
r = this.pfx,
i = e.get("preview"),
o = new _.default({
collection: e.get("properties"),
config: I(I({}, this.config), {}, {
fromLayer: 1
}),
target: t.target,
customValue: t.customValue,
propTarget: t.propTarget,
onChange: t.onChange
}),
a = o.render().el;
return n.innerHTML = this.template(e), n.className = "".concat(r, "layer").concat(i ? "" : " ".concat(r, "no-preview")), this.props = o, this.getPropertiesWrapper().appendChild(a), this.updateVisibility(), this.updatePreview(), this
}
}),
V = a.a.View.extend({
initialize: function(t) {
this.config = t.config || {}, this.stackModel = t.stackModel, this.preview = t.preview, this.pfx = this.config.stylePrefix || "", this.ppfx = this.config.pStylePrefix || "", this.propsConfig = t.propsConfig;
var e = this.pfx,
n = this.ppfx,
r = this.collection;
this.className = "".concat(e, "layers ").concat(n, "field"), this.listenTo(r, "add", this.addTo), this.listenTo(r, "deselectAll", this.deselectAll), this.listenTo(r, "reset", this.reset), this.items = [];
var i = this.config.em || "",
o = i ? i.get("Utils") : "";
this.sorter = o ? new o.Sorter({
container: this.el,
ignoreViewChildren: 1,
containerSel: ".".concat(e, "layers"),
itemSel: ".".concat(e, "layer"),
pfx: this.config.pStylePrefix
}) : "", r.view = this, this.$el.data("model", r), this.$el.data("collection", r)
},
addTo: function(t) {
var e = this.collection.indexOf(t);
this.addToCollection(t, null, e)
},
addToCollection: function(t, e, n) {
var r = e || null,
i = this.stackModel,
o = this.config,
a = this.sorter,
s = this.propsConfig;
void 0 !== this.preview && t.set("preview", this.preview);
var l = new F({
model: t,
config: o,
sorter: a,
stackModel: i,
propsConfig: s
}),
c = l.render().el;
if (this.items.push(l), r) r.appendChild(c);
else if (void 0 !== n) {
var u = "before";
this.$el.children().length == n && (n--, u = "after"), n < 0 ? this.$el.append(c) : this.$el.children().eq(n)[u](c)
} else this.$el.append(c);
return c
},
deselectAll: function() {
this.$el.find("." + this.pfx + "layer").removeClass(this.pfx + "active")
},
reset: function(t, e) {
this.clearItems(e), this.render()
},
render: function() {
var t = document.createDocumentFragment();
return this.$el.empty(), this.collection.each(function(e) {
this.addToCollection(e, t)
}, this), this.$el.append(t), this.$el.attr("class", this.className), this.sorter && (this.sorter.plh = null), this
},
remove: function() {
this.clearItems(), a.a.View.prototype.remove.apply(this, arguments)
},
clearItems: function(t) {
this.items.forEach(function(e) {
return e.remove(t)
}), this.items = []
}
});
function R(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
var z = new(n(31).a),
H = L.extend({
templateInput: function() {
var t = this.pfx;
return this.ppfx, '\n <div class="'.concat(t, "field ").concat(t, 'stack">\n <button type="button" id="').concat(t, 'add" data-add-layer>+</button>\n <div data-layers-wrapper></div>\n </div>\n ')
},
init: function() {
var t = this.model;
this.pfx, t.set("stackIndex", null), this.events["click [data-add-layer]"] = "addLayer", this.listenTo(t, "change:stackIndex", this.indexChanged), this.listenTo(t, "updateValue", this.inputValueChanged), this.delegateEvents();
var e = this.getPropsConfig();
this.layers = new V({
collection: this.getLayers(),
stackModel: t,
preview: t.get("preview"),
config: this.config,
propsConfig: e
});
var r = n(19).default;
this.propsView = new r({
target: this.target,
collection: t.get("properties"),
stackModel: t,
config: this.config,
onChange: e.onChange,
propTarget: e.propTarget
})
},
targetUpdated: function() {
var t, e = this;
if (this.model.get("detached")) t = this._getTargetData(), this.setStatus(t.status), this.checkVisibility();
else {
for (var n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
t = L.prototype.targetUpdated.apply(this, r)
}
setTimeout(function() {
return e.refreshLayers(t)
})
},
getLayers: function() {
return this.model.get("layers")
},
indexChanged: function(t) {
var e = this.model;
this.getLayers().active(e.get("stackIndex"))
},
addLayer: function() {
var t = this.model,
e = this.getLayers(),
n = t.get("prepend"),
r = t.get("properties").deepClone();
r.each(function(t) {
return t.set("value", "")
});
var o = e.add({
properties: r
}, function(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? R(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : R(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}({
active: 1
}, n && {
at: 0
}));
this.inputValueChanged({
up: 1
}), t.set("stackIndex", e.indexOf(o))
},
inputValueChanged: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model;
t.up && this.elementUpdated(), e.get("detached") ? e.get("properties").each(function(t) {
return t.trigger("change:value")
}) : e.set("value", this.getLayerValues())
},
setValue: function() {},
getLayerValues: function() {
return this.getLayers().getFullValue()
},
_getClassRule: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.em,
n = t.skipAdd,
r = void 0 === n ? 1 : n,
i = e.getSelected(),
o = e.get("StyleManager").getModelToStyle(i, {
skipAdd: r,
useClasses: 1
});
return o !== i && o
},
_getParentTarget: function(t) {
for (var e, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r = this.em, i = this.model.get("property"), o = n.isValid || function(t) {
return t.getStyle()[i]
}, a = r.get("CssComposer").getAll().filter(function(e) {
return e.selectorsToString() === t.getSelectorsString()
}).reduce(function(t, e) {
return t[e.getAtRule()] = e, t
}, {}), s = z.sortMediaObject(a).map(function(t) {
return t.value
}), l = s.indexOf(t), c = s.splice(0, l), u = c.length - 1; u > -1; u--) {
var d = c[u];
if (o(d)) {
e = d;
break
}
}
return e
},
refreshLayers: function() {
var t, e, n, r, i, o, a = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
s = [],
c = this.model,
u = this.em,
d = this.getLayers(),
h = c.get("detached"),
f = c.get("property"),
p = this.getFirstTarget(),
g = this.getComputedValue(),
v = u.getSelected(),
m = {
fromTarget: 1
};
if (h) {
e = a.targetValue || {};
var b = function(t) {
var e = c.get("properties").at(0).get("property");
return t && !Object(l.isUndefined)(t.getStyle()[e])
};
if (!Object(l.keys)(e).length && g && v) {
var y = {
isValid: function(t) {
return b(t)
}
};
(r = this._getParentTarget(p, y)) ? e = r.getStyle(): (n = this._getClassRule(), r = !(i = b(n) && n.getStyle()) && this._getParentTarget(this._getClassRule({
skipAdd: 0
}), y), o = b(r) && r.getStyle(), e = i || o || {})
}
t = e, s = d.getLayersFromStyle(e)
} else {
var w = this.getTargetValue({
ignoreDefault: 1
});
!w && g && ((r = this._getParentTarget(p)) ? w = r.getStyle()[f] : (o = (r = !(i = (n = this._getClassRule()) && n.getStyle()[f]) && this._getParentTarget(this._getClassRule({
skipAdd: 0
}))) && r.getStyle()[f], w = i || o || g)), t = w = w == c.getDefaultValue() ? "" : w, s = d.getLayersFromValue(w)
}
var x = c.getLayersFromTarget(p, {
resultValue: t,
layersObj: s
}) || s;
d.reset(null, m), d.add(x, m), c.set({
stackIndex: null
}, {
silent: !0
})
},
getTargetValue: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model,
n = e.attributes.detached,
r = this.getFirstTarget(),
i = L.prototype.getTargetValue.call(this, t);
return Object(l.isUndefined)(i) && !n ? i = e.getValueFromStyle(r.getStyle()) : n && (i = e.getValueFromTarget(r)), i
},
getPropsConfig: function() {
var t = this,
e = t.model;
return {
target: t.target,
propTarget: t.propTarget,
onChange: function(n, r, o) {
var a = r.model,
s = e.get("status");
if (e.get("detached")) {
var l = a.get("property"),
c = a.getDefaultValue(),
u = t.getLayers(),
d = u.getPropertyValues(l, c);
r.updateTargetStyle(d, null, o), "background-image" != l || o.avoidStore || "computed" != s || e.get("properties").filter(function(t) {
return "__" == t.get("property").substr(0, 2)
}).forEach(function(e) {
var n = e.get("property"),
r = u.getPropertyValues(n, e.getDefaultValue());
t.getTargets().forEach(function(t) {
return t.addStyle(i()({}, n, r), o)
})
})
} else if ("updated" == s) {
var h = e.getFullValue();
e.set("value", h, o), !h && r.updateTargetStyle(h, null, o)
}
}
}
},
onRender: function() {
var t = this.el,
e = this.layers,
n = this.propsView,
r = t.querySelector("[data-layers-wrapper]");
n.render(), r.appendChild(e.render().el)
}
}),
$ = a.a.$,
U = E.extend({
templateInput: function() {
var t = this.pfx,
e = this.em;
return '\n <div class="'.concat(t, "field ").concat(t, "file\">\n <div id='").concat(t, "input-holder'>\n <div class=\"").concat(t, 'btn-c">\n <button class="').concat(t, 'btn" id="').concat(t, 'images" type="button">\n ').concat(e.t("styleManager.fileButton"), '\n </button>\n </div>\n <div style="clear:both;"></div>\n </div>\n <div id="').concat(t, 'preview-box">\n <div id="').concat(t, 'preview-file"></div>\n <div id="').concat(t, 'close">⨯</div>\n </div>\n </div>\n ')
},
init: function() {
var t = this.em;
this.modal = t.get("Modal"), this.am = t.get("AssetManager"), this.events["click #" + this.pfx + "close"] = "removeFile", this.events["click #" + this.pfx + "images"] = "openAssetManager", this.delegateEvents()
},
onRender: function() {
if (!this.$input) {
var t = this.model.getDefaultValue();
this.$input = $('<input placeholder="'.concat(t, '">'))
}
this.$preview || (this.$preview = this.$el.find("#" + this.pfx + "preview-file")), this.$previewBox || (this.$previewBox = this.$el.find("#" + this.pfx + "preview-box")), this.setValue(this.componentValue, 0)
},
clearCached: function() {
E.prototype.clearCached.apply(this, arguments), this.$preview = null, this.$previewBox = null
},
setValue: function(t, e) {
E.prototype.setValue.apply(this, arguments), this.setPreviewView(t && t != this.model.getDefaultValue()), this.setPreview(t)
},
setPreviewView: function(t) {
var e = this.$previewBox;
e && e[t ? "addClass" : "removeClass"]("".concat(this.pfx, "show")), e && e.css({
display: t ? "block" : "none"
})
},
spreadUrl: function(t) {
this.model.set("value", t), this.setPreviewView(1)
},
setPreview: function(t) {
var e = this.$preview;
t = t && t.indexOf("url(") < 0 ? "url(".concat(t, ")") : t, e && e.css("background-image", t)
},
cleanValue: function() {
this.setPreviewView(0), this.model.set({
value: ""
}, {
silent: !0
})
},
removeFile: function() {
this.model.set("value", this.model.getDefaultValue());
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
E.prototype.cleanValue.apply(this, e), this.setPreviewView(0)
},
openAssetManager: function(t) {
var e = this,
n = this.em,
r = this.modal,
i = n ? n.get("Editor") : "";
i && i.runCommand("open-assets", {
types: ["image"],
accept: "image/*",
target: this.getTargetModel(),
onClick: function() {},
onDblClick: function() {},
onSelect: function(t) {
r.close();
var n = Object(l.isString)(t) ? t : t.get("src");
e.spreadUrl(n)
}
})
}
}),
B = a.a.$,
W = E.extend({
templateInput: function() {
return ""
},
init: function() {
var t = this.model;
this.listenTo(t, "change:unit", this.modelValueChanged), this.listenTo(t, "el:change", this.elementUpdated), this.listenTo(t, "change:units", this.render)
},
setValue: function(t) {
var e = this.model.parseValue(t);
t = "".concat(e.value).concat(e.unit), this.inputInst.setValue(t, {
silent: 1
})
},
onRender: function() {
var t = this.ppfx;
if (!this.input) {
var e = this.model.input;
e.ppfx = t, e.render(), this.el.querySelector(".".concat(t, "fields")).appendChild(e.el), this.$input = e.inputEl, this.unit = e.unitEl, this.$unit = B(this.unit), this.input = this.$input.get(0), this.inputInst = e
}
},
clearCached: function() {
E.prototype.clearCached.apply(this, arguments), this.unit = null, this.$unit = null
}
}),
q = n(38);
function G(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function K(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? G(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : G(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var Y = W.extend({
setValue: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
e = K(K({}, e), {}, {
silent: 1
}), this.inputInst.setValue(t, e)
},
remove: function() {
var t = this;
W.prototype.remove.apply(this, arguments);
var e = this.inputInst;
e && e.remove(), ["inputInst", "$color"].forEach(function(e) {
return t[e] = {}
})
},
onRender: function() {
if (!this.input) {
var t = this.ppfx,
e = new q.a({
target: this.target,
model: this.model,
ppfx: t
}).render();
this.el.querySelector(".".concat(t, "fields")).appendChild(e.el), this.$input = e.inputEl, this.$color = e.colorEl, this.input = this.$input.get(0), this.inputInst = e
}
}
}),
X = n(7),
J = n.n(X);
function Z(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function Q(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? Z(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : Z(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var tt = f.extend({
defaults: function() {
return Q(Q({}, f.prototype.defaults), {}, {
options: [],
full: 1
})
},
initialize: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
f.prototype.initialize.apply(this, e), this.listenTo(this, "change:options", this.onOptionChange)
},
onOptionChange: function() {
this.set("list", this.get("options"))
},
getOptions: function() {
var t = this.attributes,
e = t.options,
n = t.list;
return e && e.length ? e : n
},
setOptions: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
return this.set("options", t), this
},
addOption: function(t) {
if (t) {
var e = this.getOptions();
this.setOptions([].concat(J()(e), [t]))
}
return this
}
});
function et(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function nt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? et(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : et(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var rt = tt.extend({
defaults: function() {
return nt(nt({}, tt.prototype.defaults()), {}, {
full: 0
})
}
}),
it = (a.a.$, E.extend({
templateInput: function() {
var t = this.pfx,
e = this.ppfx;
return '\n <div class="'.concat(e, "field ").concat(e, 'select">\n <span id="').concat(t, 'input-holder"></span>\n <div class="').concat(e, 'sel-arrow">\n <div class="').concat(e, 'd-s-arrow"></div>\n </div>\n </div>\n ')
},
initialize: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
E.prototype.initialize.apply(this, e), this.listenTo(this.model, "change:options", this.updateOptions)
},
updateOptions: function() {
this.input = null, this.onRender()
},
onRender: function() {
var t = this.pfx,
e = this.model.getOptions();
if (!this.input) {
var n = "";
e.forEach(function(t) {
var e = t.name || t.value,
r = t.style ? t.style.replace(/"/g, """) : "",
i = r ? 'style="'.concat(r, '"') : "",
o = t.value.replace(/"/g, """);
n += '<option value="'.concat(o, '" ').concat(i, ">").concat(e, "</option>")
});
var r = this.el.querySelector("#".concat(t, "input-holder"));
r.innerHTML = "<select>".concat(n, "</select>"), this.input = r.firstChild
}
}
})),
ot = E.extend({
templateInput: function() {
this.pfx;
var t = this.ppfx;
return '\n <div class="'.concat(t, "field ").concat(t, 'field-radio">\n </div>\n ')
},
onRender: function() {
var t = this.pfx,
e = this.ppfx,
n = "".concat(e, "radio-item-label"),
r = this.model,
i = r.get("property"),
o = r.get("list") || r.get("options") || [],
a = r.cid,
s = "".concat(t, "radio ").concat(t, "radio-").concat(i);
if (!this.input && o && o.length) {
var l = "";
o.forEach(function(r) {
var o = r.className ? "".concat(r.className, " ").concat(t, "icon ").concat(n) : "",
c = "".concat(i, "-").concat(r.value, "-").concat(a),
u = r.name || r.value,
d = r.title ? 'title="'.concat(r.title, '"') : "";
l += '\n <div class="'.concat(e, 'radio-item">\n <input type="radio" class="').concat(s, '" id="').concat(c, '" name="').concat(i, "-").concat(a, '" value="').concat(r.value, '"/>\n <label class="').concat(o || n, '" ').concat(d, ' for="').concat(c, '">').concat(o ? "" : u, "</label>\n </div>\n ")
});
var c = this.el.querySelector(".".concat(e, "field"));
c.innerHTML = '<div class="'.concat(e, 'radio-items">').concat(l, "</div>"), this.input = c.firstChild
}
},
getInputValue: function() {
var t = this.getCheckedEl();
return t ? t.value : ""
},
getCheckedEl: function() {
var t = this.getInputEl();
return t ? t.querySelector("input:checked") : ""
},
setValue: function(t) {
var e = this.model,
n = t || e.get("value") || e.getDefaultValue(),
r = this.getInputEl(),
i = r ? r.querySelector('[value="'.concat(n, '"]')) : "";
if (i) i.checked = !0;
else {
var o = this.getCheckedEl();
o && (o.checked = !1)
}
}
}),
at = n(32);
function st(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function lt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? st(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : st(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var ct = f.extend({
defaults: lt(lt({}, f.prototype.defaults), {}, {
units: [],
unit: "",
step: 1,
min: "",
max: ""
}),
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
f.callParentInit(f, this, t, e);
var n = this.get("unit"),
r = this.get("units");
this.input = new at.a({
model: this
}), r.length && !n && this.set("unit", r[0]), f.callInit(this, t, e)
},
clearValue: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return this.set({
value: void 0,
unit: void 0
}, t), this
},
parseValue: function(t) {
var e = f.prototype.parseValue.apply(this, arguments),
n = this.input.validateInputValue(e.value, {
deepCheck: 1
}),
r = n.value,
i = n.unit;
return e.value = r, e.unit = i, e
},
getFullValue: function() {
var t = this.get("value"),
e = this.get("unit");
return t = Object(l.isUndefined)(t) ? "" : t, e = !Object(l.isUndefined)(e) && t ? e : "", t = "".concat(t).concat(e), f.prototype.getFullValue.apply(this, [t])
}
});
function ut(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function dt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? ut(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ut(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var ht = ct.extend({
defaults: dt(dt({}, ct.prototype.defaults), {}, {
showInput: 1
})
});
function ft(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function pt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? ft(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ft(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var gt = W.extend({
events: function() {
return pt(pt({}, W.prototype.events), {}, {
"change [type=range]": "inputValueChanged",
"input [type=range]": "inputValueChangedSoft",
change: ""
})
},
templateInput: function(t) {
var e = this.ppfx;
return '\n <div class="'.concat(e, "field ").concat(e, 'field-range">\n <input type="range"\n min="').concat(t.get("min"), '"\n max="').concat(t.get("max"), '"\n step="').concat(t.get("step"), '"/>\n </div>\n ')
},
getSliderEl: function() {
return this.slider || (this.slider = this.el.querySelector("input[type=range]")), this.slider
},
inputValueChanged: function() {
var t = this.model,
e = t.get("step");
this.getInputEl().value = this.getSliderEl().value;
var n = this.getInputValue() - e;
t.set("value", n, {
avoidStore: 1
}).set("value", n + e), this.elementUpdated()
},
inputValueChangedSoft: function() {
this.getInputEl().value = this.getSliderEl().value, this.model.set("value", this.getInputValue(), {
avoidStore: 1
}), this.elementUpdated()
},
setValue: function(t) {
var e = this.model.parseValue(t);
this.getSliderEl().value = parseFloat(e.value), W.prototype.setValue.apply(this, arguments)
},
onRender: function() {
W.prototype.onRender.apply(this, arguments), this.model.get("showInput") || (this.inputInst.el.style.display = "none")
},
clearCached: function() {
W.prototype.clearCached.apply(this, arguments), this.slider = null
}
});
function vt(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function mt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? vt(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : vt(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var bt = e.default = a.a.Collection.extend(s.a).extend({
extendViewApi: 1,
types: [{
id: "stack",
model: C,
view: H,
isType: function(t) {
if (t && "stack" == t.type) return t
}
}, {
id: "composite",
model: v,
view: L,
isType: function(t) {
if (t && "composite" == t.type) return t
}
}, {
id: "file",
model: f,
view: U,
isType: function(t) {
if (t && "file" == t.type) return t
}
}, {
id: "color",
model: f,
view: Y,
isType: function(t) {
if (t && "color" == t.type) return t
}
}, {
id: "select",
model: rt,
view: it,
isType: function(t) {
if (t && "select" == t.type) return t
}
}, {
id: "radio",
model: tt,
view: ot,
isType: function(t) {
if (t && "radio" == t.type) return t
}
}, {
id: "slider",
model: ht,
view: gt,
isType: function(t) {
if (t && "slider" == t.type) return t
}
}, {
id: "integer",
model: ct,
view: W,
isType: function(t) {
if (t && "integer" == t.type) return t
}
}, {
id: "base",
model: f,
view: E,
isType: function(t) {
return t.type = "base", t
}
}],
deepClone: function() {
var t = this.clone();
return t.reset(t.map(function(t) {
var e = t.clone();
return e.typeView = t.typeView, e
})), t
},
parseValue: function(t) {
var e = this,
n = [];
return t.split(" ").forEach(function(t, r) {
var i = e.at(r);
i && n.push(mt(mt({}, i.attributes), {
value: t
}))
}), n
},
getFullValue: function() {
var t = "";
return this.each(function(e) {
return t += "".concat(e.getFullValue(), " ")
}), t.trim()
}
})
}, function(t, e, n) {
var r = n(82);
t.exports = function(t, e) {
if (null == t) return {};
var n, i, o = r(t, e);
if (Object.getOwnPropertySymbols) {
var a = Object.getOwnPropertySymbols(t);
for (i = 0; i < a.length; i++) n = a[i], e.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(t, n) && (o[n] = t[n])
}
return o
}
}, function(t, e) {
var n;
n = function() {
return this
}();
try {
n = n || new Function("return this")()
} catch (t) {
"object" == typeof window && (n = window)
}
t.exports = n
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r).a.$;
e.default = {
startSelectPosition: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
this.isPointed = !1;
var i = this.editorModel.get("Utils"),
o = t.ownerDocument.body;
i && !this.sorter && (this.sorter = new i.Sorter({
container: o,
placer: this.canvas.getPlacerEl(),
containerSel: "*",
itemSel: "*",
pfx: this.ppfx,
direction: "a",
document: e,
wmargin: 1,
nested: 1,
em: this.editorModel,
canvasRelative: 1,
scale: function() {
return n.em.getZoomDecimal()
}
})), r.onStart && (this.sorter.onStart = r.onStart), t && this.sorter.startSort(t, {
container: o
})
},
getOffsetDim: function() {
var t = this.offset(this.canvas.getFrameEl()),
e = this.offset(this.canvas.getElement());
return {
top: t.top - e.top,
left: t.left - e.left
}
},
stopSelectPosition: function() {
this.posTargetCollection = null, this.posIndex = "after" == this.posMethod && 0 !== this.cDim.length ? this.posIndex + 1 : this.posIndex, this.sorter && (this.sorter.moved = 0, this.sorter.endMove()), this.cDim && (this.posIsLastEl = 0 !== this.cDim.length && "after" == this.posMethod && this.posIndex == this.cDim.length, this.posTargetEl = 0 === this.cDim.length ? i(this.outsideElem) : !this.posIsLastEl && this.cDim[this.posIndex] ? i(this.cDim[this.posIndex][5]).parent() : i(this.outsideElem), this.posTargetModel = this.posTargetEl.data("model"), this.posTargetCollection = this.posTargetEl.data("model-comp"))
},
enable: function() {
this.startSelectPosition()
},
nearFloat: function(t, e, n) {
var r = t || 0,
i = e || "before",
o = n.length,
a = 0 !== o && "after" == i && r == o;
return 0 !== o && (!a && !n[r][4] || n[r - 1] && !n[r - 1][4] || a && !n[r - 1][4]) ? 1 : 0
},
run: function() {
this.enable()
},
stop: function() {
this.stopSelectPosition(), this.$wrapper.css("cursor", ""), this.$wrapper.unbind()
}
}
}, function(t, e, n) {
"use strict";
var r = n(40);
window.Promise = window.Promise || r.a, e.a = "function" == typeof fetch ? fetch.bind() : function(t, e) {
return new r.a(function(n, i) {
var o = new XMLHttpRequest;
for (var a in o.open(e.method || "get", t), o.withCredentials = "include" == e.credentials, e.headers || {}) o.setRequestHeader(a, e.headers[a]);
o.onload = function(t) {
return n({
status: o.status,
statusText: o.statusText,
text: function() {
return r.a.resolve(o.responseText)
}
})
}, o.onerror = i, o.upload && e.onProgress && (o.upload.onprogress = e.onProgress), e.body ? o.send(e.body) : o.send()
})
}
}, function(t, e, n) {
"use strict";
var r = n(8),
i = n.n(r),
o = n(0);
e.a = function(t) {
var e = t,
n = "data-gjs-";
return {
compTypes: "",
modelAttrStart: n,
splitPropsFromAttr: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
r = {},
i = {};
return Object(o.each)(e, function(e, a) {
if (0 === a.indexOf(t.modelAttrStart)) {
var s = a.replace(n, ""),
l = e.length,
c = e && Object(o.isString)(e),
u = c && e.substr(0, 1),
d = c && e.substr(l - 1);
e = "false" !== (e = "true" === e || e) && e;
try {
e = "{" == u && "}" == d || "[" == u && "]" == d ? JSON.parse(e) : e
} catch (t) {}
r[s] = e
} else i[a] = e
}), {
props: r,
attrs: i
}
},
parseStyle: function(t) {
for (var e = {}, n = t.split(";"), r = 0, i = n.length; r < i; r++) {
var o = n[r].trim();
if (o) {
var a = o.split(":");
e[a[0].trim()] = a.slice(1).join(":").trim()
}
}
return e
},
parseClass: function(t) {
for (var e = [], n = t.split(" "), r = 0, i = n.length; r < i; r++) {
var o = n[r].trim();
o && e.push(o)
}
return e
},
parseNode: function(r) {
for (var o = [], a = r.childNodes, s = 0, l = a.length; s < l; s++) {
var c = a[s],
u = c.attributes || [],
d = u.length,
h = o[o.length - 1],
f = c.childNodes.length,
p = this.compTypes,
g = {};
if (p) {
var v = "",
m = c.getAttribute && c.getAttribute("".concat(n, "type"));
if (m) g = {
type: m
};
else {
for (var b = 0; b < p.length; b++) {
var y = p[b];
if (v = y.model.isComponent(c)) {
"object" !== i()(v) && (v = {
type: y.id
});
break
}
}
g = v
}
}
g.tagName || (g.tagName = c.tagName ? c.tagName.toLowerCase() : ""), d && (g.attributes = {});
for (var w = 0; w < d; w++) {
var x = u[w].nodeName,
O = u[w].nodeValue;
if ("style" == x) g.style = this.parseStyle(O);
else if ("class" == x) g.classes = this.parseClass(O);
else {
if ("contenteditable" == x) continue;
if (0 === x.indexOf(n)) {
var C = x.replace(n, ""),
S = O.length,
k = O && O.substr(0, 1),
j = O && O.substr(S - 1);
O = "false" !== (O = "true" === O || O) && O;
try {
O = "{" == k && "}" == j || "[" == k && "]" == j ? JSON.parse(O) : O
} catch (t) {}
g[C] = O
} else "" === O && !0 === c[x] && (O = !0), g.attributes[x] = O
}
}
if (f && !g.components) {
var T = c.childNodes[0];
1 === f && 3 === T.nodeType ? (!g.type && (g.type = "text"), g.components = {
type: "textnode",
content: T.nodeValue
}) : g.components = this.parseNode(c)
}
if ("textnode" == g.type) {
if (h && "textnode" == h.type) {
h.content += g.content;
continue
}
if (!t.keepEmptyTextNodes) {
var P = c.nodeValue;
if (" " != P && !P.trim()) continue
}
}
var E = g.components;
if (!g.type && E) {
for (var M = 1, D = 0, A = 0; A < E.length; A++) {
var L = E[A],
_ = L.type;
if (["text", "textnode"].indexOf(_) < 0 && e.textTags.indexOf(L.tagName) < 0) {
M = 0;
break
}
"textnode" == _ && (D = 1)
}
M && D && (g.type = "text")
}(g.tagName || "textnode" == g.type) && o.push(g)
}
return o
},
parse: function(t, n) {
var r = e.em,
i = r && r.get("Config") || {},
o = {
html: "",
css: ""
},
a = document.createElement("div");
a.innerHTML = t;
var s = a.querySelectorAll("script"),
l = s.length;
if (!i.allowScripts)
for (; l--;) s[l].parentNode.removeChild(s[l]);
if (n) {
for (var c = a.querySelectorAll("style"), u = c.length, d = ""; u--;) d = c[u].innerHTML + d, c[u].parentNode.removeChild(c[u]);
d && (o.css = n.parse(d))
}
var h = this.parseNode(a),
f = 1 !== h.length || e.returnArray ? h : h[0];
return o.html = f, r && r.trigger("parse:html", {
input: t,
output: o
}), o
}
}
}
}, function(t, e, n) {
"use strict";
var r = n(0),
i = n(1),
o = n.n(i),
a = o.a.Model,
s = o.a.View;
e.a = {
types: [],
initialize: function(t, e) {
var n = this;
this.model = function() {
var t, e, r, i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (i && i.type) {
var a = n.getBaseType();
t = (r = n.getType(i.type)) ? r.model : a.model, e = r ? r.view : a.view
} else {
var s = n.recognizeType(i);
t = (r = s.type).model, e = r.view, i = s.attributes
}
var l = new t(i, o);
return l.typeView = e, l
};
var r = this.init && this.init.bind(this);
r && r()
},
recognizeType: function(t) {
for (var e = this.getTypes(), n = 0; n < e.length; n++) {
var r = e[n],
i = r.isType(t);
if (i = "boolean" == typeof i && i ? {
type: r.id
} : i) return {
type: r,
attributes: i
}
}
return {
type: this.getBaseType(),
attributes: t
}
},
getBaseType: function() {
var t = this.getTypes();
return t[t.length - 1]
},
getTypes: function() {
return this.types
},
getType: function(t) {
for (var e = this.getTypes(), n = 0; n < e.length; n++) {
var r = e[n];
if (r.id === t) return r
}
},
addType: function(t, e) {
var n = this.getType(t),
i = this.getBaseType(),
o = n ? n.model : i.model,
l = n ? n.view : i.view,
c = e.model,
u = e.view,
d = e.isType;
c = c instanceof a || Object(r.isFunction)(c) ? c : o.extend(c || {}), u = u instanceof s || Object(r.isFunction)(u) ? u : l.extend(u || {}), !this.extendViewApi || e.model || e.view || (u = u.extend(e)), n ? (n.model = c, n.view = u, n.isType = d || n.isType) : (e.id = t, e.model = c, e.view = u, e.isType = d || function(e) {
if (e && e.type == t) return !0
}, this.getTypes().unshift(e))
}
}
}, function(t, e, n) {
"use strict";
var r = n(1),
i = n.n(r),
o = n(0),
a = Number.MAX_VALUE;
e.a = i.a.Model.extend({
initialize: function() {
this.compCls = [], this.ids = []
},
buildFromModel: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = "",
i = this.em,
o = i && i.getConfig("avoidInlineStyle"),
a = t.styleToString(),
s = t.get("classes"),
l = n.wrapperIsBody,
c = t.get("wrapper");
if (this.ids.push("#".concat(t.getId())), s.each(function(t) {
return e.compCls.push(t.getFullName())
}), !o && a) {
var u = "#".concat(t.getId());
r = "".concat(u = l && c ? "body" : u, "{").concat(a, "}")
}
return t.components().each(function(t) {
return r += e.buildFromModel(t, n)
}), r
},
build: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = n.cssc,
i = n.em || "";
this.em = i, this.compCls = [], this.ids = [];
var a = this.buildFromModel(t, n),
s = Object(o.isUndefined)(n.clearStyles) && i ? i.getConfig("clearStyles") : n.clearStyles;
if (r) {
var l = r.getAll(),
c = {},
u = [];
l.each(function(t) {
var r = t.getAtRule();
if (r) {
var i = c[r];
i ? i.push(t) : c[r] = [t]
} else a += e.buildFromRule(t, u, n)
}), this.sortMediaObject(c).forEach(function(t) {
var r = "",
i = t.key;
t.value.forEach(function(t) {
var o = e.buildFromRule(t, u, n);
t.get("singleAtRule") ? a += "".concat(i, "{").concat(o, "}") : r += o
}), r && (a += "".concat(i, "{").concat(r, "}"))
}), i && s && l.remove(u)
}
return a
},
buildFromRule: function(t, e) {
var n, r = this,
i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
o = "",
a = t.selectorsToString({
skipAdd: 1
}),
s = t.get("selectorsAdd"),
l = t.get("singleAtRule");
if (t.get("selectors").each(function(t) {
var e = t.getFullName();
(r.compCls.indexOf(e) >= 0 || r.ids.indexOf(e) >= 0 || i.keepUnusedStyles) && (n = 1)
}), a && n || s || l) {
var c = t.getDeclaration();
c && (o += c)
} else e.push(t);
return o
},
getQueryLength: function(t) {
var e = /(-?\d*\.?\d+)\w{0,}/.exec(t);
return e ? parseFloat(e[1]) : a
},
sortMediaObject: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
n = [];
return Object(o.each)(e, function(t, e) {
return n.push({
key: e,
value: t
})
}), n.sort(function(e, n) {
var r = [e.key, n.key].every(function(t) {
return -1 !== t.indexOf("min-width")
}),
i = r ? e.key : n.key,
o = r ? n.key : e.key;
return t.getQueryLength(i) - t.getQueryLength(o)
})
}
})
}, function(t, e, n) {
"use strict";
var r = n(1),
i = n.n(r),
o = n(0),
a = n(3),
s = n(18);
i.a.$, e.a = s.a.extend({
events: {
"change input": "handleChange",
"change select": "handleUnitChange",
"click [data-arrow-up]": "upArrowClick",
"click [data-arrow-down]": "downArrowClick",
"mousedown [data-arrows]": "downIncrement",
keydown: "handleKeyDown"
},
template: function() {
var t = this.ppfx;
return '\n <span class="'.concat(t, 'input-holder"></span>\n <span class="').concat(t, 'field-units"></span>\n <div class="').concat(t, 'field-arrows" data-arrows>\n <div class="').concat(t, 'field-arrow-u" data-arrow-up></div>\n <div class="').concat(t, 'field-arrow-d" data-arrow-down></div>\n </div>\n ')
},
inputClass: function() {
var t = this.ppfx;
return this.opts.contClass || "".concat(t, "field ").concat(t, "field-integer")
},
initialize: function() {
s.a.prototype.initialize.apply(this, arguments), Object(o.bindAll)(this, "moveIncrement", "upIncrement"), this.doc = document, this.listenTo(this.model, "change:unit", this.handleModelChange)
},
setValue: function(t, e) {
var n = e || {},
r = this.validateInputValue(t, {
deepCheck: 1
}),
i = {
value: r.value
};
(r.unit || r.force) && (i.unit = r.unit), this.model.set(i, n), n.silent && this.handleModelChange()
},
handleChange: function(t) {
t.stopPropagation(), this.setValue(this.getInputEl().value), this.elementUpdated()
},
handleUnitChange: function(t) {
t.stopPropagation();
var e = this.getUnitEl().value;
this.model.set("unit", e), this.elementUpdated()
},
handleKeyDown: function(t) {
"ArrowUp" === t.key && (t.preventDefault(), this.upArrowClick()), "ArrowDown" === t.key && (t.preventDefault(), this.downArrowClick())
},
elementUpdated: function() {
this.model.trigger("el:change")
},
handleModelChange: function() {
var t = this.model;
this.getInputEl().value = t.get("value");
var e = this.getUnitEl();
e && (e.value = t.get("unit") || "")
},
getUnitEl: function() {
if (!this.unitEl) {
var t = this.model,
e = t.get("units") || [];
if (e.length) {
var n = [];
e.forEach(function(e) {
var r = e == t.get("unit") ? "selected" : "";
n.push("<option ".concat(r, ">").concat(e, "</option>"))
});
var r = document.createElement("div");
r.innerHTML = '<select class="'.concat(this.ppfx, 'input-unit">').concat(n.join(""), "</select>"), this.unitEl = r.firstChild
}
}
return this.unitEl
},
upArrowClick: function() {
var t = this.model,
e = t.get("step"),
n = parseFloat(t.get("value"));
n = this.normalizeValue(n + e);
var r = this.validateInputValue(n);
t.set("value", r.value), this.elementUpdated()
},
downArrowClick: function() {
var t = this.model,
e = t.get("step"),
n = parseFloat(t.get("value")),
r = this.normalizeValue(n - e),
i = this.validateInputValue(r);
t.set("value", i.value), this.elementUpdated()
},
downIncrement: function(t) {
t.preventDefault(), this.moved = 0;
var e = this.model.get("value");
e = this.normalizeValue(e), this.current = {
y: t.pageY,
val: e
}, Object(a.v)(this.doc, "mousemove", this.moveIncrement), Object(a.v)(this.doc, "mouseup", this.upIncrement)
},
moveIncrement: function(t) {
this.moved = 1;
var e = this.model,
n = e.get("step"),
r = this.current,
i = this.normalizeValue(r.val + (r.y - t.pageY) * n);
return this.prValue = this.validateInputValue(i).value, e.set("value", this.prValue, {
avoidStore: 1
}), !1
},
upIncrement: function() {
var t = this.model,
e = t.get("step");
if (Object(a.u)(this.doc, "mouseup", this.upIncrement), Object(a.u)(this.doc, "mousemove", this.moveIncrement), this.prValue && this.moved) {
var n = this.prValue - e;
t.set("value", n, {
avoidStore: 1
}).set("value", n + e), this.elementUpdated()
}
},
normalizeValue: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
n = this.model.get("step"),
r = 0;
if (isNaN(t)) return e;
if (t = parseFloat(t), Math.floor(t) !== t) {
var i = n.toString().split(".")[1];
r = i ? i.length : 0
}
return r ? parseFloat(t.toFixed(r)) : t
},
validateInputValue: function(t, e) {
var n = 0,
r = e || {},
i = this.model,
a = Object(o.isUndefined)(t) ? "" : t,
s = i.get("units") || [],
l = i.get("unit") || s.length && s[0] || "",
c = i.get("max"),
u = i.get("min"),
d = !!i.get("limitlessMax");
if (i.get("limitlessMin"), r.deepCheck) {
var h = i.get("fixedValues") || [];
if (a) {
var f = new RegExp("^" + h.join("|"), "g");
if (h.length && f.test(a)) a = a.match(f)[0], l = "", n = 1;
else {
var p = a + "";
a += "", a = parseFloat(a.replace(",", ".")), a = isNaN(a) ? "" : a;
var g = p.replace(a, "");
Object(o.indexOf)(s, g) >= 0 && (l = g)
}
}
}
return d || Object(o.isUndefined)(c) || "" === c || (a = a > c ? c : a), d || Object(o.isUndefined)(u) || "" === u || (a = a < u ? u : a), {
force: n,
value: a,
unit: l
}
},
render: function() {
s.a.prototype.render.call(this), this.unitEl = null;
var t = this.getUnitEl();
return t && this.$el.find(".".concat(this.ppfx, "field-units")).get(0).appendChild(t), this
}
})
}, function(t, e, n) {
"use strict";
var r = n(1),
i = n.n(r),
o = n(34);
e.a = i.a.Collection.extend({
model: o.a,
initialize: function(t, e) {
var n = this;
e && e.em && (this.editor = e.em), setTimeout(function() {
n.on("remove", n.onRemove), n.on("add", n.onAdd)
})
},
onAdd: function(t) {
t.ensureSelectors()
},
onRemove: function(t) {
var e = this.editor;
e.stopListening(t), e.get("UndoManager").remove(t)
},
add: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return "string" == typeof t && (t = this.editor.get("Parser").parseCss(t)), e.em = this.editor, i.a.Collection.prototype.add.apply(this, [t, e])
}
})
}, function(t, e, n) {
"use strict";
var r = n(7),
i = n.n(r),
o = n(2),
a = n.n(o),
s = n(0),
l = n(1),
c = n.n(l),
u = n(23),
d = n(12);
function h(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function f(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? h(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var p = window.CSS;
e.a = c.a.Model.extend(u.a).extend({
defaults: {
selectors: [],
selectorsAdd: "",
style: {},
mediaText: "",
state: "",
stylable: !0,
atRuleType: "",
singleAtRule: 0,
important: 0
},
initialize: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
this.config = t || {}, this.opt = e, this.em = e.em, this.ensureSelectors()
},
clone: function() {
var t = f({}, this.opt),
e = f({}, this.attributes);
return e.selectors = this.get("selectors").map(function(t) {
return t.clone()
}), new this.constructor(e, t)
},
ensureSelectors: function() {
var t = this.em,
e = t && t.get("SelectorManager"),
n = [this, "change:selectors", this.ensureSelectors],
r = this.getSelectors();
if (this.stopListening.apply(this, n), r.models && (r = i()(r.models)), Array.isArray(r)) {
var o = r.filter(function(t) {
return t
}).map(function(t) {
return e ? e.add(t) : t
});
r = new d.a(o)
}
this.set("selectors", r), this.listenTo.apply(this, n)
},
getAtRule: function() {
var t = this.get("atRuleType"),
e = this.get("mediaText"),
n = t ? "@".concat(t) : e ? "@media" : "";
return n + (e && n ? " ".concat(e) : "")
},
selectorsToString: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = [],
n = this.em,
r = this.get("state"),
i = this.get("wrapper"),
o = this.get("selectorsAdd"),
a = {
escape: function(t) {
return p && p.escape ? p.escape(t) : t
}
},
s = i && n && n.getConfig("wrapperIsBody") ? "body" : this.get("selectors").getFullString(0, a),
l = r && !t.skipState ? ":".concat(r) : "";
return s && e.push("".concat(s).concat(l)), o && !t.skipAdd && e.push(o), e.join(", ")
},
getDeclaration: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = "",
n = this.selectorsToString(),
r = this.styleToString(t),
i = this.get("singleAtRule");
return (n || i) && r && (e = i ? r : "".concat(n, "{").concat(r, "}")), e
},
toCSS: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = "",
n = this.getAtRule(),
r = this.getDeclaration(t);
return r && (e = r), n && e && (e = "".concat(n, "{").concat(e, "}")), e
},
toJSON: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
var r = c.a.Model.prototype.toJSON.apply(this, e);
if (this.em.getConfig("avoidDefaults")) {
var i = this.defaults;
Object(s.forEach)(i, function(t, e) {
r[e] === t && delete r[e]
}), Object(s.isEmpty)(r.selectors) && delete r.selectors, Object(s.isEmpty)(r.style) && delete r.style
}
return r
},
compare: function(t, e, n) {
var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
i = e || "",
o = n || "",
a = r.selectorsAdd || "",
l = r.atRuleType || "";
t instanceof Array || t.models || (t = [t]);
var c = Object(s.map)(t.models || t, function(t) {
return t.get("name")
}),
u = Object(s.map)(this.get("selectors").models, function(t) {
return t.get("name")
});
if (c.length !== u.length) return !1;
for (var d = 0; d < c.length; d++) {
for (var h = 0, f = 0; f < u.length; f++) c[d] === u[f] && (h = 1);
if (0 === h) return !1
}
return this.get("state") === i && this.get("mediaText") === o && this.get("selectorsAdd") === a && this.get("atRuleType") === l || !1
}
})
}, function(t, e, n) {
"use strict";
var r = n(1),
i = n.n(r),
o = n(0);
e.a = i.a.View.extend({
initialize: function(t) {
this.opts = t || {}, this.config = t.config || {}, this.em = this.config.em;
var e = this.collection;
this.listenTo(e, "add", this.addTo), this.listenTo(e, "reset", this.resetChildren), this.listenTo(e, "remove", this.removeChildren)
},
removeChildren: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
t.views.forEach(function(t) {
if (t) {
var e = t.childrenView,
n = t.scriptContainer;
e && e.stopListening(), n && n.remove(), t.remove.apply(t)
}
}), t.components().forEach(function(t) {
return n.removeChildren(t, e, r)
})
},
addTo: function(t) {
var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
n = this.config.em,
r = this.collection.indexOf(t);
if (this.addToCollection(t, null, r), n && !e.temporary) {
! function t(e) {
n.trigger("component:add", e), e.components().forEach(function(e) {
return t(e)
})
}(t)
}
},
addToCollection: function(t, e, r) {
this.compView || (this.compView = n(6).default);
for (var i = this.config, a = this.opts, s = this.em, l = e || null, c = i.frameView, u = void 0 === c ? {} : c, d = u.model && t.getView(u.model), h = a.componentTypes || s && s.get("DomComponents").getTypes(), f = t.get("type"), p = this.compView, g = 0; g < h.length; g++)
if (h[g].id == f) {
p = h[g].view;
break
} var v, m = d || new p({
model: t,
config: i,
componentTypes: h
});
try {
v = m.render().el
} catch (t) {
v = document.createTextNode(""), s.logError(t)
}
if (l) l.appendChild(v);
else {
var b = this.parentEl,
y = b.childNodes;
if (Object(o.isUndefined)(r)) b.appendChild(v);
else {
var w = y.length == r;
w && r--, w || !y.length ? b.appendChild(v) : b.insertBefore(v, y[r])
}
}
return v
},
resetChildren: function(t) {
var e = this,
n = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).previousModels,
r = void 0 === n ? [] : n;
this.parentEl.innerHTML = "", r.forEach(function(t) {
return e.removeChildren(t, e.collection)
}), t.each(function(t) {
return e.addToCollection(t)
})
},
render: function(t) {
var e = this,
n = this.el,
r = document.createDocumentFragment();
return this.parentEl = t || this.el, this.collection.each(function(t) {
return e.addToCollection(t, r)
}), n.innerHTML = "", n.appendChild(r), this
}
})
}, function(t, e, n) {
"use strict";
var r, i = n(0),
o = n(3),
a = n(1),
s = n.n(a),
l = n(6),
c = n(5),
u = "contentEditable",
d = s.a.$;
e.a = s.a.View.extend({
events: {
"mousedown [data-toggle-move]": "startSort",
"touchstart [data-toggle-move]": "startSort",
"click [data-toggle-visible]": "toggleVisibility",
"click [data-toggle-select]": "handleSelect",
"mouseover [data-toggle-select]": "handleHover",
"mouseout [data-toggle-select]": "handleHoverOut",
"click [data-toggle-open]": "toggleOpening",
"dblclick [data-name]": "handleEdit",
"focusout [data-name]": "handleEditEnd"
},
template: function(t) {
var e = this.pfx,
n = this.ppfx,
r = this.config,
i = this.clsNoEdit,
o = r.hidable,
a = this.countChildren(t),
s = a ? "" : this.clsNoChild,
l = "".concat(this.clsTitle, " ").concat(s),
c = "".concat(this.clsTitleC, " ").concat(n, "one-bg"),
u = "".concat(this.clsCaret, " fa fa-chevron-right"),
d = "".concat(this.inputNameCls, " ").concat(i, " ").concat(n, "no-app"),
h = this.level + 1,
f = "".concat(30 + 10 * h, "px"),
p = t.getName(),
g = t.getIcon(),
v = "".concat(e, "layer");
return "\n ".concat(o ? '<i class="'.concat(e, "layer-vis fa fa-eye ").concat(this.isVisible() ? "" : "fa-eye-slash", '" data-toggle-visible></i>') : "", '\n <div class="').concat(c, '">\n <div class="').concat(l, '" style="padding-left: ').concat(f, '" data-toggle-select>\n <div class="').concat(e, 'layer-title-inn">\n <i class="').concat(u, '" data-toggle-open></i>\n ').concat(g ? '<span class="'.concat(v, '__icon">').concat(g, "</span>") : "", '\n <span class="').concat(d, '" data-name>').concat(p, '</span>\n </div>\n </div>\n </div>\n <div class="').concat(this.clsCount, '" data-count>').concat(a || "", '</div>\n <div class="').concat(this.clsMove, '" data-toggle-move>\n <i class="fa fa-arrows-alt"></i>\n </div>\n <div class="').concat(this.clsChildren, '"></div>')
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.opt = t, this.level = t.level, this.config = t.config, this.em = t.config.em, this.ppfx = this.em.get("Config").stylePrefix, this.sorter = t.sorter || "", this.pfx = this.config.stylePrefix, this.parentView = t.parentView;
var e = this.pfx,
n = this.ppfx,
r = this.model,
i = r.get("components"),
o = r.get("type") || "default";
r.set("open", !1), this.listenTo(i, "remove add reset", this.checkChildren), this.listenTo(r, "change:status", this.updateStatus), this.listenTo(r, "change:open", this.updateOpening), this.listenTo(r, "change:layerable", this.updateLayerable), this.listenTo(r, "change:style:display", this.updateVisibility), this.className = "".concat(e, "layer ").concat(e, "layer__t-").concat(o, " no-select ").concat(n, "two-color"), this.inputNameCls = "".concat(n, "layer-name"), this.clsTitleC = "".concat(e, "layer-title-c"), this.clsTitle = "".concat(e, "layer-title"), this.clsCaret = "".concat(e, "layer-caret"), this.clsCount = "".concat(e, "layer-count"), this.clsMove = "".concat(e, "layer-move"), this.clsChildren = "".concat(e, "layer-children"), this.clsNoChild = "".concat(e, "layer-no-chld"), this.clsEdit = "".concat(this.inputNameCls, "--edit"), this.clsNoEdit = "".concat(this.inputNameCls, "--no-edit"), this.$el.data("model", r), this.$el.data("collection", i), r.viewLayer = this
},
getVisibilityEl: function() {
return this.eyeEl || (this.eyeEl = this.$el.children(".".concat(this.pfx, "layer-vis"))), this.eyeEl
},
updateVisibility: function() {
var t = this.pfx,
e = this.model,
n = "".concat(t, "layer-hidden"),
r = "none" === e.getStyle().display ? "addClass" : "removeClass";
this.$el[r](n), this.getVisibilityEl()[r]("fa-eye-slash")
},
toggleVisibility: function(t) {
t && t.stopPropagation();
var e = this.model,
n = this.em,
r = "__prev-display",
i = e.get(r),
o = e.getStyle(),
a = o.display;
"none" == a ? (delete o.display, i && (o.display = i, e.unset(r))) : (a && e.set(r, a), o.display = "none"), e.setStyle(o), n && n.trigger("component:toggled")
},
handleEdit: function(t) {
t && t.stopPropagation();
var e = this.em,
n = this.$el,
r = this.clsNoEdit,
i = this.clsEdit,
o = this.getInputName();
o[u] = !0, o.focus(), e && e.setEditing(1), n.find(".".concat(this.inputNameCls)).removeClass(r).addClass(i)
},
handleEditEnd: function(t) {
t && t.stopPropagation();
var e = this.em,
n = this.$el,
r = this.clsNoEdit,
i = this.clsEdit,
o = this.getInputName(),
a = o.textContent;
o.scrollLeft = 0, o[u] = !1, this.model.set({
"custom-name": a
}), e && e.setEditing(0), n.find(".".concat(this.inputNameCls)).addClass(r).removeClass(i)
},
getInputName: function() {
return this.inputName || (this.inputName = this.el.querySelector(".".concat(this.inputNameCls))), this.inputName
},
updateOpening: function() {
var t = this.opt.opened || {},
e = this.model,
n = "fa-chevron-down";
e.get("open") ? (this.$el.addClass("open"), this.getCaret().addClass(n), t[e.cid] = e) : (this.$el.removeClass("open"), this.getCaret().removeClass(n), delete t[e.cid])
},
toggleOpening: function(t) {
t.stopPropagation(), this.model.get("components").length && this.model.set("open", !this.model.get("open"))
},
handleSelect: function(t) {
t.stopPropagation();
var e = this.em,
n = this.config;
if (e) {
var r = this.model;
e.setSelected(r, {
fromLayers: 1,
event: t
});
var i = n.scrollCanvas;
i && r.views.forEach(function(t) {
return t.scrollIntoView(i)
})
}
},
handleHover: function(t) {
t.stopPropagation();
var e = this.em,
n = this.config,
r = this.model;
e && n.showHover && e.setHovered(r, {
fromLayers: 1
})
},
handleHoverOut: function(t) {
t.stopPropagation();
var e = this.em,
n = this.config;
e && n.showHover && e.setHovered(0, {
fromLayers: 1
})
},
startSort: function(t) {
t.stopPropagation();
var e = this.em,
n = this.sorter;
t.button && 0 !== t.button || n && (n.onStart = function(t) {
return e.trigger("".concat(c.eventDrag, ":start"), t)
}, n.onMoveClb = function(t) {
return e.trigger(c.eventDrag, t)
}, n.startSort(t.target))
},
freeze: function() {
this.$el.addClass(this.pfx + "opac50"), this.model.set("open", 0)
},
unfreeze: function() {
this.$el.removeClass(this.pfx + "opac50")
},
updateStatus: function(t) {
l.default.prototype.updateStatus.apply(this, [{
avoidHover: !this.config.highlightHover
}])
},
isVisible: function() {
var t = this.model.getStyle().display;
return !(t && "none" === t)
},
checkChildren: function() {
var t = this.model,
e = this.clsNoChild,
n = this.countChildren(t),
r = this.$el.children(".".concat(this.clsTitleC)).children(".".concat(this.clsTitle)),
i = this.cnt;
i || (i = this.$el.children("[data-count]").get(0), this.cnt = i), r[n ? "removeClass" : "addClass"](e), i && (i.innerHTML = n || ""), !n && t.set("open", 0)
},
countChildren: function(t) {
var e = 0;
return t.get("components").each(function(t) {
var n = this.opt.isCountable,
r = this.config.hideTextnode;
n && !n(t, r) || e++
}, this), e
},
getCaret: function() {
return this.caret && this.caret.length || (this.pfx, this.caret = this.$el.children(".".concat(this.clsTitleC)).find(".".concat(this.clsCaret))), this.caret
},
setRoot: function(t) {
t = Object(i.isString)(t) ? this.em.getWrapper().find(t)[0] : t;
var e = Object(o.g)(t, d);
e && (this.stopListening(), this.model = e, this.initialize(this.opt), this.render())
},
updateLayerable: function() {
(this.parentView || this).render()
},
render: function() {
var t = this.model,
e = this.config,
o = this.pfx,
a = this.ppfx,
s = this.opt.isCountable,
l = s && !s(t, e.hideTextnode),
c = this.isVisible(),
u = this.$el.empty(),
d = this.level + 1;
Object(i.isUndefined)(r) && (r = n(90).default);
var h = new r({
collection: t.get("components"),
config: this.config,
sorter: this.sorter,
opened: this.opt.opened,
parentView: this,
parent: t,
level: d
}).render().$el;
return this.config.showWrapper || 1 !== d ? (u.html(this.template(t)), u.find(".".concat(this.clsChildren)).append(h)) : u.append(h), t.get("draggable") && this.config.sortable || u.children(".".concat(this.clsMove)).remove(), !c && (this.className += " ".concat(o, "hide")), l && (this.className += " ".concat(a, "hidden")), u.attr("class", this.className), this.updateOpening(), this.updateStatus(), this.updateVisibility(), this
}
})
}, function(t, e, n) {
"use strict";
var r = n(1),
i = n.n(r),
o = i.a.View.extend({
tagName: "style",
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.config = t.config || {};
var e = this.model;
this.listenTo(e, "change:style change:state change:mediaText", this.render), this.listenTo(e, "destroy remove", this.remove), this.listenTo(e.get("selectors"), "change", this.render)
},
render: function() {
var t = this.model.get("important");
return this.el.innerHTML = this.model.toCSS({
important: t
}), this
}
}),
a = o.extend({
_createElement: function(t) {
return document.createTextNode("")
},
render: function() {
var t = this.model,
e = t.get("important");
return this.el.textContent = t.getDeclaration({
important: e
}), this
}
}),
s = i.a.$,
l = function(t, e) {
return "".concat(t).concat(e ? "-".concat(parseFloat(e)) : "")
};
e.a = i.a.View.extend({
initialize: function(t) {
var e = t.config || {};
this.atRules = {}, this.config = e, this.em = e.em, this.pfx = e.stylePrefix || "", this.className = this.pfx + "rules";
var n = this.collection;
this.listenTo(n, "add", this.addTo), this.listenTo(n, "reset", this.render)
},
addTo: function(t) {
this.addToCollection(t)
},
addToCollection: function(t, e) {
if (this.renderStarted) {
var n, r, i = e || null,
s = {
model: t,
config: this.config
};
if ("keyframes" === t.get("atRuleType")) {
var c = t.getAtRule(),
u = this.atRules[c];
if (!u) {
var d = document.createElement("style");
u = document.createTextNode(""), d.appendChild(document.createTextNode("".concat(c, "{"))), d.appendChild(u), d.appendChild(document.createTextNode("}")), this.atRules[c] = u, n = d
}
r = new a(s), u.appendData(r.render().el.textContent)
} else n = (r = new o(s)).render().el;
var h = this.className,
f = t.get("mediaText"),
p = l(h),
g = p;
if (f && (g = l(h, this.getMediaWidth(f))), n) {
var v, m = i || this.el;
try {
v = m.querySelector("#".concat(g))
} catch (t) {}
v || (v = m.querySelector("#".concat(p))), v.appendChild(n)
}
return n
}
},
getMediaWidth: function(t) {
return t && t.replace("(".concat(this.em.getConfig("mediaCondition"), ": "), "").replace(")", "")
},
render: function() {
var t = this;
this.renderStarted = 1, this.atRules = {};
var e = this.em,
n = this.$el,
r = this.className,
i = this.collection,
o = document.createDocumentFragment();
n.empty();
var a = e.get("DeviceManager").getAll().pluck("priority");
return a.every(function(t) {
return t
}) && a.unshift(0), a.forEach(function(t) {
return s('<div id="'.concat(l(r, t), '"></div>')).appendTo(o)
}), i.each(function(e) {
return t.addToCollection(e, o)
}), n.append(o), n.attr("class", r), this
}
})
}, function(t, e, n) {
"use strict";
var r = n(2),
i = n.n(r),
o = n(1),
a = n.n(o),
s = n(0),
l = n(8),
c = n.n(l),
u = n(18);
function d(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function h(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? d(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var f = a.a.$;
! function(t, e) {
var n = {
beforeShow: d,
move: d,
change: d,
show: d,
hide: d,
color: !1,
flat: !1,
showInput: !1,
allowEmpty: !1,
showButtons: !0,
clickoutFiresChange: !0,
showInitial: !1,
showPalette: !1,
showPaletteOnly: !1,
hideAfterPaletteSelect: !1,
togglePaletteOnly: !1,
showSelectionPalette: !0,
localStorageKey: !1,
appendTo: "body",
maxSelectionSize: 7,
cancelText: "cancel",
chooseText: "choose",
togglePaletteMoreText: "more",
togglePaletteLessText: "less",
clearText: "Clear Color Selection",
noColorSelectedText: "No Color Selected",
preferredFormat: !1,
className: "",
containerClassName: "",
replacerClassName: "",
showAlpha: !1,
theme: "sp-light",
palette: [
["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]
],
selectionPalette: [],
disabled: !1,
offset: null
},
r = [],
i = !!/msie/i.exec(window.navigator.userAgent),
o = function() {
function t(t, e) {
return !!~("" + t).indexOf(e)
}
var e = document.createElement("div").style;
return e.cssText = "background-color:rgba(0,0,0,.5)", t(e.backgroundColor, "rgba") || t(e.backgroundColor, "hsla")
}(),
a = ["<div class='sp-replacer'>", "<div class='sp-preview'><div class='sp-preview-inner'></div></div>", "<div class='sp-dd'>▼</div>", "</div>"].join(""),
s = function() {
var t = "";
if (i)
for (var e = 1; e <= 6; e++) t += "<div class='sp-" + e + "'></div>";
return ["<div class='sp-container sp-hidden'>", "<div class='sp-palette-container'>", "<div class='sp-palette sp-thumb sp-cf'></div>", "<div class='sp-palette-button-container sp-cf'>", "<button type='button' class='sp-palette-toggle'></button>", "</div>", "</div>", "<div class='sp-picker-container'>", "<div class='sp-top sp-cf'>", "<div class='sp-fill'></div>", "<div class='sp-top-inner'>", "<div class='sp-color'>", "<div class='sp-sat'>", "<div class='sp-val'>", "<div class='sp-dragger'></div>", "</div>", "</div>", "</div>", "<div class='sp-clear sp-clear-display'>", "</div>", "<div class='sp-hue'>", "<div class='sp-slider'></div>", t, "</div>", "</div>", "<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>", "</div>", "<div class='sp-input-container sp-cf'>", "<input class='sp-input' type='text' spellcheck='false' />", "</div>", "<div class='sp-initial sp-thumb sp-cf'></div>", "<div class='sp-button-container sp-cf'>", "<a class='sp-cancel' href='#'></a>", "<button type='button' class='sp-choose'></button>", "</div>", "</div>", "</div>"].join("")
}();
function l(e, n, r, i) {
for (var a = [], s = 0; s < e.length; s++) {
var l = e[s];
if (l) {
var c = k(l),
u = c.toHsl().l < .5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light";
u += k.equals(n, l) ? " sp-thumb-active" : "";
var d = c.toString(i.preferredFormat || "rgb"),
h = o ? "background-color:" + c.toRgbString() : "filter:" + c.toFilter();
a.push('<span title="' + d + '" data-color="' + c.toRgbString() + '" class="' + u + '"><span class="sp-thumb-inner" style="' + h + ';"></span></span>')
} else a.push(t("<div />").append(t('<span data-color="" style="background-color:transparent;" class="sp-clear-display"></span>').attr("title", i.noColorSelectedText)).html())
}
return "<div class='sp-cf " + r + "'>" + a.join("") + "</div>"
}
function u(c, u) {
var d, v, m = function(e, r) {
var i = t.extend({}, n, e);
return i.callbacks = {
move: f(i.move, r),
change: f(i.change, r),
show: f(i.show, r),
hide: f(i.hide, r),
beforeShow: f(i.beforeShow, r)
}, i
}(u, c),
b = m.flat,
y = m.showSelectionPalette,
w = m.localStorageKey,
x = m.theme,
O = m.callbacks,
C = (d = $t, 10, function() {
var t = this,
e = arguments;
v || (v = setTimeout(function() {
v = null, d.apply(t, e)
}, 10))
}),
S = !1,
j = !1,
T = 0,
P = 0,
E = 0,
M = 0,
D = 0,
A = 0,
L = 0,
_ = 0,
N = 0,
I = 0,
F = 1,
V = [],
R = [],
z = {},
H = m.selectionPalette.slice(0),
$ = m.maxSelectionSize,
U = "sp-dragging",
B = null,
W = c.ownerDocument,
q = (W.body, t(c)),
G = !1,
K = t(s, W).addClass(x),
Y = K.find(".sp-picker-container"),
X = K.find(".sp-color"),
J = K.find(".sp-dragger"),
Z = K.find(".sp-hue"),
Q = K.find(".sp-slider"),
tt = K.find(".sp-alpha-inner"),
et = K.find(".sp-alpha"),
nt = K.find(".sp-alpha-handle"),
rt = K.find(".sp-input"),
it = K.find(".sp-palette"),
ot = K.find(".sp-initial"),
at = K.find(".sp-cancel"),
st = K.find(".sp-clear"),
lt = K.find(".sp-choose"),
ct = K.find(".sp-palette-toggle"),
ut = q.is("input"),
dt = ut && "color" === q.attr("type") && g(),
ht = ut && !b,
ft = ht ? t(a).addClass(x).addClass(m.className).addClass(m.replacerClassName) : t([]),
pt = ht ? ft : q,
gt = ft.find(".sp-preview-inner"),
vt = m.color || ut && q.val(),
mt = !1,
bt = m.preferredFormat,
yt = !m.showButtons || m.clickoutFiresChange,
wt = !vt,
xt = m.allowEmpty && !dt;
function Ot() {
if (m.showPaletteOnly && (m.showPalette = !0), ct.text(m.showPaletteOnly ? m.togglePaletteMoreText : m.togglePaletteLessText), m.palette) {
V = m.palette.slice(0), R = t.isArray(V[0]) ? V : [V], z = {};
for (var e = 0; e < R.length; e++)
for (var n = 0; n < R[e].length; n++) {
var r = k(R[e][n]).toRgbString();
z[r] = !0
}
}
K.toggleClass("sp-flat", b), K.toggleClass("sp-input-disabled", !m.showInput), K.toggleClass("sp-alpha-enabled", m.showAlpha), K.toggleClass("sp-clear-enabled", xt), K.toggleClass("sp-buttons-disabled", !m.showButtons), K.toggleClass("sp-palette-buttons-disabled", !m.togglePaletteOnly), K.toggleClass("sp-palette-disabled", !m.showPalette), K.toggleClass("sp-palette-only", m.showPaletteOnly), K.toggleClass("sp-initial-disabled", !m.showInitial), K.addClass(m.className).addClass(m.containerClassName), $t()
}
function Ct() {
if (w && window.localStorage) {
try {
var e = window.localStorage[w].split(",#");
e.length > 1 && (delete window.localStorage[w], t.each(e, function(t, e) {
St(e)
}))
} catch (t) {}
try {
H = window.localStorage[w].split(";")
} catch (t) {}
}
}
function St(e) {
if (y) {
var n = k(e).toRgbString();
if (!z[n] && -1 === t.inArray(n, H))
for (H.push(n); H.length > $;) H.shift();
if (w && window.localStorage) try {
window.localStorage[w] = H.join(";")
} catch (t) {}
}
}
function kt() {
var e = Ft(),
n = t.map(R, function(t, n) {
return l(t, e, "sp-palette-row sp-palette-row-" + n, m)
});
Ct(), H && n.push(l(function() {
var t = [];
if (m.showPalette)
for (var e = 0; e < H.length; e++) {
var n = k(H[e]).toRgbString();
z[n] || t.push(H[e])
}
return t.reverse().slice(0, m.maxSelectionSize)
}(), e, "sp-palette-row sp-palette-row-selection", m)), it.html(n.join(""))
}
function jt() {
if (m.showInitial) {
var t = mt,
e = Ft();
ot.html(l([t, e], e, "sp-palette-row-initial", m))
}
}
function Tt() {
(P <= 0 || T <= 0 || M <= 0) && $t(), j = !0, K.addClass(U), B = null, q.trigger("dragstart.spectrum", [Ft()])
}
function Pt() {
j = !1, K.removeClass(U), q.trigger("dragstop.spectrum", [Ft()])
}
function Et() {
var t = rt.val();
if (null !== t && "" !== t || !xt) {
var e = k(t);
e.isValid() ? (It(e), Ht(!0)) : rt.addClass("sp-validation-error")
} else It(null), Ht(!0)
}
function Mt() {
S ? _t() : Dt()
}
function Dt() {
var e = t.Event("beforeShow.spectrum");
if (S) $t();
else if (q.trigger("beforeShow.spectrum", [Ft()]), !1 !== O.beforeShow(Ft()) && !e.isDefaultPrevented()) {
! function() {
for (var t = 0; t < r.length; t++) r[t] && r[t].hide()
}(), S = !0;
var n = t(W);
n.bind("keydown.spectrum", At), n.bind("click.spectrum", Lt), t(window).bind("resize.spectrum", C), ft.addClass("sp-active"), K.removeClass("sp-hidden"), $t(), Rt(), mt = Ft(), jt(), O.show(mt), q.trigger("show.spectrum", [mt])
}
}
function At(t) {
27 === t.keyCode && _t()
}
function Lt(t) {
2 != t.button && (j || (yt ? Ht(!0) : Nt(), _t()))
}
function _t() {
S && !b && (S = !1, t(W).unbind("keydown.spectrum", At), t(W).unbind("click.spectrum", Lt), t(window).unbind("resize.spectrum", C), ft.removeClass("sp-active"), K.addClass("sp-hidden"), O.hide(Ft()), q.trigger("hide.spectrum", [Ft()]))
}
function Nt() {
It(mt, !0)
}
function It(t, e) {
var n, r;
k.equals(t, Ft()) ? Rt() : (!t && xt ? wt = !0 : (wt = !1, r = (n = k(t)).toHsv(), _ = r.h % 360 / 360, N = r.s, I = r.v, F = r.a), Rt(), n && n.isValid() && !e && (bt = m.preferredFormat || n.getFormat()))
}
function Ft(t) {
return t = t || {}, xt && wt ? null : k.fromRatio({
h: _,
s: N,
v: I,
a: Math.round(100 * F) / 100
}, {
format: t.format || bt
})
}
function Vt() {
Rt(), O.move(Ft()), q.trigger("move.spectrum", [Ft()])
}
function Rt() {
rt.removeClass("sp-validation-error"), zt();
var t = k.fromRatio({
h: _,
s: 1,
v: 1
});
X.css("background-color", t.toHexString());
var e = bt;
F < 1 && (0 !== F || "name" !== e) && ("hex" !== e && "hex3" !== e && "hex6" !== e && "name" !== e || (e = "rgb"));
var n = Ft({
format: e
}),
r = "";
if (gt.removeClass("sp-clear-display"), gt.css("background-color", "transparent"), !n && xt) gt.addClass("sp-clear-display");
else {
var a = n.toHexString(),
s = n.toRgbString();
if (o || 1 === n.alpha ? gt.css("background-color", s) : (gt.css("background-color", "transparent"), gt.css("filter", n.toFilter())), m.showAlpha) {
var l = n.toRgb();
l.a = 0;
var c = k(l).toRgbString(),
u = "linear-gradient(left, " + c + ", " + a + ")";
i ? tt.css("filter", k(c).toFilter({
gradientType: 1
}, a)) : (tt.css("background", "-webkit-" + u), tt.css("background", "-moz-" + u), tt.css("background", "-ms-" + u), tt.css("background", "linear-gradient(to right, " + c + ", " + a + ")"))
}
r = n.toString(e)
}
m.showInput && rt.val(r), m.showPalette && kt(), jt()
}
function zt() {
var t = N,
e = I;
if (xt && wt) nt.hide(), Q.hide(), J.hide();
else {
nt.show(), Q.show(), J.show();
var n = t * T,
r = P - e * P;
n = Math.max(-E, Math.min(T - E, n - E)), r = Math.max(-E, Math.min(P - E, r - E)), J.css({
top: r + "px",
left: n + "px"
});
var i = F * D;
nt.css({
left: i - A / 2 + "px"
});
var o = _ * M;
Q.css({
top: o - L + "px"
})
}
}
function Ht(t) {
var e = Ft(),
n = "",
r = !k.equals(e, mt);
e && (n = e.toString(bt), St(e)), ut && q.val(n), t && r && (O.change(e), q.trigger("change", [e]))
}
function $t() {
var e, n, r, i, o, a, s, l, c, u, d, h;
S && (T = X.width(), P = X.height(), E = J.height(), Z.width(), M = Z.height(), L = Q.height(), D = et.width(), A = nt.width(), b || (K.css("position", "absolute"), m.offset ? K.offset(m.offset) : K.offset((n = pt, r = (e = K).outerWidth(), i = e.outerHeight(), o = n.outerHeight(), a = e[0].ownerDocument, s = a.documentElement, l = s.clientWidth, c = s.clientHeight, u = l + t(a).scrollLeft(), d = c + t(a).scrollTop(), (h = n.offset()).top += o, h.left -= Math.min(h.left, h.left + r > u && u > r ? Math.abs(h.left + r - u) : 0), h.top -= Math.min(h.top, h.top + i > d && d > i ? Math.abs(i + o - 0) : 0), h))), zt(), m.showPalette && kt(), q.trigger("reflow.spectrum"))
}
function Ut() {
_t(), G = !0, q.attr("disabled", !0), pt.addClass("sp-disabled")
}! function() {
if (i && K.find("*:not(input)").attr("unselectable", "on"), Ot(), ht && q.after(ft).hide(), xt || st.hide(), b) q.after(K).hide();
else {
var e = "parent" === m.appendTo ? q.parent() : t(m.appendTo);
1 !== e.length && (e = t("body")), e.append(K)
}
function n(e) {
return e.data && e.data.ignore ? (It(t(e.target).closest(".sp-thumb-el").data("color")), Vt()) : (It(t(e.target).closest(".sp-thumb-el").data("color")), Vt(), Ht(!0), m.hideAfterPaletteSelect && _t()), !1
}
Ct(), pt.bind("click.spectrum touchstart.spectrum", function(e) {
G || Mt(), e.stopPropagation(), t(e.target).is("input") || e.preventDefault()
}), (q.is(":disabled") || !0 === m.disabled) && Ut(), K.click(h), rt.change(Et), rt.bind("paste", function() {
setTimeout(Et, 1)
}), rt.keydown(function(t) {
13 == t.keyCode && Et()
}), at.text(m.cancelText), at.bind("click.spectrum", function(t) {
t.stopPropagation(), t.preventDefault(), Nt(), _t()
}), st.attr("title", m.clearText), st.bind("click.spectrum", function(t) {
t.stopPropagation(), t.preventDefault(), wt = !0, Vt(), b && Ht(!0)
}), lt.text(m.chooseText), lt.bind("click.spectrum", function(t) {
t.stopPropagation(), t.preventDefault(), i && rt.is(":focus") && rt.trigger("change"), rt.hasClass("sp-validation-error") || (Ht(!0), _t())
}), ct.text(m.showPaletteOnly ? m.togglePaletteMoreText : m.togglePaletteLessText), ct.bind("click.spectrum", function(t) {
t.stopPropagation(), t.preventDefault(), m.showPaletteOnly = !m.showPaletteOnly, m.showPaletteOnly || b || K.css("left", "-=" + (Y.outerWidth(!0) + 5)), Ot()
}), p(et, function(t, e, n) {
F = t / D, wt = !1, n.shiftKey && (F = Math.round(10 * F) / 10), Vt()
}, Tt, Pt), p(Z, function(t, e) {
_ = parseFloat(e / M), wt = !1, m.showAlpha || (F = 1), Vt()
}, Tt, Pt), p(X, function(t, e, n) {
if (n.shiftKey) {
if (!B) {
var r = N * T,
i = P - I * P,
o = Math.abs(t - r) > Math.abs(e - i);
B = o ? "x" : "y"
}
} else B = null;
var a = !B || "y" === B;
(!B || "x" === B) && (N = parseFloat(t / T)), a && (I = parseFloat((P - e) / P)), wt = !1, m.showAlpha || (F = 1), Vt()
}, Tt, Pt), vt ? (It(vt), Rt(), bt = m.preferredFormat || k(vt).format, St(vt)) : Rt(), b && Dt();
var r = i ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum";
it.delegate(".sp-thumb-el", r, n), ot.delegate(".sp-thumb-el:nth-child(1)", r, {
ignore: !0
}, n)
}();
var Bt = {
show: Dt,
hide: _t,
toggle: Mt,
reflow: $t,
option: function(n, r) {
return n === e ? t.extend({}, m) : r === e ? m[n] : (m[n] = r, "preferredFormat" === n && (bt = m.preferredFormat), void Ot())
},
enable: function() {
G = !1, q.attr("disabled", !1), pt.removeClass("sp-disabled")
},
disable: Ut,
offset: function(t) {
m.offset = t, $t()
},
set: function(t) {
It(t), Ht()
},
get: Ft,
destroy: function() {
q.show(), pt.unbind("click.spectrum touchstart.spectrum"), K.remove(), ft.remove(), r[Bt.id] = null
},
container: K
};
return Bt.id = r.push(Bt) - 1, Bt
}
function d() {}
function h(t) {
t.stopPropagation()
}
function f(t, e) {
var n = Array.prototype.slice,
r = n.call(arguments, 2);
return function() {
return t.apply(e, r.concat(n.call(arguments)))
}
}
function p(e, n, r, o) {
n = n || function() {}, r = r || function() {}, o = o || function() {};
var a = document,
s = !1,
l = {},
c = 0,
u = 0,
d = "ontouchstart" in window,
h = {};
function f(t) {
t.stopPropagation && t.stopPropagation(), t.preventDefault && t.preventDefault(), t.returnValue = !1
}
function p(t) {
if (s) {
if (i && a.documentMode < 9 && !t.button) return g();
var r = t && t.touches && t.touches[0],
o = r && r.pageX || t.pageX,
h = r && r.pageY || t.pageY,
p = Math.max(0, Math.min(o - l.left, u)),
v = Math.max(0, Math.min(h - l.top, c));
d && f(t), n.apply(e, [p, v, t])
}
}
function g() {
s && (t(a).unbind(h), t(a.body).removeClass("sp-dragging"), setTimeout(function() {
o.apply(e, arguments)
}, 0)), s = !1
}
h.selectstart = f, h.dragstart = f, h["touchmove mousemove"] = p, h["touchend mouseup"] = g, t(e).bind("touchstart mousedown", function(n) {
(n.which ? 3 == n.which : 2 == n.button) || s || !1 !== r.apply(e, arguments) && (s = !0, c = t(e).height(), u = t(e).width(), l = t(e).offset(), t(a).bind(h), t(a.body).addClass("sp-dragging"), p(n), f(n))
})
}
function g() {
return t.fn.spectrum.inputTypeColorSupport()
}
var v = "spectrum.id";
t.fn.spectrum = function(e, n) {
if ("string" == typeof e) {
var i = this,
o = Array.prototype.slice.call(arguments, 1);
return this.each(function() {
var n = r[t(this).data(v)];
if (n) {
var a = n[e];
if (!a) throw new Error("Spectrum: no such method: '" + e + "'");
"get" == e ? i = n.get() : "container" == e ? i = n.container : "option" == e ? i = n.option.apply(n, o) : "destroy" == e ? (n.destroy(), t(this).removeData(v)) : a.apply(n, o)
}
}), i
}
return this.spectrum("destroy").each(function() {
var n = u(this, t.extend({}, e, t(this).data()));
t(this).data(v, n.id)
})
}, t.fn.spectrum.load = !0, t.fn.spectrum.loadOpts = {}, t.fn.spectrum.draggable = p, t.fn.spectrum.defaults = n, t.fn.spectrum.inputTypeColorSupport = function e() {
if (void 0 === e._cachedResult) {
var n = t("<input type='color'/>")[0];
e._cachedResult = "color" === n.type && "" !== n.value
}
return e._cachedResult
}, t.spectrum = {}, t.spectrum.localization = {}, t.spectrum.palettes = {}, t.fn.spectrum.processNativeColorInputs = function() {
var e = t("input[type=color]");
e.length && !g() && e.spectrum({
preferredFormat: "hex6"
})
};
var m = /^[\s,#]+/,
b = /\s+$/,
y = 0,
w = Math,
x = w.round,
O = w.min,
C = w.max,
S = w.random,
k = function t(e, n) {
if (n = n || {}, (e = e || "") instanceof t) return e;
if (!(this instanceof t)) return new t(e, n);
var r = function(t) {
var e, n, r, i = {
r: 0,
g: 0,
b: 0
},
o = 1,
a = !1,
s = !1;
return "string" == typeof t && (t = function(t) {
t = t.replace(m, "").replace(b, "").toLowerCase();
var e, n, r = !1;
if (U[t]) t = U[t], r = !0;
else if ("transparent" == t) return {
r: 0,
g: 0,
b: 0,
a: 0,
format: "name"
};
return (e = tt.rgb.exec(t)) ? {
r: e[1],
g: e[2],
b: e[3]
} : (e = tt.rgba.exec(t)) ? {
r: e[1],
g: e[2],
b: e[3],
a: e[4]
} : (e = tt.hsl.exec(t)) ? {
h: e[1],
s: e[2],
l: e[3]
} : (e = tt.hsla.exec(t)) ? {
h: e[1],
s: e[2],
l: e[3],
a: e[4]
} : (e = tt.hsv.exec(t)) ? {
h: e[1],
s: e[2],
v: e[3]
} : (e = tt.hsva.exec(t)) ? {
h: e[1],
s: e[2],
v: e[3],
a: e[4]
} : (e = tt.hex8.exec(t)) ? {
a: (n = e[1], K(n) / 255),
r: K(e[2]),
g: K(e[3]),
b: K(e[4]),
format: r ? "name" : "hex8"
} : (e = tt.hex6.exec(t)) ? {
r: K(e[1]),
g: K(e[2]),
b: K(e[3]),
format: r ? "name" : "hex"
} : !!(e = tt.hex3.exec(t)) && {
r: K(e[1] + "" + e[1]),
g: K(e[2] + "" + e[2]),
b: K(e[3] + "" + e[3]),
format: r ? "name" : "hex"
}
}(t)), "object" == c()(t) && (t.hasOwnProperty("r") && t.hasOwnProperty("g") && t.hasOwnProperty("b") ? (e = t.r, n = t.g, r = t.b, i = {
r: 255 * q(e, 255),
g: 255 * q(n, 255),
b: 255 * q(r, 255)
}, a = !0, s = "%" === String(t.r).substr(-1) ? "prgb" : "rgb") : t.hasOwnProperty("h") && t.hasOwnProperty("s") && t.hasOwnProperty("v") ? (t.s = X(t.s), t.v = X(t.v), i = function(t, e, n) {
t = 6 * q(t, 360), e = q(e, 100), n = q(n, 100);
var r = w.floor(t),
i = t - r,
o = n * (1 - e),
a = n * (1 - i * e),
s = n * (1 - (1 - i) * e),
l = r % 6;
return {
r: 255 * [n, a, o, o, s, n][l],
g: 255 * [s, n, n, a, o, o][l],
b: 255 * [o, o, s, n, n, a][l]
}
}(t.h, t.s, t.v), a = !0, s = "hsv") : t.hasOwnProperty("h") && t.hasOwnProperty("s") && t.hasOwnProperty("l") && (t.s = X(t.s), t.l = X(t.l), i = function(t, e, n) {
var r, i, o;
function a(t, e, n) {
return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? t + 6 * (e - t) * n : n < .5 ? e : n < 2 / 3 ? t + (e - t) * (2 / 3 - n) * 6 : t
}
if (t = q(t, 360), e = q(e, 100), n = q(n, 100), 0 === e) r = i = o = n;
else {
var s = n < .5 ? n * (1 + e) : n + e - n * e,
l = 2 * n - s;
r = a(l, s, t + 1 / 3), i = a(l, s, t), o = a(l, s, t - 1 / 3)
}
return {
r: 255 * r,
g: 255 * i,
b: 255 * o
}
}(t.h, t.s, t.l), a = !0, s = "hsl"), t.hasOwnProperty("a") && (o = t.a)), o = W(o), {
ok: a,
format: t.format || s,
r: O(255, C(i.r, 0)),
g: O(255, C(i.g, 0)),
b: O(255, C(i.b, 0)),
a: o
}
}(e);
this._originalInput = e, this._r = r.r, this._g = r.g, this._b = r.b, this._a = r.a, this._roundA = x(100 * this._a) / 100, this._format = n.format || r.format, this._gradientType = n.gradientType, this._r < 1 && (this._r = x(this._r)), this._g < 1 && (this._g = x(this._g)), this._b < 1 && (this._b = x(this._b)), this._ok = r.ok, this._tc_id = y++
};
function j(t, e, n) {
t = q(t, 255), e = q(e, 255), n = q(n, 255);
var r, i, o = C(t, e, n),
a = O(t, e, n),
s = (o + a) / 2;
if (o == a) r = i = 0;
else {
var l = o - a;
switch (i = s > .5 ? l / (2 - o - a) : l / (o + a), o) {
case t:
r = (e - n) / l + (e < n ? 6 : 0);
break;
case e:
r = (n - t) / l + 2;
break;
case n:
r = (t - e) / l + 4
}
r /= 6
}
return {
h: r,
s: i,
l: s
}
}
function T(t, e, n) {
t = q(t, 255), e = q(e, 255), n = q(n, 255);
var r, i, o = C(t, e, n),
a = O(t, e, n),
s = o,
l = o - a;
if (i = 0 === o ? 0 : l / o, o == a) r = 0;
else {
switch (o) {
case t:
r = (e - n) / l + (e < n ? 6 : 0);
break;
case e:
r = (n - t) / l + 2;
break;
case n:
r = (t - e) / l + 4
}
r /= 6
}
return {
h: r,
s: i,
v: s
}
}
function P(t, e, n, r) {
var i = [Y(x(t).toString(16)), Y(x(e).toString(16)), Y(x(n).toString(16))];
return r && i[0].charAt(0) == i[0].charAt(1) && i[1].charAt(0) == i[1].charAt(1) && i[2].charAt(0) == i[2].charAt(1) ? i[0].charAt(0) + i[1].charAt(0) + i[2].charAt(0) : i.join("")
}
function E(t, e, n, r) {
var i;
return [Y((i = r, Math.round(255 * parseFloat(i)).toString(16))), Y(x(t).toString(16)), Y(x(e).toString(16)), Y(x(n).toString(16))].join("")
}
function M(t, e) {
e = 0 === e ? 0 : e || 10;
var n = k(t).toHsl();
return n.s -= e / 100, n.s = G(n.s), k(n)
}
function D(t, e) {
e = 0 === e ? 0 : e || 10;
var n = k(t).toHsl();
return n.s += e / 100, n.s = G(n.s), k(n)
}
function A(t) {
return k(t).desaturate(100)
}
function L(t, e) {
e = 0 === e ? 0 : e || 10;
var n = k(t).toHsl();
return n.l += e / 100, n.l = G(n.l), k(n)
}
function _(t, e) {
e = 0 === e ? 0 : e || 10;
var n = k(t).toRgb();
return n.r = C(0, O(255, n.r - x(-e / 100 * 255))), n.g = C(0, O(255, n.g - x(-e / 100 * 255))), n.b = C(0, O(255, n.b - x(-e / 100 * 255))), k(n)
}
function N(t, e) {
e = 0 === e ? 0 : e || 10;
var n = k(t).toHsl();
return n.l -= e / 100, n.l = G(n.l), k(n)
}
function I(t, e) {
var n = k(t).toHsl(),
r = (x(n.h) + e) % 360;
return n.h = r < 0 ? 360 + r : r, k(n)
}
function F(t) {
var e = k(t).toHsl();
return e.h = (e.h + 180) % 360, k(e)
}
function V(t) {
var e = k(t).toHsl(),
n = e.h;
return [k(t), k({
h: (n + 120) % 360,
s: e.s,
l: e.l
}), k({
h: (n + 240) % 360,
s: e.s,
l: e.l
})]
}
function R(t) {
var e = k(t).toHsl(),
n = e.h;
return [k(t), k({
h: (n + 90) % 360,
s: e.s,
l: e.l
}), k({
h: (n + 180) % 360,
s: e.s,
l: e.l
}), k({
h: (n + 270) % 360,
s: e.s,
l: e.l
})]
}
function z(t) {
var e = k(t).toHsl(),
n = e.h;
return [k(t), k({
h: (n + 72) % 360,
s: e.s,
l: e.l
}), k({
h: (n + 216) % 360,
s: e.s,
l: e.l
})]
}
function H(t, e, n) {
e = e || 6, n = n || 30;
var r = k(t).toHsl(),
i = 360 / n,
o = [k(t)];
for (r.h = (r.h - (i * e >> 1) + 720) % 360; --e;) r.h = (r.h + i) % 360, o.push(k(r));
return o
}
function $(t, e) {
e = e || 6;
for (var n = k(t).toHsv(), r = n.h, i = n.s, o = n.v, a = [], s = 1 / e; e--;) a.push(k({
h: r,
s: i,
v: o
})), o = (o + s) % 1;
return a
}
k.prototype = {
isDark: function() {
return this.getBrightness() < 128
},
isLight: function() {
return !this.isDark()
},
isValid: function() {
return this._ok
},
getOriginalInput: function() {
return this._originalInput
},
getFormat: function() {
return this._format
},
getAlpha: function() {
return this._a
},
getBrightness: function() {
var t = this.toRgb();
return (299 * t.r + 587 * t.g + 114 * t.b) / 1e3
},
setAlpha: function(t) {
return this._a = W(t), this._roundA = x(100 * this._a) / 100, this
},
toHsv: function() {
var t = T(this._r, this._g, this._b);
return {
h: 360 * t.h,
s: t.s,
v: t.v,
a: this._a
}
},
toHsvString: function() {
var t = T(this._r, this._g, this._b),
e = x(360 * t.h),
n = x(100 * t.s),
r = x(100 * t.v);
return 1 == this._a ? "hsv(" + e + ", " + n + "%, " + r + "%)" : "hsva(" + e + ", " + n + "%, " + r + "%, " + this._roundA + ")"
},
toHsl: function() {
var t = j(this._r, this._g, this._b);
return {
h: 360 * t.h,
s: t.s,
l: t.l,
a: this._a
}
},
toHslString: function() {
var t = j(this._r, this._g, this._b),
e = x(360 * t.h),
n = x(100 * t.s),
r = x(100 * t.l);
return 1 == this._a ? "hsl(" + e + ", " + n + "%, " + r + "%)" : "hsla(" + e + ", " + n + "%, " + r + "%, " + this._roundA + ")"
},
toHex: function(t) {
return P(this._r, this._g, this._b, t)
},
toHexString: function(t) {
return "#" + this.toHex(t)
},
toHex8: function() {
return E(this._r, this._g, this._b, this._a)
},
toHex8String: function() {
return "#" + this.toHex8()
},
toRgb: function() {
return {
r: x(this._r),
g: x(this._g),
b: x(this._b),
a: this._a
}
},
toRgbString: function() {
return 1 == this._a ? "rgb(" + x(this._r) + ", " + x(this._g) + ", " + x(this._b) + ")" : "rgba(" + x(this._r) + ", " + x(this._g) + ", " + x(this._b) + ", " + this._roundA + ")"
},
toPercentageRgb: function() {
return {
r: x(100 * q(this._r, 255)) + "%",
g: x(100 * q(this._g, 255)) + "%",
b: x(100 * q(this._b, 255)) + "%",
a: this._a
}
},
toPercentageRgbString: function() {
return 1 == this._a ? "rgb(" + x(100 * q(this._r, 255)) + "%, " + x(100 * q(this._g, 255)) + "%, " + x(100 * q(this._b, 255)) + "%)" : "rgba(" + x(100 * q(this._r, 255)) + "%, " + x(100 * q(this._g, 255)) + "%, " + x(100 * q(this._b, 255)) + "%, " + this._roundA + ")"
},
toName: function() {
return 0 === this._a ? "transparent" : !(this._a < 1) && (B[P(this._r, this._g, this._b, !0)] || !1)
},
toFilter: function(t) {
var e = "#" + E(this._r, this._g, this._b, this._a),
n = e,
r = this._gradientType ? "GradientType = 1, " : "";
return t && (n = k(t).toHex8String()), "progid:DXImageTransform.Microsoft.gradient(" + r + "startColorstr=" + e + ",endColorstr=" + n + ")"
},
toString: function(t) {
var e = !!t;
t = t || this._format;
var n = !1,
r = this._a < 1 && this._a >= 0;
return e || !r || "hex" !== t && "hex6" !== t && "hex3" !== t && "name" !== t ? ("rgb" === t && (n = this.toRgbString()), "prgb" === t && (n = this.toPercentageRgbString()), "hex" !== t && "hex6" !== t || (n = this.toHexString()), "hex3" === t && (n = this.toHexString(!0)), "hex8" === t && (n = this.toHex8String()), "name" === t && (n = this.toName()), "hsl" === t && (n = this.toHslString()), "hsv" === t && (n = this.toHsvString()), n || this.toHexString()) : "name" === t && 0 === this._a ? this.toName() : this.toRgbString()
},
_applyModification: function(t, e) {
var n = t.apply(null, [this].concat([].slice.call(e)));
return this._r = n._r, this._g = n._g, this._b = n._b, this.setAlpha(n._a), this
},
lighten: function() {
return this._applyModification(L, arguments)
},
brighten: function() {
return this._applyModification(_, arguments)
},
darken: function() {
return this._applyModification(N, arguments)
},
desaturate: function() {
return this._applyModification(M, arguments)
},
saturate: function() {
return this._applyModification(D, arguments)
},
greyscale: function() {
return this._applyModification(A, arguments)
},
spin: function() {
return this._applyModification(I, arguments)
},
_applyCombination: function(t, e) {
return t.apply(null, [this].concat([].slice.call(e)))
},
analogous: function() {
return this._applyCombination(H, arguments)
},
complement: function() {
return this._applyCombination(F, arguments)
},
monochromatic: function() {
return this._applyCombination($, arguments)
},
splitcomplement: function() {
return this._applyCombination(z, arguments)
},
triad: function() {
return this._applyCombination(V, arguments)
},
tetrad: function() {
return this._applyCombination(R, arguments)
}
}, k.fromRatio = function(t, e) {
if ("object" == c()(t)) {
var n = {};
for (var r in t) t.hasOwnProperty(r) && (n[r] = "a" === r ? t[r] : X(t[r]));
t = n
}
return k(t, e)
}, k.equals = function(t, e) {
return !(!t || !e) && k(t).toRgbString() == k(e).toRgbString()
}, k.random = function() {
return k.fromRatio({
r: S(),
g: S(),
b: S()
})
}, k.mix = function(t, e, n) {
n = 0 === n ? 0 : n || 50;
var r, i = k(t).toRgb(),
o = k(e).toRgb(),
a = n / 100,
s = 2 * a - 1,
l = o.a - i.a,
c = 1 - (r = ((r = s * l == -1 ? s : (s + l) / (1 + s * l)) + 1) / 2),
u = {
r: o.r * r + i.r * c,
g: o.g * r + i.g * c,
b: o.b * r + i.b * c,
a: o.a * a + i.a * (1 - a)
};
return k(u)
}, k.readability = function(t, e) {
var n = k(t),
r = k(e),
i = n.toRgb(),
o = r.toRgb(),
a = n.getBrightness(),
s = r.getBrightness(),
l = Math.max(i.r, o.r) - Math.min(i.r, o.r) + Math.max(i.g, o.g) - Math.min(i.g, o.g) + Math.max(i.b, o.b) - Math.min(i.b, o.b);
return {
brightness: Math.abs(a - s),
color: l
}
}, k.isReadable = function(t, e) {
var n = k.readability(t, e);
return n.brightness > 125 && n.color > 500
}, k.mostReadable = function(t, e) {
for (var n = null, r = 0, i = !1, o = 0; o < e.length; o++) {
var a = k.readability(t, e[o]),
s = a.brightness > 125 && a.color > 500,
l = a.brightness / 125 * 3 + a.color / 500;
(s && !i || s && i && l > r || !s && !i && l > r) && (i = s, r = l, n = k(e[o]))
}
return n
};
var U = k.names = {
aliceblue: "f0f8ff",
antiquewhite: "faebd7",
aqua: "0ff",
aquamarine: "7fffd4",
azure: "f0ffff",
beige: "f5f5dc",
bisque: "ffe4c4",
black: "000",
blanchedalmond: "ffebcd",
blue: "00f",
blueviolet: "8a2be2",
brown: "a52a2a",
burlywood: "deb887",
burntsienna: "ea7e5d",
cadetblue: "5f9ea0",
chartreuse: "7fff00",
chocolate: "d2691e",
coral: "ff7f50",
cornflowerblue: "6495ed",
cornsilk: "fff8dc",
crimson: "dc143c",
cyan: "0ff",
darkblue: "00008b",
darkcyan: "008b8b",
darkgoldenrod: "b8860b",
darkgray: "a9a9a9",
darkgreen: "006400",
darkgrey: "a9a9a9",
darkkhaki: "bdb76b",
darkmagenta: "8b008b",
darkolivegreen: "556b2f",
darkorange: "ff8c00",
darkorchid: "9932cc",
darkred: "8b0000",
darksalmon: "e9967a",
darkseagreen: "8fbc8f",
darkslateblue: "483d8b",
darkslategray: "2f4f4f",
darkslategrey: "2f4f4f",
darkturquoise: "00ced1",
darkviolet: "9400d3",
deeppink: "ff1493",
deepskyblue: "00bfff",
dimgray: "696969",
dimgrey: "696969",
dodgerblue: "1e90ff",
firebrick: "b22222",
floralwhite: "fffaf0",
forestgreen: "228b22",
fuchsia: "f0f",
gainsboro: "dcdcdc",
ghostwhite: "f8f8ff",
gold: "ffd700",
goldenrod: "daa520",
gray: "808080",
green: "008000",
greenyellow: "adff2f",
grey: "808080",
honeydew: "f0fff0",
hotpink: "ff69b4",
indianred: "cd5c5c",
indigo: "4b0082",
ivory: "fffff0",
khaki: "f0e68c",
lavender: "e6e6fa",
lavenderblush: "fff0f5",
lawngreen: "7cfc00",
lemonchiffon: "fffacd",
lightblue: "add8e6",
lightcoral: "f08080",
lightcyan: "e0ffff",
lightgoldenrodyellow: "fafad2",
lightgray: "d3d3d3",
lightgreen: "90ee90",
lightgrey: "d3d3d3",
lightpink: "ffb6c1",
lightsalmon: "ffa07a",
lightseagreen: "20b2aa",
lightskyblue: "87cefa",
lightslategray: "789",
lightslategrey: "789",
lightsteelblue: "b0c4de",
lightyellow: "ffffe0",
lime: "0f0",
limegreen: "32cd32",
linen: "faf0e6",
magenta: "f0f",
maroon: "800000",
mediumaquamarine: "66cdaa",
mediumblue: "0000cd",
mediumorchid: "ba55d3",
mediumpurple: "9370db",
mediumseagreen: "3cb371",
mediumslateblue: "7b68ee",
mediumspringgreen: "00fa9a",
mediumturquoise: "48d1cc",
mediumvioletred: "c71585",
midnightblue: "191970",
mintcream: "f5fffa",
mistyrose: "ffe4e1",
moccasin: "ffe4b5",
navajowhite: "ffdead",
navy: "000080",
oldlace: "fdf5e6",
olive: "808000",
olivedrab: "6b8e23",
orange: "ffa500",
orangered: "ff4500",
orchid: "da70d6",
palegoldenrod: "eee8aa",
palegreen: "98fb98",
paleturquoise: "afeeee",
palevioletred: "db7093",
papayawhip: "ffefd5",
peachpuff: "ffdab9",
peru: "cd853f",
pink: "ffc0cb",
plum: "dda0dd",
powderblue: "b0e0e6",
purple: "800080",
rebeccapurple: "663399",
red: "f00",
rosybrown: "bc8f8f",
royalblue: "4169e1",
saddlebrown: "8b4513",
salmon: "fa8072",
sandybrown: "f4a460",
seagreen: "2e8b57",
seashell: "fff5ee",
sienna: "a0522d",
silver: "c0c0c0",
skyblue: "87ceeb",
slateblue: "6a5acd",
slategray: "708090",
slategrey: "708090",
snow: "fffafa",
springgreen: "00ff7f",
steelblue: "4682b4",
tan: "d2b48c",
teal: "008080",
thistle: "d8bfd8",
tomato: "ff6347",
turquoise: "40e0d0",
violet: "ee82ee",
wheat: "f5deb3",
white: "fff",
whitesmoke: "f5f5f5",
yellow: "ff0",
yellowgreen: "9acd32"
},
B = k.hexNames = function(t) {
var e = {};
for (var n in t) t.hasOwnProperty(n) && (e[t[n]] = n);
return e
}(U);
function W(t) {
return t = parseFloat(t), (isNaN(t) || t < 0 || t > 1) && (t = 1), t
}
function q(t, e) {
(function(t) {
return "string" == typeof t && -1 != t.indexOf(".") && 1 === parseFloat(t)
})(t) && (t = "100%");
var n = function(t) {
return "string" == typeof t && -1 != t.indexOf("%")
}(t);
return t = O(e, C(0, parseFloat(t))), n && (t = parseInt(t * e, 10) / 100), w.abs(t - e) < 1e-6 ? 1 : t % e / parseFloat(e)
}
function G(t) {
return O(1, C(0, t))
}
function K(t) {
return parseInt(t, 16)
}
function Y(t) {
return 1 == t.length ? "0" + t : "" + t
}
function X(t) {
return t <= 1 && (t = 100 * t + "%"), t
}
var J, Z, Q, tt = (Z = "[\\s|\\(]+(" + (J = "(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)") + ")[,|\\s]+(" + J + ")[,|\\s]+(" + J + ")\\s*\\)?", Q = "[\\s|\\(]+(" + J + ")[,|\\s]+(" + J + ")[,|\\s]+(" + J + ")[,|\\s]+(" + J + ")\\s*\\)?", {
rgb: new RegExp("rgb" + Z),
rgba: new RegExp("rgba" + Q),
hsl: new RegExp("hsl" + Z),
hsla: new RegExp("hsla" + Q),
hsv: new RegExp("hsv" + Z),
hsva: new RegExp("hsva" + Q),
hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
});
window.tinycolor = k, t(function() {
t.fn.spectrum.load && t.fn.spectrum.processNativeColorInputs()
})
}(f), e.a = u.a.extend({
template: function() {
var t = this.ppfx;
return '\n <div class="'.concat(this.holderClass(), '"></div>\n <div class="').concat(t, 'field-colorp">\n <div class="').concat(t, 'field-colorp-c" data-colorp-c>\n <div class="').concat(t, 'checker-bg"></div>\n </div>\n </div>\n ')
},
inputClass: function() {
var t = this.ppfx;
return "".concat(t, "field ").concat(t, "field-color")
},
holderClass: function() {
return "".concat(this.ppfx, "input-holder")
},
remove: function() {
u.a.prototype.remove.apply(this, arguments), this.colorEl.spectrum("destroy")
},
setValue: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.model.get("defaults"),
r = Object(s.isUndefined)(t) ? Object(s.isUndefined)(n) ? "" : n : t,
i = this.getInputEl(),
o = this.getColorEl(),
a = "none" != r ? r : "";
i.value = r, o.get(0).style.backgroundColor = a, (e.fromTarget || e.fromInput && !e.avoidStore) && (o.spectrum("set", a), this.noneColor = "none" == r)
},
getColorEl: function() {
if (!this.colorEl) {
var t, e = this.em,
n = this,
r = this.ppfx,
i = this.model,
o = f('<div class="'.concat(this.ppfx, 'field-color-picker"></div>')),
a = o.get(0).style,
s = e && e.config ? e.config.el : "",
l = e && e.getConfig && e.getConfig("colorPicker") || {},
c = function(t) {
return (1 == t.getAlpha() ? t.toHexString() : t.toRgbString()).replace(/ /g, "")
},
u = 0;
this.$el.find("[data-colorp-c]").append(o), o.spectrum(h(h(h({
containerClassName: "".concat(r, "one-bg ").concat(r, "two-color"),
appendTo: s || "body",
maxSelectionSize: 8,
showPalette: !0,
showAlpha: !0,
chooseText: "Ok",
cancelText: "⨯",
palette: []
}, l), i.get("colorPicker") || {}), {}, {
move: function(t) {
var e = c(t);
a.backgroundColor = e, i.setValueFromInput(e, 0)
},
change: function(t) {
u = 1;
var e = c(t);
a.backgroundColor = e, i.setValueFromInput(0, 0), i.setValueFromInput(e), n.noneColor = 0
},
show: function(e) {
u = 0, t = c(e)
},
hide: function(e) {
!u && t && (n.noneColor && (t = ""), a.backgroundColor = t, o.spectrum("set", t), i.setValueFromInput(t, 0))
}
})), e && e.on && e.on("component:selected", function() {
u = 1, o.spectrum("hide")
}), this.colorEl = o
}
return this.colorEl
},
render: function() {
return u.a.prototype.render.call(this), this.getColorEl(), this
}
})
}, function(t, e, n) {
! function(e) {
var n, r = {},
i = {
16: !1,
18: !1,
17: !1,
91: !1
},
o = "all",
a = {
"⇧": 16,
shift: 16,
"⌥": 18,
alt: 18,
option: 18,
"⌃": 17,
ctrl: 17,
control: 17,
"⌘": 91,
command: 91
},
s = {
backspace: 8,
tab: 9,
clear: 12,
enter: 13,
return: 13,
esc: 27,
escape: 27,
space: 32,
left: 37,
up: 38,
right: 39,
down: 40,
del: 46,
delete: 46,
home: 36,
end: 35,
pageup: 33,
pagedown: 34,
",": 188,
".": 190,
"/": 191,
"`": 192,
"-": 189,
"=": 187,
";": 186,
"'": 222,
"[": 219,
"]": 221,
"\\": 220
},
l = function(t) {
return s[t] || t.toUpperCase().charCodeAt(0)
},
c = [];
for (n = 1; n < 20; n++) s["f" + n] = 111 + n;
function u(t, e) {
for (var n = t.length; n--;)
if (t[n] === e) return n;
return -1
}
function d(t, e) {
if (t.length != e.length) return !1;
for (var n = 0; n < t.length; n++)
if (t[n] !== e[n]) return !1;
return !0
}
var h = {
16: "shiftKey",
18: "altKey",
17: "ctrlKey",
91: "metaKey"
};
function f(t) {
for (n in i) i[n] = t[h[n]]
}
function p(t, e, n) {
var i, o;
i = v(t), void 0 === n && (n = e, e = "all");
for (var a = 0; a < i.length; a++) o = [], (t = i[a].split("+")).length > 1 && (o = m(t), t = [t[t.length - 1]]), t = t[0], (t = l(t)) in r || (r[t] = []), r[t].push({
shortcut: i[a],
scope: e,
method: n,
key: i[a],
mods: o
})
}
for (n in a) p[n] = !1;
function g() {
return o || "all"
}
function v(t) {
var e;
return "" == (e = (t = t.replace(/\s/g, "")).split(","))[e.length - 1] && (e[e.length - 2] += ","), e
}
function m(t) {
for (var e = t.slice(0, t.length - 1), n = 0; n < e.length; n++) e[n] = a[e[n]];
return e
}
function b(t, e, n) {
t.addEventListener ? t.addEventListener(e, n, !1) : t.attachEvent && t.attachEvent("on" + e, function() {
n(window.event)
})
}
b(document, "keydown", function(t) {
! function(t) {
var e, n, o, s, l, d;
if (e = t.keyCode, -1 == u(c, e) && c.push(e), 93 != e && 224 != e || (e = 91), e in i)
for (o in i[e] = !0, a) a[o] == e && (p[o] = !0);
else if (f(t), p.filter.call(this, t) && e in r)
for (d = g(), s = 0; s < r[e].length; s++)
if ((n = r[e][s]).scope == d || "all" == n.scope) {
for (o in l = n.mods.length > 0, i)(!i[o] && u(n.mods, +o) > -1 || i[o] && -1 == u(n.mods, +o)) && (l = !1);
(0 != n.mods.length || i[16] || i[18] || i[17] || i[91]) && !l || !1 === n.method(t, n) && (t.preventDefault ? t.preventDefault() : t.returnValue = !1, t.stopPropagation && t.stopPropagation(), t.cancelBubble && (t.cancelBubble = !0))
}
}(t)
}), b(document, "keyup", function(t) {
var e, n = t.keyCode,
r = u(c, n);
if (r >= 0 && c.splice(r, 1), 93 != n && 224 != n || (n = 91), n in i)
for (e in i[n] = !1, a) a[e] == n && (p[e] = !1)
}), b(window, "focus", function() {
for (n in i) i[n] = !1;
for (n in a) p[n] = !1
});
var y = e.key;
e.key = p, e.key.setScope = function(t) {
o = t || "all"
}, e.key.getScope = g, e.key.deleteScope = function(t) {
var e, n, i;
for (e in r)
for (n = r[e], i = 0; i < n.length;) n[i].scope === t ? n.splice(i, 1) : i++
}, e.key.filter = function(t) {
var e = (t.target || t.srcElement).tagName;
return !("INPUT" == e || "SELECT" == e || "TEXTAREA" == e)
}, e.key.isPressed = function(t) {
return "string" == typeof t && (t = l(t)), -1 != u(c, t)
}, e.key.getPressedKeyCodes = function() {
return c.slice(0)
}, e.key.noConflict = function() {
var t = e.key;
return e.key = y, t
}, e.key.unbind = function(t, e) {
var n, i, o, a, s, c = [];
for (n = v(t), a = 0; a < n.length; a++) {
if ((i = n[a].split("+")).length > 1 && (c = m(i), t = i[i.length - 1]), t = l(t), void 0 === e && (e = g()), !r[t]) return;
for (o = 0; o < r[t].length; o++)(s = r[t][o]).scope === e && d(s.mods, c) && (r[t][o] = {})
}
}, t.exports = p
}(this)
}, function(t, e, n) {
"use strict";
(function(t) {
var r = n(8),
i = n.n(r),
o = n(71),
a = n(72),
s = setTimeout;
function l(t) {
return Boolean(t && void 0 !== t.length)
}
function c() {}
function u(t) {
if (!(this instanceof u)) throw new TypeError("Promises must be constructed via new");
if ("function" != typeof t) throw new TypeError("not a function");
this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], v(t, this)
}
function d(t, e) {
for (; 3 === t._state;) t = t._value;
0 !== t._state ? (t._handled = !0, u._immediateFn(function() {
var n = 1 === t._state ? e.onFulfilled : e.onRejected;
if (null !== n) {
var r;
try {
r = n(t._value)
} catch (t) {
return void f(e.promise, t)
}
h(e.promise, r)
} else(1 === t._state ? h : f)(e.promise, t._value)
})) : t._deferreds.push(e)
}
function h(t, e) {
try {
if (e === t) throw new TypeError("A promise cannot be resolved with itself.");
if (e && ("object" === i()(e) || "function" == typeof e)) {
var n = e.then;
if (e instanceof u) return t._state = 3, t._value = e, void p(t);
if ("function" == typeof n) return void v((r = n, o = e, function() {
r.apply(o, arguments)
}), t)
}
t._state = 1, t._value = e, p(t)
} catch (e) {
f(t, e)
}
var r, o
}
function f(t, e) {
t._state = 2, t._value = e, p(t)
}
function p(t) {
2 === t._state && 0 === t._deferreds.length && u._immediateFn(function() {
t._handled || u._unhandledRejectionFn(t._value)
});
for (var e = 0, n = t._deferreds.length; e < n; e++) d(t, t._deferreds[e]);
t._deferreds = null
}
function g(t, e, n) {
this.onFulfilled = "function" == typeof t ? t : null, this.onRejected = "function" == typeof e ? e : null, this.promise = n
}
function v(t, e) {
var n = !1;
try {
t(function(t) {
n || (n = !0, h(e, t))
}, function(t) {
n || (n = !0, f(e, t))
})
} catch (t) {
if (n) return;
n = !0, f(e, t)
}
}
u.prototype.catch = function(t) {
return this.then(null, t)
}, u.prototype.then = function(t, e) {
var n = new this.constructor(c);
return d(this, new g(t, e, n)), n
}, u.prototype.finally = o.a, u.all = function(t) {
return new u(function(e, n) {
if (!l(t)) return n(new TypeError("Promise.all accepts an array"));
var r = Array.prototype.slice.call(t);
if (0 === r.length) return e([]);
var o = r.length;
function a(t, s) {
try {
if (s && ("object" === i()(s) || "function" == typeof s)) {
var l = s.then;
if ("function" == typeof l) return void l.call(s, function(e) {
a(t, e)
}, n)
}
r[t] = s, 0 == --o && e(r)
} catch (t) {
n(t)
}
}
for (var s = 0; s < r.length; s++) a(s, r[s])
})
}, u.allSettled = a.a, u.resolve = function(t) {
return t && "object" === i()(t) && t.constructor === u ? t : new u(function(e) {
e(t)
})
}, u.reject = function(t) {
return new u(function(e, n) {
n(t)
})
}, u.race = function(t) {
return new u(function(e, n) {
if (!l(t)) return n(new TypeError("Promise.race accepts an array"));
for (var r = 0, i = t.length; r < i; r++) u.resolve(t[r]).then(e, n)
})
}, u._immediateFn = "function" == typeof t && function(e) {
t(e)
} || function(t) {
s(t, 0)
}, u._unhandledRejectionFn = function(t) {
"undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", t)
}, e.a = u
}).call(this, n(79).setImmediate)
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r),
o = i.a.Model.extend({
defaults: {
id: "",
label: "",
tagName: "span",
className: "",
command: "",
context: "",
buttons: [],
attributes: {},
options: {},
active: !1,
dragDrop: !1,
togglable: !0,
runDefaultCommand: !0,
stopDefaultCommand: !1,
disable: !1
},
initialize: function(t) {
if (this.get("buttons").length) {
var e = n(41).default;
this.set("buttons", new e(this.get("buttons")))
}
}
});
e.default = i.a.Collection.extend({
model: o,
deactivateAllExceptOne: function(t, e) {
this.forEach(function(n, r) {
n !== t && (n.set("active", !1), e && n.get("buttons").length && n.get("buttons").deactivateAllExceptOne(t, e))
})
},
deactivateAll: function(t, e) {
var n = t || "";
this.forEach(function(t) {
t.get("context") == n && t !== e && (t.set("active", !1, {
silent: 1
}), t.trigger("updateActive", {
fromCollection: 1
}))
})
},
disableAllButtons: function(t) {
var e = t || "";
this.forEach(function(t, n) {
t.get("context") == e && t.set("disable", !0)
})
},
disableAllButtonsExceptOne: function(t, e) {
this.forEach(function(n, r) {
n !== t && (n.set("disable", !0), e && n.get("buttons").length && n.get("buttons").disableAllButtonsExceptOne(t, e))
})
}
})
}, function(t, e) {
t.exports = function(t, e) {
(null == e || e > t.length) && (e = t.length);
for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];
return r
}
}, function(t, e, n) {
var r = n(42);
t.exports = function(t, e) {
if (t) {
if ("string" == typeof t) return r(t, e);
var n = Object.prototype.toString.call(t).slice(8, -1);
return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? r(t, e) : void 0
}
}
}, function(t, e, n) {
! function(t) {
"use strict";
function e(t) {
for (var e = {}, n = 0; n < t.length; ++n) e[t[n].toLowerCase()] = !0;
return e
}
t.defineMode("css", function(e, n) {
var r = n.inline;
n.propertyKeywords || (n = t.resolveMode("text/css"));
var i, o, a = e.indentUnit,
s = n.tokenHooks,
l = n.documentTypes || {},
c = n.mediaTypes || {},
u = n.mediaFeatures || {},
d = n.mediaValueKeywords || {},
h = n.propertyKeywords || {},
f = n.nonStandardPropertyKeywords || {},
p = n.fontProperties || {},
g = n.counterDescriptors || {},
v = n.colorKeywords || {},
m = n.valueKeywords || {},
b = n.allowNested,
y = n.lineComment,
w = !0 === n.supportsAtComponent,
x = !1 !== e.highlightNonStandardPropertyKeywords;
function O(t, e) {
return i = e, t
}
function C(t) {
return function(e, n) {
for (var r, i = !1; null != (r = e.next());) {
if (r == t && !i) {
")" == t && e.backUp(1);
break
}
i = !i && "\\" == r
}
return (r == t || !i && ")" != t) && (n.tokenize = null), O("string", "string")
}
}
function S(t, e) {
return t.next(), t.match(/\s*[\"\')]/, !1) ? e.tokenize = null : e.tokenize = C(")"), O(null, "(")
}
function k(t, e, n) {
this.type = t, this.indent = e, this.prev = n
}
function j(t, e, n, r) {
return t.context = new k(n, e.indentation() + (!1 === r ? 0 : a), t.context), n
}
function T(t) {
return t.context.prev && (t.context = t.context.prev), t.context.type
}
function P(t, e, n) {
return D[n.context.type](t, e, n)
}
function E(t, e, n, r) {
for (var i = r || 1; i > 0; i--) n.context = n.context.prev;
return P(t, e, n)
}
function M(t) {
var e = t.current().toLowerCase();
o = m.hasOwnProperty(e) ? "atom" : v.hasOwnProperty(e) ? "keyword" : "variable"
}
var D = {
top: function(t, e, n) {
if ("{" == t) return j(n, e, "block");
if ("}" == t && n.context.prev) return T(n);
if (w && /@component/i.test(t)) return j(n, e, "atComponentBlock");
if (/^@(-moz-)?document$/i.test(t)) return j(n, e, "documentTypes");
if (/^@(media|supports|(-moz-)?document|import)$/i.test(t)) return j(n, e, "atBlock");
if (/^@(font-face|counter-style)/i.test(t)) return n.stateArg = t, "restricted_atBlock_before";
if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(t)) return "keyframes";
if (t && "@" == t.charAt(0)) return j(n, e, "at");
if ("hash" == t) o = "builtin";
else if ("word" == t) o = "tag";
else {
if ("variable-definition" == t) return "maybeprop";
if ("interpolation" == t) return j(n, e, "interpolation");
if (":" == t) return "pseudo";
if (b && "(" == t) return j(n, e, "parens")
}
return n.context.type
},
block: function(t, e, n) {
if ("word" == t) {
var r = e.current().toLowerCase();
return h.hasOwnProperty(r) ? (o = "property", "maybeprop") : f.hasOwnProperty(r) ? (o = x ? "string-2" : "property", "maybeprop") : b ? (o = e.match(/^\s*:(?:\s|$)/, !1) ? "property" : "tag", "block") : (o += " error", "maybeprop")
}
return "meta" == t ? "block" : b || "hash" != t && "qualifier" != t ? D.top(t, e, n) : (o = "error", "block")
},
maybeprop: function(t, e, n) {
return ":" == t ? j(n, e, "prop") : P(t, e, n)
},
prop: function(t, e, n) {
if (";" == t) return T(n);
if ("{" == t && b) return j(n, e, "propBlock");
if ("}" == t || "{" == t) return E(t, e, n);
if ("(" == t) return j(n, e, "parens");
if ("hash" != t || /^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(e.current())) {
if ("word" == t) M(e);
else if ("interpolation" == t) return j(n, e, "interpolation")
} else o += " error";
return "prop"
},
propBlock: function(t, e, n) {
return "}" == t ? T(n) : "word" == t ? (o = "property", "maybeprop") : n.context.type
},
parens: function(t, e, n) {
return "{" == t || "}" == t ? E(t, e, n) : ")" == t ? T(n) : "(" == t ? j(n, e, "parens") : "interpolation" == t ? j(n, e, "interpolation") : ("word" == t && M(e), "parens")
},
pseudo: function(t, e, n) {
return "meta" == t ? "pseudo" : "word" == t ? (o = "variable-3", n.context.type) : P(t, e, n)
},
documentTypes: function(t, e, n) {
return "word" == t && l.hasOwnProperty(e.current()) ? (o = "tag", n.context.type) : D.atBlock(t, e, n)
},
atBlock: function(t, e, n) {
if ("(" == t) return j(n, e, "atBlock_parens");
if ("}" == t || ";" == t) return E(t, e, n);
if ("{" == t) return T(n) && j(n, e, b ? "block" : "top");
if ("interpolation" == t) return j(n, e, "interpolation");
if ("word" == t) {
var r = e.current().toLowerCase();
o = "only" == r || "not" == r || "and" == r || "or" == r ? "keyword" : c.hasOwnProperty(r) ? "attribute" : u.hasOwnProperty(r) ? "property" : d.hasOwnProperty(r) ? "keyword" : h.hasOwnProperty(r) ? "property" : f.hasOwnProperty(r) ? x ? "string-2" : "property" : m.hasOwnProperty(r) ? "atom" : v.hasOwnProperty(r) ? "keyword" : "error"
}
return n.context.type
},
atComponentBlock: function(t, e, n) {
return "}" == t ? E(t, e, n) : "{" == t ? T(n) && j(n, e, b ? "block" : "top", !1) : ("word" == t && (o = "error"), n.context.type)
},
atBlock_parens: function(t, e, n) {
return ")" == t ? T(n) : "{" == t || "}" == t ? E(t, e, n, 2) : D.atBlock(t, e, n)
},
restricted_atBlock_before: function(t, e, n) {
return "{" == t ? j(n, e, "restricted_atBlock") : "word" == t && "@counter-style" == n.stateArg ? (o = "variable", "restricted_atBlock_before") : P(t, e, n)
},
restricted_atBlock: function(t, e, n) {
return "}" == t ? (n.stateArg = null, T(n)) : "word" == t ? (o = "@font-face" == n.stateArg && !p.hasOwnProperty(e.current().toLowerCase()) || "@counter-style" == n.stateArg && !g.hasOwnProperty(e.current().toLowerCase()) ? "error" : "property", "maybeprop") : "restricted_atBlock"
},
keyframes: function(t, e, n) {
return "word" == t ? (o = "variable", "keyframes") : "{" == t ? j(n, e, "top") : P(t, e, n)
},
at: function(t, e, n) {
return ";" == t ? T(n) : "{" == t || "}" == t ? E(t, e, n) : ("word" == t ? o = "tag" : "hash" == t && (o = "builtin"), "at")
},
interpolation: function(t, e, n) {
return "}" == t ? T(n) : "{" == t || ";" == t ? E(t, e, n) : ("word" == t ? o = "variable" : "variable" != t && "(" != t && ")" != t && (o = "error"), "interpolation")
}
};
return {
startState: function(t) {
return {
tokenize: null,
state: r ? "block" : "top",
stateArg: null,
context: new k(r ? "block" : "top", t || 0, null)
}
},
token: function(t, e) {
if (!e.tokenize && t.eatSpace()) return null;
var n = (e.tokenize || function(t, e) {
var n = t.next();
if (s[n]) {
var r = s[n](t, e);
if (!1 !== r) return r
}
return "@" == n ? (t.eatWhile(/[\w\\\-]/), O("def", t.current())) : "=" == n || ("~" == n || "|" == n) && t.eat("=") ? O(null, "compare") : '"' == n || "'" == n ? (e.tokenize = C(n), e.tokenize(t, e)) : "#" == n ? (t.eatWhile(/[\w\\\-]/), O("atom", "hash")) : "!" == n ? (t.match(/^\s*\w*/), O("keyword", "important")) : /\d/.test(n) || "." == n && t.eat(/\d/) ? (t.eatWhile(/[\w.%]/), O("number", "unit")) : "-" !== n ? /[,+>*\/]/.test(n) ? O(null, "select-op") : "." == n && t.match(/^-?[_a-z][_a-z0-9-]*/i) ? O("qualifier", "qualifier") : /[:;{}\[\]\(\)]/.test(n) ? O(null, n) : t.match(/[\w-.]+(?=\()/) ? (/^(url(-prefix)?|domain|regexp)$/.test(t.current().toLowerCase()) && (e.tokenize = S), O("variable callee", "variable")) : /[\w\\\-]/.test(n) ? (t.eatWhile(/[\w\\\-]/), O("property", "word")) : O(null, null) : /[\d.]/.test(t.peek()) ? (t.eatWhile(/[\w.%]/), O("number", "unit")) : t.match(/^-[\w\\\-]*/) ? (t.eatWhile(/[\w\\\-]/), t.match(/^\s*:/, !1) ? O("variable-2", "variable-definition") : O("variable-2", "variable")) : t.match(/^\w+-/) ? O("meta", "meta") : void 0
})(t, e);
return n && "object" == typeof n && (i = n[1], n = n[0]), o = n, "comment" != i && (e.state = D[e.state](i, t, e)), o
},
indent: function(t, e) {
var n = t.context,
r = e && e.charAt(0),
i = n.indent;
return "prop" != n.type || "}" != r && ")" != r || (n = n.prev), n.prev && ("}" != r || "block" != n.type && "top" != n.type && "interpolation" != n.type && "restricted_atBlock" != n.type ? (")" != r || "parens" != n.type && "atBlock_parens" != n.type) && ("{" != r || "at" != n.type && "atBlock" != n.type) || (i = Math.max(0, n.indent - a)) : i = (n = n.prev).indent), i
},
electricChars: "}",
blockCommentStart: "/*",
blockCommentEnd: "*/",
blockCommentContinue: " * ",
lineComment: y,
fold: "brace"
}
});
var n = ["domain", "regexp", "url", "url-prefix"],
r = e(n),
i = ["all", "aural", "braille", "handheld", "print", "projection", "screen", "tty", "tv", "embossed"],
o = e(i),
a = ["width", "min-width", "max-width", "height", "min-height", "max-height", "device-width", "min-device-width", "max-device-width", "device-height", "min-device-height", "max-device-height", "aspect-ratio", "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", "max-color", "color-index", "min-color-index", "max-color-index", "monochrome", "min-monochrome", "max-monochrome", "resolution", "min-resolution", "max-resolution", "scan", "grid", "orientation", "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", "pointer", "any-pointer", "hover", "any-hover", "prefers-color-scheme"],
s = e(a),
l = ["landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", "interlace", "progressive", "dark", "light"],
c = e(l),
u = ["align-content", "align-items", "align-self", "alignment-adjust", "alignment-baseline", "all", "anchor-point", "animation", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "appearance", "azimuth", "backdrop-filter", "backface-visibility", "background", "background-attachment", "background-blend-mode", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-position-x", "background-position-y", "background-repeat", "background-size", "baseline-shift", "binding", "bleed", "block-size", "bookmark-label", "bookmark-level", "bookmark-state", "bookmark-target", "border", "border-bottom", "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color", "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source", "border-image-width", "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right", "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width", "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", "caption-side", "caret-color", "clear", "clip", "color", "color-profile", "column-count", "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width", "column-span", "column-width", "columns", "contain", "content", "counter-increment", "counter-reset", "crop", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "dominant-baseline", "drop-initial-after-adjust", "drop-initial-after-align", "drop-initial-before-adjust", "drop-initial-before-align", "drop-initial-size", "drop-initial-value", "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "float-offset", "flow-from", "flow-into", "font", "font-family", "font-feature-settings", "font-kerning", "font-language-override", "font-optical-sizing", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-synthesis", "font-variant", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", "font-variation-settings", "font-weight", "gap", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap", "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphens", "icon", "image-orientation", "image-rendering", "image-resolution", "inline-box-align", "inset", "inset-block", "inset-block-end", "inset-block-start", "inset-inline", "inset-inline-end", "inset-inline-start", "isolation", "justify-content", "justify-items", "justify-self", "left", "letter-spacing", "line-break", "line-height", "line-height-step", "line-stacking", "line-stacking-ruby", "line-stacking-shift", "line-stacking-strategy", "list-style", "list-style-image", "list-style-position", "list-style-type", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "marks", "marquee-direction", "marquee-loop", "marquee-play-count", "marquee-speed", "marquee-style", "mask-clip", "mask-composite", "mask-image", "mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size", "mask-type", "max-block-size", "max-height", "max-inline-size", "max-width", "min-block-size", "min-height", "min-inline-size", "min-width", "mix-blend-mode", "move-to", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "object-fit", "object-position", "offset", "offset-anchor", "offset-distance", "offset-path", "offset-position", "offset-rotate", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style", "outline-width", "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", "page", "page-break-after", "page-break-before", "page-break-inside", "page-policy", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "pitch", "pitch-range", "place-content", "place-items", "place-self", "play-during", "position", "presentation-level", "punctuation-trim", "quotes", "region-break-after", "region-break-before", "region-break-inside", "region-fragment", "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", "right", "rotate", "rotation", "rotation-point", "row-gap", "ruby-align", "ruby-overhang", "ruby-position", "ruby-span", "scale", "scroll-behavior", "scroll-margin", "scroll-margin-block", "scroll-margin-block-end", "scroll-margin-block-start", "scroll-margin-bottom", "scroll-margin-inline", "scroll-margin-inline-end", "scroll-margin-inline-start", "scroll-margin-left", "scroll-margin-right", "scroll-margin-top", "scroll-padding", "scroll-padding-block", "scroll-padding-block-end", "scroll-padding-block-start", "scroll-padding-bottom", "scroll-padding-inline", "scroll-padding-inline-end", "scroll-padding-inline-start", "scroll-padding-left", "scroll-padding-right", "scroll-padding-top", "scroll-snap-align", "scroll-snap-type", "shape-image-threshold", "shape-inside", "shape-margin", "shape-outside", "size", "speak", "speak-as", "speak-header", "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", "tab-size", "table-layout", "target", "target-name", "target-new", "target-position", "text-align", "text-align-last", "text-combine-upright", "text-decoration", "text-decoration-color", "text-decoration-line", "text-decoration-skip", "text-decoration-skip-ink", "text-decoration-style", "text-emphasis", "text-emphasis-color", "text-emphasis-position", "text-emphasis-style", "text-height", "text-indent", "text-justify", "text-orientation", "text-outline", "text-overflow", "text-rendering", "text-shadow", "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", "text-wrap", "top", "touch-action", "transform", "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "translate", "unicode-bidi", "user-select", "vertical-align", "visibility", "voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", "voice-volume", "volume", "white-space", "widows", "width", "will-change", "word-break", "word-spacing", "word-wrap", "writing-mode", "z-index", "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", "color-interpolation", "color-interpolation-filters", "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", "marker", "marker-end", "marker-mid", "marker-start", "paint-order", "shape-rendering", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", "glyph-orientation-vertical", "text-anchor", "writing-mode"],
d = e(u),
h = ["border-block", "border-block-color", "border-block-end", "border-block-end-color", "border-block-end-style", "border-block-end-width", "border-block-start", "border-block-start-color", "border-block-start-style", "border-block-start-width", "border-block-style", "border-block-width", "border-inline", "border-inline-color", "border-inline-end", "border-inline-end-color", "border-inline-end-style", "border-inline-end-width", "border-inline-start", "border-inline-start-color", "border-inline-start-style", "border-inline-start-width", "border-inline-style", "border-inline-width", "margin-block", "margin-block-end", "margin-block-start", "margin-inline", "margin-inline-end", "margin-inline-start", "padding-block", "padding-block-end", "padding-block-start", "padding-inline", "padding-inline-end", "padding-inline-start", "scroll-snap-stop", "scrollbar-3d-light-color", "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", "scrollbar-track-color", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "shape-inside", "zoom"],
f = e(h),
p = e(["font-display", "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", "font-stretch", "font-weight", "font-style"]),
g = e(["additive-symbols", "fallback", "negative", "pad", "prefix", "range", "speak-as", "suffix", "symbols", "system"]),
v = ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"],
m = e(v),
b = ["above", "absolute", "activeborder", "additive", "activecaption", "afar", "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", "arabic-indic", "armenian", "asterisks", "attr", "auto", "auto-flow", "avoid", "avoid-column", "avoid-page", "avoid-region", "axis-pan", "background", "backwards", "baseline", "below", "bidi-override", "binary", "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", "compact", "condensed", "contain", "content", "contents", "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", "decimal-leading-zero", "default", "default-button", "dense", "destination-atop", "destination-in", "destination-out", "destination-over", "devanagari", "difference", "disc", "discard", "disclosure-closed", "disclosure-open", "document", "dot-dash", "dot-dot-dash", "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", "ethiopic-halehame-gez", "ethiopic-halehame-om-et", "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", "extra-expanded", "fantasy", "fast", "fill", "fill-box", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", "forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove", "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew", "help", "hidden", "hide", "higher", "highlight", "highlighttext", "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert", "italic", "japanese-formal", "japanese-informal", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer", "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten", "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "manipulation", "match", "matrix", "matrix3d", "media-controls-background", "media-current-time-display", "media-fullscreen-button", "media-mute-button", "media-play-button", "media-return-to-realtime-button", "media-rewind-button", "media-seek-back-button", "media-seek-forward-button", "media-slider", "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", "media-volume-slider-container", "media-volume-sliderthumb", "medium", "menu", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", "mix", "mongolian", "monospace", "move", "multiple", "multiple_mask_images", "multiply", "myanmar", "n-resize", "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "opacity", "open-quote", "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", "painted", "page", "paused", "persian", "perspective", "pinch-zoom", "plus-darker", "plus-lighter", "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", "radial-gradient", "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", "relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", "scroll", "scrollbar", "scroll-position", "se-resize", "searchfield", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "self-start", "self-end", "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", "simp-chinese-formal", "simp-chinese-informal", "single", "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali", "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "space-evenly", "spell-out", "square", "square-button", "start", "static", "status-bar", "stretch", "stroke", "stroke-box", "sub", "subpixel-antialiased", "svg_masks", "super", "sw-resize", "symbolic", "symbols", "system-ui", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "tamil", "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", "trad-chinese-formal", "trad-chinese-informal", "transform", "translate", "translate3d", "translateX", "translateY", "translateZ", "transparent", "ultra-condensed", "ultra-expanded", "underline", "unidirectional-pan", "unset", "up", "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", "var", "vertical", "vertical-text", "view-box", "visible", "visibleFill", "visiblePainted", "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", "xx-large", "xx-small"],
y = e(b),
w = n.concat(i).concat(a).concat(l).concat(u).concat(h).concat(v).concat(b);
function x(t, e) {
for (var n, r = !1; null != (n = t.next());) {
if (r && "/" == n) {
e.tokenize = null;
break
}
r = "*" == n
}
return ["comment", "comment"]
}
t.registerHelper("hintWords", "css", w), t.defineMIME("text/css", {
documentTypes: r,
mediaTypes: o,
mediaFeatures: s,
mediaValueKeywords: c,
propertyKeywords: d,
nonStandardPropertyKeywords: f,
fontProperties: p,
counterDescriptors: g,
colorKeywords: m,
valueKeywords: y,
tokenHooks: {
"/": function(t, e) {
return !!t.eat("*") && (e.tokenize = x, x(t, e))
}
},
name: "css"
}), t.defineMIME("text/x-scss", {
mediaTypes: o,
mediaFeatures: s,
mediaValueKeywords: c,
propertyKeywords: d,
nonStandardPropertyKeywords: f,
colorKeywords: m,
valueKeywords: y,
fontProperties: p,
allowNested: !0,
lineComment: "//",
tokenHooks: {
"/": function(t, e) {
return t.eat("/") ? (t.skipToEnd(), ["comment", "comment"]) : t.eat("*") ? (e.tokenize = x, x(t, e)) : ["operator", "operator"]
},
":": function(t) {
return !!t.match(/\s*\{/, !1) && [null, null]
},
$: function(t) {
return t.match(/^[\w-]+/), t.match(/^\s*:/, !1) ? ["variable-2", "variable-definition"] : ["variable-2", "variable"]
},
"#": function(t) {
return !!t.eat("{") && [null, "interpolation"]
}
},
name: "css",
helperType: "scss"
}), t.defineMIME("text/x-less", {
mediaTypes: o,
mediaFeatures: s,
mediaValueKeywords: c,
propertyKeywords: d,
nonStandardPropertyKeywords: f,
colorKeywords: m,
valueKeywords: y,
fontProperties: p,
allowNested: !0,
lineComment: "//",
tokenHooks: {
"/": function(t, e) {
return t.eat("/") ? (t.skipToEnd(), ["comment", "comment"]) : t.eat("*") ? (e.tokenize = x, x(t, e)) : ["operator", "operator"]
},
"@": function(t) {
return t.eat("{") ? [null, "interpolation"] : !t.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i, !1) && (t.eatWhile(/[\w\\\-]/), t.match(/^\s*:/, !1) ? ["variable-2", "variable-definition"] : ["variable-2", "variable"])
},
"&": function() {
return ["atom", "atom"]
}
},
name: "css",
helperType: "less"
}), t.defineMIME("text/x-gss", {
documentTypes: r,
mediaTypes: o,
mediaFeatures: s,
propertyKeywords: d,
nonStandardPropertyKeywords: f,
fontProperties: p,
counterDescriptors: g,
colorKeywords: m,
valueKeywords: y,
supportsAtComponent: !0,
tokenHooks: {
"/": function(t, e) {
return !!t.eat("*") && (e.tokenize = x, x(t, e))
}
},
name: "css",
helperType: "gss"
})
}(n(13))
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t) {
t.DomComponents.clear(), t.CssComposer.clear()
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0),
i = n(3),
o = n(17);
e.default = {
run: function(t) {
Object(r.bindAll)(this, "onKeyUp", "enableDragger", "disableDragger"), this.editor = t, this.canvasModel = this.canvas.getCanvasView().model, this.toggleMove(1)
},
stop: function(t) {
this.toggleMove(), this.disableDragger()
},
onKeyUp: function(t) {
" " === Object(i.f)(t) && this.editor.stopCommand(this.id)
},
enableDragger: function(t) {
this.toggleDragger(1, t)
},
disableDragger: function(t) {
this.toggleDragger(0, t)
},
toggleDragger: function(t, e) {
var n = this.canvasModel,
r = this.em,
i = this.dragger,
a = t ? "add" : "remove";
this.getCanvas().classList[a]("".concat(this.ppfx, "is__grabbing")), i || (i = new o.a({
getPosition: function() {
return {
x: n.get("x"),
y: n.get("y")
}
},
setPosition: function(t) {
var e = t.x,
r = t.y;
n.set({
x: e,
y: r
})
},
onStart: function(t, e) {
r.trigger("canvas:move:start", e)
},
onDrag: function(t, e) {
r.trigger("canvas:move", e)
},
onEnd: function(t, e) {
r.trigger("canvas:move:end", e)
}
}), this.dragger = i), t ? i.start(e) : i.stop()
},
toggleMove: function(t) {
var e = this.ppfx,
n = t ? "add" : "remove",
r = t ? "on" : "off",
o = {
on: i.v,
off: i.u
},
a = this.getCanvas(),
s = ["".concat(e, "is__grab")];
!t && s.push("".concat(e, "is__grabbing")), s.forEach(function(t) {
return a.classList[n](t)
}), o[r](document, "keyup", this.onKeyUp), o[r](a, "mousedown", this.enableDragger), o[r](document, "mouseup", this.disableDragger)
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(7),
i = n.n(r),
o = n(0);
e.default = {
run: function(t, e) {
var n = this,
r = (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).component || t.getSelectedAll();
return r = Object(o.isArray)(r) ? i()(r) : [r], t.select(null), r.forEach(function(t) {
if (!t || !t.get("removable")) return n.em.logWarning("The element is not removable", {
component: t
});
t.remove()
}), r
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(0),
a = n(17);
function s(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function l(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? s(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : s(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var c = "dmode";
e.default = {
run: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
Object(o.bindAll)(this, "setPosition", "onStart", "onDrag", "onEnd", "getPosition", "getGuidesStatic", "renderGuide", "getGuidesTarget");
var i = r.target,
s = r.event,
u = r.mode,
d = r.dragger,
h = void 0 === d ? {} : d,
f = l({
doc: i.getEl().ownerDocument,
onStart: this.onStart,
onEnd: this.onEnd,
onDrag: this.onDrag,
getPosition: this.getPosition,
setPosition: this.setPosition,
guidesStatic: function() {
return n.guidesStatic
},
guidesTarget: function() {
return n.guidesTarget
}
}, h);
this.setupGuides(), this.opts = r, this.editor = t, this.em = t.getModel(), this.target = i, this.isTran = "translate" == u, this.guidesContainer = this.getGuidesContainer(), this.guidesTarget = this.getGuidesTarget(), this.guidesStatic = this.getGuidesStatic();
var p = this.dragger;
return p ? p.setOptions(f) : (p = new a.a(f), this.dragger = p), s && p.start(s), this.toggleDrag(1), this.em.trigger("".concat(c, ":start"), this.getEventOpts()), p
},
getEventOpts: function() {
return {
mode: this.opts.mode,
target: this.target,
guidesTarget: this.guidesTarget,
guidesStatic: this.guidesStatic
}
},
stop: function() {
this.toggleDrag()
},
setupGuides: function() {
(this.guides || []).forEach(function(t) {
var e = t.guide;
e && e.parentNode.removeChild(e)
}), this.guides = []
},
getGuidesContainer: function() {
var t = this,
e = this.guidesEl;
if (!e) {
var n = this.editor,
r = this.em,
i = this.opts,
a = n.getConfig("stylePrefix"),
s = document.createElement("div"),
l = document.createElement("div"),
c = '<div class="'.concat(a, "guide-info__line ").concat(a, 'danger-bg">\n <div class="').concat(a, "guide-info__content ").concat(a, 'danger-color"></div>\n </div>');
(e = document.createElement("div")).className = "".concat(a, "guides"), s.className = "".concat(a, "guide-info ").concat(a, "guide-info__x"), l.className = "".concat(a, "guide-info ").concat(a, "guide-info__y"), s.innerHTML = c, l.innerHTML = c, e.appendChild(s), e.appendChild(l), n.Canvas.getGlobalToolsEl().appendChild(e), this.guidesEl = e, this.elGuideInfoX = s, this.elGuideInfoY = l, this.elGuideInfoContentX = s.querySelector(".".concat(a, "guide-info__content")), this.elGuideInfoContentY = l.querySelector(".".concat(a, "guide-info__content")), r.on("canvas:update frame:scroll", Object(o.debounce)(function() {
t.updateGuides(), i.debug && t.guides.forEach(function(e) {
return t.renderGuide(e)
})
}, 200))
}
return e
},
getGuidesStatic: function() {
var t = this,
e = [],
n = this.target.getEl(),
r = n.parentNode,
i = void 0 === r ? {} : r;
return Object(o.each)(i.children, function(r) {
return e = e.concat(n !== r ? t.getElementGuides(r) : [])
}), e.concat(this.getElementGuides(i))
},
getGuidesTarget: function() {
return this.getElementGuides(this.target.getEl())
},
updateGuides: function(t) {
var e, n, r = this;
(t || this.guides).forEach(function(t) {
var i = t.origin,
a = e === i ? n : r.getElementPos(i);
e = i, n = a, Object(o.each)(r.getGuidePosUpdate(t, a), function(e, n) {
return t[n] = e
}), t.originRect = a
})
},
getGuidePosUpdate: function(t, e) {
var n = {},
r = e.top,
i = e.height,
o = e.left,
a = e.width;
switch (t.type) {
case "t":
n.y = r;
break;
case "b":
n.y = r + i;
break;
case "l":
n.x = o;
break;
case "r":
n.x = o + a;
break;
case "x":
n.x = o + a / 2;
break;
case "y":
n.y = r + i / 2
}
return n
},
renderGuide: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.guide || document.createElement("div"),
n = "px",
r = t.active ? 2 : 1,
i = e.children[0];
return e.style = "position: absolute; background-color: ".concat(t.active ? "green" : "red", ";"), e.children.length || ((i = document.createElement("div")).style = "position: absolute; color: red; padding: 5px; top: 0; left: 0;", e.appendChild(i)), t.y ? (e.style.width = "100%", e.style.height = "".concat(r).concat(n), e.style.top = "".concat(t.y).concat(n), e.style.left = 0) : (e.style.width = "".concat(r).concat(n), e.style.height = "100%", e.style.left = "".concat(t.x).concat(n), e.style.top = "0".concat(n)), !t.guide && this.guidesContainer.appendChild(e), e
},
getElementPos: function(t) {
return this.editor.Canvas.getElementPos(t, {
noScroll: 1
})
},
getElementGuides: function(t) {
var e = this,
n = this.opts,
r = this.getElementPos(t),
i = r.top,
o = r.height,
a = r.left,
s = r.width,
c = [{
type: "t",
y: i
}, {
type: "b",
y: i + o
}, {
type: "l",
x: a
}, {
type: "r",
x: a + s
}, {
type: "x",
x: a + s / 2
}, {
type: "y",
y: i + o / 2
}].map(function(i) {
return l(l({}, i), {}, {
origin: t,
originRect: r,
guide: n.debug && e.renderGuide(i)
})
});
return c.forEach(function(t) {
return e.guides.push(t)
}), c
},
getTranslate: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "x",
n = 0;
return (t || "").split(" ").forEach(function(t) {
var r = t.trim(),
i = "translate".concat(e.toUpperCase(), "(");
0 === r.indexOf(i) && (n = parseFloat(r.replace(i, "")))
}), n
},
setTranslate: function(t, e, n) {
var r = "translate".concat(e.toUpperCase(), "("),
i = "".concat(r).concat(n, ")"),
o = (t || "").split(" ").map(function(t) {
return 0 === t.trim().indexOf(r) && (t = i), t
}).join(" ");
return o.indexOf(r) < 0 && (o += " ".concat(i)), o
},
getPosition: function() {
var t = this.target,
e = this.isTran,
n = t.getStyle(),
r = n.left,
i = n.top,
o = n.transform,
a = 0,
s = 0;
return e ? (a = this.getTranslate(o), s = this.getTranslate(o, "y")) : (a = parseFloat(r), s = parseFloat(i)), {
x: a,
y: s
}
},
setPosition: function(t) {
var e = t.x,
n = t.y,
r = t.end,
i = t.position,
a = t.width,
s = t.height,
l = this.target,
c = this.isTran,
u = r ? "" : 1,
d = "".concat(e).concat("px"),
h = "".concat(n).concat("px");
if (c) {
var f = l.getStyle().transform || "";
return f = this.setTranslate(f, "x", d), f = this.setTranslate(f, "y", h), l.addStyle({
transform: f,
en: u
}, {
avoidStore: !r
})
}
var p = {
position: i,
width: a,
height: s
},
g = {
left: d,
top: h,
en: u
};
Object(o.keys)(p).forEach(function(t) {
var e = p[t];
e && (g[t] = e)
}), l.addStyle(g, {
avoidStore: !r
})
},
_getDragData: function() {
var t = this.target;
return {
target: t,
parent: t.parent(),
index: t.index()
}
},
onStart: function() {
var t = this.target,
e = this.editor,
n = this.isTran,
r = this.opts,
i = r.center,
o = r.onStart,
a = e.Canvas,
s = t.getStyle(),
l = "absolute";
if (o && o(this._getDragData()), !n && s.position !== l) {
var c = a.offset(t.getEl()),
u = c.left,
d = c.top,
h = c.width,
f = c.height;
if (i) {
var p = a.getMouseRelativeCanvas(event);
u = p.x, d = p.y
}
this.setPosition({
x: u,
y: d,
width: "".concat(h, "px"),
height: "".concat(f, "px"),
position: l
})
}
},
onDrag: function() {
var t = this,
e = this.guidesTarget,
n = this.opts,
r = n.onDrag;
this.updateGuides(e), n.debug && e.forEach(function(e) {
return t.renderGuide(e)
}), n.guidesInfo && this.renderGuideInfo(e.filter(function(t) {
return t.active
})), r && r(this._getDragData())
},
onEnd: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = this.editor,
i = this.opts,
o = this.id,
a = i.onEnd;
a && a(t, n, l(l({
event: t
}, n), this._getDragData())), r.stopCommand(o), this.hideGuidesInfo(), this.em.trigger("".concat(c, ":end"), this.getEventOpts())
},
hideGuidesInfo: function() {
var t = this;
["X", "Y"].forEach(function(e) {
var n = t["elGuideInfo".concat(e)];
n && (n.style.display = "none")
})
},
renderGuideInfo: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
n = this.guidesStatic;
this.hideGuidesInfo(), e.forEach(function(e) {
var r = e.origin,
i = e.x,
a = t.getElementPos(r),
s = Object(o.isUndefined)(i) ? "y" : "x",
u = "y" === s,
d = a[u ? "left" : "top"],
h = a.rect[u ? "left" : "top"],
f = u ? d + a.width : d + a.height,
p = u ? h + a.rect.width : h + a.rect.height,
g = t["elGuideInfo".concat(s.toUpperCase())],
v = t["elGuideInfoContent".concat(s.toUpperCase())],
m = g.style,
b = n.filter(function(t) {
return t.type === e.type
}).map(function(t) {
var e = t.originRect,
n = e.left,
r = e.width,
i = e.top,
o = e.height,
a = u ? n + r : i + o;
return {
gap: a < d ? d - a : (u ? n : i) - f,
guide: t
}
}).filter(function(t) {
return t.gap > 0
}).sort(function(t, e) {
return t.gap - e.gap
}).map(function(t) {
return t.guide
})[0];
if (b) {
var y = b.originRect,
w = y.left,
x = y.width,
O = y.top,
C = y.height,
S = y.rect,
k = u ? w < a.left : O < a.top,
j = u ? w : O,
T = u ? S.left : S.top,
P = u ? w + x : O + C,
E = u ? S.left + S.width : S.top + S.height,
M = u ? e.y : e.x,
D = k ? P : f,
A = "".concat(M, "px"),
L = k ? d - P : j - f,
_ = k ? h - E : T - p;
m.display = "", m[u ? "top" : "left"] = A, m[u ? "left" : "top"] = "".concat(D, "px"), m[u ? "width" : "height"] = "".concat(L, "px"), v.innerHTML = "".concat(Math.round(_), "px"), t.em.trigger("".concat(c, ":active"), l(l({}, t.getEventOpts()), {}, {
guide: e,
guidesStatic: n,
matched: b,
posFirst: M,
posSecond: D,
size: L,
sizeRaw: _,
elGuideInfo: g,
elGuideInfoCnt: v
}))
}
})
},
toggleDrag: function(t) {
var e = this.ppfx,
n = this.editor,
r = t ? "add" : "remove",
i = ["".concat(e, "is__grabbing")],
o = n.Canvas,
a = o.getBody();
i.forEach(function(t) {
return a.classList[r](t)
}), o[t ? "startAutoscroll" : "stopAutoscroll"]()
}
}
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t) {
if (t.Canvas.hasFocus()) {
var e = [];
t.getSelectedAll().forEach(function(t) {
var n = t.components(),
r = n && n.at(0);
r && e.push(r)
}), e.length && t.select(e)
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (t.Canvas.hasFocus() || n.force) {
var r = [];
t.getSelectedAll().forEach(function(t) {
for (var e = t.parent(); e && !e.get("selectable");) e = e.parent();
e && r.push(e)
}), r.length && t.select(r)
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t) {
if (t.Canvas.hasFocus()) {
var e = [];
t.getSelectedAll().forEach(function(t) {
var n = t.collection,
r = n.indexOf(t),
i = n.at(r + 1);
e.push(i || t)
}), e.length && t.select(e)
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t) {
if (t.Canvas.hasFocus()) {
var e = [];
t.getSelectedAll().forEach(function(t) {
var n = t.collection,
r = n.indexOf(t),
i = n.at(r - 1);
e.push(i && r - 1 >= 0 ? i : t)
}), e.length && t.select(e)
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0);
e.default = {
run: function(t, e) {
var n = (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).target,
i = t.DomComponents,
o = n.get("type"),
a = i.getWrapper().findType(o).length,
s = [];
if (!a) {
var l = t.CssComposer.getAll(),
c = n.get("style-signature");
c = Object(r.isArray)(c) ? c : [c], l.forEach(function(t) {
var e = t.selectorsToString();
c.forEach(function(n) {
n && e.indexOf(n) >= 0 && s.push(t)
})
}), l.remove(s)
}
return s
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(7),
i = n.n(r);
e.default = {
run: function(t) {
var e = t.getModel(),
n = i()(t.getSelectedAll());
n.length && e.set("clipboard", n)
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0),
i = n(1),
o = n.n(i),
a = n(14),
s = o.a.$;
e.default = Object(r.extend)({}, a.default, {
init: function(t) {
Object(r.bindAll)(this, "startDelete", "stopDelete", "onDelete"), this.hoverClass = this.pfx + "hover-delete", this.badgeClass = this.pfx + "badge-red"
},
enable: function() {
this.$el.find("*").mouseover(this.startDelete).mouseout(this.stopDelete).click(this.onDelete)
},
startDelete: function(t) {
t.stopPropagation();
var e = s(t.target);
e.data("model").get("removable") && (e.addClass(this.hoverClass), this.attachBadge(e.get(0)))
},
stopDelete: function(t) {
t.stopPropagation(), s(t.target).removeClass(this.hoverClass), this.badge && this.badge.css({
left: -1e3,
top: -1e3
})
},
onDelete: function(t) {
t.stopPropagation();
var e = s(t.target);
e.data("model").get("removable") && (e.data("model").destroy(), this.removeBadge(), this.clean())
},
updateBadgeLabel: function(t) {
this.badge.html("Remove " + t.getName())
}
})
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r).a.$;
e.default = {
run: function(t, e) {
var n = this;
e && e.set && e.set("active", 0);
var r = t.getConfig(),
o = t.Modal,
a = r.stylePrefix;
if (this.cm = t.CodeManager || null, !this.$editors) {
var s = this.buildEditor("htmlmixed", "hopscotch", "HTML"),
l = this.buildEditor("css", "hopscotch", "CSS");
this.htmlEditor = s.el, this.cssEditor = l.el;
var c = i('<div class="'.concat(a, 'export-dl"></div>'));
c.append(s.$el).append(l.$el), this.$editors = c
}
o.open({
title: r.textViewCode,
content: this.$editors
}).getModel().once("change:open", function() {
return t.stopCommand(n.id)
}), this.htmlEditor.setContent(t.getHtml()), this.cssEditor.setContent(t.getCss())
},
stop: function(t) {
var e = t.Modal;
e && e.close()
},
buildEditor: function(t, e, n) {
var r = document.createElement("textarea");
!this.codeMirror && (this.codeMirror = this.cm.getViewer("CodeMirror"));
var i = this.codeMirror.clone().set({
label: n,
codeName: t,
theme: e,
input: r
}),
o = new this.cm.EditorView({
model: i,
config: this.cm.getConfig()
}).render().$el;
return i.init(r), {
el: i,
$el: o
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0);
e.default = {
isEnabled: function() {
var t = document;
return t.fullscreenElement || t.webkitFullscreenElement || t.mozFullScreenElement ? 1 : 0
},
enable: function(t) {
var e = "";
return t.requestFullscreen ? t.requestFullscreen() : t.webkitRequestFullscreen ? (e = "webkit", t.webkitRequestFullscreen()) : t.mozRequestFullScreen ? (e = "moz", t.mozRequestFullScreen()) : t.msRequestFullscreen ? t.msRequestFullscreen() : console.warn("Fullscreen not supported"), e
},
disable: function() {
var t = document;
this.isEnabled() && (t.exitFullscreen ? t.exitFullscreen() : t.webkitExitFullscreen ? t.webkitExitFullscreen() : t.mozCancelFullScreen ? t.mozCancelFullScreen() : t.msExitFullscreen && t.msExitFullscreen())
},
fsChanged: function(t, e) {
var n = (t || "") + "fullscreenchange";
this.isEnabled() || (this.stop(null, this.sender), document.removeEventListener(n, this.fsChanged))
},
run: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
this.sender = e;
var i = n.target,
o = Object(r.isElement)(i) ? i : document.querySelector(i),
a = this.enable(o || t.getContainer());
this.fsChanged = this.fsChanged.bind(this, a), document.addEventListener(a + "fullscreenchange", this.fsChanged), t.trigger("change:canvasOffset")
},
stop: function(t, e) {
e && e.set && e.set("active", !1), this.disable(), t && t.trigger("change:canvasOffset")
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0),
i = n(1),
o = n.n(i),
a = n(3),
s = n(14),
l = n(27),
c = o.a.$;
e.default = Object(r.extend)({}, l.default, s.default, {
init: function(t) {
s.default.init.apply(this, arguments), Object(r.bindAll)(this, "initSorter", "rollback", "onEndMove"), this.opt = t, this.hoverClass = this.ppfx + "highlighter-warning", this.badgeClass = this.ppfx + "badge-warning", this.noSelClass = this.ppfx + "no-select"
},
enable: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
s.default.enable.apply(this, e), this.getBadgeEl().addClass(this.badgeClass), this.getHighlighterEl().addClass(this.hoverClass);
var r = this.$wrapper;
r.css("cursor", "move"), r.on("mousedown", this.initSorter), r.addClass(this.noSelClass)
},
toggleClipboard: function() {},
initSorter: function(t) {
var e = c(t.target).data("model").get("draggable");
e && (this.cacheEl = null, this.startSelectPosition(t.target, this.frameEl.contentDocument), this.sorter.draggable = e, this.sorter.onEndMove = this.onEndMove.bind(this), this.stopSelectComponent(), this.$wrapper.off("mousedown", this.initSorter), Object(a.v)(this.getContentWindow(), "keydown", this.rollback))
},
initSorterFromModel: function(t) {
var e = t.get("draggable");
if (e) {
this.cacheEl = null;
var n = t.view.el;
this.startSelectPosition(n, this.frameEl.contentDocument), this.sorter.draggable = e, this.sorter.onEndMove = this.onEndMoveFromModel.bind(this), this.stopSelectComponent(), Object(a.v)(this.getContentWindow(), "keydown", this.rollback)
}
},
initSorterFromModels: function(t) {
this.cacheEl = null;
var e = t[t.length - 1],
n = (this.em.get("currentFrame") || {}).model,
r = e.getEl(n),
i = r.ownerDocument;
this.startSelectPosition(r, i, {
onStart: this.onStart
}), this.sorter.draggable = e.get("draggable"), this.sorter.toMove = t, this.sorter.onMoveClb = this.onDrag, this.sorter.onEndMove = this.onEndMoveFromModel.bind(this), this.stopSelectComponent(), Object(a.v)(this.getContentWindow(), "keydown", this.rollback)
},
onEndMoveFromModel: function() {
Object(a.u)(this.getContentWindow(), "keydown", this.rollback)
},
onEndMove: function() {
this.enable(), Object(a.u)(this.getContentWindow(), "keydown", this.rollback)
},
onSelect: function(t, e) {},
rollback: function(t, e) {
(27 == (t.which || t.keyCode) || e) && (this.sorter.moved = !1, this.sorter.endMove())
},
getBadgeEl: function() {
return this.$badge || (this.$badge = c(this.getBadge())), this.$badge
},
getHighlighterEl: function() {
return this.$hl || (this.$hl = c(this.canvas.getHighlighter())), this.$hl
},
stop: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
s.default.stop.apply(this, e), this.getBadgeEl().removeClass(this.badgeClass), this.getHighlighterEl().removeClass(this.hoverClass), this.$wrapper.css("cursor", "").unbind().removeClass(this.noSelClass)
}
})
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = t.Modal,
o = t.AssetManager,
a = o.getConfig(),
s = o.getContainer(),
l = r.modalTitle || t.t("assetManager.modalTitle") || "",
c = r.types,
u = r.accept;
if (o.setTarget(r.target), o.onClick(r.onClick), o.onDblClick(r.onDblClick), o.onSelect(r.onSelect), !this.rendered || c) {
var d = o.getAll().filter(function(t) {
return 1
});
c && c.length && (d = d.filter(function(t) {
return -1 !== c.indexOf(t.get("type"))
})), o.render(d), this.rendered = 1
}
if (u) {
var h = s.querySelector("input#".concat(a.stylePrefix, "uploadFile"));
h && h.setAttribute("accept", u)
}
return i.open({
title: l,
content: s
}).getModel().once("change:open", function() {
return t.stopCommand(n.id)
}), this
},
stop: function(t) {
return t.Modal.close(), this
}
}
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t, e) {
var n = t.BlockManager,
r = t.Panels;
if (!this.blocks) {
n.render();
var i = "views-container",
o = document.createElement("div"),
a = r.getPanel(i) || r.addPanel({
id: i
});
o.appendChild(n.getContainer()), a.set("appendContent", o).trigger("change:appendContent"), this.blocks = o
}
this.blocks.style.display = "block"
},
stop: function() {
var t = this.blocks;
t && (t.style.display = "none")
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1);
n.n(r).a.$, e.default = {
run: function(t) {
var e = t.LayerManager,
n = t.Panels;
if (!this.layers) {
var r = "views-container",
i = document.createElement("div"),
o = n.getPanel(r) || n.addPanel({
id: r
});
i.appendChild(e.render()), o.set("appendContent", i).trigger("change:appendContent"), this.layers = i
}
this.layers.style.display = "block"
},
stop: function() {
var t = this.layers;
t && (t.style.display = "none")
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r).a.$;
e.default = {
run: function(t, e) {
if (this.sender = e, !this.$cn) {
var n = t.getConfig(),
r = t.Panels;
this.$cn = i("<div></div>"), this.$cn2 = i("<div></div>"), this.$cn.append(this.$cn2);
var o = t.DeviceManager;
o && n.showDevices && r.addPanel({
id: "devices-c"
}).set("appendContent", o.render()).trigger("change:appendContent");
var a = t.SelectorManager;
a && this.$cn2.append(a.render([])), this.$cn2.append(t.StyleManager.render());
var s = t.StyleManager.getConfig().stylePrefix;
this.$header = i('<div class="'.concat(s, 'header">').concat(t.t("styleManager.empty"), "</div>")), this.$cn.append(this.$header), r.getPanel("views-container") ? this.panel = r.getPanel("views-container") : this.panel = r.addPanel({
id: "views-container"
}), this.panel.set("appendContent", this.$cn).trigger("change:appendContent"), this.target = t.editor, this.listenTo(this.target, "component:toggled", this.toggleSm)
}
this.toggleSm()
},
toggleSm: function() {
var t = this.target,
e = this.sender;
if (!e || !e.get || e.get("active")) {
var n = t.get("SelectorManager").getConfig().componentFirst,
r = t.getSelectedAll().length;
1 === r || r > 1 && n ? (this.$cn2.show(), this.$header.hide()) : (this.$cn2.hide(), this.$header.show())
}
},
stop: function() {
this.$cn2 && this.$cn2.hide(), this.$header && this.$header.hide()
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r).a.$;
e.default = {
run: function(t, e) {
this.sender = e;
var n = t.getModel(),
r = t.Config.stylePrefix,
o = t.TraitManager;
if (!this.$cn) {
var a = o.getTraitsViewer(),
s = o.getConfig();
this.$cn = i("<div></div>"), this.$cn2 = i("<div></div>"), this.$cn.append(this.$cn2), this.$header = i("<div>").append('<div class="'.concat(s.stylePrefix, 'header">').concat(n.t("traitManager.empty"), "</div>")), this.$cn.append(this.$header), this.$cn2.append('<div class="'.concat(r, 'traits-label">').concat(n.t("traitManager.label"), "</div>")), this.$cn2.append(a.render().el);
var l = t.Panels;
(l.getPanel("views-container") ? l.getPanel("views-container") : l.addPanel({
id: "views-container"
})).set("appendContent", this.$cn.get(0)).trigger("change:appendContent"), this.target = t.getModel(), this.listenTo(this.target, "component:toggled", this.toggleTm)
}
this.toggleTm()
},
toggleTm: function() {
var t = this.sender;
t && t.get && !t.get("active") || (1 === this.target.getSelectedAll().length ? (this.$cn2.show(), this.$header.hide()) : (this.$cn2.hide(), this.$header.show()))
},
stop: function() {
this.$cn2 && this.$cn2.hide(), this.$header && this.$header.hide()
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0);
e.default = {
run: function(t) {
var e = t.getModel().get("clipboard"),
n = t.getSelected();
e && n && (t.getSelectedAll().forEach(function(n) {
if (n) {
var i, o = n.collection,
a = o.indexOf(n) + 1,
s = e.filter(function(t) {
return t.get("copyable")
});
i = Object(r.contains)(e, n) && n.get("copyable") ? o.add(n.clone(), {
at: a
}) : o.add(s.map(function(t) {
return t.clone()
}), {
at: a
}), (i = Object(r.isArray)(i) ? i : [i]).forEach(function(e) {
return t.trigger("component:paste", e)
})
}
}), n.emitUpdate())
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(7),
i = n.n(r),
o = n(0),
a = "sw-visibility";
e.default = {
getPanels: function(t) {
return this.panels || (this.panels = t.Panels.getPanels()), this.panels
},
preventDrag: function(t) {
t.abort = 1
},
tglEffects: function(t) {
var e = this.em,
n = t ? "on" : "off";
if (e) {
var r = e.get("Canvas"),
i = r.getBody(),
a = r.getToolbarEl();
a && (a.style.display = t ? "none" : "");
var s = i.querySelectorAll(".".concat(this.ppfx, "no-pointer"));
Object(o.each)(s, function(e) {
return e.style.pointerEvents = t ? "all" : ""
}), e[n]("run:tlb-move:before", this.preventDrag)
}
},
run: function(t, e) {
var n = this;
this.sender = e, this.selected = i()(t.getSelectedAll()), t.select(), this.shouldRunSwVisibility || (this.shouldRunSwVisibility = t.Commands.isActive(a)), this.shouldRunSwVisibility && t.stopCommand(a), t.getModel().stopDefault();
var r = this.getPanels(t),
o = t.Canvas.getElement(),
s = t.getEl(),
l = t.Config.stylePrefix;
if (!this.helper) {
var c = document.createElement("span");
c.className = "".concat(l, "off-prv fa fa-eye-slash"), s.appendChild(c), c.onclick = function() {
return n.stopCommand()
}, this.helper = c
}
this.helper.style.display = "inline-block", r.forEach(function(t) {
return t.set("visible", !1)
});
var u = o.style;
u.width = "100%", u.height = "100%", u.top = "0", u.left = "0", u.padding = "0", u.margin = "0", t.refresh(), this.tglEffects(1)
},
stop: function(t) {
var e = this.sender,
n = void 0 === e ? {} : e,
r = this.selected;
n.set && n.set("active", 0);
var i = this.getPanels(t);
this.shouldRunSwVisibility && (t.runCommand(a), this.shouldRunSwVisibility = !1), t.getModel().runDefault(), i.forEach(function(t) {
return t.set("visible", !0)
}), t.Canvas.getElement().setAttribute("style", ""), r && t.select(r), delete this.selected, this.helper && (this.helper.style.display = "none"), t.refresh(), this.tglEffects()
}
}
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t, e, n) {
var r = n || {},
i = r.el || "",
o = t.Canvas,
a = this.canvasResizer,
s = r.options || {},
l = o.getCanvasView();
return s.appendTo = o.getResizerEl(), s.prefix = t.getConfig().stylePrefix, s.posFetcher = l.getElementPos.bind(l), s.mousePosFetcher = o.getMouseRelativePos, a && !r.forceNew || (this.canvasResizer = t.Utils.Resizer.init(s), a = this.canvasResizer), a.setOptions(s), a.blur(), a.focus(i), a
},
stop: function() {
var t = this.canvasResizer;
t && t.blur()
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(1),
a = n.n(o),
s = n(0),
l = n(3);
function c(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
var u = a.a.$;
e.default = {
getOffsetMethod: function(t) {
return "get" + (t || "") + "OffsetViewerEl"
},
run: function(t, e, n) {
var r = n || {},
o = r.state || "",
a = t.getConfig(),
d = this.em.getZoomDecimal(),
h = r.el || "";
if (!a.showOffsets || Object(l.r)(h) || !a.showOffsetsSelected && "Fixed" == o) t.stopCommand(this.id, n);
else {
var f = t.Canvas,
p = function(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? c(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : c(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}({}, r.elPos || f.getElementPos(h));
Object(s.isUndefined)(r.top) || (p.top = r.top), Object(s.isUndefined)(r.left) || (p.left = r.left);
var g = window.getComputedStyle(h),
v = this.ppfx,
m = o + "State",
b = f[this.getOffsetMethod(o)](n.view);
b.style.opacity = "";
var y = this["marginT" + o],
w = this["marginB" + o],
x = this["marginL" + o],
O = this["marginR" + o],
C = this["padT" + o],
S = this["padB" + o],
k = this["padL" + o],
j = this["padR" + o];
if (b.childNodes.length && (this[m] = "1", y = b.querySelector("[data-offset-m-t]"), w = b.querySelector("[data-offset-m-b]"), x = b.querySelector("[data-offset-m-l]"), O = b.querySelector("[data-offset-m-r]"), C = b.querySelector("[data-offset-p-t]"), S = b.querySelector("[data-offset-p-b]"), k = b.querySelector("[data-offset-p-l]"), j = b.querySelector("[data-offset-p-r]")), !this[m]) {
var T = o.toLowerCase(),
P = T + "margin-v",
E = T + "padding-v",
M = u('<div class="'.concat(v, 'marginName">')).get(0),
D = u('<div class="'.concat(v, 'paddingName">')).get(0),
A = v + E + "-el",
L = "".concat(v + P + "-el", " ").concat(v + P),
_ = "".concat(A, " ").concat(v + E);
y = u('<div class="'.concat(L, '-top"></div>')).get(0), w = u('<div class="'.concat(L, '-bottom"></div>')).get(0), x = u('<div class="'.concat(L, '-left"></div>')).get(0), O = u('<div class="'.concat(L, '-right"></div>')).get(0), C = u('<div class="'.concat(_, '-top"></div>')).get(0), S = u('<div class="'.concat(_, '-bottom"></div>')).get(0), k = u('<div class="'.concat(_, '-left"></div>')).get(0), j = u('<div class="'.concat(_, '-right"></div>')).get(0), this["marginT" + o] = y, this["marginB" + o] = w, this["marginL" + o] = x, this["marginR" + o] = O, this["padT" + o] = C, this["padB" + o] = S, this["padL" + o] = k, this["padR" + o] = j, M.appendChild(y), M.appendChild(w), M.appendChild(x), M.appendChild(O), D.appendChild(C), D.appendChild(S), D.appendChild(k), D.appendChild(j), b.appendChild(M), b.appendChild(D), this[m] = "1"
}
var N = "px",
I = parseFloat(g.marginLeft.replace(N, "")) * d,
F = parseFloat(g.marginRight.replace(N, "")) * d,
V = parseFloat(g.marginTop.replace(N, "")) * d,
R = parseFloat(g.marginBottom.replace(N, "")) * d,
z = y.style,
H = w.style,
$ = x.style,
U = O.style,
B = C.style,
W = S.style,
q = k.style,
G = j.style,
K = parseFloat(p.left),
Y = parseFloat(g.width) * d + N;
z.height = V + N, z.width = Y, z.top = p.top - V + N, z.left = K + N, H.height = R + N, H.width = Y, H.top = p.top + p.height + N, H.left = K + N;
var X = p.height + V + R + N,
J = p.top - V + N;
$.height = X, $.width = I + N, $.top = J, $.left = K - I + N, U.height = X, U.width = F + N, U.top = J, U.left = K + p.width + N;
var Z = parseFloat(g.paddingTop) * d;
B.height = Z + N;
var Q = parseFloat(g.paddingBottom) * d;
W.height = Q + N;
var tt = p.height - Q - Z + N,
et = p.top + Z + N;
q.height = tt, q.width = parseFloat(g.paddingLeft) * d + N, q.top = et;
var nt = parseFloat(g.paddingRight) * d;
G.height = tt, G.width = nt + N, G.top = et
}
},
stop: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = (n || {}).state || "",
i = this.getOffsetMethod(r);
t.Canvas[i](n.view).style.opacity = 0
}
}
}, function(t, e, n) {
"use strict";
n.r(e), e.default = {
run: function(t) {
this.toggleVis(t)
},
stop: function(t) {
this.toggleVis(t, 0)
},
toggleVis: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
if (!t.Commands.isActive("preview")) {
var r = n ? "add" : "remove";
t.Canvas.getFrames().forEach(function(t) {
t.view.getBody().classList[r]("".concat(e.ppfx, "dashed"))
})
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = {
stylePrefix: "",
appendTo: "",
sortable: 1,
hidable: 1,
hideTextnode: 1,
root: "",
showWrapper: 1,
showHover: 1,
scrollCanvas: {
behavior: "smooth",
block: "nearest"
},
scrollLayers: {
behavior: "auto",
block: "nearest"
},
highlightHover: 1
},
a = n(36),
s = n(0);
function l(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function c(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? l(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : l(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n = {};
return {
name: "LayerManager",
init: function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return (n = c(c({}, o), e)).stylePrefix = e.pStylePrefix, t = n.em, this
},
getConfig: function() {
return n
},
onLoad: function() {
e = new a.a({
level: 0,
config: n,
opened: n.opened || {},
model: t.get("DomComponents").getWrapper()
}), t && t.on("component:selected", this.componentChanged), this.componentChanged()
},
postRender: function() {
var t = n.appendTo,
e = n.root;
e && this.setRoot(e), t && (Object(s.isElement)(t) ? t : document.querySelector(t)).appendChild(this.render())
},
setRoot: function(t) {
return e.setRoot(t), this
},
getRoot: function() {
return e.model
},
getAll: function() {
return e
},
componentChanged: function(e) {
if (!(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).fromLayers) {
var r = t.get("opened"),
i = t.getSelected(),
o = n.scrollLayers,
a = i && i.collection ? i.collection.parent : null;
for (var s in r) r[s].set("open", 0);
for (; a;) a.set("open", 1), r[a.cid] = a, a = a.collection ? a.collection.parent : null;
if (i && o) {
var l = i.viewLayer && i.viewLayer.el;
l && l.scrollIntoView(o)
}
}
},
render: function() {
return e.render().el
},
destroy: function() {
e && e.remove(), [t, e, n].forEach(function(t) {
return {}
})
}
}
}
}, function(t, e, n) {
var r, i, o;
i = [n(0), n(1)], void 0 === (o = "function" == typeof(r = function(t, e) {
var n = Array.prototype.slice;
function r(t, e, n) {
return n.length <= 4 ? t.call(e, n[0], n[1], n[2], n[3]) : t.apply(e, n)
}
function i(t, e) {
return n.call(t, e)
}
function o(e, n) {
return null != e && (t.isArray(n) || (n = i(arguments, 1)), t.all(n, function(t) {
return t in e
}))
}
var a, s, l = (a = !1, s = -1, function() {
return a || (s++, a = !0, t.defer(function() {
a = !1
})), s
});
function c() {
this.registeredObjects = [], this.cidIndexes = []
}
function u(e, n, r, i) {
for (var o, a = 0, s = n.length; a < s; a++)
if (o = n[a]) {
if ("on" === e) {
if (!i.objectRegistry.register(o)) continue
} else if (!i.objectRegistry.unregister(o)) continue;
t.isFunction(o[e]) && o[e]("all", r, i)
}
}
function d(e, n) {
var r = n.type,
i = n.undoTypes,
o = !i[r] || i[r][e];
t.isFunction(o) && o(n.object, n.before, n.after, n.options)
}
function h(e, r, i, o, a) {
if (!(i.isCurrentlyUndoRedoing || "undo" === e && -1 === i.pointer || "redo" === e && i.pointer === i.length - 1)) {
i.isCurrentlyUndoRedoing = !0;
var s, l, c = "undo" === e;
for (a ? l = c && i.pointer === i.length - 1 || !c && -1 === i.pointer ? t.clone(i.models) : n.apply(i.models, c ? [0, i.pointer] : [i.pointer, i.length - 1]) : (s = i.at(c ? i.pointer : i.pointer + 1), l = o ? i.where({
magicFusionIndex: s.get("magicFusionIndex")
}) : [s]), i.pointer += (c ? -1 : 1) * l.length; s = c ? l.pop() : l.shift();) s[e]();
i.isCurrentlyUndoRedoing = !1, r.trigger(e, r)
}
}
c.prototype = {
isRegistered: function(e) {
return e && e.cid ? this.registeredObjects[e.cid] : t.contains(this.registeredObjects, e)
},
register: function(t) {
return !this.isRegistered(t) && (t && t.cid ? (this.registeredObjects[t.cid] = t, this.cidIndexes.push(t.cid)) : this.registeredObjects.push(t), !0)
},
unregister: function(e) {
if (this.isRegistered(e)) {
if (e && e.cid) delete this.registeredObjects[e.cid], this.cidIndexes.splice(t.indexOf(this.cidIndexes, e.cid), 1);
else {
var n = t.indexOf(this.registeredObjects, e);
this.registeredObjects.splice(n, 1)
}
return !0
}
return !1
},
get: function() {
return t.map(this.cidIndexes, function(t) {
return this.registeredObjects[t]
}, this).concat(this.registeredObjects)
}
};
var f = {
add: {
undo: function(t, e, n, r) {
t.remove(n, r)
},
redo: function(t, e, n, r) {
r.index && (r.at = r.index), t.add(n, r)
},
on: function(e, n, r) {
return {
object: n,
before: void 0,
after: e,
options: t.clone(r)
}
}
},
remove: {
undo: function(t, e, n, r) {
"index" in r && (r.at = r.index), t.add(e, r)
},
redo: function(t, e, n, r) {
t.remove(e, r)
},
on: function(e, n, r) {
return {
object: n,
before: e,
after: void 0,
options: t.clone(r)
}
}
},
change: {
undo: function(e, n, r, i) {
t.isEmpty(n) ? t.each(t.keys(r), e.unset, e) : (e.set(n), i && i.unsetData && i.unsetData.before && i.unsetData.before.length && t.each(i.unsetData.before, e.unset, e))
},
redo: function(e, n, r, i) {
t.isEmpty(r) ? t.each(t.keys(n), e.unset, e) : (e.set(r), i && i.unsetData && i.unsetData.after && i.unsetData.after.length && t.each(i.unsetData.after, e.unset, e))
},
on: function(e, n) {
var r = e.changedAttributes(),
i = t.keys(r),
o = t.pick(e.previousAttributes(), i),
a = t.keys(o),
s = (n || (n = {})).unsetData = {
after: [],
before: []
};
return i.length != a.length && (i.length > a.length ? t.each(i, function(t) {
t in o || s.before.push(t)
}, this) : t.each(a, function(t) {
t in r || s.after.push(t)
})), {
object: e,
before: o,
after: r,
options: t.clone(n)
}
}
},
reset: {
undo: function(t, e, n) {
t.reset(e)
},
redo: function(t, e, n) {
t.reset(n)
},
on: function(e, n) {
return {
object: e,
before: n.previousModels,
after: t.clone(e.models)
}
}
}
};
function p() {}
function g(e, n, r, i) {
if ("object" == typeof n) return t.each(n, function(t, n) {
2 === e ? g(e, t, r, i) : g(e, n, t, r)
});
switch (e) {
case 0:
o(r, "undo", "redo", "on") && t.all(t.pick(r, "undo", "redo", "on"), t.isFunction) && (i[n] = r);
break;
case 1:
i[n] && t.isObject(r) && (i[n] = t.extend({}, i[n], r));
break;
case 2:
delete i[n]
}
return this
}
p.prototype = f;
var v = e.Model.extend({
defaults: {
type: null,
object: null,
before: null,
after: null,
magicFusionIndex: null
},
undo: function(t) {
d("undo", this.attributes)
},
redo: function(t) {
d("redo", this.attributes)
}
}),
m = e.Collection.extend({
model: v,
pointer: -1,
track: !1,
isCurrentlyUndoRedoing: !1,
maximumStackLength: 1 / 0,
setMaxLength: function(t) {
this.maximumStackLength = t
}
}),
b = e.Model.extend({
defaults: {
maximumStackLength: 1 / 0,
track: !1
},
initialize: function(e) {
this.stack = new m, this.objectRegistry = new c, this.undoTypes = new p, this.stack.setMaxLength(this.get("maximumStackLength")), this.on("change:maximumStackLength", function(t, e) {
this.stack.setMaxLength(e)
}, this), e && e.track && this.startTracking(), e && e.register && (t.isArray(e.register) || t.isArguments(e.register) ? r(this.register, this, e.register) : this.register(e.register))
},
startTracking: function() {
this.set("track", !0), this.stack.track = !0
},
stopTracking: function() {
this.set("track", !1), this.stack.track = !1
},
isTracking: function() {
return this.get("track")
},
_addToStack: function(t) {
! function(t, e, n, i) {
if (t.track && !t.isCurrentlyUndoRedoing && e in i && function(t, e) {
var n = t.condition,
i = typeof n;
return "function" === i ? !!r(n, t, e) : "boolean" !== i || n
}(i[e], n)) {
var a = r(i[e].on, i[e], n);
if (o(a, "object", "before", "after")) {
if (a.type = e, a.magicFusionIndex = l(), a.undoTypes = i, t.pointer < t.length - 1)
for (var s = t.length - t.pointer - 1; s--;) t.pop();
t.pointer = t.length, t.add(a), t.length > t.maximumStackLength && (t.shift(), t.pointer--)
}
}
}(this.stack, t, i(arguments, 1), this.undoTypes)
},
register: function() {
u("on", arguments, this._addToStack, this)
},
unregister: function() {
u("off", arguments, this._addToStack, this)
},
unregisterAll: function() {
r(this.unregister, this, this.objectRegistry.get())
},
undo: function(t) {
h("undo", this, this.stack, t)
},
undoAll: function() {
h("undo", this, this.stack, !1, !0)
},
redo: function(t) {
h("redo", this, this.stack, t)
},
redoAll: function() {
h("redo", this, this.stack, !1, !0)
},
isAvailable: function(t) {
var e = this.stack,
n = e.length;
switch (t) {
case "undo":
return n > 0 && e.pointer > -1;
case "redo":
return n > 0 && e.pointer < n - 1;
default:
return !1
}
},
merge: function(e) {
for (var n, r = t.isArray(e) ? e : i(arguments); n = r.pop();) n instanceof b && n.stack instanceof m && (n.stack = this.stack)
},
addUndoType: function(t, e) {
g(0, t, e, this.undoTypes)
},
changeUndoType: function(t, e) {
g(1, t, e, this.undoTypes)
},
removeUndoType: function(t) {
g(2, t, void 0, this.undoTypes)
},
clear: function() {
this.stack.reset(), this.stack.pointer = -1
}
});
return t.extend(b, {
defaults: function(e) {
t.extend(b.prototype.defaults, e)
},
addUndoType: function(t, e) {
g(0, t, e, f)
},
changeUndoType: function(t, e) {
g(1, t, e, f)
},
removeUndoType: function(t) {
g(2, t, void 0, f)
}
}), e.UndoManager = b
}) ? r.apply(e, i) : r) || (t.exports = o)
}, function(t, e, n) {
"use strict";
e.a = function(t) {
var e = this.constructor;
return this.then(function(n) {
return e.resolve(t()).then(function() {
return n
})
}, function(n) {
return e.resolve(t()).then(function() {
return e.reject(n)
})
})
}
}, function(t, e, n) {
"use strict";
var r = n(8),
i = n.n(r);
e.a = function(t) {
return new this(function(e, n) {
if (!t || void 0 === t.length) return n(new TypeError(i()(t) + " " + t + " is not iterable(cannot read property Symbol(Symbol.iterator))"));
var r = Array.prototype.slice.call(t);
if (0 === r.length) return e([]);
var o = r.length;
function a(t, n) {
if (n && ("object" === i()(n) || "function" == typeof n)) {
var s = n.then;
if ("function" == typeof s) return void s.call(n, function(e) {
a(t, e)
}, function(n) {
r[t] = {
status: "rejected",
reason: n
}, 0 == --o && e(r)
})
}
r[t] = {
status: "fulfilled",
value: n
}, 0 == --o && e(r)
}
for (var s = 0; s < r.length; s++) a(s, r[s])
})
}
}, function(t, e, n) {
var r = n(87),
i = n(88),
o = n(43),
a = n(89);
t.exports = function(t, e) {
return r(t) || i(t, e) || o(t, e) || a()
}
}, function(t, e, n) {
var r = n(42);
t.exports = function(t) {
if (Array.isArray(t)) return r(t)
}
}, function(t, e) {
t.exports = function(t) {
if ("undefined" != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t)
}
}, function(t, e) {
t.exports = function() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(8),
i = n.n(r),
o = n(2),
a = n.n(o),
s = n(0),
l = n(39),
c = n.n(l);
function u(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function d(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? u(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n = {},
r = {
defaults: {
"core:undo": {
keys: "⌘+z, ctrl+z",
handler: "core:undo"
},
"core:redo": {
keys: "⌘+shift+z, ctrl+shift+z",
handler: "core:redo"
},
"core:copy": {
keys: "⌘+c, ctrl+c",
handler: "core:copy"
},
"core:paste": {
keys: "⌘+v, ctrl+v",
handler: "core:paste"
},
"core:component-next": {
keys: "s",
handler: "core:component-next"
},
"core:component-prev": {
keys: "w",
handler: "core:component-prev"
},
"core:component-enter": {
keys: "d",
handler: "core:component-enter"
},
"core:component-exit": {
keys: "a",
handler: "core:component-exit"
},
"core:component-delete": {
keys: "backspace, delete",
handler: "core:component-delete",
opts: {
prevent: 1
}
}
}
};
return {
keymaster: c.a,
name: "Keymaps",
getConfig: function() {
return e
},
init: function() {
var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return e = d(d({}, r), n), t = e.em, this.em = t, this
},
onLoad: function() {
var t = e.defaults;
for (var n in t) {
var r = t[n];
this.add(n, r.keys, r.handler, r.opts || {})
}
},
add: function(t, e, r) {
var o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
a = this.em,
l = a.get("Commands"),
u = a.getEditor(),
d = a.get("Canvas"),
h = {
id: t,
keys: e,
handler: r
};
return n[t] && this.remove(t), n[t] = h, c()(e, function(e, n) {
var c = {
event: e,
h: n
};
if (r = Object(s.isString)(r) ? l.get(r) : r, !a.isEditing() && !u.Canvas.isInputFocused() || o.force) {
o.prevent && d.getCanvasView().preventDefault(e), "object" == i()(r) ? l.runCommand(r, c) : r(u, 0, c);
var h = [t, n.shortcut, e];
a.trigger.apply(a, ["keymap:emit"].concat(h)), a.trigger.apply(a, ["keymap:emit:".concat(t)].concat(h))
}
}), a.trigger("keymap:add", h), h
},
get: function(t) {
return n[t]
},
getAll: function() {
return n
},
remove: function(t) {
var e = this.em,
r = this.get(t);
if (r) return delete n[t], r.keys.split(", ").forEach(function(t) {
return c.a.unbind(t.trim())
}), e && e.trigger("keymap:remove", r), r
},
removeAll: function() {
var t = this;
return Object.keys(n).forEach(function(e) {
return t.remove(e)
}), this
},
destroy: function() {
this.removeAll(), [t, e, n].forEach(function(t) {
return {}
}), this.em = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(70),
a = n.n(o);
function s(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function l(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? s(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : s(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n, r, i = {
maximumStackLength: 500
},
o = function(t) {
return t.avoidStore || t.noUndo
};
return {
name: "UndoManager",
init: function() {
var s = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
n = l(l({}, s), i), t = n.em, this.em = t, (e = new a.a(l({
track: !0,
register: []
}, n))).changeUndoType("change", {
condition: !1
}), e.changeUndoType("add", {
on: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (!o(n)) return {
object: e,
before: void 0,
after: t,
options: l({}, n)
}
}
}), e.changeUndoType("remove", {
on: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (!o(n)) return {
object: e,
before: t,
after: void 0,
options: l({}, n)
}
}
});
var c = {
on: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (!r && (r = t.previousAttributes()), !o(n)) {
var i = {
object: t,
before: r,
after: t.toJSON({
keepSymbols: 1
})
};
return r = null, i
}
},
undo: function(t, e, n, r) {
t.set(e)
},
redo: function(t, e, n, r) {
t.set(n)
}
};
return ["style", "attributes", "content", "src"].forEach(function(t) {
return e.addUndoType("change:".concat(t), c)
}), e.on("undo redo", function() {
return t.trigger("component:toggled change:canvasOffset")
}), ["undo", "redo"].forEach(function(n) {
return e.on(n, function() {
return t.trigger(n)
})
}), this
},
getConfig: function() {
return n
},
add: function(t) {
return e.register(t), this
},
remove: function(t) {
return e.unregister(t), this
},
removeAll: function() {
return e.unregisterAll(), this
},
start: function() {
return e.startTracking(), this
},
stop: function() {
return e.stopTracking(), this
},
undo: function() {
var n = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
return !t.isEditing() && e.undo(n), this
},
undoAll: function() {
return e.undoAll(), this
},
redo: function() {
var n = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
return !t.isEditing() && e.redo(n), this
},
redoAll: function() {
return e.redoAll(), this
},
hasUndo: function() {
return e.isAvailable("undo")
},
hasRedo: function() {
return e.isAvailable("redo")
},
getStack: function() {
return e.stack
},
getStackGroup: function() {
var t = [],
e = [];
return this.getStack().forEach(function(n) {
var r = n.get("magicFusionIndex");
e.indexOf(r) < 0 && (e.push(r), t.push(n))
}), t
},
getPointer: function() {
return this.getStack().pointer
},
clear: function() {
return e.clear(), this
},
getInstance: function() {
return e
},
destroy: function() {
this.clear().removeAll(), [t, e, n, r].forEach(function(t) {
return {}
}), this.em = {}
}
}
}
}, function(t, e, n) {
(function(t) {
var r = void 0 !== t && t || "undefined" != typeof self && self || window,
i = Function.prototype.apply;
function o(t, e) {
this._id = t, this._clearFn = e
}
e.setTimeout = function() {
return new o(i.call(setTimeout, r, arguments), clearTimeout)
}, e.setInterval = function() {
return new o(i.call(setInterval, r, arguments), clearInterval)
}, e.clearTimeout = e.clearInterval = function(t) {
t && t.close()
}, o.prototype.unref = o.prototype.ref = function() {}, o.prototype.close = function() {
this._clearFn.call(r, this._id)
}, e.enroll = function(t, e) {
clearTimeout(t._idleTimeoutId), t._idleTimeout = e
}, e.unenroll = function(t) {
clearTimeout(t._idleTimeoutId), t._idleTimeout = -1
}, e._unrefActive = e.active = function(t) {
clearTimeout(t._idleTimeoutId);
var e = t._idleTimeout;
e >= 0 && (t._idleTimeoutId = setTimeout(function() {
t._onTimeout && t._onTimeout()
}, e))
}, n(80), e.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== t && t.setImmediate || this && this.setImmediate, e.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== t && t.clearImmediate || this && this.clearImmediate
}).call(this, n(26))
}, function(t, e, n) {
(function(t, e) {
! function(t, n) {
"use strict";
if (!t.setImmediate) {
var r, i, o, a, s, l = 1,
c = {},
u = !1,
d = t.document,
h = Object.getPrototypeOf && Object.getPrototypeOf(t);
h = h && h.setTimeout ? h : t, "[object process]" === {}.toString.call(t.process) ? r = function(t) {
e.nextTick(function() {
p(t)
})
} : function() {
if (t.postMessage && !t.importScripts) {
var e = !0,
n = t.onmessage;
return t.onmessage = function() {
e = !1
}, t.postMessage("", "*"), t.onmessage = n, e
}
}() ? (a = "setImmediate$" + Math.random() + "$", s = function(e) {
e.source === t && "string" == typeof e.data && 0 === e.data.indexOf(a) && p(+e.data.slice(a.length))
}, t.addEventListener ? t.addEventListener("message", s, !1) : t.attachEvent("onmessage", s), r = function(e) {
t.postMessage(a + e, "*")
}) : t.MessageChannel ? ((o = new MessageChannel).port1.onmessage = function(t) {
p(t.data)
}, r = function(t) {
o.port2.postMessage(t)
}) : d && "onreadystatechange" in d.createElement("script") ? (i = d.documentElement, r = function(t) {
var e = d.createElement("script");
e.onreadystatechange = function() {
p(t), e.onreadystatechange = null, i.removeChild(e), e = null
}, i.appendChild(e)
}) : r = function(t) {
setTimeout(p, 0, t)
}, h.setImmediate = function(t) {
"function" != typeof t && (t = new Function("" + t));
for (var e = new Array(arguments.length - 1), n = 0; n < e.length; n++) e[n] = arguments[n + 1];
var i = {
callback: t,
args: e
};
return c[l] = i, r(l), l++
}, h.clearImmediate = f
}
function f(t) {
delete c[t]
}
function p(t) {
if (u) setTimeout(p, 0, t);
else {
var e = c[t];
if (e) {
u = !0;
try {
! function(t) {
var e = t.callback,
r = t.args;
switch (r.length) {
case 0:
e();
break;
case 1:
e(r[0]);
break;
case 2:
e(r[0], r[1]);
break;
case 3:
e(r[0], r[1], r[2]);
break;
default:
e.apply(n, r)
}
}(e)
} finally {
f(t), u = !1
}
}
}
}
}("undefined" == typeof self ? void 0 === t ? this : t : self)
}).call(this, n(26), n(81))
}, function(t, e) {
var n, r, i = t.exports = {};
function o() {
throw new Error("setTimeout has not been defined")
}
function a() {
throw new Error("clearTimeout has not been defined")
}
function s(t) {
if (n === setTimeout) return setTimeout(t, 0);
if ((n === o || !n) && setTimeout) return n = setTimeout, setTimeout(t, 0);
try {
return n(t, 0)
} catch (e) {
try {
return n.call(null, t, 0)
} catch (e) {
return n.call(this, t, 0)
}
}
}! function() {
try {
n = "function" == typeof setTimeout ? setTimeout : o
} catch (t) {
n = o
}
try {
r = "function" == typeof clearTimeout ? clearTimeout : a
} catch (t) {
r = a
}
}();
var l, c = [],
u = !1,
d = -1;
function h() {
u && l && (u = !1, l.length ? c = l.concat(c) : d = -1, c.length && f())
}
function f() {
if (!u) {
var t = s(h);
u = !0;
for (var e = c.length; e;) {
for (l = c, c = []; ++d < e;) l && l[d].run();
d = -1, e = c.length
}
l = null, u = !1,
function(t) {
if (r === clearTimeout) return clearTimeout(t);
if ((r === a || !r) && clearTimeout) return r = clearTimeout, clearTimeout(t);
try {
r(t)
} catch (e) {
try {
return r.call(null, t)
} catch (e) {
return r.call(this, t)
}
}
}(t)
}
}
function p(t, e) {
this.fun = t, this.array = e
}
function g() {}
i.nextTick = function(t) {
var e = new Array(arguments.length - 1);
if (arguments.length > 1)
for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
c.push(new p(t, e)), 1 !== c.length || u || s(f)
}, p.prototype.run = function() {
this.fun.apply(null, this.array)
}, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = g, i.addListener = g, i.once = g, i.off = g, i.removeListener = g, i.removeAllListeners = g, i.emit = g, i.prependListener = g, i.prependOnceListener = g, i.listeners = function(t) {
return []
}, i.binding = function(t) {
throw new Error("process.binding is not supported")
}, i.cwd = function() {
return "/"
}, i.chdir = function(t) {
throw new Error("process.chdir is not supported")
}, i.umask = function() {
return 0
}
}, function(t, e) {
t.exports = function(t, e) {
if (null == t) return {};
var n, r, i = {},
o = Object.keys(t);
for (r = 0; r < o.length; r++) n = o[r], e.indexOf(n) >= 0 || (i[n] = t[n]);
return i
}
}, function(t, e, n) {
! function(t) {
"use strict";
var e = {
script: [
["lang", /(javascript|babel)/i, "javascript"],
["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, "javascript"],
["type", /./, "text/plain"],
[null, null, "javascript"]
],
style: [
["lang", /^css$/i, "css"],
["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"],
["type", /./, "text/plain"],
[null, null, "css"]
]
},
n = {};
function r(t, e) {
var r = t.match(function(t) {
return n[t] || (n[t] = new RegExp("\\s+" + t + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))
}(e));
return r ? /^\s*(.*?)\s*$/.exec(r[2])[1] : ""
}
function i(t, e) {
return new RegExp((e ? "^" : "") + "</s*" + t + "s*>", "i")
}
function o(t, e) {
for (var n in t)
for (var r = e[n] || (e[n] = []), i = t[n], o = i.length - 1; o >= 0; o--) r.unshift(i[o])
}
t.defineMode("htmlmixed", function(n, a) {
var s = t.getMode(n, {
name: "xml",
htmlMode: !0,
multilineTagIndentFactor: a.multilineTagIndentFactor,
multilineTagIndentPastTag: a.multilineTagIndentPastTag,
allowMissingTagName: a.allowMissingTagName
}),
l = {},
c = a && a.tags,
u = a && a.scriptTypes;
if (o(e, l), c && o(c, l), u)
for (var d = u.length - 1; d >= 0; d--) l.script.unshift(["type", u[d].matches, u[d].mode]);
function h(e, o) {
var a, c = s.token(e, o.htmlState),
u = /\btag\b/.test(c);
if (u && !/[<>\s\/]/.test(e.current()) && (a = o.htmlState.tagName && o.htmlState.tagName.toLowerCase()) && l.hasOwnProperty(a)) o.inTag = a + " ";
else if (o.inTag && u && />$/.test(e.current())) {
var d = /^([\S]+) (.*)/.exec(o.inTag);
o.inTag = null;
var f = ">" == e.current() && function(t, e) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
if (!i[0] || i[1].test(r(e, i[0]))) return i[2]
}
}(l[d[1]], d[2]),
p = t.getMode(n, f),
g = i(d[1], !0),
v = i(d[1], !1);
o.token = function(t, e) {
return t.match(g, !1) ? (e.token = h, e.localState = e.localMode = null, null) : function(t, e, n) {
var r = t.current(),
i = r.search(e);
return i > -1 ? t.backUp(r.length - i) : r.match(/<\/?$/) && (t.backUp(r.length), t.match(e, !1) || t.match(r)), n
}(t, v, e.localMode.token(t, e.localState))
}, o.localMode = p, o.localState = t.startState(p, s.indent(o.htmlState, "", ""))
} else o.inTag && (o.inTag += e.current(), e.eol() && (o.inTag += " "));
return c
}
return {
startState: function() {
return {
token: h,
inTag: null,
localMode: null,
localState: null,
htmlState: t.startState(s)
}
},
copyState: function(e) {
var n;
return e.localState && (n = t.copyState(e.localMode, e.localState)), {
token: e.token,
inTag: e.inTag,
localMode: e.localMode,
localState: n,
htmlState: t.copyState(s, e.htmlState)
}
},
token: function(t, e) {
return e.token(t, e)
},
indent: function(e, n, r) {
return !e.localMode || /^\s*<\//.test(n) ? s.indent(e.htmlState, n, r) : e.localMode.indent ? e.localMode.indent(e.localState, n, r) : t.Pass
},
innerMode: function(t) {
return {
state: t.localState || t.htmlState,
mode: t.localMode || s
}
}
}
}, "xml", "javascript", "css"), t.defineMIME("text/html", "htmlmixed")
}(n(13), n(84), n(85), n(44))
}, function(t, e, n) {
! function(t) {
"use strict";
var e = {
autoSelfClosers: {
area: !0,
base: !0,
br: !0,
col: !0,
command: !0,
embed: !0,
frame: !0,
hr: !0,
img: !0,
input: !0,
keygen: !0,
link: !0,
meta: !0,
param: !0,
source: !0,
track: !0,
wbr: !0,
menuitem: !0
},
implicitlyClosed: {
dd: !0,
li: !0,
optgroup: !0,
option: !0,
p: !0,
rp: !0,
rt: !0,
tbody: !0,
td: !0,
tfoot: !0,
th: !0,
tr: !0
},
contextGrabbers: {
dd: {
dd: !0,
dt: !0
},
dt: {
dd: !0,
dt: !0
},
li: {
li: !0
},
option: {
option: !0,
optgroup: !0
},
optgroup: {
optgroup: !0
},
p: {
address: !0,
article: !0,
aside: !0,
blockquote: !0,
dir: !0,
div: !0,
dl: !0,
fieldset: !0,
footer: !0,
form: !0,
h1: !0,
h2: !0,
h3: !0,
h4: !0,
h5: !0,
h6: !0,
header: !0,
hgroup: !0,
hr: !0,
menu: !0,
nav: !0,
ol: !0,
p: !0,
pre: !0,
section: !0,
table: !0,
ul: !0
},
rp: {
rp: !0,
rt: !0
},
rt: {
rp: !0,
rt: !0
},
tbody: {
tbody: !0,
tfoot: !0
},
td: {
td: !0,
th: !0
},
tfoot: {
tbody: !0
},
th: {
td: !0,
th: !0
},
thead: {
tbody: !0,
tfoot: !0
},
tr: {
tr: !0
}
},
doNotIndent: {
pre: !0
},
allowUnquoted: !0,
allowMissing: !0,
caseFold: !0
},
n = {
autoSelfClosers: {},
implicitlyClosed: {},
contextGrabbers: {},
doNotIndent: {},
allowUnquoted: !1,
allowMissing: !1,
allowMissingTagName: !1,
caseFold: !1
};
t.defineMode("xml", function(r, i) {
var o, a, s = r.indentUnit,
l = {},
c = i.htmlMode ? e : n;
for (var u in c) l[u] = c[u];
for (var u in i) l[u] = i[u];
function d(t, e) {
function n(n) {
return e.tokenize = n, n(t, e)
}
var r = t.next();
return "<" == r ? t.eat("!") ? t.eat("[") ? t.match("CDATA[") ? n(f("atom", "]]>")) : null : t.match("--") ? n(f("comment", "--\x3e")) : t.match("DOCTYPE", !0, !0) ? (t.eatWhile(/[\w\._\-]/), n(function t(e) {
return function(n, r) {
for (var i; null != (i = n.next());) {
if ("<" == i) return r.tokenize = t(e + 1), r.tokenize(n, r);
if (">" == i) {
if (1 == e) {
r.tokenize = d;
break
}
return r.tokenize = t(e - 1), r.tokenize(n, r)
}
}
return "meta"
}
}(1))) : null : t.eat("?") ? (t.eatWhile(/[\w\._\-]/), e.tokenize = f("meta", "?>"), "meta") : (o = t.eat("/") ? "closeTag" : "openTag", e.tokenize = h, "tag bracket") : "&" == r ? (t.eat("#") ? t.eat("x") ? t.eatWhile(/[a-fA-F\d]/) && t.eat(";") : t.eatWhile(/[\d]/) && t.eat(";") : t.eatWhile(/[\w\.\-:]/) && t.eat(";")) ? "atom" : "error" : (t.eatWhile(/[^&<]/), null)
}
function h(t, e) {
var n, r, i = t.next();
if (">" == i || "/" == i && t.eat(">")) return e.tokenize = d, o = ">" == i ? "endTag" : "selfcloseTag", "tag bracket";
if ("=" == i) return o = "equals", null;
if ("<" == i) {
e.tokenize = d, e.state = m, e.tagName = e.tagStart = null;
var a = e.tokenize(t, e);
return a ? a + " tag error" : "tag error"
}
return /[\'\"]/.test(i) ? (e.tokenize = (n = i, (r = function(t, e) {
for (; !t.eol();)
if (t.next() == n) {
e.tokenize = h;
break
} return "string"
}).isInAttribute = !0, r), e.stringStartCol = t.column(), e.tokenize(t, e)) : (t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/), "word")
}
function f(t, e) {
return function(n, r) {
for (; !n.eol();) {
if (n.match(e)) {
r.tokenize = d;
break
}
n.next()
}
return t
}
}
function p(t, e, n) {
this.prev = t.context, this.tagName = e || "", this.indent = t.indented, this.startOfLine = n, (l.doNotIndent.hasOwnProperty(e) || t.context && t.context.noIndent) && (this.noIndent = !0)
}
function g(t) {
t.context && (t.context = t.context.prev)
}
function v(t, e) {
for (var n;;) {
if (!t.context) return;
if (n = t.context.tagName, !l.contextGrabbers.hasOwnProperty(n) || !l.contextGrabbers[n].hasOwnProperty(e)) return;
g(t)
}
}
function m(t, e, n) {
return "openTag" == t ? (n.tagStart = e.column(), b) : "closeTag" == t ? y : m
}
function b(t, e, n) {
return "word" == t ? (n.tagName = e.current(), a = "tag", O) : l.allowMissingTagName && "endTag" == t ? (a = "tag bracket", O(t, 0, n)) : (a = "error", b)
}
function y(t, e, n) {
if ("word" == t) {
var r = e.current();
return n.context && n.context.tagName != r && l.implicitlyClosed.hasOwnProperty(n.context.tagName) && g(n), n.context && n.context.tagName == r || !1 === l.matchClosing ? (a = "tag", w) : (a = "tag error", x)
}
return l.allowMissingTagName && "endTag" == t ? (a = "tag bracket", w(t, 0, n)) : (a = "error", x)
}
function w(t, e, n) {
return "endTag" != t ? (a = "error", w) : (g(n), m)
}
function x(t, e, n) {
return a = "error", w(t, 0, n)
}
function O(t, e, n) {
if ("word" == t) return a = "attribute", C;
if ("endTag" == t || "selfcloseTag" == t) {
var r = n.tagName,
i = n.tagStart;
return n.tagName = n.tagStart = null, "selfcloseTag" == t || l.autoSelfClosers.hasOwnProperty(r) ? v(n, r) : (v(n, r), n.context = new p(n, r, i == n.indented)), m
}
return a = "error", O
}
function C(t, e, n) {
return "equals" == t ? S : (l.allowMissing || (a = "error"), O(t, 0, n))
}
function S(t, e, n) {
return "string" == t ? k : "word" == t && l.allowUnquoted ? (a = "string", O) : (a = "error", O(t, 0, n))
}
function k(t, e, n) {
return "string" == t ? k : O(t, 0, n)
}
return d.isInText = !0, {
startState: function(t) {
var e = {
tokenize: d,
state: m,
indented: t || 0,
tagName: null,
tagStart: null,
context: null
};
return null != t && (e.baseIndent = t), e
},
token: function(t, e) {
if (!e.tagName && t.sol() && (e.indented = t.indentation()), t.eatSpace()) return null;
o = null;
var n = e.tokenize(t, e);
return (n || o) && "comment" != n && (a = null, e.state = e.state(o || n, t, e), a && (n = "error" == a ? n + " error" : a)), n
},
indent: function(e, n, r) {
var i = e.context;
if (e.tokenize.isInAttribute) return e.tagStart == e.indented ? e.stringStartCol + 1 : e.indented + s;
if (i && i.noIndent) return t.Pass;
if (e.tokenize != h && e.tokenize != d) return r ? r.match(/^(\s*)/)[0].length : 0;
if (e.tagName) return !1 !== l.multilineTagIndentPastTag ? e.tagStart + e.tagName.length + 2 : e.tagStart + s * (l.multilineTagIndentFactor || 1);
if (l.alignCDATA && /<!\[CDATA\[/.test(n)) return 0;
var o = n && /^<(\/)?([\w_:\.-]*)/.exec(n);
if (o && o[1])
for (; i;) {
if (i.tagName == o[2]) {
i = i.prev;
break
}
if (!l.implicitlyClosed.hasOwnProperty(i.tagName)) break;
i = i.prev
} else if (o)
for (; i;) {
var a = l.contextGrabbers[i.tagName];
if (!a || !a.hasOwnProperty(o[2])) break;
i = i.prev
}
for (; i && i.prev && !i.startOfLine;) i = i.prev;
return i ? i.indent + s : e.baseIndent || 0
},
electricInput: /<\/[\s\w:]+>$/,
blockCommentStart: "\x3c!--",
blockCommentEnd: "--\x3e",
configuration: l.htmlMode ? "html" : "xml",
helperType: l.htmlMode ? "html" : "xml",
skipAttribute: function(t) {
t.state == S && (t.state = O)
},
xmlCurrentTag: function(t) {
return t.tagName ? {
name: t.tagName,
close: "closeTag" == t.type
} : null
},
xmlCurrentContext: function(t) {
for (var e = [], n = t.context; n; n = n.prev) e.push(n.tagName);
return e.reverse()
}
}
}), t.defineMIME("text/xml", "xml"), t.defineMIME("application/xml", "xml"), t.mimeModes.hasOwnProperty("text/html") || t.defineMIME("text/html", {
name: "xml",
htmlMode: !0
})
}(n(13))
}, function(t, e, n) {
! function(t) {
"use strict";
t.defineMode("javascript", function(e, n) {
var r, i, o = e.indentUnit,
a = n.statementIndent,
s = n.jsonld,
l = n.json || s,
c = n.typescript,
u = n.wordCharacters || /[\w$\xa1-\uffff]/,
d = function() {
function t(t) {
return {
type: t,
style: "keyword"
}
}
var e = t("keyword a"),
n = t("keyword b"),
r = t("keyword c"),
i = t("keyword d"),
o = t("operator"),
a = {
type: "atom",
style: "atom"
};
return {
if: t("if"),
while: e,
with: e,
else: n,
do: n,
try: n,
finally: n,
return: i,
break: i,
continue: i,
new: t("new"),
delete: r,
void: r,
throw: r,
debugger: t("debugger"),
var: t("var"),
const: t("var"),
let: t("var"),
function: t("function"),
catch: t("catch"),
for: t("for"),
switch: t("switch"),
case: t("case"),
default: t("default"),
in: o,
typeof: o,
instanceof: o,
true: a,
false: a,
null: a,
undefined: a,
NaN: a,
Infinity: a,
this: t("this"),
class: t("class"),
super: t("atom"),
yield: r,
export: t("export"),
import: t("import"),
extends: r,
await: r
}
}(),
h = /[+\-*&%=<>!?|~^@]/,
f = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;
function p(t, e, n) {
return r = t, i = n, e
}
function g(t, e) {
var n, r = t.next();
if ('"' == r || "'" == r) return e.tokenize = (n = r, function(t, e) {
var r, i = !1;
if (s && "@" == t.peek() && t.match(f)) return e.tokenize = g, p("jsonld-keyword", "meta");
for (; null != (r = t.next()) && (r != n || i);) i = !i && "\\" == r;
return i || (e.tokenize = g), p("string", "string")
}), e.tokenize(t, e);
if ("." == r && t.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) return p("number", "number");
if ("." == r && t.match("..")) return p("spread", "meta");
if (/[\[\]{}\(\),;\:\.]/.test(r)) return p(r);
if ("=" == r && t.eat(">")) return p("=>", "operator");
if ("0" == r && t.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) return p("number", "number");
if (/\d/.test(r)) return t.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/), p("number", "number");
if ("/" == r) return t.eat("*") ? (e.tokenize = v, v(t, e)) : t.eat("/") ? (t.skipToEnd(), p("comment", "comment")) : Yt(t, e, 1) ? (function(t) {
for (var e, n = !1, r = !1; null != (e = t.next());) {
if (!n) {
if ("/" == e && !r) return;
"[" == e ? r = !0 : r && "]" == e && (r = !1)
}
n = !n && "\\" == e
}
}(t), t.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/), p("regexp", "string-2")) : (t.eat("="), p("operator", "operator", t.current()));
if ("`" == r) return e.tokenize = m, m(t, e);
if ("#" == r && "!" == t.peek()) return t.skipToEnd(), p("meta", "meta");
if ("#" == r && t.eatWhile(u)) return p("variable", "property");
if ("<" == r && t.match("!--") || "-" == r && t.match("->") && !/\S/.test(t.string.slice(0, t.start))) return t.skipToEnd(), p("comment", "comment");
if (h.test(r)) return ">" == r && e.lexical && ">" == e.lexical.type || (t.eat("=") ? "!" != r && "=" != r || t.eat("=") : /[<>*+\-|&?]/.test(r) && (t.eat(r), ">" == r && t.eat(r))), "?" == r && t.eat(".") ? p(".") : p("operator", "operator", t.current());
if (u.test(r)) {
t.eatWhile(u);
var i = t.current();
if ("." != e.lastType) {
if (d.propertyIsEnumerable(i)) {
var o = d[i];
return p(o.type, o.style, i)
}
if ("async" == i && t.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/, !1)) return p("async", "keyword", i)
}
return p("variable", "variable", i)
}
}
function v(t, e) {
for (var n, r = !1; n = t.next();) {
if ("/" == n && r) {
e.tokenize = g;
break
}
r = "*" == n
}
return p("comment", "comment")
}
function m(t, e) {
for (var n, r = !1; null != (n = t.next());) {
if (!r && ("`" == n || "$" == n && t.eat("{"))) {
e.tokenize = g;
break
}
r = !r && "\\" == n
}
return p("quasi", "string-2", t.current())
}
var b = "([{}])";
function y(t, e) {
e.fatArrowAt && (e.fatArrowAt = null);
var n = t.string.indexOf("=>", t.start);
if (!(n < 0)) {
if (c) {
var r = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(t.string.slice(t.start, n));
r && (n = r.index)
}
for (var i = 0, o = !1, a = n - 1; a >= 0; --a) {
var s = t.string.charAt(a),
l = b.indexOf(s);
if (l >= 0 && l < 3) {
if (!i) {
++a;
break
}
if (0 == --i) {
"(" == s && (o = !0);
break
}
} else if (l >= 3 && l < 6) ++i;
else if (u.test(s)) o = !0;
else if (/["'\/`]/.test(s))
for (;; --a) {
if (0 == a) return;
if (t.string.charAt(a - 1) == s && "\\" != t.string.charAt(a - 2)) {
a--;
break
}
} else if (o && !i) {
++a;
break
}
}
o && !i && (e.fatArrowAt = a)
}
}
var w = {
atom: !0,
number: !0,
variable: !0,
string: !0,
regexp: !0,
this: !0,
"jsonld-keyword": !0
};
function x(t, e, n, r, i, o) {
this.indented = t, this.column = e, this.type = n, this.prev = i, this.info = o, null != r && (this.align = r)
}
function O(t, e) {
for (var n = t.localVars; n; n = n.next)
if (n.name == e) return !0;
for (var r = t.context; r; r = r.prev)
for (n = r.vars; n; n = n.next)
if (n.name == e) return !0
}
var C = {
state: null,
column: null,
marked: null,
cc: null
};
function S() {
for (var t = arguments.length - 1; t >= 0; t--) C.cc.push(arguments[t])
}
function k() {
return S.apply(null, arguments), !0
}
function j(t, e) {
for (var n = e; n; n = n.next)
if (n.name == t) return !0;
return !1
}
function T(t) {
var e = C.state;
if (C.marked = "def", e.context)
if ("var" == e.lexical.info && e.context && e.context.block) {
var r = function t(e, n) {
if (n) {
if (n.block) {
var r = t(e, n.prev);
return r ? r == n.prev ? n : new E(r, n.vars, !0) : null
}
return j(e, n.vars) ? n : new E(n.prev, new M(e, n.vars), !1)
}
return null
}(t, e.context);
if (null != r) return void(e.context = r)
} else if (!j(t, e.localVars)) return void(e.localVars = new M(t, e.localVars));
n.globalVars && !j(t, e.globalVars) && (e.globalVars = new M(t, e.globalVars))
}
function P(t) {
return "public" == t || "private" == t || "protected" == t || "abstract" == t || "readonly" == t
}
function E(t, e, n) {
this.prev = t, this.vars = e, this.block = n
}
function M(t, e) {
this.name = t, this.next = e
}
var D = new M("this", new M("arguments", null));
function A() {
C.state.context = new E(C.state.context, C.state.localVars, !1), C.state.localVars = D
}
function L() {
C.state.context = new E(C.state.context, C.state.localVars, !0), C.state.localVars = null
}
function _() {
C.state.localVars = C.state.context.vars, C.state.context = C.state.context.prev
}
function N(t, e) {
var n = function() {
var n = C.state,
r = n.indented;
if ("stat" == n.lexical.type) r = n.lexical.indented;
else
for (var i = n.lexical; i && ")" == i.type && i.align; i = i.prev) r = i.indented;
n.lexical = new x(r, C.stream.column(), t, null, n.lexical, e)
};
return n.lex = !0, n
}
function I() {
var t = C.state;
t.lexical.prev && (")" == t.lexical.type && (t.indented = t.lexical.indented), t.lexical = t.lexical.prev)
}
function F(t) {
return function e(n) {
return n == t ? k() : ";" == t || "}" == n || ")" == n || "]" == n ? S() : k(e)
}
}
function V(t, e) {
return "var" == t ? k(N("vardef", e), wt, F(";"), I) : "keyword a" == t ? k(N("form"), $, V, I) : "keyword b" == t ? k(N("form"), V, I) : "keyword d" == t ? C.stream.match(/^\s*$/, !1) ? k() : k(N("stat"), B, F(";"), I) : "debugger" == t ? k(F(";")) : "{" == t ? k(N("}"), L, at, I, _) : ";" == t ? k() : "if" == t ? ("else" == C.state.lexical.info && C.state.cc[C.state.cc.length - 1] == I && C.state.cc.pop()(), k(N("form"), $, V, I, jt)) : "function" == t ? k(Mt) : "for" == t ? k(N("form"), Tt, V, I) : "class" == t || c && "interface" == e ? (C.marked = "keyword", k(N("form", "class" == t ? t : e), Nt, I)) : "variable" == t ? c && "declare" == e ? (C.marked = "keyword", k(V)) : c && ("module" == e || "enum" == e || "type" == e) && C.stream.match(/^\s*\w/, !1) ? (C.marked = "keyword", "enum" == e ? k(Gt) : "type" == e ? k(At, F("operator"), dt, F(";")) : k(N("form"), xt, F("{"), N("}"), at, I, I)) : c && "namespace" == e ? (C.marked = "keyword", k(N("form"), z, V, I)) : c && "abstract" == e ? (C.marked = "keyword", k(V)) : k(N("stat"), Q) : "switch" == t ? k(N("form"), $, F("{"), N("}", "switch"), L, at, I, I, _) : "case" == t ? k(z, F(":")) : "default" == t ? k(F(":")) : "catch" == t ? k(N("form"), A, R, V, I, _) : "export" == t ? k(N("stat"), Rt, I) : "import" == t ? k(N("stat"), Ht, I) : "async" == t ? k(V) : "@" == e ? k(z, V) : S(N("stat"), z, F(";"), I)
}
function R(t) {
if ("(" == t) return k(Lt, F(")"))
}
function z(t, e) {
return U(t, e, !1)
}
function H(t, e) {
return U(t, e, !0)
}
function $(t) {
return "(" != t ? S() : k(N(")"), B, F(")"), I)
}
function U(t, e, n) {
if (C.state.fatArrowAt == C.stream.start) {
var r = n ? X : Y;
if ("(" == t) return k(A, N(")"), it(Lt, ")"), I, F("=>"), r, _);
if ("variable" == t) return S(A, xt, F("=>"), r, _)
}
var i = n ? q : W;
return w.hasOwnProperty(t) ? k(i) : "function" == t ? k(Mt, i) : "class" == t || c && "interface" == e ? (C.marked = "keyword", k(N("form"), _t, I)) : "keyword c" == t || "async" == t ? k(n ? H : z) : "(" == t ? k(N(")"), B, F(")"), I, i) : "operator" == t || "spread" == t ? k(n ? H : z) : "[" == t ? k(N("]"), qt, I, i) : "{" == t ? ot(et, "}", null, i) : "quasi" == t ? S(G, i) : "new" == t ? k(function(t) {
return function(e) {
return "." == e ? k(t ? Z : J) : "variable" == e && c ? k(mt, t ? q : W) : S(t ? H : z)
}
}(n)) : "import" == t ? k(z) : k()
}
function B(t) {
return t.match(/[;\}\)\],]/) ? S() : S(z)
}
function W(t, e) {
return "," == t ? k(B) : q(t, e, !1)
}
function q(t, e, n) {
var r = 0 == n ? W : q,
i = 0 == n ? z : H;
return "=>" == t ? k(A, n ? X : Y, _) : "operator" == t ? /\+\+|--/.test(e) || c && "!" == e ? k(r) : c && "<" == e && C.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/, !1) ? k(N(">"), it(dt, ">"), I, r) : "?" == e ? k(z, F(":"), i) : k(i) : "quasi" == t ? S(G, r) : ";" != t ? "(" == t ? ot(H, ")", "call", r) : "." == t ? k(tt, r) : "[" == t ? k(N("]"), B, F("]"), I, r) : c && "as" == e ? (C.marked = "keyword", k(dt, r)) : "regexp" == t ? (C.state.lastType = C.marked = "operator", C.stream.backUp(C.stream.pos - C.stream.start - 1), k(i)) : void 0 : void 0
}
function G(t, e) {
return "quasi" != t ? S() : "${" != e.slice(e.length - 2) ? k(G) : k(z, K)
}
function K(t) {
if ("}" == t) return C.marked = "string-2", C.state.tokenize = m, k(G)
}
function Y(t) {
return y(C.stream, C.state), S("{" == t ? V : z)
}
function X(t) {
return y(C.stream, C.state), S("{" == t ? V : H)
}
function J(t, e) {
if ("target" == e) return C.marked = "keyword", k(W)
}
function Z(t, e) {
if ("target" == e) return C.marked = "keyword", k(q)
}
function Q(t) {
return ":" == t ? k(I, V) : S(W, F(";"), I)
}
function tt(t) {
if ("variable" == t) return C.marked = "property", k()
}
function et(t, e) {
return "async" == t ? (C.marked = "property", k(et)) : "variable" == t || "keyword" == C.style ? (C.marked = "property", "get" == e || "set" == e ? k(nt) : (c && C.state.fatArrowAt == C.stream.start && (n = C.stream.match(/^\s*:\s*/, !1)) && (C.state.fatArrowAt = C.stream.pos + n[0].length), k(rt))) : "number" == t || "string" == t ? (C.marked = s ? "property" : C.style + " property", k(rt)) : "jsonld-keyword" == t ? k(rt) : c && P(e) ? (C.marked = "keyword", k(et)) : "[" == t ? k(z, st, F("]"), rt) : "spread" == t ? k(H, rt) : "*" == e ? (C.marked = "keyword", k(et)) : ":" == t ? S(rt) : void 0;
var n
}
function nt(t) {
return "variable" != t ? S(rt) : (C.marked = "property", k(Mt))
}
function rt(t) {
return ":" == t ? k(H) : "(" == t ? S(Mt) : void 0
}
function it(t, e, n) {
function r(i, o) {
if (n ? n.indexOf(i) > -1 : "," == i) {
var a = C.state.lexical;
return "call" == a.info && (a.pos = (a.pos || 0) + 1), k(function(n, r) {
return n == e || r == e ? S() : S(t)
}, r)
}
return i == e || o == e ? k() : n && n.indexOf(";") > -1 ? S(t) : k(F(e))
}
return function(n, i) {
return n == e || i == e ? k() : S(t, r)
}
}
function ot(t, e, n) {
for (var r = 3; r < arguments.length; r++) C.cc.push(arguments[r]);
return k(N(e, n), it(t, e), I)
}
function at(t) {
return "}" == t ? k() : S(V, at)
}
function st(t, e) {
if (c) {
if (":" == t) return k(dt);
if ("?" == e) return k(st)
}
}
function lt(t, e) {
if (c && (":" == t || "in" == e)) return k(dt)
}
function ct(t) {
if (c && ":" == t) return C.stream.match(/^\s*\w+\s+is\b/, !1) ? k(z, ut, dt) : k(dt)
}
function ut(t, e) {
if ("is" == e) return C.marked = "keyword", k()
}
function dt(t, e) {
return "keyof" == e || "typeof" == e || "infer" == e ? (C.marked = "keyword", k("typeof" == e ? H : dt)) : "variable" == t || "void" == e ? (C.marked = "type", k(vt)) : "|" == e || "&" == e ? k(dt) : "string" == t || "number" == t || "atom" == t ? k(vt) : "[" == t ? k(N("]"), it(dt, "]", ","), I, vt) : "{" == t ? k(N("}"), ft, I, vt) : "(" == t ? k(it(gt, ")"), ht, vt) : "<" == t ? k(it(dt, ">"), dt) : void 0
}
function ht(t) {
if ("=>" == t) return k(dt)
}
function ft(t) {
return "}" == t ? k() : "," == t || ";" == t ? k(ft) : S(pt, ft)
}
function pt(t, e) {
return "variable" == t || "keyword" == C.style ? (C.marked = "property", k(pt)) : "?" == e || "number" == t || "string" == t ? k(pt) : ":" == t ? k(dt) : "[" == t ? k(F("variable"), lt, F("]"), pt) : "(" == t ? S(Dt, pt) : t.match(/[;\}\)\],]/) ? void 0 : k()
}
function gt(t, e) {
return "variable" == t && C.stream.match(/^\s*[?:]/, !1) || "?" == e ? k(gt) : ":" == t ? k(dt) : "spread" == t ? k(gt) : S(dt)
}
function vt(t, e) {
return "<" == e ? k(N(">"), it(dt, ">"), I, vt) : "|" == e || "." == t || "&" == e ? k(dt) : "[" == t ? k(dt, F("]"), vt) : "extends" == e || "implements" == e ? (C.marked = "keyword", k(dt)) : "?" == e ? k(dt, F(":"), dt) : void 0
}
function mt(t, e) {
if ("<" == e) return k(N(">"), it(dt, ">"), I, vt)
}
function bt() {
return S(dt, yt)
}
function yt(t, e) {
if ("=" == e) return k(dt)
}
function wt(t, e) {
return "enum" == e ? (C.marked = "keyword", k(Gt)) : S(xt, st, St, kt)
}
function xt(t, e) {
return c && P(e) ? (C.marked = "keyword", k(xt)) : "variable" == t ? (T(e), k()) : "spread" == t ? k(xt) : "[" == t ? ot(Ct, "]") : "{" == t ? ot(Ot, "}") : void 0
}
function Ot(t, e) {
return "variable" != t || C.stream.match(/^\s*:/, !1) ? ("variable" == t && (C.marked = "property"), "spread" == t ? k(xt) : "}" == t ? S() : "[" == t ? k(z, F("]"), F(":"), Ot) : k(F(":"), xt, St)) : (T(e), k(St))
}
function Ct() {
return S(xt, St)
}
function St(t, e) {
if ("=" == e) return k(H)
}
function kt(t) {
if ("," == t) return k(wt)
}
function jt(t, e) {
if ("keyword b" == t && "else" == e) return k(N("form", "else"), V, I)
}
function Tt(t, e) {
return "await" == e ? k(Tt) : "(" == t ? k(N(")"), Pt, I) : void 0
}
function Pt(t) {
return "var" == t ? k(wt, Et) : "variable" == t ? k(Et) : S(Et)
}
function Et(t, e) {
return ")" == t ? k() : ";" == t ? k(Et) : "in" == e || "of" == e ? (C.marked = "keyword", k(z, Et)) : S(z, Et)
}
function Mt(t, e) {
return "*" == e ? (C.marked = "keyword", k(Mt)) : "variable" == t ? (T(e), k(Mt)) : "(" == t ? k(A, N(")"), it(Lt, ")"), I, ct, V, _) : c && "<" == e ? k(N(">"), it(bt, ">"), I, Mt) : void 0
}
function Dt(t, e) {
return "*" == e ? (C.marked = "keyword", k(Dt)) : "variable" == t ? (T(e), k(Dt)) : "(" == t ? k(A, N(")"), it(Lt, ")"), I, ct, _) : c && "<" == e ? k(N(">"), it(bt, ">"), I, Dt) : void 0
}
function At(t, e) {
return "keyword" == t || "variable" == t ? (C.marked = "type", k(At)) : "<" == e ? k(N(">"), it(bt, ">"), I) : void 0
}
function Lt(t, e) {
return "@" == e && k(z, Lt), "spread" == t ? k(Lt) : c && P(e) ? (C.marked = "keyword", k(Lt)) : c && "this" == t ? k(st, St) : S(xt, st, St)
}
function _t(t, e) {
return "variable" == t ? Nt(t, e) : It(t, e)
}
function Nt(t, e) {
if ("variable" == t) return T(e), k(It)
}
function It(t, e) {
return "<" == e ? k(N(">"), it(bt, ">"), I, It) : "extends" == e || "implements" == e || c && "," == t ? ("implements" == e && (C.marked = "keyword"), k(c ? dt : z, It)) : "{" == t ? k(N("}"), Ft, I) : void 0
}
function Ft(t, e) {
return "async" == t || "variable" == t && ("static" == e || "get" == e || "set" == e || c && P(e)) && C.stream.match(/^\s+[\w$\xa1-\uffff]/, !1) ? (C.marked = "keyword", k(Ft)) : "variable" == t || "keyword" == C.style ? (C.marked = "property", k(Vt, Ft)) : "number" == t || "string" == t ? k(Vt, Ft) : "[" == t ? k(z, st, F("]"), Vt, Ft) : "*" == e ? (C.marked = "keyword", k(Ft)) : c && "(" == t ? S(Dt, Ft) : ";" == t || "," == t ? k(Ft) : "}" == t ? k() : "@" == e ? k(z, Ft) : void 0
}
function Vt(t, e) {
if ("?" == e) return k(Vt);
if (":" == t) return k(dt, St);
if ("=" == e) return k(H);
var n = C.state.lexical.prev;
return S(n && "interface" == n.info ? Dt : Mt)
}
function Rt(t, e) {
return "*" == e ? (C.marked = "keyword", k(Wt, F(";"))) : "default" == e ? (C.marked = "keyword", k(z, F(";"))) : "{" == t ? k(it(zt, "}"), Wt, F(";")) : S(V)
}
function zt(t, e) {
return "as" == e ? (C.marked = "keyword", k(F("variable"))) : "variable" == t ? S(H, zt) : void 0
}
function Ht(t) {
return "string" == t ? k() : "(" == t ? S(z) : S($t, Ut, Wt)
}
function $t(t, e) {
return "{" == t ? ot($t, "}") : ("variable" == t && T(e), "*" == e && (C.marked = "keyword"), k(Bt))
}
function Ut(t) {
if ("," == t) return k($t, Ut)
}
function Bt(t, e) {
if ("as" == e) return C.marked = "keyword", k($t)
}
function Wt(t, e) {
if ("from" == e) return C.marked = "keyword", k(z)
}
function qt(t) {
return "]" == t ? k() : S(it(H, "]"))
}
function Gt() {
return S(N("form"), xt, F("{"), N("}"), it(Kt, "}"), I, I)
}
function Kt() {
return S(xt, St)
}
function Yt(t, e, n) {
return e.tokenize == g && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(e.lastType) || "quasi" == e.lastType && /\{\s*$/.test(t.string.slice(0, t.pos - (n || 0)))
}
return _.lex = !0, I.lex = !0, {
startState: function(t) {
var e = {
tokenize: g,
lastType: "sof",
cc: [],
lexical: new x((t || 0) - o, 0, "block", !1),
localVars: n.localVars,
context: n.localVars && new E(null, null, !1),
indented: t || 0
};
return n.globalVars && "object" == typeof n.globalVars && (e.globalVars = n.globalVars), e
},
token: function(t, e) {
if (t.sol() && (e.lexical.hasOwnProperty("align") || (e.lexical.align = !1), e.indented = t.indentation(), y(t, e)), e.tokenize != v && t.eatSpace()) return null;
var n = e.tokenize(t, e);
return "comment" == r ? n : (e.lastType = "operator" != r || "++" != i && "--" != i ? r : "incdec", function(t, e, n, r, i) {
var o = t.cc;
for (C.state = t, C.stream = i, C.marked = null, C.cc = o, C.style = e, t.lexical.hasOwnProperty("align") || (t.lexical.align = !0);;)
if ((o.length ? o.pop() : l ? z : V)(n, r)) {
for (; o.length && o[o.length - 1].lex;) o.pop()();
return C.marked ? C.marked : "variable" == n && O(t, r) ? "variable-2" : e
}
}(e, n, r, i, t))
},
indent: function(e, r) {
if (e.tokenize == v || e.tokenize == m) return t.Pass;
if (e.tokenize != g) return 0;
var i, s = r && r.charAt(0),
l = e.lexical;
if (!/^\s*else\b/.test(r))
for (var c = e.cc.length - 1; c >= 0; --c) {
var u = e.cc[c];
if (u == I) l = l.prev;
else if (u != jt) break
}
for (;
("stat" == l.type || "form" == l.type) && ("}" == s || (i = e.cc[e.cc.length - 1]) && (i == W || i == q) && !/^[,\.=+\-*:?[\(]/.test(r));) l = l.prev;
a && ")" == l.type && "stat" == l.prev.type && (l = l.prev);
var d = l.type,
f = s == d;
return "vardef" == d ? l.indented + ("operator" == e.lastType || "," == e.lastType ? l.info.length + 1 : 0) : "form" == d && "{" == s ? l.indented : "form" == d ? l.indented + o : "stat" == d ? l.indented + (function(t, e) {
return "operator" == t.lastType || "," == t.lastType || h.test(e.charAt(0)) || /[,.]/.test(e.charAt(0))
}(e, r) ? a || o : 0) : "switch" != l.info || f || 0 == n.doubleIndentSwitch ? l.align ? l.column + (f ? 0 : 1) : l.indented + (f ? 0 : o) : l.indented + (/^(?:case|default)\b/.test(r) ? o : 2 * o)
},
electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
blockCommentStart: l ? null : "/*",
blockCommentEnd: l ? null : "*/",
blockCommentContinue: l ? null : " * ",
lineComment: l ? null : "//",
fold: "brace",
closeBrackets: "()[]{}''\"\"``",
helperType: l ? "json" : "javascript",
jsonldMode: s,
jsonMode: l,
expressionAllowed: Yt,
skipExpression: function(t) {
var e = t.cc[t.cc.length - 1];
e != z && e != H || t.cc.pop()
}
}
}), t.registerHelper("wordChars", "javascript", /[\w$]/), t.defineMIME("text/javascript", "javascript"), t.defineMIME("text/ecmascript", "javascript"), t.defineMIME("application/javascript", "javascript"), t.defineMIME("application/x-javascript", "javascript"), t.defineMIME("application/ecmascript", "javascript"), t.defineMIME("application/json", {
name: "javascript",
json: !0
}), t.defineMIME("application/x-json", {
name: "javascript",
json: !0
}), t.defineMIME("application/manifest+json", {
name: "javascript",
json: !0
}), t.defineMIME("application/ld+json", {
name: "javascript",
jsonld: !0
}), t.defineMIME("text/typescript", {
name: "javascript",
typescript: !0
}), t.defineMIME("application/typescript", {
name: "javascript",
typescript: !0
})
}(n(13))
}, function(t, e, n) {
! function(t) {
t.extendMode("css", {
commentStart: "/*",
commentEnd: "*/",
newlineAfterToken: function(t, e) {
return /^[;{}]$/.test(e)
}
}), t.extendMode("javascript", {
commentStart: "/*",
commentEnd: "*/",
newlineAfterToken: function(t, e, n, r) {
return this.jsonMode ? /^[\[,{]$/.test(e) || /^}/.test(n) : (";" != e || !r.lexical || ")" != r.lexical.type) && /^[;{}]$/.test(e) && !/^;/.test(n)
}
});
var e = /^(a|abbr|acronym|area|base|bdo|big|br|button|caption|cite|code|col|colgroup|dd|del|dfn|em|frame|hr|iframe|img|input|ins|kbd|label|legend|link|map|object|optgroup|option|param|q|samp|script|select|small|span|strong|sub|sup|textarea|tt|var)$/;
t.extendMode("xml", {
commentStart: "\x3c!--",
commentEnd: "--\x3e",
newlineAfterToken: function(t, n, r, i) {
var o = !1;
return "html" == this.configuration && (o = !!i.context && e.test(i.context.tagName)), !o && ("tag" == t && />$/.test(n) && i.context || /^</.test(r))
}
}), t.defineExtension("commentRange", function(e, n, r) {
var i = this,
o = t.innerMode(i.getMode(), i.getTokenAt(n).state).mode;
i.operation(function() {
if (e) i.replaceRange(o.commentEnd, r), i.replaceRange(o.commentStart, n), n.line == r.line && n.ch == r.ch && i.setCursor(n.line, n.ch + o.commentStart.length);
else {
var t = i.getRange(n, r),
a = t.indexOf(o.commentStart),
s = t.lastIndexOf(o.commentEnd);
a > -1 && s > -1 && s > a && (t = t.substr(0, a) + t.substring(a + o.commentStart.length, s) + t.substr(s + o.commentEnd.length)), i.replaceRange(t, n, r)
}
})
}), t.defineExtension("autoIndentRange", function(t, e) {
var n = this;
this.operation(function() {
for (var r = t.line; r <= e.line; r++) n.indentLine(r, "smart")
})
}), t.defineExtension("autoFormatRange", function(e, n) {
var r = this,
i = r.getMode(),
o = r.getRange(e, n).split("\n"),
a = t.copyState(i, r.getTokenAt(e).state),
s = r.getOption("tabSize"),
l = "",
c = 0,
u = 0 === e.ch;
function d() {
l += "\n", u = !0, ++c
}
for (var h = 0; h < o.length; ++h) {
for (var f = new t.StringStream(o[h], s); !f.eol();) {
var p = t.innerMode(i, a),
g = i.token(f, a),
v = f.current();
f.start = f.pos, u && !/\S/.test(v) || (l += v, u = !1), !u && p.mode.newlineAfterToken && p.mode.newlineAfterToken(g, v, f.string.slice(f.pos) || o[h + 1] || "", p.state) && d()
}!f.pos && i.blankLine && i.blankLine(a), !u && h < o.length - 1 && d()
}
r.operation(function() {
r.replaceRange(l, e, n);
for (var t = e.line + 1, i = e.line + c; t <= i; ++t) r.indentLine(t, "smart");
r.setSelection(e, r.getCursor(!1))
})
})
}(n(13))
}, function(t, e) {
t.exports = function(t) {
if (Array.isArray(t)) return t
}
}, function(t, e) {
t.exports = function(t, e) {
if ("undefined" != typeof Symbol && Symbol.iterator in Object(t)) {
var n = [],
r = !0,
i = !1,
o = void 0;
try {
for (var a, s = t[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !e || n.length !== e); r = !0);
} catch (t) {
i = !0, o = t
} finally {
try {
r || null == s.return || s.return()
} finally {
if (i) throw o
}
}
return n
}
}
}, function(t, e) {
t.exports = function() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(1),
i = n.n(r),
o = n(36),
a = n(5);
e.default = i.a.View.extend({
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.opt = t;
var e = t.config || {};
this.level = t.level, this.config = e, this.preview = t.preview, this.ppfx = e.pStylePrefix || "", this.pfx = e.stylePrefix || "", this.parent = t.parent, this.parentView = t.parentView;
var n = this.pfx,
r = this.ppfx,
i = this.parent,
o = this.collection;
this.listenTo(o, "add", this.addTo), this.listenTo(o, "reset resetNavigator", this.render), this.listenTo(o, "remove", this.removeChildren), this.className = "".concat(n, "layers");
var s = e.em;
if (e.sortable && !this.opt.sorter) {
var l = s.get("Utils");
this.opt.sorter = new l.Sorter({
container: e.sortContainer || this.el,
containerSel: ".".concat(this.className),
itemSel: ".".concat(n, "layer"),
ignoreViewChildren: 1,
onEndMove: function(t, e, n) {
var r = e.getSourceModel();
s.setSelected(r, {
forceChange: 1
}), s.trigger("".concat(a.eventDrag, ":end"), n)
},
avoidSelectOnEnd: 1,
nested: 1,
ppfx: r,
pfx: n
})
}
this.sorter = this.opt.sorter || "", this.$el.data("collection", o), i && this.$el.data("model", i)
},
removeChildren: function(t) {
var e = t.viewLayer;
e && (e.remove(), t.viewLayer = 0)
},
addTo: function(t) {
var e = this.collection.indexOf(t);
this.addToCollection(t, null, e)
},
addToCollection: function(t, e, n) {
var r = this.level,
i = this.parentView,
a = e || null,
s = new(0, o.a)({
level: r,
model: t,
parentView: i,
config: this.config,
sorter: this.sorter,
isCountable: this.isCountable,
opened: this.opt.opened
}).render().el;
if (a) a.appendChild(s);
else if (void 0 !== n) {
var l = "before";
this.$el.children().length == n && (n--, l = "after"), n < 0 ? this.$el.append(s) : this.$el.children().eq(n)[l](s)
} else this.$el.append(s);
return s
},
isCountable: function(t, e) {
var n = t.get("type"),
r = t.get("tagName");
return !(("textnode" == n || "br" == r) && e || !t.get("layerable"))
},
render: function() {
var t = this,
e = document.createDocumentFragment(),
n = this.el;
return n.innerHTML = "", this.collection.each(function(n) {
return t.addToCollection(n, e)
}), n.appendChild(e), n.className = this.className, this
}
})
}, function(t, e, n) {
var r = {
"./CanvasClear": 45,
"./CanvasClear.js": 45,
"./CanvasMove": 46,
"./CanvasMove.js": 46,
"./CommandAbstract": 22,
"./CommandAbstract.js": 22,
"./ComponentDelete": 47,
"./ComponentDelete.js": 47,
"./ComponentDrag": 48,
"./ComponentDrag.js": 48,
"./ComponentEnter": 49,
"./ComponentEnter.js": 49,
"./ComponentExit": 50,
"./ComponentExit.js": 50,
"./ComponentNext": 51,
"./ComponentNext.js": 51,
"./ComponentPrev": 52,
"./ComponentPrev.js": 52,
"./ComponentStyleClear": 53,
"./ComponentStyleClear.js": 53,
"./CopyComponent": 54,
"./CopyComponent.js": 54,
"./DeleteComponent": 55,
"./DeleteComponent.js": 55,
"./ExportTemplate": 56,
"./ExportTemplate.js": 56,
"./Fullscreen": 57,
"./Fullscreen.js": 57,
"./MoveComponent": 58,
"./MoveComponent.js": 58,
"./OpenAssets": 59,
"./OpenAssets.js": 59,
"./OpenBlocks": 60,
"./OpenBlocks.js": 60,
"./OpenLayers": 61,
"./OpenLayers.js": 61,
"./OpenStyleManager": 62,
"./OpenStyleManager.js": 62,
"./OpenTraitManager": 63,
"./OpenTraitManager.js": 63,
"./PasteComponent": 64,
"./PasteComponent.js": 64,
"./Preview": 65,
"./Preview.js": 65,
"./Resize": 66,
"./Resize.js": 66,
"./SelectComponent": 14,
"./SelectComponent.js": 14,
"./SelectPosition": 27,
"./SelectPosition.js": 27,
"./ShowOffset": 67,
"./ShowOffset.js": 67,
"./SwitchVisibility": 68,
"./SwitchVisibility.js": 68
};
function i(t) {
var e = o(t);
return n(e)
}
function o(t) {
if (!n.o(r, t)) {
var e = new Error("Cannot find module '" + t + "'");
throw e.code = "MODULE_NOT_FOUND", e
}
return r[t]
}
i.keys = function() {
return Object.keys(r)
}, i.resolve = o, t.exports = i, i.id = 91
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(8),
i = n.n(r),
o = n(2),
a = n.n(o),
s = n(1),
l = n.n(s),
c = n(0),
u = {
stylePrefix: "comp-",
wrapperId: "wrapper",
wrapperName: "Body",
wrapper: {
removable: !1,
copyable: !1,
draggable: !1,
components: [],
traits: [],
stylable: ["background", "background-color", "background-image", "background-repeat", "background-attachment", "background-position", "background-size"]
},
components: [],
draggableComponents: 1,
storeWrapper: 0,
processor: 0,
voidElements: ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "menuitem", "meta", "param", "source", "track", "wbr"]
},
d = n(5),
h = n(21),
f = n(6),
p = n(35);
function g(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function v(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? g(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : g(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var m = d.default.extend({
defaults: v(v({}, d.default.prototype.defaults), {}, {
type: "cell",
tagName: "td",
draggable: ["tr"]
})
}, {
isComponent: function(t) {
var e = "",
n = t.tagName;
return "TD" != n && "TH" != n || (e = {
type: "cell",
tagName: n.toLowerCase()
}), e
}
}),
b = f.default.extend({});
function y(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function w(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? y(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : y(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var x = d.default.extend({
defaults: w(w({}, d.default.prototype.defaults), {}, {
tagName: "tr",
draggable: ["thead", "tbody", "tfoot"],
droppable: ["th", "td"]
})
}, {
isComponent: function(t) {
return "TR" == t.tagName && !0
}
}),
O = f.default.extend({});
function C(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function S(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? C(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : C(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var k = d.default.extend({
defaults: S(S({}, d.default.prototype.defaults), {}, {
type: "table",
tagName: "table",
droppable: ["tbody", "thead", "tfoot"]
}),
initialize: function(t, e) {
d.default.prototype.initialize.apply(this, arguments);
var n = this.get("components");
!n.length && n.add({
type: "tbody"
})
}
}, {
isComponent: function(t) {
var e = "";
return "TABLE" == t.tagName && (e = {
type: "table"
}), e
}
}),
j = f.default.extend({
events: {}
});
function T(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function P(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? T(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : T(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var E = d.default.extend({
defaults: P(P({}, d.default.prototype.defaults), {}, {
type: "tbody",
tagName: "tbody",
draggable: ["table"],
droppable: ["tr"],
columns: 1,
rows: 1
}),
initialize: function(t, e) {
d.default.prototype.initialize.apply(this, arguments);
var n = this.get("components"),
r = this.get("columns"),
i = this.get("rows");
if (!n.length) {
for (var o = []; i--;) {
for (var a = [], s = r; s--;) a.push({
type: "cell",
classes: ["cell"]
});
o.push({
type: "row",
classes: ["row"],
components: a
})
}
n.add(o)
}
}
}, {
isComponent: function(t) {
var e = "";
return "TBODY" == t.tagName && (e = {
type: "tbody"
}), e
}
});
function M(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function D(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? M(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : M(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var A = E.extend({
defaults: D(D({}, E.prototype.defaults), {}, {
type: "thead",
tagName: "thead"
})
}, {
isComponent: function(t) {
var e = "";
return "THEAD" == t.tagName && (e = {
type: "thead"
}), e
}
}),
L = f.default.extend({}),
_ = f.default.extend({});
function N(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function I(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? N(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : N(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var F = E.extend({
defaults: I(I({}, E.prototype.defaults), {}, {
type: "tfoot",
tagName: "tfoot"
})
}, {
isComponent: function(t) {
var e = "";
return "TFOOT" == t.tagName && (e = {
type: "tfoot"
}), e
}
}),
V = f.default.extend({});
function R(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function z(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? R(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : R(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var H = 'xmlns="http://www.w3.org/2000/svg" width="100" viewBox="0 0 24 24" style="fill: rgba(0,0,0,0.15); transform: scale(0.75)"',
$ = d.default.extend({
defaults: z(z({}, d.default.prototype.defaults), {}, {
type: "image",
tagName: "img",
void: !0,
droppable: 0,
editable: 1,
highlightable: 0,
resizable: {
ratioDefault: 1
},
traits: ["alt"],
src: "<svg ".concat(H, '>\n <path d="M8.5 13.5l2.5 3 3.5-4.5 4.5 6H5m16 1V5a2 2 0 0 0-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2z"></path>\n </svg>'),
fallback: "<svg ".concat(H, '>\n <path d="M2.28 3L1 4.27l2 2V19c0 1.1.9 2 2 2h12.73l2 2L21 21.72 2.28 3m2.55 0L21 19.17V5a2 2 0 0 0-2-2H4.83M8.5 13.5l2.5 3 1-1.25L14.73 18H5l3.5-4.5z"></path>\n </svg>'),
file: ""
}),
initialize: function(t, e) {
d.default.prototype.initialize.apply(this, arguments);
var n = this.get("attributes");
n.src && this.set("src", n.src)
},
initToolbar: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
d.default.prototype.initToolbar.apply(this, e);
var r = this.em;
if (r) {
var i = "image-editor";
if (r.get("Commands").has(i)) {
for (var o = !1, a = this.get("toolbar"), s = 0; s < a.length; s++)
if ("image-editor" === a[s].command) {
o = !0;
break
} o || (a.push({
attributes: {
class: "fa fa-pencil"
},
command: i
}), this.set("toolbar", a))
}
}
},
getAttrToHTML: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
var r = d.default.prototype.getAttrToHTML.apply(this, e),
i = this.getSrcResult();
return i && (r.src = i), r
},
getSrcResult: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.get(t.fallback ? "fallback" : "src") || "",
n = e;
return e && "<svg" === e.substr(0, 4) && (n = "data:image/svg+xml;base64,".concat(window.btoa(e))), n
},
isDefaultSrc: function() {
return this.get("src") === Object(c.result)(this, "defaults").src
},
toJSON: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
var r = d.default.prototype.toJSON.apply(this, e);
return r.src === r.attributes.src && delete r.src, r
},
parseUri: function(t) {
var e = document.createElement("a");
e.href = t;
for (var n = {}, r = e.search.substring(1).split("&"), i = 0; i < r.length; i++) {
var o = r[i].split("="),
a = decodeURIComponent(o[0]);
a && (n[a] = decodeURIComponent(o[1]))
}
return {
hostname: e.hostname,
pathname: e.pathname,
protocol: e.protocol,
search: e.search,
hash: e.hash,
port: e.port,
query: n
}
}
}, {
isComponent: function(t) {
var e = "";
return "IMG" == t.tagName && (e = {
type: "image"
}), e
}
});
function U(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function B(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? U(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : U(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var W = $.extend({
defaults: B(B({}, $.prototype.defaults), {}, {
type: "map",
src: "",
void: 0,
mapUrl: "https://maps.google.com/maps",
tagName: "iframe",
mapType: "q",
address: "",
zoom: "1",
attributes: {
frameborder: 0
},
toolbar: d.default.prototype.defaults.toolbar,
traits: [{
label: "Address",
name: "address",
placeholder: "eg. London, UK",
changeProp: 1
}, {
type: "select",
label: "Map type",
name: "mapType",
changeProp: 1,
options: [{
value: "q",
name: "Roadmap"
}, {
value: "w",
name: "Satellite"
}]
}, {
label: "Zoom",
name: "zoom",
type: "range",
min: "1",
max: "20",
changeProp: 1
}]
}),
initialize: function(t, e) {
this.get("src") ? this.parseFromSrc() : this.updateSrc(), $.prototype.initialize.apply(this, arguments), this.listenTo(this, "change:address change:zoom change:mapType", this.updateSrc)
},
updateSrc: function() {
this.set("src", this.getMapUrl())
},
getMapUrl: function() {
var t = this.get("address"),
e = this.get("zoom"),
n = this.get("mapType");
return t = t ? "&q=" + t : "", e = e ? "&z=" + e : "", n = n ? "&t=" + n : "", this.get("mapUrl") + "?" + t + e + n + "&output=embed"
},
parseFromSrc: function() {
var t = this.parseUri(this.get("src")).query;
t.q && this.set("address", t.q), t.z && this.set("zoom", t.z), t.t && this.set("mapType", t.t)
}
}, {
isComponent: function(t) {
var e = "";
return "IFRAME" == t.tagName && /maps\.google\.com/.test(t.src) && (e = {
type: "map",
src: t.src
}), e
}
}),
q = f.default.extend({
tagName: "img",
events: {
dblclick: "onActive",
click: "initResize",
error: "onError",
load: "onLoad",
dragstart: "noDrag"
},
initialize: function(t) {
var e = this.model;
f.default.prototype.initialize.apply(this, arguments), this.listenTo(e, "change:src", this.updateSrc), this.classEmpty = "".concat(this.ppfx, "plh-image");
var n = this.config;
n.modal && (this.modal = n.modal), n.am && (this.am = n.am), this.fetchFile()
},
fetchFile: function() {
if (!this.modelOpt.temporary) {
var t = this.model,
e = t.get("file");
e && (this.em.get("AssetManager").FileUploader().uploadFile({
dataTransfer: {
files: [e]
}
}, function(e) {
var n = e && e.data && e.data[0],
r = n && (Object(c.isString)(n) ? n : n.src);
r && t.set({
src: r
})
}), t.set("file", ""))
}
},
updateSrc: function() {
var t = this.model,
e = this.classEmpty,
n = this.$el,
r = t.getSrcResult(),
i = r && !t.isDefaultSrc();
t.addAttributes({
src: r
}), n[i ? "removeClass" : "addClass"](e)
},
onActive: function(t) {
t && t.stopPropagation();
var e = this.opts.config.em,
n = e ? e.get("Editor") : "";
n && this.model.get("editable") && n.runCommand("open-assets", {
target: this.model,
types: ["image"],
accept: "image/*",
onSelect: function() {
n.Modal.close(), n.AssetManager.setTarget(null)
}
})
},
onError: function() {
var t = this.model.getSrcResult({
fallback: 1
});
t && (this.el.src = t)
},
onLoad: function() {
this.em.trigger("change:canvasOffset")
},
noDrag: function(t) {
return t.preventDefault(), !1
},
render: function() {
this.renderAttributes(), this.updateSrc();
var t = this.$el,
e = this.model,
n = t.attr("class") || "";
return !e.get("src") && t.attr("class", "".concat(n, " ").concat(this.classEmpty).trim()), this.postRender(), this
}
}),
G = q.extend({
tagName: "div",
events: {},
initialize: function(t) {
q.prototype.initialize.apply(this, arguments), this.classEmpty = this.ppfx + "plh-map"
},
updateSrc: function() {
this.getIframe().src = this.model.get("src")
},
getIframe: function() {
if (!this.iframe) {
var t = document.createElement("iframe");
t.src = this.model.get("src"), t.frameBorder = 0, t.style.height = "100%", t.style.width = "100%", t.className = this.ppfx + "no-pointer", this.iframe = t
}
return this.iframe
},
render: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
return q.prototype.render.apply(this, e), this.updateClasses(), this.el.appendChild(this.getIframe()), this
}
});
function K(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function Y(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? K(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : K(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var X = d.default.extend({
defaults: Y(Y({}, d.default.prototype.defaults), {}, {
type: "text",
droppable: !1,
editable: !0
}),
toHTML: function() {
return this.trigger("sync:content", {
silent: 1
}), d.default.prototype.toHTML.apply(this, arguments)
}
});
function J(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function Z(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? J(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : J(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var Q = X.extend({
defaults: Z(Z({}, X.prototype.defaults), {}, {
type: "link",
tagName: "a",
traits: ["title", "href", "target"]
}),
getAttrToHTML: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
var r = X.prototype.getAttrToHTML.apply(this, e);
return delete r.onmousedown, r
}
}, {
isComponent: function(t) {
var e;
if ("A" == t.tagName) {
e = {
type: "link",
editable: 0
};
var n = t.childNodes,
r = n.length;
r || delete e.editable;
for (var i = 0; i < r; i++) {
var o = n[i];
if (3 == o.nodeType && "" != o.textContent.trim()) {
delete e.editable;
break
}
}
}
return e
}
}),
tt = n(3);
function et(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function nt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? et(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : et(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var rt = f.default.prototype,
it = f.default.extend({
events: {
dblclick: "onActive",
input: "onInput"
},
initialize: function(t) {
rt.initialize.apply(this, arguments), this.disableEditing = this.disableEditing.bind(this);
var e = this.model,
n = this.em;
this.listenTo(e, "focus", this.onActive), this.listenTo(e, "change:content", this.updateContentText), this.listenTo(e, "sync:content", this.syncContent), this.rte = n && n.get("RichTextEditor")
},
updateContentText: function(t, e) {
!(arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}).fromDisable && this.disableEditing()
},
onActive: function(t) {
var e = this.rte,
n = this.em;
if (!(this.rteEnabled || !this.model.get("editable") || n && n.isEditing())) {
if (t && t.stopPropagation && t.stopPropagation(), e) try {
this.activeRte = e.enable(this, this.activeRte)
} catch (t) {
n.logError(t)
}
this.toggleEvents(1)
}
},
onDisable: function() {
this.disableEditing()
},
disableEditing: function() {
var t = this.model,
e = this.rte,
n = this.activeRte,
r = this.em,
i = t.get("editable");
if (e && i) {
try {
e.disable(this, n)
} catch (t) {
r.logError(t)
}
this.syncContent()
}
this.toggleEvents()
},
getContent: function() {
var t = this.activeRte;
return t && "function" == typeof t.getContent ? t.getContent() : this.getChildrenContainer().innerHTML
},
syncContent: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model,
n = this.rte;
if (this.rteEnabled || t.force) {
var r = this.getContent(),
i = e.components(),
o = nt({
fromDisable: 1
}, t);
if (e.set("content", "", o), n.customRte) i.length && i.reset(null, t), e.set("content", r, o);
else {
var a = function e(n) {
var r = !!n.get("textable"),
i = !["text", "default", ""].some(function(t) {
return n.is(t)
}) || r;
n.set(nt({
_innertext: !i,
editable: i && n.get("editable"),
selectable: i,
hoverable: i,
removable: r,
draggable: r,
highlightable: 0,
copyable: r
}, !r && {
toolbar: ""
}), t), n.get("components").each(function(t) {
return e(t)
})
};
i.reset(r, t), i.each(function(t) {
return a(t)
}), i.trigger("resetNavigator")
}
}
},
onInput: function() {
var t = this.em,
e = "component",
n = ["".concat(e, ":update"), "".concat(e, ":input")].join(" ");
t && t.trigger(n, this.model)
},
disablePropagation: function(t) {
t.stopPropagation()
},
toggleEvents: function(t) {
var e = this.em,
n = this.model,
r = {
on: tt.v,
off: tt.u
},
i = t ? "on" : "off";
e.setEditing(t), this.rteEnabled = !!t;
var o = [this.el.ownerDocument, document];
if (r.off(o, "mousedown", this.disableEditing), r[i](o, "mousedown", this.disableEditing), e[i]("toolbar:run:before", this.disableEditing), n[i]("removed", this.disableEditing), this.$el.off("mousedown", this.disablePropagation), this.$el[i]("mousedown", this.disablePropagation), this.config.draggableComponents)
for (var a = this.el; a;) a.draggable = !t, (a = a.parentNode) && "BODY" == a.tagName && (a = 0)
}
}),
ot = it.extend({
render: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
return it.prototype.render.apply(this, e), this.el.addEventListener("click", this.prevDef, !0), this
}
});
function at(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function st(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? at(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : at(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var lt = X.extend({
defaults: st(st({}, X.prototype.defaults), {}, {
tagName: "label",
traits: ["id", "title", "for"]
})
}, {
isComponent: function(t) {
if ("LABEL" == t.tagName) return {
type: "label"
}
}
}),
ct = ot.extend({
tagName: "span"
});
function ut(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function dt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? ut(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ut(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var ht = "yt",
ft = "vi",
pt = "ytnc",
gt = $.extend({
defaults: dt(dt({}, $.prototype.defaults), {}, {
type: "video",
tagName: "video",
videoId: "",
void: 0,
provider: "so",
ytUrl: "https://www.youtube.com/embed/",
ytncUrl: "https://www.youtube-nocookie.com/embed/",
viUrl: "https://player.vimeo.com/video/",
loop: 0,
poster: "",
muted: 0,
autoplay: 0,
controls: 1,
color: "",
list: "",
rel: 1,
modestbranding: 0,
sources: [],
attributes: {
allowfullscreen: "allowfullscreen"
}
}),
initialize: function(t, e) {
this.em = e.em, this.get("src") && this.parseFromSrc(), this.updateTraits(), this.listenTo(this, "change:provider", this.updateTraits), this.listenTo(this, "change:videoId change:provider", this.updateSrc), $.prototype.initialize.apply(this, arguments)
},
updateTraits: function() {
var t, e = "iframe";
switch (this.get("provider")) {
case ht:
case pt:
t = this.getYoutubeTraits();
break;
case ft:
t = this.getVimeoTraits();
break;
default:
e = "video", t = this.getSourceTraits()
}
this.set({
tagName: e
}, {
silent: 1
}), this.set({
traits: t
}), this.em.trigger("component:toggled")
},
parseFromSrc: function() {
var t = this.get("provider"),
e = this.parseUri(this.get("src")),
n = e.query;
switch (t) {
case ht:
case pt:
case ft:
var r = e.pathname.split("/").pop();
this.set("videoId", r), n.list && this.set("list", n.list), n.autoplay && this.set("autoplay", 1), n.loop && this.set("loop", 1), 0 === parseInt(n.controls) && this.set("controls", 0), n.color && this.set("color", n.color), "0" === n.rel && this.set("rel", 0), "1" === n.modestbranding && this.set("modestbranding", 1)
}
},
updateSrc: function() {
var t = "";
switch (this.get("provider")) {
case ht:
t = this.getYoutubeSrc();
break;
case pt:
t = this.getYoutubeNoCookieSrc();
break;
case ft:
t = this.getVimeoSrc()
}
this.set({
src: t
})
},
getAttrToHTML: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
var r = $.prototype.getAttrToHTML.apply(this, e);
switch (this.get("provider")) {
case ht:
case pt:
case ft:
break;
default:
this.get("loop") && (r.loop = "loop"), this.get("autoplay") && (r.autoplay = "autoplay"), this.get("controls") && (r.controls = "controls")
}
return r
},
getProviderTrait: function() {
return {
type: "select",
label: "Provider",
name: "provider",
changeProp: 1,
options: [{
value: "so",
name: "HTML5 Source"
}, {
value: ht,
name: "Youtube"
}, {
value: pt,
name: "Youtube (no cookie)"
}, {
value: ft,
name: "Vimeo"
}]
}
},
getSourceTraits: function() {
return [this.getProviderTrait(), {
label: "Source",
name: "src",
placeholder: "eg. ./media/video.mp4",
changeProp: 1
}, {
label: "Poster",
name: "poster",
placeholder: "eg. ./media/image.jpg"
}, this.getAutoplayTrait(), this.getLoopTrait(), this.getControlsTrait()]
},
getYoutubeTraits: function() {
return [this.getProviderTrait(), {
label: "Video ID",
name: "videoId",
placeholder: "eg. jNQXAC9IVRw",
changeProp: 1
}, this.getAutoplayTrait(), this.getLoopTrait(), this.getControlsTrait(), {
type: "checkbox",
label: "Related",
name: "rel",
changeProp: 1
}, {
type: "checkbox",
label: "Modest",
name: "modestbranding",
changeProp: 1
}]
},
getVimeoTraits: function() {
return [this.getProviderTrait(), {
label: "Video ID",
name: "videoId",
placeholder: "eg. 123456789",
changeProp: 1
}, {
label: "Color",
name: "color",
placeholder: "eg. FF0000",
changeProp: 1
}, this.getAutoplayTrait(), this.getLoopTrait()]
},
getAutoplayTrait: function() {
return {
type: "checkbox",
label: "Autoplay",
name: "autoplay",
changeProp: 1
}
},
getLoopTrait: function() {
return {
type: "checkbox",
label: "Loop",
name: "loop",
changeProp: 1
}
},
getControlsTrait: function() {
return {
type: "checkbox",
label: "Controls",
name: "controls",
changeProp: 1
}
},
getYoutubeSrc: function() {
var t = this.get("videoId"),
e = this.get("ytUrl"),
n = this.get("list");
return e += t + (t.indexOf("?") < 0 ? "?" : ""), e += n ? "&list=".concat(n) : "", e += this.get("autoplay") ? "&autoplay=1" : "", e += this.get("controls") ? "" : "&controls=0&showinfo=0", e += this.get("loop") ? "&loop=1&playlist=".concat(t) : "", (e += this.get("rel") ? "" : "&rel=0") + (this.get("modestbranding") ? "&modestbranding=1" : "")
},
getYoutubeNoCookieSrc: function() {
var t = this.getYoutubeSrc();
return t.replace(this.get("ytUrl"), this.get("ytncUrl"))
},
getVimeoSrc: function() {
var t = this.get("viUrl");
return t += this.get("videoId") + "?", t += this.get("autoplay") ? "&autoplay=1" : "", t += this.get("loop") ? "&loop=1" : "", (t += this.get("controls") ? "" : "&title=0&portrait=0&badge=0") + (this.get("color") ? "&color=" + this.get("color") : "")
}
}, {
isComponent: function(t) {
var e = "",
n = /youtube\.com\/embed/.test(t.src),
r = /youtube-nocookie\.com\/embed/.test(t.src),
i = /player\.vimeo\.com\/video/.test(t.src),
o = n || r || i;
return ("VIDEO" == t.tagName || "IFRAME" == t.tagName && o) && (e = {
type: "video"
}, t.src && (e.src = t.src), o && (n ? e.provider = ht : r ? e.provider = pt : i && (e.provider = ft))), e
}
}),
vt = q.extend({
tagName: "div",
events: {},
initialize: function(t) {
f.default.prototype.initialize.apply(this, arguments);
var e = this.model,
n = ["loop", "autoplay", "controls", "color", "rel", "modestbranding", "poster"].map(function(t) {
return "change:".concat(t)
}).join(" ");
this.listenTo(e, "change:provider", this.updateProvider), this.listenTo(e, "change:src", this.updateSrc), this.listenTo(e, n, this.updateVideo)
},
updateProvider: function() {
var t = this.model.get("provider");
this.el.innerHTML = "", this.el.appendChild(this.renderByProvider(t))
},
updateSrc: function() {
var t = this.model,
e = this.videoEl;
if (e) {
var n = t.get("provider"),
r = t.get("src");
switch (n) {
case "yt":
r = t.getYoutubeSrc();
break;
case "ytnc":
r = t.getYoutubeNoCookieSrc();
break;
case "vi":
r = t.getVimeoSrc()
}
e.src = r
}
},
updateVideo: function() {
var t = this.model.get("provider"),
e = this.videoEl,
n = this.model;
switch (t) {
case "yt":
case "ytnc":
case "vi":
this.model.trigger("change:videoId");
break;
default:
e.loop = n.get("loop"), e.autoplay = n.get("autoplay"), e.controls = n.get("controls"), e.poster = n.get("poster")
}
},
renderByProvider: function(t) {
var e;
switch (t) {
case "yt":
e = this.renderYoutube();
break;
case "ytnc":
e = this.renderYoutubeNoCookie();
break;
case "vi":
e = this.renderVimeo();
break;
default:
e = this.renderSource()
}
return this.videoEl = e, e
},
renderSource: function() {
var t = document.createElement("video");
return t.src = this.model.get("src"), this.initVideoEl(t), t
},
renderYoutube: function() {
var t = document.createElement("iframe");
return t.src = this.model.getYoutubeSrc(), t.frameBorder = 0, t.setAttribute("allowfullscreen", !0), this.initVideoEl(t), t
},
renderYoutubeNoCookie: function() {
var t = document.createElement("iframe");
return t.src = this.model.getYoutubeNoCookieSrc(), t.frameBorder = 0, t.setAttribute("allowfullscreen", !0), this.initVideoEl(t), t
},
renderVimeo: function() {
var t = document.createElement("iframe");
return t.src = this.model.getVimeoSrc(), t.frameBorder = 0, t.setAttribute("allowfullscreen", !0), this.initVideoEl(t), t
},
initVideoEl: function(t) {
t.className = this.ppfx + "no-pointer", t.style.height = "100%", t.style.width = "100%"
},
render: function() {
for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
q.prototype.render.apply(this, e), this.updateClasses();
var r = this.model.get("provider");
return this.el.appendChild(this.renderByProvider(r)), this.updateVideo(), this
}
});
function mt(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function bt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? mt(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : mt(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var yt = d.default.extend({
defaults: bt(bt({}, d.default.prototype.defaults), {}, {
type: "script",
droppable: !1,
draggable: !1,
layerable: !1
})
}, {
isComponent: function(t) {
if ("SCRIPT" == t.tagName) {
var e = {
type: "script"
};
return t.src && (e.src = t.src, e.onload = t.onload), e
}
}
}),
wt = q.extend({
tagName: "script",
events: {},
render: function() {
var t = this.model,
e = t.get("src"),
n = this.em,
r = n && n.get("scriptCount") ? n.get("scriptCount") : 0,
i = "";
if (e) {
var o = t.get("onload"),
a = "script" + r,
s = "script" + (r + 1);
i = "var " + a + " = document.createElement('script');\n" + a + ".onload = function(){\n" + (o ? o + "();\n" : "") + "typeof " + s + "Start == 'function' && " + s + "Start();\n};\n" + a + ".src = '" + e + "';\nfunction " + a + "Start() { document.body.appendChild(" + a + "); };\n" + (r ? "" : a + "Start();"), n && n.set("scriptCount", r + 1)
} else i = t.get("content");
return this.el.innerHTML = i, this.postRender(), this
}
});
function xt(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function Ot(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? xt(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : xt(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var Ct = d.default.extend({
defaults: Ot(Ot({}, d.default.prototype.defaults), {}, {
resizable: {
ratioDefault: 1
},
highlightable: 0
}),
getName: function() {
var t = this.get("tagName"),
e = this.get("custom-name");
return t = t.charAt(0).toUpperCase() + t.slice(1), e || t
}
}, {
isComponent: function(t) {
if (SVGElement && t instanceof SVGElement) return {
tagName: t.tagName,
type: "svg"
}
}
});
function St(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function kt(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? St(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : St(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var jt = Ct.extend({
defaults: kt(kt({}, Ct.prototype.defaults), {}, {
selectable: !1,
hoverable: !1,
layerable: !1
})
}, {
isComponent: function(t) {
if (Ct.isComponent(t) && "svg" !== t.tagName.toLowerCase()) return {
tagName: t.tagName,
type: "svg-in"
}
}
}),
Tt = f.default.extend({
_createElement: function(t) {
return document.createElementNS("http://www.w3.org/2000/svg", t)
}
});
function Pt(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function Et(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? Pt(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : Pt(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var Mt = d.default.extend({
defaults: Et(Et({}, d.default.prototype.defaults), {}, {
tagName: "",
droppable: !1,
layerable: !1,
editable: !0
}),
toHTML: function() {
return this.get("content").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'")
}
}, {
isComponent: function(t) {
var e = "";
return 3 === t.nodeType && (e = {
type: "textnode",
content: t.textContent
}), e
}
});
function Dt(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
var At = Mt.extend({
defaults: function(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? Dt(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : Dt(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}({}, Mt.prototype.defaults),
toHTML: function() {
return "\x3c!--".concat(this.get("content"), "--\x3e")
}
}, {
isComponent: function(t) {
if (8 == t.nodeType) return {
tagName: "NULL",
type: "comment",
content: t.textContent
}
}
}),
Lt = f.default.extend({
initialize: function() {
f.default.prototype.initialize.apply(this, arguments)
},
_setAttributes: function() {},
renderAttributes: function() {},
setAttribute: function() {},
updateAttributes: function() {},
initClasses: function() {},
initComponents: function() {},
delegateEvents: function() {},
_createElement: function() {
return document.createTextNode("")
},
render: function() {
var t = this.model,
e = this.el;
return t.opt.temporary || (e.textContent = t.get("content")), this
}
}),
_t = Lt.extend({
_createElement: function() {
return document.createComment(this.model.get("content"))
}
}),
Nt = d.default.extend({}, {
isComponent: function() {
return !1
}
});
function It(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function Ft(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? It(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : It(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n, r = {},
o = {},
a = [{
id: "cell",
model: m,
view: b
}, {
id: "row",
model: x,
view: O
}, {
id: "table",
model: k,
view: j
}, {
id: "thead",
model: A,
view: L
}, {
id: "tbody",
model: E,
view: _
}, {
id: "tfoot",
model: F,
view: V
}, {
id: "map",
model: W,
view: G
}, {
id: "link",
model: Q,
view: ot
}, {
id: "label",
model: lt,
view: ct
}, {
id: "video",
model: gt,
view: vt
}, {
id: "image",
model: $,
view: q
}, {
id: "script",
model: yt,
view: wt
}, {
id: "svg-in",
model: jt,
view: Tt
}, {
id: "svg",
model: Ct,
view: Tt
}, {
id: "comment",
model: At,
view: _t
}, {
id: "textnode",
model: Mt,
view: Lt
}, {
id: "text",
model: X,
view: it
}, {
id: "wrapper",
model: Nt,
view: f.default
}, {
id: "default",
model: d.default,
view: f.default
}];
return {
Component: d.default,
Components: h.a,
ComponentsView: p.a,
componentTypes: a,
componentsById: o,
name: "DomComponents",
getConfig: function() {
return r
},
storageKey: function() {
var t = [],
e = r.stm && r.stm.getConfig() || {};
return e.storeHtml && t.push("html"), e.storeComponents && t.push("components"), t
},
init: function(i) {
var o = this;
for (var s in t = (r = i || {}).em, this.em = t, t && (r.components = t.config.components || r.components), u) s in r || (r[s] = u[s]);
var l = r.pStylePrefix;
if (l && (r.stylePrefix = l + r.stylePrefix), t) {
r.modal = t.get("Modal") || "", r.am = t.get("AssetManager") || "", t.get("Parser").compTypes = a, t.on("change:componentHovered", this.componentHovered, this);
var c = t.get("selected");
t.listenTo(c, "add", function(t, e, n) {
return o.selectAdd(t, n)
}), t.listenTo(c, "remove", function(t, e, n) {
return o.selectRemove(t, n)
})
}
var h = r.components,
p = Ft({}, r.wrapper);
return p["custom-name"] = r.wrapperName, p.wrapper = 1, p.type = "wrapper", h && h.constructor === Object && h.wrapper && (p = Ft({}, h), h = h.components || [], p.components = [], t && (t.config.components = h, r.components = h)), (e = new d.default(p, {
em: t,
config: r,
componentTypes: a,
domc: this
})).set({
attributes: {
id: "wrapper"
}
}), n = new f.default({
model: e,
config: r,
componentTypes: a
}), this
},
onLoad: function() {
this.setComponents(r.components)
},
postLoad: function(t) {
this.handleChanges(this.getWrapper(), null, {
avoidStore: 1
})
},
handleChanges: function(e, n) {
var r = this,
i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
o = e.components(),
a = t.get("UndoManager"),
s = t.handleUpdates.bind(t),
l = this.handleChanges.bind(this),
c = this.handleChangesColl.bind(this),
u = this.handleRemoves.bind(this);
a && a.add(e), a && o && a.add(o);
[
[e, "change:style change:content change:attributes change:src", s],
[e, "change:components", c],
[o, "add", l],
[o, "remove", u],
[e.get("classes"), "add remove", s]
].forEach(function(e) {
t.stopListening(e[0], e[1], e[2]), t.listenTo(e[0], e[1], e[2])
}), !i.avoidStore && s("", "", i), o.each(function(t) {
return r.handleChanges(t, n, i)
})
},
handleChangesColl: function(e, n) {
var r = t.get("UndoManager");
if (r && n instanceof l.a.Collection) {
var i = this.handleChanges.bind(this),
o = this.handleRemoves.bind(this);
r.add(n), [
[n, "add", i],
[n, "remove", o]
].forEach(function(e) {
t.stopListening(e[0], e[1], e[2]), t.listenTo(e[0], e[1], e[2])
})
}
},
handleRemoves: function(e, n) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
!r.avoidStore && t.handleUpdates(e, n, r)
},
load: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
e = this.em,
n = "";
!t && r.stm && (t = r.em.getCacheLoad());
var i = t,
o = i.components,
a = i.html;
if (o)
if (Object(c.isObject)(o) || Object(c.isArray)(o)) n = o;
else try {
n = JSON.parse(o)
} catch (t) {
e && e.logError(t)
} else a && (n = a);
var s = n && n.constructor === Object;
return (n && n.length || s) && (this.clear(), s ? this.getWrapper().set(n) : this.getComponents().add(n)), n
},
store: function(t) {
if (r.stm) {
var e = {},
n = this.storageKey();
if (n.indexOf("html") >= 0 && (e.html = r.em.getHtml()), n.indexOf("components") >= 0) {
this.em;
var i = r.storeWrapper ? this.getWrapper() : this.getComponents();
e.components = JSON.stringify(i)
}
return t || r.stm.store(e), e
}
},
getComponent: function() {
return e
},
getWrapper: function() {
return this.getComponent()
},
getComponents: function() {
return this.getWrapper().get("components")
},
addComponent: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return this.getComponents().add(t, e)
},
render: function() {
return n.render().el
},
clear: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return this.getComponents().map(function(t) {
return t
}).forEach(function(e) {
return e.remove(t)
}), this
},
setComponents: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
this.clear(e).addComponent(t, e)
},
addType: function(t, e) {
var n = this.em,
r = e.model,
o = void 0 === r ? {} : r,
s = e.view,
l = void 0 === s ? {} : s,
u = e.isComponent,
d = e.extend,
h = e.extendView,
f = e.extendFn,
p = void 0 === f ? [] : f,
g = e.extendFnView,
v = void 0 === g ? [] : g,
m = this.getType(t),
b = this.getType(d),
y = this.getType(h),
w = b || m || this.getType("default"),
x = w.model,
O = y ? y.view : w.view,
C = function(t, e, n) {
return t.reduce(function(t, r) {
var i = e[r],
o = n.prototype[r];
return i && o && (t[r] = function() {
o.bind(this).apply(void 0, arguments), i.bind(this).apply(void 0, arguments)
}), t
}, {})
};
"object" === i()(o) && (e.model = x.extend(Ft(Ft(Ft({}, o), C(p, o, x)), {}, {
defaults: Ft(Ft({}, x.prototype.defaults), Object(c.result)(o, "defaults") || {})
}), {
isComponent: !m || b || u ? u || function() {
return 0
} : x.isComponent
})), "object" === i()(l) && (e.view = O.extend(Ft(Ft({}, l), C(v, l, O)))), m ? (m.model = e.model, m.view = e.view) : (e.id = t, a.unshift(e));
var S = "component:type:".concat(m ? "update" : "add");
return n && n.trigger(S, m || e), this
},
getType: function(t) {
for (var e = a, n = 0; n < e.length; n++)
if (e[n].id == t) return e[n]
},
removeType: function(t) {
var e = a,
n = this.getType(t);
if (n) {
var r = e.indexOf(n);
return e.splice(r, 1), n
}
},
getTypes: function() {
return a
},
selectAdd: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
t && (t.set({
status: "selected"
}), ["component:selected", "component:toggled"].forEach(function(r) {
return e.em.trigger(r, t, n)
}))
},
selectRemove: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
t && (this.em, t.set({
status: "",
state: ""
}), ["component:deselected", "component:toggled"].forEach(function(r) {
return e.em.trigger(r, t, n)
}))
},
componentHovered: function() {
var t = r.em,
e = t.get("componentHovered"),
n = t.previous("componentHovered"),
i = "hovered";
n && n.get("status") == i && n.set({
status: "",
state: ""
}), e && Object(c.isEmpty)(e.get("status")) && e.set("status", i)
},
allById: function() {
return o
},
destroy: function() {
this.clear(), n.remove(), [r, t, o, e, n].forEach(function(t) {
return {}
}), this.em = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(7),
i = n.n(r),
o = n(2),
a = n.n(o),
s = n(3),
l = n(15),
c = n.n(l),
u = n(16),
d = n.n(u),
h = n(0),
f = function() {
function t(e, n) {
var r = this;
c()(this, t), this.em = e;
var i = n || e.get("Canvas").getFrames().map(function(t) {
return t.get("root").getEl()
}),
o = Array.isArray(i) ? i : [i];
return this.el = i, this.counter = 0, Object(h.bindAll)(this, "handleDragEnter", "handleDragOver", "handleDrop", "handleDragLeave"), o.forEach(function(t) {
return r.toggleEffects(t, 1)
}), this
}
return d()(t, [{
key: "toggleEffects",
value: function(t, e) {
var n = {
on: s.v,
off: s.u
},
r = e ? "on" : "off";
n[r](t, "dragenter", this.handleDragEnter), n[r](t, "dragover", this.handleDragOver), n[r](t, "drop", this.handleDrop), n[r](t, "dragleave", this.handleDragLeave)
}
}, {
key: "endDrop",
value: function(t, e) {
var n = this.em,
r = this.dragStop;
this.counter = 0, this.over = 0, r && r(t), n.runDefault({
preserveSelected: 1
}), n.trigger("canvas:dragend", e)
}
}, {
key: "handleDragLeave",
value: function(t) {
this.updateCounter(-1, t)
}
}, {
key: "updateCounter",
value: function(t, e) {
this.counter += t, 0 === this.counter && this.endDrop(1, e)
}
}, {
key: "handleDragEnter",
value: function(t) {
var e = this,
n = this.em,
r = t.dataTransfer;
if (this.updateCounter(1, t), !this.over) {
this.over = 1;
var i, o, a = n.get("Utils"),
s = n.get("Canvas"),
l = s.getBody(),
c = n.get("dragContent") || "<br>";
if (n.stopDefault(), n.inAbsoluteMode()) {
var u = n.get("DomComponents").getWrapper(),
d = u.append({})[0],
h = n.get("Commands").run("core:component-drag", {
event: t,
guidesInfo: 1,
center: 1,
target: d,
onEnd: function(t, n, i) {
if (!i.cancelled) {
var o = u.append(c)[0],
a = d.getStyle(),
s = a.left,
l = a.top,
h = a.position;
o.addStyle({
left: s,
top: l,
position: h
}), e.handleDragEnd(o, r)
}
d.remove()
}
});
i = function(e) {
return h.stop(t, {
cancel: e
})
}, o = function(t) {
return c = t
}
} else {
var f = new a.Sorter({
em: n,
wmargin: 1,
nested: 1,
canvasRelative: 1,
direction: "a",
container: l,
placer: s.getPlacerEl(),
containerSel: "*",
itemSel: "*",
pfx: "gjs-",
onEndMove: function(t) {
return e.handleDragEnd(t, r)
},
document: s.getFrameEl().contentDocument
});
f.setDropContent(c), f.startSort(), this.sorter = f, i = function(t) {
t && (f.moved = 0), f.endMove()
}, o = function(t) {
return f.setDropContent(t)
}
}
this.dragStop = i, this.dragContent = o, n.trigger("canvas:dragenter", r, c)
}
}
}, {
key: "handleDragEnd",
value: function(t, e) {
if (t) {
var n = this.em;
n.set("dragResult", t), n.trigger("canvas:drop", e, t)
}
}
}, {
key: "handleDragOver",
value: function(t) {
t.preventDefault(), this.em.trigger("canvas:dragover", t)
}
}, {
key: "handleDrop",
value: function(t) {
t.preventDefault();
var e = this.dragContent,
n = t.dataTransfer,
r = this.getContentByData(n).content;
t.target.style.border = "", r && e && e(r), this.endDrop(!r, t)
}
}, {
key: "getContentByData",
value: function(t) {
var e = this.em,
n = t.types,
r = t.files || [],
i = e.get("dragContent"),
o = t.getData("text");
if (r.length) {
o = [];
for (var a = 0; a < r.length; a++) {
var s = r[a],
l = s.type.split("/")[0];
"image" == l && o.push({
type: l,
file: s,
attributes: {
alt: s.name
}
})
}
} else if (i) o = i;
else if (Object(h.indexOf)(n, "text/html") >= 0) o = t.getData("text/html").replace(/<\/?meta[^>]*>/g, "");
else if (Object(h.indexOf)(n, "text/uri-list") >= 0) o = {
type: "link",
attributes: {
href: o
},
content: o
};
else if (Object(h.indexOf)(n, "text/json") >= 0) {
var c = t.getData("text/json");
c && (o = JSON.parse(c))
}
var u = {
content: o
};
return e.trigger("canvas:dragdata", t, u), u
}
}]), t
}(),
p = {
stylePrefix: "cv-",
scripts: [],
styles: [],
customBadgeLabel: "",
autoscrollLimit: 50,
notTextable: ["button", "a", "input[type=checkbox]", "input[type=radio]"]
},
g = n(1),
v = n.n(g),
m = n(5),
b = n(33);
function y(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
var w = v.a.Model.extend({
defaults: {
wrapper: "",
width: null,
height: null,
head: "",
x: 0,
y: 0,
root: 0,
components: 0,
styles: 0,
attributes: {}
},
initialize: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.attributes,
r = n.root,
i = n.styles,
o = n.components;
this.set("head", []), this.em = e.em;
var a = {
em: e.em,
config: e.em.get("DomComponents").getConfig(),
frame: this
};
!r && this.set("root", new m.default({
type: "wrapper",
components: o || []
}, a)), (!i || Object(h.isString)(i)) && this.set("styles", new b.a(i, a))
},
remove: function() {
this.view = 0;
var t = this.collection;
return t && t.remove(this)
},
getHead: function() {
return i()(this.get("head"))
},
setHead: function(t) {
return this.set("head", i()(t))
},
addHeadItem: function(t) {
var e = this.getHead();
e.push(t), this.setHead(e)
},
getHeadByAttr: function(t, e, n) {
return this.getHead().filter(function(r) {
return r.attributes && r.attributes[t] == e && (!n || n === r.tag)
})[0]
},
removeHeadByAttr: function(t, e, n) {
var r = this.getHead(),
i = this.getHeadByAttr(t, e, n),
o = r.indexOf(i);
o >= 0 && (r.splice(o, 1), this.setHead(r))
},
addLink: function(t) {
var e = "link";
!this.getHeadByAttr("href", t, e) && this.addHeadItem({
tag: e,
attributes: {
href: t,
rel: "stylesheet"
}
})
},
removeLink: function(t) {
this.removeHeadByAttr("href", t, "link")
},
addScript: function(t) {
var e = "script";
!this.getHeadByAttr("src", t, e) && this.addHeadItem({
tag: e,
attributes: {
src: t
}
})
},
removeScript: function(t) {
this.removeHeadByAttr("src", t, "script")
},
_emitUpdated: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.em.trigger("frame:updated", function(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? y(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : y(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}({
frame: this
}, t))
}
}),
x = v.a.Collection.extend({
model: w,
initialize: function() {
Object(h.bindAll)(this, "itemLoaded")
},
itemLoaded: function() {
this.loadedItems++, this.loadedItems >= this.itemsToLoad && (this.trigger("loaded:all"), this.listenToLoadItems(0))
},
listenToLoad: function() {
this.loadedItems = 0, this.itemsToLoad = this.length, this.listenToLoadItems(1)
},
listenToLoadItems: function(t) {
var e = this;
this.forEach(function(n) {
return n[t ? "on" : "off"]("loaded", e.itemLoaded)
})
}
}),
O = v.a.Model.extend({
defaults: {
frame: "",
frames: "",
wrapper: "",
rulers: !1,
zoom: 100,
x: 0,
y: 0
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.em,
n = t.styles,
r = void 0 === n ? [] : n,
i = t.scripts,
o = void 0 === i ? [] : i,
a = e && e.getWrapper(),
s = e && e.getStyle(),
l = new w({
root: a,
styles: s
}, t);
r.forEach(function(t) {
return l.addLink(t)
}), o.forEach(function(t) {
return l.addScript(t)
}), this.em = e, this.set("frame", l), this.set("frames", new x([l], t)), this.listenTo(this, "change:zoom", this.onZoomChange), this.listenTo(e, "change:device", this.updateDevice)
},
updateDevice: function() {
var t = this.em,
e = t.getDeviceModel(),
n = t.getCurrentFrameModel();
if (n && e) {
var r = e.attributes,
i = r.width,
o = r.height;
n.set({
width: i,
height: o
})
}
},
onZoomChange: function() {
this.get("zoom") < 1 && this.set("zoom", 1)
}
}),
C = n(20),
S = n(37),
k = n(6),
j = n(9);
function T(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function P(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? T(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : T(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var E = v.a.View.extend({
tagName: "iframe",
attributes: {
allowfullscreen: "allowfullscreen",
"data-frame-el": !0
},
initialize: function(t) {
Object(h.bindAll)(this, "updateClientY", "stopAutoscroll", "autoscroll", "_emitUpdate");
var e = this.model,
n = this.el;
this.config = P(P({}, t.config || {}), {}, {
frameView: this
}), this.ppfx = this.config.pStylePrefix || "", this.em = this.config.em, this.listenTo(e, "change:head", this.updateHead), e.view = this, Object(s.w)(n, this)
},
updateHead: function() {
var t = this.getHead();
Object(j.f)(t), Object(j.c)(t, this.model.getHead())
},
getEl: function() {
return this.el
},
getWindow: function() {
return this.getEl().contentWindow
},
getDoc: function() {
return this.getEl().contentDocument
},
getHead: function() {
return this.getDoc().querySelector("head")
},
getBody: function() {
return this.getDoc().querySelector("body")
},
getWrapper: function() {
return this.getBody().querySelector("[data-gjs-type=wrapper]")
},
getJsContainer: function() {
return this.jsContainer || (this.jsContainer = Object(j.e)("div", {
class: "".concat(this.ppfx, "js-cont")
})), this.jsContainer
},
getToolsEl: function() {
var t = this.config.frameWrapView;
return t && t.elTools
},
getGlobalToolsEl: function() {
return this.em.get("Canvas").getGlobalToolsEl()
},
getHighlighter: function() {
return this._getTool("[data-hl]")
},
getBadgeEl: function() {
return this._getTool("[data-badge]")
},
getOffsetViewerEl: function() {
return this._getTool("[data-offset]")
},
getRect: function() {
return this.rect || (this.rect = this.el.getBoundingClientRect()), this.rect
},
getOffsetRect: function() {
var t = this.el,
e = this.getBody(),
n = e.scrollTop,
r = e.scrollLeft,
i = t.offsetHeight,
o = t.offsetWidth;
return {
top: t.offsetTop,
left: t.offsetLeft,
height: i,
width: o,
scrollTop: n,
scrollLeft: r,
scrollBottom: n + i,
scrollRight: r + o
}
},
_getTool: function(t) {
var e = this.getToolsEl();
return this[t] || (this[t] = e.querySelector(t)), this[t]
},
remove: function() {
var t = this.root,
e = this.model;
this._toggleEffects(), v.a.View.prototype.remove.apply(this, arguments), t.remove(), e.remove()
},
startAutoscroll: function() {
var t = this;
this.lastMaxHeight = this.getWrapper().offsetHeight - this.el.offsetHeight, setTimeout(function() {
t._toggleAutoscrollFx(1), requestAnimationFrame(t.autoscroll)
}, 0)
},
autoscroll: function() {
if (this.dragging) {
var t = this.lastClientY,
e = this.em.get("Canvas"),
n = this.getWindow(),
r = this.getBody().scrollTop,
i = t || 0,
o = e.getConfig().autoscrollLimit,
a = this.getRect().height - o,
s = r;
i < o && (s -= o - i), i > a && (s += i - a), !Object(h.isUndefined)(t) && s !== r && s > 0 && s < this.lastMaxHeight && (this.getGlobalToolsEl().style.opacity = 0, this.showGlobalTools(), n.scrollTo(0, s)), requestAnimationFrame(this.autoscroll)
}
},
updateClientY: function(t) {
t.preventDefault(), this.lastClientY = Object(s.h)(t).clientY * this.em.getZoomDecimal()
},
showGlobalTools: Object(h.debounce)(function() {
this.getGlobalToolsEl().style.opacity = ""
}, 50),
stopAutoscroll: function() {
this.dragging && this._toggleAutoscrollFx()
},
_toggleAutoscrollFx: function(t) {
this.dragging = t;
var e = this.getWindow(),
n = t ? "on" : "off",
r = {
on: s.v,
off: s.u
};
r[n](e, "mousemove dragover", this.updateClientY), r[n](e, "mouseup", this.stopAutoscroll)
},
render: function() {
var t = this.el,
e = this.$el,
n = this.ppfx,
r = this.config;
return e.attr({
class: n + "frame"
}), r.scripts.length ? this.renderScripts() : r.renderContent && (t.onload = this.renderBody.bind(this)), this
},
renderScripts: function() {
var t = this,
e = this.el,
n = this.config;
e.onload = function() {
return function n(r) {
if (r.length > 0) {
var i = r.shift(),
o = Object(j.e)("script", P({
type: "text/javascript"
}, Object(h.isString)(i) ? {
src: i
} : i));
o.onerror = o.onload = n.bind(null, r), e.contentDocument.head.appendChild(o)
} else t.renderBody()
}(i()(n.scripts))
}
},
renderBody: function() {
var t = this,
e = this.config,
n = this.model,
r = this.ppfx,
i = n.get("root"),
o = n.get("styles"),
a = e.em,
l = this.getDoc(),
c = this.getHead(),
u = this.getBody(),
d = this.getWindow(),
f = a.get("Config"),
p = [];
d._isEditor = !0, e.styles.forEach(function(t) {
return p.push(Object(h.isString)(t) ? {
tag: "link",
attributes: {
href: t,
rel: "stylesheet"
}
} : {
tag: "link",
attributes: P({
rel: "stylesheet"
}, t)
})
}), p.length && Object(j.c)(c, p), Object(j.a)(u, "<style>\n ".concat(f.baseCss || "", "\n\n .").concat(r, "dashed *[data-highlightable] {\n outline: 1px dashed rgba(170,170,170,0.7);\n outline-offset: -2px;\n }\n\n .").concat(r, "selected {\n outline: 3px solid #3b97e3 !important;\n outline-offset: -3px;\n }\n\n .").concat(r, "selected-parent {\n outline: 2px solid ").concat("#ffca6f", " !important\n }\n\n .").concat(r, "no-select {\n user-select: none;\n -webkit-user-select:none;\n -moz-user-select: none;\n }\n\n .").concat(r, "freezed {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .").concat(r, "no-pointer {\n pointer-events: none;\n }\n\n .").concat(r, "plh-image {\n background: #f5f5f5;\n border: none;\n height: 100px;\n width: 100px;\n display: block;\n outline: 3px solid #ffca6f;\n cursor: pointer;\n outline-offset: -2px\n }\n\n .").concat(r, "grabbing {\n cursor: grabbing;\n cursor: -webkit-grabbing;\n }\n\n .").concat(r, "is__grabbing {\n overflow-x: hidden;\n }\n\n .").concat(r, "is__grabbing,\n .").concat(r, "is__grabbing * {\n cursor: grabbing !important;\n }\n\n ").concat(f.canvasCss || "", "\n ").concat(f.protectedCss || "", "\n </style>")), this.root = new k.default({
model: i,
config: P(P({}, i.config), {}, {
frameView: this
})
}).render(), Object(j.a)(u, this.root.el), Object(j.a)(u, new S.a({
collection: o,
config: P(P({}, a.get("CssComposer").getConfig()), {}, {
frameView: this
})
}).render().el), Object(j.a)(u, this.getJsContainer()), Object(s.v)(u, "click", function(t) {
return t && "A" == t.target.tagName && t.preventDefault()
}), Object(s.v)(u, "submit", function(t) {
return t && t.preventDefault()
}), [{
event: "keydown keyup keypress",
class: "KeyboardEvent"
}, {
event: "mousemove",
class: "MouseEvent"
}, {
event: "wheel",
class: "WheelEvent"
}].forEach(function(e) {
return e.event.split(" ").forEach(function(n) {
l.addEventListener(n, function(n) {
return t.el.dispatchEvent(Object(j.d)(n, e.class))
})
})
}), this._toggleEffects(1), n.trigger("loaded")
},
_toggleEffects: function(t) {
(t ? s.v : s.u)(this.getWindow(), "".concat(j.i, " resize"), this._emitUpdate)
},
_emitUpdate: function() {
this.model._emitUpdated()
}
}),
M = n(17);
function D(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function A(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? D(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : D(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var L = v.a.View.extend({
events: {
"click [data-action-remove]": "remove",
"mousedown [data-action-move]": "startDrag"
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
Object(h.bindAll)(this, "onScroll", "frameLoaded", "updateOffset", "remove", "startDrag");
var n = this.model,
r = A(A({}, t.config || e), {}, {
frameWrapView: this
}),
i = r.canvasView,
o = r.em;
this.cv = i, this.config = r, this.em = o, this.canvas = o && o.get("Canvas"), this.ppfx = r.pStylePrefix || "", this.frame = new E({
model: n,
config: r
}), this.classAnim = "".concat(this.ppfx, "frame-wrapper--anim"), this.listenTo(n, "loaded", this.frameLoaded), this.listenTo(n, "change:x change:y", this.updatePos), this.listenTo(n, "change:width change:height", this.updateSize), this.listenTo(n, "destroy remove", this.remove), this.updatePos(), this.setupDragger()
},
setupDragger: function() {
var t, e, n, r = this,
i = this.canvas,
o = this.model,
a = function(t) {
i.toggleFramesEvents(t)
};
this.dragger = new M.a({
onStart: function() {
var i = o.attributes,
s = i.x,
l = i.y;
n = r.em.getZoomMultiplier(), t = s, e = l, a()
},
onEnd: function() {
return a(1)
},
setPosition: function(r) {
o.set({
x: t + r.x * n,
y: e + r.y * n
})
}
})
},
startDrag: function(t) {
t && this.dragger.start(t)
},
remove: function() {
return this.frame.remove(), this.frame = {}, v.a.View.prototype.remove.apply(this, arguments), this
},
updateOffset: Object(h.debounce)(function() {
var t = this.em,
e = this.$el,
n = this.frame;
t.runDefault({
preserveSelected: 1
}), e.removeClass(this.classAnim), n.model._emitUpdated()
}),
updatePos: function(t) {
var e = this.model,
n = this.el,
r = e.attributes,
i = r.x,
o = r.y,
a = n.style;
this.frame.rect = 0, a.left = isNaN(i) ? i : "".concat(i, "px"), a.top = isNaN(o) ? o : "".concat(o, "px"), t && this.updateOffset()
},
updateSize: Object(h.debounce)(function() {
this.updateDim()
}),
updateDim: function() {
var t = this.em,
e = this.el,
n = this.$el,
r = this.model,
i = this.classAnim,
o = r.attributes,
a = o.width,
s = o.height,
l = e.style,
c = l.width || "",
u = l.height || "",
d = a || "",
f = s || "",
p = c == d && u == f;
if (this.frame.rect = 0, n.addClass(i), l.width = Object(h.isNumber)(d) ? "".concat(d).concat("px") : d, l.height = Object(h.isNumber)(f) ? "".concat(f).concat("px") : f, Object(h.isNull)(a) || Object(h.isNull)(s)) {
var g = A(A({}, a ? {} : {
width: e.offsetWidth
}), s ? {} : {
height: e.offsetHeight
});
r.set(g, {
silent: 1
})
}
t.stopDefault({
preserveSelected: 1
}), p ? this.updateOffset() : n.one(j.i, this.updateOffset)
},
onScroll: function() {
var t = this.frame;
this.em.trigger("frame:scroll", {
frame: t,
body: t.getBody(),
target: t.getWindow()
})
},
frameLoaded: function() {
this.frame.getWindow().onscroll = this.onScroll, this.updateDim()
},
render: function() {
var t = this.frame,
e = this.$el,
n = this.ppfx,
r = this.cv,
i = this.model,
o = this.el,
a = i.attributes.onRender;
t.render(), e.empty().attr({
class: "".concat(n, "frame-wrapper")
}).append('\n <div class="'.concat(n, 'frame-wrapper__top gjs-two-color" data-frame-top>\n <div class="').concat(n, 'frame-wrapper__name" data-action-move>\n ').concat(i.get("name") || "", '\n </div>\n <div class="').concat(n, 'frame-wrapper__top-r">\n <div class="').concat(n, 'frame-wrapper__icon" data-action-remove style="display: none">\n <svg viewBox="0 0 24 24"><path d="M19 4h-3.5l-1-1h-5l-1 1H5v2h14M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12z"></path></svg>\n </div>\n </div>\n </div>\n <div class="').concat(n, 'frame-wrapper__right" data-frame-right></div>\n <div class="').concat(n, 'frame-wrapper__left" data-frame-left></div>\n <div class="').concat(n, 'frame-wrapper__bottom" data-frame-bottom></div>\n ')).append(t.el);
var s = Object(j.e)("div", {
class: "".concat(n, "tools"),
style: "pointer-events:none; opacity: 0"
}, '\n <div class="'.concat(n, 'highlighter" data-hl></div>\n <div class="').concat(n, 'badge" data-badge></div>\n <div class="').concat(n, 'placeholder">\n <div class="').concat(n, 'placeholder-int"></div>\n </div>\n <div class="').concat(n, 'ghost"></div>\n <div class="').concat(n, 'toolbar" style="pointer-events:all"></div>\n <div class="').concat(n, 'resizer"></div>\n <div class="').concat(n, 'offset-v" data-offset>\n <div class="gjs-marginName" data-offset-m>\n <div class="gjs-margin-v-el gjs-margin-v-top" data-offset-m-t></div>\n <div class="gjs-margin-v-el gjs-margin-v-bottom" data-offset-m-b></div>\n <div class="gjs-margin-v-el gjs-margin-v-left" data-offset-m-l></div>\n <div class="gjs-margin-v-el gjs-margin-v-right" data-offset-m-r></div>\n </div>\n <div class="gjs-paddingName" data-offset-m>\n <div class="gjs-padding-v-el gjs-padding-v-top" data-offset-p-t></div>\n <div class="gjs-padding-v-el gjs-padding-v-bottom" data-offset-p-b></div>\n <div class="gjs-padding-v-el gjs-padding-v-left" data-offset-p-l></div>\n <div class="gjs-padding-v-el gjs-padding-v-right" data-offset-p-r></div>\n </div>\n </div>\n <div class="').concat(n, 'offset-fixed-v"></div>\n '));
return this.elTools = s, r.toolsWrapper.appendChild(s), a && a({
el: o,
elTop: o.querySelector("[data-frame-top]"),
elRight: o.querySelector("[data-frame-right]"),
elBottom: o.querySelector("[data-frame-bottom]"),
elLeft: o.querySelector("[data-frame-left]"),
frame: i,
frameWrapperView: this,
remove: this.remove,
startDrag: this.startDrag
}), this
}
}),
_ = C.a.extend({
itemView: L,
autoAdd: 1,
init: function() {
this.listenTo(this.collection, "reset", this.render)
},
onRender: function() {
var t = this.config,
e = this.$el,
n = t.em;
n && e.attr({
class: "".concat(n.getConfig("stylePrefix"), "frames")
})
}
});
function N(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function I(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? N(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : N(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var F, V = v.a.$,
R = v.a.View.extend({
events: {
wheel: "onWheel"
},
template: function() {
var t = this.pfx;
return '\n <div class="'.concat(t, 'canvas__frames" data-frames></div>\n <div id="').concat(t, 'tools" class="').concat(t, 'canvas__tools" data-tools></div>\n ')
},
initialize: function(t) {
Object(h.bindAll)(this, "clearOff", "onKeyPress", "onCanvasMove"), Object(s.v)(window, "scroll resize", this.clearOff);
var e = this.model,
n = e.get("frames");
this.config = t.config || {}, this.em = this.config.em || {}, this.pfx = this.config.stylePrefix || "", this.ppfx = this.config.pStylePrefix || "", this.className = this.config.stylePrefix + "canvas";
var r = this.em,
i = this.config;
this.frames = new _({
collection: n,
config: I(I({}, i), {}, {
canvasView: this,
renderContent: 1
})
}), this.listenTo(r, "change:canvasOffset", this.clearOff), this.listenTo(r, "component:selected", this.checkSelected), this.listenTo(e, "change:zoom change:x change:y", this.updateFrames), this.listenTo(n, "loaded:all", function() {
return r.trigger("loaded")
}), this.toggleListeners(1)
},
checkSelected: function(t) {
var e = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).scroll,
n = this.em.get("currentFrame");
e && t.views.forEach(function(t) {
t._getFrame() !== n && t.scrollIntoView(e)
})
},
remove: function() {
var t = this.model.get("frames");
t.remove(t.models), this.frames.remove(), this.frames = {}, v.a.View.prototype.remove.apply(this, arguments), this.toggleListeners()
},
preventDefault: function(t) {
t && (t.preventDefault(), t._parentEvent && t._parentEvent.preventDefault())
},
onCanvasMove: function(t) {},
toggleListeners: function(t) {
this.el, (t ? s.v : s.u)(document, "keypress", this.onKeyPress)
},
onKeyPress: function(t) {
var e = this.em;
" " !== Object(s.f)(t) || 1 === e.getZoomDecimal() || e.get("Canvas").isInputFocused() || (this.preventDefault(t), e.get("Editor").runCommand("core:canvas-move"))
},
onWheel: function(t) {
if ((t.ctrlKey || t.metaKey) && this.em.getConfig("multiFrames")) {
this.preventDefault(t);
var e = this.model,
n = Math.max(-1, Math.min(1, t.wheelDelta || -t.detail)),
r = e.get("zoom");
e.set("zoom", r + 2 * n)
}
},
updateFrames: function(t) {
var e = this.em,
n = this.model.attributes,
r = n.x,
i = n.y,
o = this.getZoom(),
a = {
preserveSelected: 1
},
s = o ? 1 / o : 1;
this.framesArea.style.transform = "scale(".concat(o, ") translate(").concat(r * s, "px, ").concat(i * s, "px)"), this.clearOff(), e.stopDefault(a), e.trigger("canvas:update", t), F && clearTimeout(F), F = setTimeout(function() {
return e.runDefault(a)
}, 300)
},
getZoom: function() {
return this.em.getZoomDecimal()
},
isElInViewport: function(t) {
var e = Object(s.e)(t),
n = Object(s.d)(e),
r = this.getFrameOffset(e),
i = n.top,
o = n.left;
return i >= 0 && o >= 0 && i <= r.height && o <= r.width
},
offset: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = Object(s.d)(t),
r = t.ownerDocument.body,
i = e.noScroll;
return {
top: n.top + (i ? 0 : r.scrollTop),
left: n.left + (i ? 0 : r.scrollLeft),
width: n.width,
height: n.height
}
},
clearOff: function() {
this.frmOff = null, this.cvsOff = null
},
getFrameOffset: function(t) {
if (!this.frmOff || t) {
var e = this.frame.el,
n = t ? t.ownerDocument.defaultView.frameElement : e;
this.frmOff = this.offset(n || e)
}
return this.frmOff
},
getCanvasOffset: function() {
return this.cvsOff || (this.cvsOff = this.offset(this.el)), this.cvsOff
},
getElementPos: function(t, e) {
var n = this.getZoom(),
r = e || {},
i = this.getFrameOffset(t),
o = this.getCanvasOffset(),
a = this.offset(t, e),
s = r.avoidFrameOffset ? 0 : i.top,
l = r.avoidFrameOffset ? 0 : i.left;
return {
top: a.top * n + s - o.top,
left: a.left * n + l - o.left,
height: a.height * n,
width: a.width * n,
zoom: n,
rect: a
}
},
getElementOffsets: function(t) {
var e = this;
if (!t || Object(s.r)(t)) return {};
var n = {},
r = window.getComputedStyle(t);
return ["marginTop", "marginRight", "marginBottom", "marginLeft", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft"].forEach(function(t) {
n[t] = parseFloat(r[t]) * e.getZoom()
}), n
},
getPosition: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.frame.el.contentDocument;
if (e) {
var n = e.body,
r = this.getZoom(),
i = this.getFrameOffset(),
o = this.getCanvasOffset(),
a = t.noScroll;
return {
top: i.top + (a ? 0 : n.scrollTop) * r - o.top,
left: i.left + (a ? 0 : n.scrollLeft) * r - o.left,
width: o.width,
height: o.height
}
}
},
updateScript: function(t) {
var e = t.model,
n = e.getId();
t.scriptContainer || (t.scriptContainer = V('<div data-id="'.concat(n, '">')), this.getJsContainer().appendChild(t.scriptContainer.get(0))), t.el.id = n, t.scriptContainer.html("");
var r = document.createElement("script"),
i = e.getScriptString(),
o = e.get("script-props") ? i : "function(){".concat(i, ";}"),
a = JSON.stringify(e.__getScriptProps());
r.innerHTML = "\n setTimeout(function() {\n var item = document.getElementById('".concat(n, "');\n if (!item) return;\n (").concat(o, ".bind(item))(").concat(a, ")\n }, 1);"), setTimeout(function() {
return t.scriptContainer.get(0).appendChild(r)
}, 0)
},
getJsContainer: function(t) {
var e = this.getFrameView(t);
return e && e.getJsContainer()
},
getFrameView: function(t) {
return t && t._getFrame() || this.em.get("currentFrame")
},
render: function() {
var t = this.el,
e = this.$el,
n = this.ppfx,
r = this.model,
i = this.em,
o = this.frames,
a = i.get("CssComposer"),
s = r.get("wrapper");
e.html(this.template());
var l = e.find("[data-frames]");
this.framesArea = l.get(0), this.wrapper = s, s && "function" == typeof s.render && r.get("frame").set({
wrapper: s,
root: s.getWrapper(),
styles: a.getAll()
});
var c = e.find("[data-tools]");
this.toolsWrapper = c.get(0), c.append('\n <div class="'.concat(n, "tools ").concat(n, 'tools-gl" style="pointer-events:none">\n <div class="').concat(n, 'placeholder">\n <div class="').concat(n, 'placeholder-int"></div>\n </div>\n </div>\n <div id="').concat(n, 'tools" style="pointer-events:none">\n <div class="').concat(n, 'badge"></div>\n <div class="').concat(n, 'ghost"></div>\n <div class="').concat(n, 'toolbar" style="pointer-events:all"></div>\n <div class="').concat(n, 'resizer"></div>\n <div class="').concat(n, 'offset-v"></div>\n <div class="').concat(n, 'offset-fixed-v"></div>\n </div>\n '));
var u = t.querySelector("#".concat(n, "tools"));
this.hlEl = t.querySelector(".".concat(n, "highlighter")), this.badgeEl = t.querySelector(".".concat(n, "badge")), this.placerEl = t.querySelector(".".concat(n, "placeholder")), this.ghostEl = t.querySelector(".".concat(n, "ghost")), this.toolbarEl = t.querySelector(".".concat(n, "toolbar")), this.resizerEl = t.querySelector(".".concat(n, "resizer")), this.offsetEl = t.querySelector(".".concat(n, "offset-v")), this.fixedOffsetEl = t.querySelector(".".concat(n, "offset-fixed-v")), this.toolsGlobEl = t.querySelector(".".concat(n, "tools-gl")), this.toolsEl = u, this.el.className = this.className;
var d = r.get("frames");
return d.listenToLoad(), o.render(), i.setCurrentFrame(d.at(0).view), l.append(o.el), this.frame = d.at(0).view, this
}
});
function z(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function H(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? z(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : z(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n = {};
return {
getCanvasView: function() {
return e
},
name: "Canvas",
init: function() {
var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
n = H(H(H({}, p), r), {}, {
module: this
}), this.em = n.em;
var i = n.pStylePrefix;
i && (n.stylePrefix = i + n.stylePrefix), t = new O(r), e = new R({
model: t,
config: n
});
var o = n.em.get("DomComponents");
return o && this.setWrapper(o), this.model = t, this.startAutoscroll = this.startAutoscroll.bind(this), this.stopAutoscroll = this.stopAutoscroll.bind(this), this
},
getConfig: function() {
return n
},
setWrapper: function(e) {
t.set("wrapper", e)
},
getElement: function() {
return e.el
},
getFrame: function(e) {
return e ? this.getFrames()[e] : t.get("frame")
},
getFrameEl: function() {
var t = e.frame;
return t && t.el
},
getFramesEl: function() {
return e.framesArea
},
getWindow: function() {
return this.getFrameEl().contentWindow
},
getDocument: function() {
var t = this.getFrameEl();
return t && t.contentDocument
},
getBody: function() {
var t = this.getDocument();
return t && t.body
},
getWrapperEl: function() {
var t = this.getBody();
return t && t.querySelector("#wrapper")
},
_getCompFrame: function(t) {
return t && t._getFrame()
},
_getLocalEl: function(t, e, n) {
var r = t,
i = this._getCompFrame(e);
return i ? i[n]() : r
},
getGlobalToolsEl: function() {
return e.toolsGlobEl
},
getToolsEl: function(t) {
return this._getLocalEl(e.toolsEl, t, "getToolsEl")
},
getHighlighter: function(t) {
return this._getLocalEl(e.hlEl, t, "getHighlighter")
},
getBadgeEl: function(t) {
return this._getLocalEl(e.badgeEl, t, "getBadgeEl")
},
getPlacerEl: function() {
return e.placerEl
},
getGhostEl: function() {
return e.ghostEl
},
getToolbarEl: function() {
return e.toolbarEl
},
getResizerEl: function() {
return e.resizerEl
},
getOffsetViewerEl: function(t) {
return this._getLocalEl(e.offsetEl, t, "getOffsetViewerEl")
},
getFixedOffsetViewerEl: function() {
return e.fixedOffsetEl
},
render: function() {
return e.render().el
},
getOffset: function() {
var t = this.offset(this.getFrameEl()),
e = this.offset(this.getElement());
return {
top: t.top - e.top,
left: t.left - e.left
}
},
offset: function(t) {
return e.offset(t)
},
setCustomBadgeLabel: function(t) {
n.customBadgeLabel = t
},
getElementPos: function(t, n) {
return e.getElementPos(t, n)
},
getElementOffsets: function(t) {
return e.getElementOffsets(t)
},
getRect: function() {
var t = e.getPosition(),
n = t.top,
r = t.left;
return H(H({}, e.getCanvasOffset()), {}, {
topScroll: n,
leftScroll: r
})
},
getTargetToElementDim: function(t, r) {
var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
o = i || {},
a = e.getPosition();
if (a) {
var s = o.elPos || e.getElementPos(r),
l = i.toRight || 0,
c = o.targetHeight || t.offsetHeight,
u = o.targetWidth || t.offsetWidth,
d = o.event || null,
h = s.top - c,
f = s.left;
f += l ? s.width : 0;
var p = (f = l ? f - u : f) < a.left ? a.left : f,
g = h < a.top ? a.top : h,
v = {
top: g = g > s.top + s.height ? s.top + s.height : g,
left: p,
elementTop: s.top,
elementLeft: s.left,
elementWidth: s.width,
elementHeight: s.height,
targetWidth: t.offsetWidth,
targetHeight: t.offsetHeight,
canvasTop: a.top,
canvasLeft: a.left,
canvasWidth: a.width,
canvasHeight: a.height
};
return d && n.em && n.em.trigger(d, v), v
}
},
canvasRectOffset: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
i = arguments.length > 2 ? arguments[2] : void 0,
o = n.em.getZoomDecimal(),
a = e ? "top" : "left",
s = t.ownerDocument,
l = r.offset ? function(t) {
var e = t.defaultView;
return e && e.frameElement
}(s) : {},
c = l.offsetTop,
u = void 0 === c ? 0 : c,
d = l.offsetLeft,
h = void 0 === d ? 0 : d,
f = s.body || {},
p = f.scrollTop,
g = void 0 === p ? 0 : p,
v = f.scrollLeft,
m = e ? g : void 0 === v ? 0 : v,
b = e ? u : h;
return i[a] - (m - b) * o
};
return {
top: i(t, 1, e),
left: i(t, 0, e)
}
},
getTargetToElementFixed: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = n.pos || this.getElementPos(t),
i = n.canvasOff || this.canvasRectOffset(t, r),
o = e.offsetHeight || 0,
a = e.offsetWidth || 0,
s = r.left + r.width,
l = this.getCanvasView(),
c = l.getPosition(),
u = l.getFrameOffset(t),
d = n.event,
h = -o,
f = r.width - a;
f = r.left < -f ? -r.left : f, f = s > c.width ? f - (s - c.width) : f;
var p = r.height + o,
g = p < u.height;
i.top < o && (g ? h += p : h = -i.top < r.height ? -i.top : r.height);
var v = {
top: h,
left: f,
canvasOffsetTop: i.top,
canvasOffsetLeft: i.left
};
return d && this.em.trigger(d, v), v
},
getMouseRelativePos: function(t, e) {
var n = 0,
r = 0,
i = (e || {}).subWinOffset,
o = t.target.ownerDocument,
a = o.defaultView || o.parentWindow,
s = a.frameElement,
l = i ? a.pageYOffset : 0,
c = i ? a.pageXOffset : 0;
if (s) {
var u = s.getBoundingClientRect();
n = u.top || 0, r = u.left || 0
}
return {
y: t.clientY + n - l,
x: t.clientX + r - c
}
},
getMouseRelativeCanvas: function(t, n) {
var r = this.getZoomDecimal(),
i = e.getPosition(n),
o = i.top,
a = i.left;
return {
y: t.clientY * r + o,
x: t.clientX * r + a
}
},
hasFocus: function() {
return this.getDocument().hasFocus()
},
isInputFocused: function() {
var t = this.getDocument(),
e = this.getFrameEl(),
n = ["body"].concat(i()(this.getConfig().notTextable)),
r = e && document.activeElement === e ? t && t.activeElement : document.activeElement;
return r && !n.some(function(t) {
return r.matches(t)
})
},
scrollTo: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = Object(s.e)(t),
r = n && Object(s.j)(n);
r && r.scrollIntoView(e)
},
startAutoscroll: function(t) {
var e = t && t.view || this.em.getCurrentFrame();
e && e.startAutoscroll()
},
stopAutoscroll: function(t) {
var e = t && t.view || this.em.getCurrentFrame();
e && e.stopAutoscroll()
},
postRender: function() {
Object(s.k)(n.em) && (this.droppable = new f(n.em))
},
setZoom: function(e) {
return t.set("zoom", parseFloat(e)), this
},
getZoom: function() {
return parseFloat(t.get("zoom"))
},
getZoomDecimal: function() {
return this.getZoom() / 100
},
getZoomMultiplier: function() {
var t = this.getZoomDecimal();
return t ? 1 / t : 1
},
toggleFramesEvents: function(t) {
this.getFramesEl().style.pointerEvents = t ? "" : "none"
},
getFrameWrapperEl: function() {
return e.frame.getWrapper()
},
getFrames: function() {
return t.get("frames").map(function(t) {
return t
})
},
addFrame: function() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return t.get("frames").add(H({}, e), H(H({}, n), {}, {
em: this.em
}))
},
destroy: function() {
var r = this;
t.stopListening(), e.remove(), [n, t, e].forEach(function(t) {
return {}
}), ["em", "model", "droppable"].forEach(function(t) {
return r[t] = {}
})
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0),
i = {
stylePrefix: "trt-",
appendTo: "",
optionsTarget: [{
value: !1
}, {
value: "_blank"
}]
},
o = n(20),
a = n(2),
s = n.n(a),
l = n(73),
c = n.n(l),
u = n(1),
d = n.n(u),
h = n(3);
function f(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function p(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? f(Object(n), !0).forEach(function(e) {
s()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : f(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var g = d.a.$,
v = d.a.View.extend({
events: {},
eventCapture: ["change"],
appendInput: 1,
attributes: function() {
return this.model.get("attributes")
},
templateLabel: function() {
var t = this.ppfx,
e = this.getLabel();
return '<div class="'.concat(t, 'label" title="').concat(e, '">').concat(e, "</div>")
},
templateInput: function() {
var t = this.clsField;
return '<div class="'.concat(t, '" data-input></div>')
},
initialize: function() {
var t = this,
e = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).config,
n = void 0 === e ? {} : e,
r = this.model,
i = this.eventCapture,
o = r.target,
a = r.attributes.type;
this.config = n, this.em = n.em, this.pfx = n.stylePrefix || "", this.ppfx = n.pStylePrefix || "", this.target = o;
var s = this.ppfx;
this.clsField = "".concat(s, "field ").concat(s, "field-").concat(a), [
["change:value", this.onValueChange],
["remove", this.removeView]
].forEach(function(e) {
var n = c()(e, 2),
i = n[0],
o = n[1];
r.off(i, o), t.listenTo(r, i, o)
}), r.view = this, this.listenTo(r, "change:label", this.render), this.listenTo(r, "change:placeholder", this.rerender), i.forEach(function(e) {
return t.events[e] = "onChange"
}), this.delegateEvents(), this.init()
},
getClbOpts: function() {
return {
component: this.target,
trait: this.model,
elInput: this.getInputElem()
}
},
removeView: function() {
this.remove(), this.removed()
},
init: function() {},
removed: function() {},
onRender: function() {},
onUpdate: function() {},
onEvent: function() {},
onChange: function(t) {
var e = this.getInputElem();
e && !Object(r.isUndefined)(e.value) && this.model.set("value", e.value), this.onEvent(p(p({}, this.getClbOpts()), {}, {
event: t
}))
},
getValueForTarget: function() {
return this.model.get("value")
},
setInputValue: function(t) {
var e = this.getInputElem();
e && (e.value = t)
},
onValueChange: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (n.fromTarget) this.setInputValue(t.get("value")), this.postUpdate();
else {
var r = this.getValueForTarget();
t.setTargetValue(r, n)
}
},
renderLabel: function() {
var t = this.$el,
e = this.target,
n = this.getLabel(),
r = this.templateLabel(e);
this.createLabel && (r = this.createLabel({
label: n,
component: e,
trait: this
}) || ""), t.find("[data-label]").append(r)
},
getLabel: function() {
var t = this.em,
e = this.model.attributes,
n = e.label,
r = e.name;
return t.t("traitManager.traits.labels.".concat(r)) || Object(h.c)(n || r).replace(/-/g, " ")
},
getComponent: function() {
return this.target
},
getInputEl: function() {
if (!this.$input) {
var t = this.em,
e = this.model,
n = e,
i = e.attributes.name,
o = n.get("placeholder") || n.get("default") || "",
a = n.get("type") || "text",
s = n.get("min"),
l = n.get("max"),
c = this.getModelValue(),
u = g('<input type="'.concat(a, '" placeholder="').concat(o, '">')),
d = t.t("traitManager.traits.attributes.".concat(i)) || {};
u.attr(d), Object(r.isUndefined)(c) || (n.set({
value: c
}, {
silent: !0
}), u.prop("value", c)), s && u.prop("min", s), l && u.prop("max", l), this.$input = u
}
return this.$input.get(0)
},
getInputElem: function() {
var t = this.input,
e = this.$input;
return t || e && e.get && e.get(0) || this.getElInput()
},
getModelValue: function() {
var t, e = this.model,
n = this.target,
i = e.get("name");
if (e.get("changeProp")) t = n.get(i);
else {
var o = n.get("attributes");
t = e.get("value") || o[i]
}
return Object(r.isUndefined)(t) ? "" : t
},
getElInput: function() {
return this.elInput
},
renderField: function() {
var t = this.$el,
e = this.appendInput,
n = this.model,
i = t.find("[data-input]"),
o = i[i.length - 1],
a = n.el;
a || (a = this.createInput ? this.createInput(this.getClbOpts()) : this.getInputEl()), Object(r.isString)(a) ? (o.innerHTML = a, this.elInput = o.firstChild) : (e ? o.appendChild(a) : o.insertBefore(a, o.firstChild), this.elInput = a), n.el = this.elInput
},
hasLabel: function() {
var t = this.model.attributes.label;
return !this.noLabel && !1 !== t
},
rerender: function() {
this.model.el = null, this.render()
},
postUpdate: function() {
this.onUpdate(this.getClbOpts())
},
render: function() {
var t = this.$el,
e = this.pfx,
n = this.ppfx,
i = this.model.attributes,
o = i.type,
a = i.id,
s = this.hasLabel && this.hasLabel(),
l = "".concat(e, "trait");
this.$input = null;
var c = '<div class="'.concat(l, " ").concat(l, "--").concat(o, '">\n ').concat(s ? '<div class="'.concat(n, 'label-wrp" data-label></div>') : "", '\n <div class="').concat(n, "field-wrp ").concat(n, "field-wrp--").concat(o, '" data-input>\n ').concat(this.templateInput ? Object(r.isFunction)(this.templateInput) ? this.templateInput(this.getClbOpts()) : this.templateInput : "", "\n </div>\n </div>");
return t.empty().append(c), s && this.renderLabel(), this.renderField(), this.el.className = "".concat(l, "__wrp ").concat(l, "__wrp-").concat(a), this.postUpdate(), this.onRender(this.getClbOpts()), this
}
}),
m = d.a.$,
b = v.extend({
init: function() {
this.listenTo(this.model, "change:options", this.rerender)
},
templateInput: function() {
var t = this.ppfx,
e = this.clsField;
return '<div class="'.concat(e, '">\n <div data-input></div>\n <div class="').concat(t, 'sel-arrow">\n <div class="').concat(t, 'd-s-arrow"></div>\n </div>\n </div>')
},
getInputEl: function() {
if (!this.$input) {
var t = this.model,
e = this.em,
n = t.get("name"),
i = t.get("options") || [],
o = [],
a = "<select>";
i.forEach(function(t) {
var i, s, l, c = "";
Object(r.isString)(t) ? (i = t, s = t) : (i = t.name || t.label || t.value, s = "".concat(Object(r.isUndefined)(t.value) ? t.id : t.value).replace(/"/g, """), c += (l = t.style ? t.style.replace(/"/g, """) : "") ? ' style="'.concat(l, '"') : "");
var u = e.t("traitManager.traits.options.".concat(n, ".").concat(s)) || i;
a += '<option value="'.concat(s, '"').concat(c, ">").concat(u, "</option>"), o.push(s)
}), a += "</select>", this.$input = m(a);
var s = t.getTargetValue(),
l = o.indexOf(s) >= 0 ? s : t.get("default");
!Object(r.isUndefined)(l) && this.$input.val(l)
}
return this.$input.get(0)
}
}),
y = v.extend({
appendInput: 0,
templateInput: function() {
var t = this.ppfx,
e = this.clsField;
return '<label class="'.concat(e, '" data-input>\n <i class="').concat(t, 'chk-icon"></i>\n </label>')
},
onChange: function() {
var t = this.getInputElem().checked;
this.model.set("value", this.getCheckedValue(t))
},
getCheckedValue: function(t) {
var e = t,
n = this.model.attributes,
i = n.valueTrue,
o = n.valueFalse;
return e && !Object(r.isUndefined)(i) && (e = i), e || Object(r.isUndefined)(o) || (e = o), e
},
getInputEl: function() {
for (var t = !this.$input, e = arguments.length, n = new Array(e), i = 0; i < e; i++) n[i] = arguments[i];
var o = v.prototype.getInputEl.apply(this, n);
if (t) {
var a, s, l = this.model,
c = this.target,
u = l.attributes,
d = (u.valueTrue, u.valueFalse),
h = l.get("name");
l.get("changeProp") ? s = a = c.get(h) : a = !(!(s = c.get("attributes")[h]) && "" !== s), Object(r.isUndefined)(d) || s !== d || (a = !1), o.checked = a
}
return o
}
}),
w = n(32),
x = v.extend({
getValueForTarget: function() {
var t = this.model,
e = t.attributes,
n = e.value,
i = e.unit;
return Object(r.isUndefined)(n) || "" === n ? t.get("default") : n + i
},
getInputEl: function() {
if (!this.input) {
var t = this.ppfx,
e = this.model,
n = this.getModelValue(),
r = new w.a({
contClass: "".concat(t, "field-int"),
type: "number",
model: e,
ppfx: t
});
this.input = r.render(), this.$input = this.input.inputEl, this.$unit = this.input.unitEl, e.set("value", n, {
fromTarget: 1
}), this.$input.val(n), this.input = r.el
}
return this.input
}
}),
O = n(38),
C = v.extend({
templateInput: "",
getInputEl: function() {
if (!this.input) {
var t = this.model,
e = this.getModelValue(),
n = new O.a({
model: t,
target: this.config.em,
contClass: this.ppfx + "field-color",
ppfx: this.ppfx
}).render();
n.setValue(e, {
fromTarget: 1
}), this.input = n.el
}
return this.input
}
}),
S = v.extend({
events: {
"click button": "handleClick"
},
templateInput: "",
handleClick: function() {
var t = this.model,
e = this.em,
n = t.get("command");
n && (Object(r.isString)(n) ? e.get("Commands").run(n) : n(e.get("Editor"), t))
},
renderLabel: function() {
this.model.get("label") && v.prototype.renderLabel.apply(this, arguments)
},
getInputEl: function() {
var t = this.model,
e = this.ppfx,
n = t.props(),
r = n.labelButton,
i = n.text,
o = n.full,
a = r || i,
s = "".concat(e, "btn");
return '<button type="button" class="'.concat(s, "-prim").concat(o ? " ".concat(s, "--full") : "", '">').concat(a, "</button>")
}
}),
k = o.a.extend({
ns: "Traits",
itemView: v,
reuseView: 1,
itemsView: {
text: v,
number: x,
select: b,
checkbox: y,
color: C,
button: S
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.config || {};
this.config = e, this.em = t.editor, this.pfx = e.stylePrefix || "", this.ppfx = e.pStylePrefix || "", this.className = this.pfx + "traits";
this.listenTo(this.em, "component:toggled", this.updatedCollection), this.updatedCollection()
},
updatedCollection: function() {
var t = this.ppfx,
e = this.em.getSelected();
this.el.className = "".concat(this.className, " ").concat(t, "one-bg ").concat(t, "two-color"), this.collection = e ? e.get("traits") : [], this.render()
}
});
e.default = function() {
var t, e = {};
return {
TraitsView: k,
name: "TraitManager",
getConfig: function() {
return e
},
init: function() {
var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
e = n, Object(r.defaults)(e, i);
var o = e.pStylePrefix;
return o && (e.stylePrefix = "".concat(o).concat(e.stylePrefix)), t = new k({
collection: [],
editor: e.em,
config: e
}), this
},
postRender: function() {
var t = this.getConfig().appendTo;
t && (Object(r.isElement)(t) ? t : document.querySelector(t)).appendChild(this.render())
},
getTraitsViewer: function() {
return t
},
addType: function(e, n) {
var r = t.itemView;
t.itemsView[e] = r.extend(n)
},
getType: function(e) {
return t.itemsView[e]
},
render: function() {
return t.render().el
},
destroy: function() {
t.remove(), [e, t].forEach(function(t) {
return {}
})
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(0),
a = {
appendTo: "",
appendOnClick: 0,
blocks: []
},
s = n(1),
l = n.n(s),
c = l.a.Model.extend({
defaults: {
id: "",
label: "",
open: !0,
attributes: {}
}
}),
u = l.a.Model.extend({
defaults: {
activate: 0,
select: 0,
resetId: 0,
label: "",
disable: 0,
media: "",
content: "",
category: "",
attributes: {}
},
initialize: function() {
var t = this.get("category");
t && "string" == typeof t && new c({
id: t,
label: t
})
}
}),
d = l.a.Collection.extend({
model: u
}),
h = l.a.Collection.extend({
model: c
}),
f = n(3),
p = l.a.View.extend({
events: {
click: "handleClick",
mousedown: "startDrag",
dragstart: "handleDragStart",
drag: "handleDrag",
dragend: "handleDragEnd"
},
initialize: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.model;
this.em = e.em, this.config = e, this.endDrag = this.endDrag.bind(this), this.ppfx = e.pStylePrefix || "", this.listenTo(n, "destroy remove", this.remove), this.listenTo(n, "change", this.render)
},
handleClick: function() {
var t = this.config,
e = this.model,
n = this.em;
if (t.appendOnClick) {
var r, i = t.getSorter(),
o = e.get("content"),
a = n.getSelected();
if (i.setDropContent(o), a)
if (i.validTarget(a.getEl(), o).valid) r = a;
else {
var s = a.parent();
i.validTarget(s.getEl(), o).valid && (r = s)
} if (!r) {
var l = n.getWrapper();
i.validTarget(l.getEl(), o).valid && (r = l)
}
var c = r && r.append(o)[0];
c && n.setSelected(c, {
scroll: 1
})
}
},
startDrag: function(t) {
var e = this.config,
n = this.em,
r = this.model.get("disable");
if (0 === t.button && e.getSorter && !this.el.draggable && !r) {
n.refreshCanvas();
var i = e.getSorter();
i.setDragHelper(this.el, t), i.setDropContent(this.model.get("content")), i.startSort(this.el), Object(f.v)(document, "mouseup", this.endDrag)
}
},
handleDragStart: function(t) {
var e = this.em,
n = this.model,
r = n.get("content"),
i = Object(o.isObject)(r) ? JSON.stringify(r) : r;
e.set("dragResult"), t.dataTransfer.setData("text", i), e.set("dragContent", r), e.trigger("block:drag:start", n, t)
},
handleDrag: function(t) {
this.em.trigger("block:drag", this.model, t)
},
handleDragEnd: function() {
var t = this.em,
e = this.model,
n = t.get("dragResult");
if (n) {
var r = "activeOnRender",
i = n.get && n.get(r);
(e.get("activate") || i) && (n.trigger("active"), n.set(r, 0)), e.get("select") && t.setSelected(n), e.get("resetId") && n.onAll(function(t) {
return t.resetId()
})
}
t.set({
dragResult: null,
dragContent: null
}), t.trigger("block:drag:stop", n, e)
},
endDrag: function(t) {
Object(f.u)(document, "mouseup", this.endDrag);
var e = this.config.getSorter();
e.moved = 0, e.endMove()
},
render: function() {
var t = this.em,
e = this.el,
n = this.$el,
r = this.ppfx,
i = this.model,
o = i.get("disable"),
a = i.get("attributes") || {},
s = a.class || "",
l = "".concat(r, "block"),
c = t && t.t("blockManager.labels.".concat(i.id)) || i.get("label"),
u = i.get("render"),
d = i.get("media"),
h = o ? "".concat(l, "--disable") : "".concat(r, "four-color-h");
n.attr(a), e.className = "".concat(s, " ").concat(l, " ").concat(r, "one-bg ").concat(h).trim(), e.innerHTML = "\n ".concat(d ? '<div class="'.concat(l, '__media">').concat(d, "</div>") : "", '\n <div class="').concat(l, '-label">').concat(c, "</div>\n "), e.title = e.textContent.trim(), e.setAttribute("draggable", !(!Object(f.k)(t) || o));
var p = u && u({
el: e,
model: i,
className: l,
prefix: r
});
return p && (e.innerHTML = p), this
}
}),
g = l.a.View.extend({
template: Object(o.template)('\n <div class="<%= pfx %>title">\n <i class="<%= pfx %>caret-icon"></i>\n <%= label %>\n </div>\n <div class="<%= pfx %>blocks-c"></div>\n '),
events: {},
initialize: function() {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
this.config = t;
var e = t.pStylePrefix || "";
this.em = t.em, this.pfx = e, this.caretR = "fa fa-caret-right", this.caretD = "fa fa-caret-down", this.iconClass = "".concat(e, "caret-icon"), this.activeClass = "".concat(e, "open"), this.className = "".concat(e, "block-category"), this.events["click .".concat(e, "title")] = "toggle", this.listenTo(this.model, "change:open", this.updateVisibility), this.delegateEvents()
},
updateVisibility: function() {
this.model.get("open") ? this.open() : this.close()
},
open: function() {
this.el.className = "".concat(this.className, " ").concat(this.activeClass), this.getIconEl().className = "".concat(this.iconClass, " ").concat(this.caretD), this.getBlocksEl().style.display = ""
},
close: function() {
this.el.className = this.className, this.getIconEl().className = "".concat(this.iconClass, " ").concat(this.caretR), this.getBlocksEl().style.display = "none"
},
toggle: function() {
var t = this.model;
t.set("open", !t.get("open"))
},
getIconEl: function() {
return this.iconEl || (this.iconEl = this.el.querySelector("." + this.iconClass)), this.iconEl
},
getBlocksEl: function() {
return this.blocksEl || (this.blocksEl = this.el.querySelector("." + this.pfx + "blocks-c")), this.blocksEl
},
append: function(t) {
this.getBlocksEl().appendChild(t)
},
render: function() {
var t = this.em,
e = this.el,
n = this.$el,
r = this.model,
i = t.t("blockManager.categories.".concat(r.id)) || r.get("label");
return e.innerHTML = this.template({
pfx: this.pfx,
label: i
}), e.className = this.className, n.css({
order: r.get("order")
}), this.updateVisibility(), this
}
});
function v(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function m(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? v(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : v(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var b = l.a.View.extend({
initialize: function(t, e) {
Object(o.bindAll)(this, "getSorter", "onDrag", "onDrop"), this.config = e || {}, this.categories = t.categories || "", this.renderedCategories = [];
var n = this.config.pStylePrefix || "";
this.ppfx = n, this.noCatClass = "".concat(n, "blocks-no-cat"), this.blockContClass = "".concat(n, "blocks-c"), this.catsClass = "".concat(n, "block-categories");
var r = this.collection;
this.listenTo(r, "add", this.addTo), this.listenTo(r, "reset", this.render), this.em = this.config.em, this.tac = "test-tac", this.grabbingCls = this.ppfx + "grabbing", this.em && (this.config.getSorter = this.getSorter, this.canvas = this.em.get("Canvas"))
},
updateConfig: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.config = m(m({}, this.config), t)
},
getSorter: function() {
if (this.em) {
if (!this.sorter) {
var t = this.em.get("Utils"),
e = this.canvas;
this.sorter = new t.Sorter({
container: e.getBody(),
placer: e.getPlacerEl(),
containerSel: "*",
itemSel: "*",
pfx: this.ppfx,
onStart: this.onDrag,
onEndMove: this.onDrop,
onMove: this.onMove,
document: e.getFrameEl().contentDocument,
direction: "a",
wmargin: 1,
nested: 1,
em: this.em,
canvasRelative: 1
})
}
return this.sorter
}
},
onDrag: function(t) {
this.em.stopDefault(), this.em.trigger("block:drag:start", t)
},
onMove: function(t) {
this.em.trigger("block:drag:move", t)
},
onDrop: function(t) {
var e = this.em;
e.runDefault(), t && t.get && (t.get("activeOnRender") && (t.trigger("active"), t.set("activeOnRender", 0)), e.trigger("block:drag:stop", t))
},
addTo: function(t) {
this.add(t)
},
add: function(t, e) {
var n = this.config,
r = e || null,
i = new p({
model: t,
attributes: t.get("attributes")
}, n).render().el,
a = t.get("category");
if (a && this.categories && !n.ignoreCategories) {
Object(o.isString)(a) ? a = {
id: a,
label: a
} : Object(o.isObject)(a) && !a.id && (a.id = a.label);
var s = this.categories.add(a),
l = s.get("id"),
c = this.renderedCategories[l],
u = this.getCategoriesEl();
return t.set("category", s), !c && u && (c = new g({
model: s
}, this.config).render(), this.renderedCategories[l] = c, u.appendChild(c.el)), void(c && c.append(i))
}
r ? r.appendChild(i) : this.append(i)
},
getCategoriesEl: function() {
return this.catsEl || (this.catsEl = this.el.querySelector(".".concat(this.catsClass))), this.catsEl
},
getBlocksEl: function() {
return this.blocksEl || (this.blocksEl = this.el.querySelector(".".concat(this.noCatClass, " .").concat(this.blockContClass))), this.blocksEl
},
append: function(t) {
var e = this.getBlocksEl();
e && e.appendChild(t)
},
render: function() {
var t = this,
e = this.ppfx,
n = document.createDocumentFragment();
this.catsEl = null, this.blocksEl = null, this.renderedCategories = [], this.el.innerHTML = '\n <div class="'.concat(this.catsClass, '"></div>\n <div class="').concat(this.noCatClass, '">\n <div class="').concat(this.blockContClass, '"></div>\n </div>\n '), this.collection.each(function(e) {
return t.add(e, n)
}), this.append(n);
var r = "".concat(this.blockContClass, "s ").concat(e, "one-bg ").concat(e, "two-color");
return this.$el.addClass(r), this
}
});
function y(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function w(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? y(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : y(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n, r = {},
i = [];
return {
name: "BlockManager",
init: function(n) {
var o = (r = n || {}).em;
for (var s in a) s in r || (r[s] = a[s]);
return t = new d([]), e = new d([]), i = new h, t.listenTo(t, "add", function(t) {
e.add(t), o && o.trigger("block:add", t)
}), t.listenTo(t, "remove", function(t) {
e.remove(t), o && o.trigger("block:remove", t)
}), t.listenTo(t, "reset", function(t) {
e.reset(t.models)
}), this
},
getConfig: function() {
return r
},
onLoad: function() {
var t = this.getAll();
!t.length && t.reset(r.blocks)
},
postRender: function() {
n = new b({
collection: e,
categories: i
}, r);
var t = this.getConfig().appendTo;
t && (Object(o.isElement)(t) ? t : document.querySelector(t)).appendChild(this.render(e.models))
},
add: function(e, n) {
var r = n || {};
return r.id = e, t.add(r)
},
get: function(e) {
return t.get(e)
},
getAll: function() {
return t
},
getAllVisible: function() {
return e
},
remove: function(e) {
return t.remove(e)
},
getCategories: function() {
return i
},
getContainer: function() {
return n.el
},
render: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
o = t || this.getAll().models;
if (e.external) {
var a = new d(o);
return new b({
collection: a,
categories: i
}, w(w({}, r), e)).render().el
}
return n && (n.updateConfig(e), n.collection.reset(o), n.rendered || (n.render(), n.rendered = 1)), this.getContainer()
},
destroy: function() {
t.reset(), t.stopListening(), e.reset(), i.reset(), n && n.remove(), [t, e, i, n].forEach(function(t) {
return null
}), r = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = {
assets: [],
noAssets: "",
stylePrefix: "am-",
upload: 0,
uploadName: "files",
headers: {},
params: {},
credentials: "include",
multiUpload: !0,
autoAdd: 1,
customFetch: "",
uploadFile: "",
embedAsBase64: 1,
handleAdd: "",
dropzone: 0,
openAssetsOnDrop: 1,
dropzoneContent: "",
beforeUpload: null,
showUrlInput: !0
},
i = n(1),
o = n.n(i),
a = n(2),
s = n.n(a),
l = o.a.Model.extend({
idAttribute: "src",
defaults: {
type: "",
src: ""
},
getFilename: function() {
return this.get("src").split("/").pop()
},
getExtension: function() {
return this.getFilename().split(".").pop()
}
});
function c(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function u(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? c(Object(n), !0).forEach(function(e) {
s()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : c(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var d = l.extend({
defaults: u(u({}, l.prototype.defaults), {}, {
type: "image",
unitDim: "px",
height: 0,
width: 0
})
}),
h = n(0),
f = o.a.View.extend({
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.options = t, this.collection = t.collection;
var e = t.config || {};
this.config = e, this.pfx = e.stylePrefix || "", this.ppfx = e.pStylePrefix || "", this.em = e.em, this.className = this.pfx + "asset", this.listenTo(this.model, "destroy remove", this.remove), this.model.view = this;
var n = this.init && this.init.bind(this);
n && n(t)
},
template: function() {
var t = this.pfx;
return '\n <div class="'.concat(t, 'preview-cont">\n ').concat(this.getPreview(), '\n </div>\n <div class="').concat(t, 'meta">\n ').concat(this.getInfo(), '\n </div>\n <div class="').concat(t, 'close" data-toggle="asset-remove">\n ⨯\n </div>\n ')
},
updateTarget: function(t) {
t && t.set && (t.set("attributes", Object(h.clone)(t.get("attributes"))), t.set("src", this.model.get("src")))
},
getPreview: function() {
return ""
},
getInfo: function() {
return ""
},
render: function() {
var t = this.el;
return t.innerHTML = this.template(this, this.model), t.className = this.className, this
}
}).extend({
events: {
"click [data-toggle=asset-remove]": "onRemove",
click: "onClick",
dblclick: "onDblClick"
},
getPreview: function() {
var t = this.pfx,
e = this.model.get("src");
return '\n <div class="'.concat(t, 'preview" style="background-image: url(\'').concat(e, '\');"></div>\n <div class="').concat(t, "preview-bg ").concat(this.ppfx, 'checker-bg"></div>\n ')
},
getInfo: function() {
var t = this.pfx,
e = this.model,
n = e.get("name"),
r = e.get("width"),
i = e.get("height"),
o = e.get("unitDim"),
a = r && i ? "".concat(r, "x").concat(i).concat(o) : "";
return n = n || e.getFilename(), '\n <div class="'.concat(t, 'name">').concat(n, '</div>\n <div class="').concat(t, 'dimensions">').concat(a, "</div>\n ")
},
init: function(t) {
var e = this.pfx;
this.className += " ".concat(e, "asset-image")
},
onClick: function() {
var t = this.config.onClick,
e = this.model;
this.collection.trigger("deselectAll"), this.$el.addClass(this.pfx + "highlight"), Object(h.isFunction)(t) ? t(e) : this.updateTarget(this.collection.target)
},
onDblClick: function() {
var t = this.em,
e = this.model,
n = this.config.onDblClick;
Object(h.isFunction)(n) ? n(e) : (this.updateTarget(this.collection.target), t && t.get("Modal").close());
var r = this.collection.onSelect;
Object(h.isFunction)(r) && r(e)
},
onRemove: function(t) {
t.stopImmediatePropagation(), this.model.collection.remove(this.model)
}
}),
p = n(30),
g = o.a.Collection.extend(p.a).extend({
types: [{
id: "image",
model: d,
view: f,
isType: function(t) {
return "string" == typeof t ? {
type: "image",
src: t
} : t
}
}]
}),
v = n(25),
m = n.n(v),
b = o.a.View.extend({
events: {
submit: "handleSubmit"
},
template: function(t) {
var e = t.pfx,
n = t.ppfx,
r = t.em,
i = (m()(t, ["pfx", "ppfx", "em"]), "");
return this.config.showUrlInput && (i = '\n <form class="'.concat(e, 'add-asset">\n <div class="').concat(n, "field ").concat(e, 'add-field">\n <input placeholder="').concat(r && r.t("assetManager.inputPlh"), '"/>\n </div>\n <button class="').concat(n, 'btn-prim">').concat(r && r.t("assetManager.addButton"), '</button>\n <div style="clear:both"></div>\n </form>\n ')), '\n <div class="'.concat(e, 'assets-cont">\n <div class="').concat(e, 'assets-header">\n ').concat(i, '\n </div>\n <div class="').concat(e, 'assets" data-el="assets"></div>\n <div style="clear:both"></div>\n </div>\n ')
},
initialize: function(t) {
this.options = t, this.config = t.config, this.pfx = this.config.stylePrefix || "", this.ppfx = this.config.pStylePrefix || "", this.em = this.config.em;
var e = this.collection;
this.listenTo(e, "reset", this.renderAssets), this.listenTo(e, "add", this.addToAsset), this.listenTo(e, "remove", this.removedAsset), this.listenTo(e, "deselectAll", this.deselectAll)
},
handleSubmit: function(t) {
t.preventDefault();
var e = this.getAddInput(),
n = e && e.value.trim(),
r = this.config.handleAdd;
n && (e.value = "", this.getAssetsEl().scrollTop = 0, r ? r.bind(this)(n) : this.options.globalCollection.add(n, {
at: 0
}))
},
getAssetsEl: function() {
return this.el.querySelector(".".concat(this.pfx, "assets"))
},
getAddInput: function() {
return this.inputUrl && this.inputUrl.value || (this.inputUrl = this.el.querySelector(".".concat(this.pfx, "add-asset input"))), this.inputUrl
},
removedAsset: function(t) {
this.collection.length || this.toggleNoAssets()
},
addToAsset: function(t) {
1 == this.collection.length && this.toggleNoAssets(1), this.addAsset(t)
},
addAsset: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
n = this.collection,
r = this.config,
i = new t.typeView({
model: t,
collection: n,
config: r
}).render().el;
if (e) e.appendChild(i);
else {
var o = this.getAssetsEl();
o && o.insertBefore(i, o.firstChild)
}
return i
},
toggleNoAssets: function(t) {
var e = this.$el.find(".".concat(this.pfx, "assets"));
if (t) e.empty();
else {
var n = this.config.noAssets;
n && e.append(n)
}
},
deselectAll: function() {
var t = this.pfx;
this.$el.find(".".concat(t, "highlight")).removeClass("".concat(t, "highlight"))
},
renderAssets: function() {
var t = this,
e = document.createDocumentFragment(),
n = this.$el.find(".".concat(this.pfx, "assets"));
n.empty(), this.toggleNoAssets(this.collection.length), this.collection.each(function(n) {
return t.addAsset(n, e)
}), n.append(e)
},
render: function() {
var t = this.options.fu.render().el;
return this.$el.empty(), this.$el.append(t).append(this.template(this)), this.el.className = "".concat(this.ppfx, "asset-manager"), this.renderAssets(), this.rendered = 1, this
}
}),
y = n(28);
function w(t, e) {
(null == e || e > t.length) && (e = t.length);
for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];
return r
}
var x = o.a.View.extend({
template: Object(h.template)('\n <form>\n <div id="<%= pfx %>title"><%= title %></div>\n <input type="file" id="<%= uploadId %>" name="file" accept="*/*" <%= disabled ? \'disabled\' : \'\' %> <%= multiUpload ? \'multiple\' : \'\' %>/>\n <div style="clear:both;"></div>\n </form>\n '),
events: {},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.options = t;
var e = t.config || {};
this.config = e, this.em = this.config.em, this.pfx = e.stylePrefix || "", this.ppfx = e.pStylePrefix || "", this.target = this.options.globalCollection || {}, this.uploadId = this.pfx + "uploadFile", this.disabled = void 0 !== e.disableUpload ? e.disableUpload : !e.upload && !e.embedAsBase64, this.multiUpload = void 0 === e.multiUpload || e.multiUpload, this.events["change #" + this.uploadId] = "uploadFile";
var n = e.uploadFile;
n ? this.uploadFile = n.bind(this) : !e.upload && e.embedAsBase64 && (this.uploadFile = this.constructor.embedAsBase64), this.delegateEvents()
},
onUploadStart: function() {
var t = this.config.em;
t && t.trigger("asset:upload:start")
},
onUploadEnd: function(t) {
var e = this.$el,
n = this.config.em;
n && n.trigger("asset:upload:end", t);
var r = e.find("input");
r && r.val("")
},
onUploadError: function(t) {
var e = this.config.em;
console.error(t), this.onUploadEnd(t), e && e.trigger("asset:upload:error", t)
},
onUploadResponse: function(t, e) {
var n, r = this.config.em,
i = this.config,
o = this.target;
try {
n = "string" == typeof t ? JSON.parse(t) : t
} catch (e) {
n = t
}
r && r.trigger("asset:upload:response", n), i.autoAdd && o && o.add(n.data, {
at: 0
}), this.onUploadEnd(t), e && e(n)
},
uploadFile: function(t, e) {
var n = this,
r = t.dataTransfer ? t.dataTransfer.files : t.target.files,
i = this.config,
o = i.beforeUpload;
if (!1 !== (o && o(r))) {
var a = new FormData,
s = i.params,
l = i.customFetch;
for (var c in s) a.append(c, s[c]);
if (this.multiUpload)
for (var u = 0; u < r.length; u++) a.append("".concat(i.uploadName, "[]"), r[u]);
else r.length && a.append(i.uploadName, r[0]);
this.target;
var d = i.upload,
h = i.headers,
f = "X-Requested-With";
if (void 0 === h[f] && (h[f] = "XMLHttpRequest"), d) {
this.onUploadStart();
var p = {
method: "post",
credentials: i.credentials || "include",
headers: h,
body: a
};
return (l ? l(d, p) : Object(y.a)(d, p).then(function(t) {
return 1 == (t.status / 200 | 0) ? t.text() : t.text().then(function(t) {
return Promise.reject(t)
})
})).then(function(t) {
return n.onUploadResponse(t, e)
}).catch(function(t) {
return n.onUploadError(t)
})
}
}
},
initDrop: function() {
var t = this;
!this.uploadForm && (this.uploadForm = this.$el.find("form").get(0), "draggable" in this.uploadForm) && (this.uploadFile, this.uploadForm.ondragover = function() {
return this.className = t.pfx + "hover", !1
}, this.uploadForm.ondragleave = function() {
return this.className = "", !1
}, this.uploadForm.ondrop = function(e) {
this.className = "", e.preventDefault(), t.uploadFile(e)
})
},
initDropzone: function(t) {
var e = this,
n = 0,
r = this.config,
i = t.model,
o = t.el,
a = i.get("Editor"),
s = (i.get("Config").el, i.get("Canvas").getBody()),
l = this.ppfx,
c = "".concat(l, "dropzone-active"),
u = "".concat(l, "dropzone"),
d = function() {
o.className = o.className.replace(c, "").trim(), n = 0
},
h = function() {
return n || (o.className += " ".concat(c), n = 1), !1
},
f = function() {
return d(), !1
},
p = function(t) {
if (d(), t.preventDefault(), t.stopPropagation(), e.uploadFile(t), r.openAssetsOnDrop && a) {
var n = a.getSelected();
a.runCommand("open-assets", {
target: n,
onSelect: function() {
a.Modal.close(), a.AssetManager.setTarget(null)
}
})
}
return !1
};
t.$el.append('<div class="'.concat(u, '">').concat(r.dropzoneContent, "</div>")), d(), "draggable" in o && [o, s].forEach(function(t) {
t.ondragover = h, t.ondragleave = f, t.ondrop = p
})
},
render: function() {
var t = this.$el,
e = this.pfx,
n = this.em;
return t.html(this.template({
title: n && n.t("assetManager.uploadTitle"),
uploadId: this.uploadId,
disabled: this.disabled,
multiUpload: this.multiUpload,
pfx: e
})), this.initDrop(), t.attr("class", e + "file-uploader"), this
}
}, {
embedAsBase64: function(t, e) {
var n = this,
r = t.dataTransfer ? t.dataTransfer.files : t.target.files,
i = {
data: []
};
if (FileReader) {
var o, a = [],
s = /^(.+)\/(.+)$/,
l = function(t, e) {
var n;
if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
if (Array.isArray(t) || (n = function(t, e) {
if (t) {
if ("string" == typeof t) return w(t, e);
var n = Object.prototype.toString.call(t).slice(8, -1);
return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? w(t, e) : void 0
}
}(t)) || e && t && "number" == typeof t.length) {
n && (t = n);
var r = 0,
i = function() {};
return {
s: i,
n: function() {
return r >= t.length ? {
done: !0
} : {
done: !1,
value: t[r++]
}
},
e: function(t) {
throw t
},
f: i
}
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
}
var o, a = !0,
s = !1;
return {
s: function() {
n = t[Symbol.iterator]()
},
n: function() {
var t = n.next();
return a = t.done, t
},
e: function(t) {
s = !0, o = t
},
f: function() {
try {
a || null == n.return || n.return()
} finally {
if (s) throw o
}
}
}
}(r);
try {
var c = function() {
var t = o.value,
e = new Promise(function(e, n) {
var r = new FileReader;
r.addEventListener("load", function(i) {
var o, a = t.name,
l = s.exec(t.type);
if ("image" === (o = l ? l[1] : t.type)) {
var c = {
src: r.result,
name: a,
type: o,
height: 0,
width: 0
},
u = new Image;
u.addEventListener("error", function(t) {
n(t)
}), u.addEventListener("load", function() {
c.height = u.height, c.width = u.width, e(c)
}), u.src = c.src
} else e(o ? {
src: r.result,
name: a,
type: o
} : r.result)
}), r.addEventListener("error", function(t) {
n(t)
}), r.addEventListener("abort", function(t) {
n("Aborted")
}), r.readAsDataURL(t)
});
a.push(e)
};
for (l.s(); !(o = l.n()).done;) c()
} catch (t) {
l.e(t)
} finally {
l.f()
}
Promise.all(a).then(function(t) {
i.data = t, n.onUploadResponse(i, e)
}, function(t) {
n.onUploadError(t)
})
} else this.onUploadError(new Error("Unsupported platform, FileReader is not defined"))
}
});
e.default = function() {
var t, e, n, i = {};
return {
name: "AssetManager",
storageKey: "assets",
getConfig: function() {
return i
},
init: function(o) {
var a = this;
for (var s in i = o || {}, r) s in i || (i[s] = r[s]);
var l = i.pStylePrefix,
c = i.em;
l && (i.stylePrefix = l + i.stylePrefix), t = new g([]);
var u = {
collection: new g([]),
globalCollection: t,
config: i
};
return n = new x(u), u.fu = n, e = new b(u), t.listenTo(t, "add", function(t) {
a.getAllVisible().add(t), c && c.trigger("asset:add", t)
}), t.listenTo(t, "remove", function(t) {
a.getAllVisible().remove(t), c && c.trigger("asset:remove", t)
}), this
},
add: function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return void 0 === n.at && (n.at = 0), t.add(e, n)
},
get: function(e) {
return t.where({
src: e
})[0]
},
getAll: function() {
return t
},
getAllVisible: function() {
return e.collection
},
remove: function(t) {
var e = this.get(t);
return this.getAll().remove(e), this
},
store: function(t) {
var e = {},
n = JSON.stringify(this.getAll().toJSON());
return e[this.storageKey] = n, !t && i.stm && i.stm.store(e), e
},
load: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.storageKey,
n = t[e] || [];
if ("string" == typeof n) try {
n = JSON.parse(t[e])
} catch (t) {}
return n && n.length && this.getAll().reset(n), n
},
getContainer: function() {
return e.el
},
getAssetsEl: function() {
return e.el.querySelector("[data-el=assets]")
},
render: function(t) {
var n = t || this.getAll().models;
return e.rendered || e.render(), e.collection.reset(n), this.getContainer()
},
addType: function(t, e) {
this.getAll().addType(t, e)
},
getType: function(t) {
return this.getAll().getType(t)
},
getTypes: function() {
return this.getAll().getTypes()
},
AssetsView: function() {
return e
},
FileUploader: function() {
return n
},
onLoad: function() {
this.getAll().reset(i.assets)
},
postRender: function(t) {
i.dropzone && n.initDropzone(t)
},
setTarget: function(t) {
e.collection.target = t
},
onSelect: function(t) {
e.collection.onSelect = t
},
onClick: function(t) {
i.onClick = t
},
onDblClick: function(t) {
i.onDblClick = t
},
destroy: function() {
t.reset(), n.collection.reset(), n.remove(), e.remove(), [t, e, n].forEach(function(t) {
return null
}), i = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(11),
a = {
stylePrefix: "gjs-",
components: "",
style: "",
fromElement: 0,
noticeOnUnload: !0,
showOffsets: !1,
showOffsetsSelected: !1,
forceClass: !0,
height: "900px",
width: "100%",
log: ["warning", "error"],
baseCss: "\n * {\n box-sizing: border-box;\n }\n html, body, [data-gjs-type=wrapper] {\n min-height: 100%;\n }\n body {\n margin: 0;\n height: 100%;\n background-color: #fff\n }\n [data-gjs-type=wrapper] {\n overflow: auto;\n overflow-x: hidden;\n }\n\n * ::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.1)\n }\n\n * ::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.2)\n }\n\n * ::-webkit-scrollbar {\n width: 10px\n }\n ",
protectedCss: "* { box-sizing: border-box; } body {margin: 0;}",
canvasCss: "",
defaultCommand: "select-comp",
showToolbar: 1,
allowScripts: 0,
showDevices: 1,
devicePreviewMode: 0,
mediaCondition: "max-width",
tagVarStart: "{[ ",
tagVarEnd: " ]}",
keepEmptyTextNodes: 0,
jsInHtml: !0,
nativeDnD: 1,
multipleSelection: 1,
exportWrapper: 0,
wrapperIsBody: 1,
avoidInlineStyle: 1,
avoidDefaults: 1,
clearStyles: 0,
dragMode: 0,
listenToEl: [],
cssIcons: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css",
el: "",
i18n: {},
undoManager: {},
assetManager: {},
canvas: {},
layers: {},
storageManager: {},
richTextEditor: {},
domComponents: {},
modal: {},
codeManager: {},
panels: {},
commands: {},
cssComposer: {},
selectorManager: {},
deviceManager: {
devices: [{
id: "desktop",
name: "Desktop",
width: ""
}, {
id: "tablet",
name: "Tablet",
width: "768px",
widthMedia: "992px"
}, {
id: "mobileLandscape",
name: "Mobile landscape",
width: "568px",
widthMedia: "768px"
}, {
id: "mobilePortrait",
name: "Mobile portrait",
width: "320px",
widthMedia: "480px"
}]
},
blockManager: {},
traitManager: {},
textViewCode: "Code",
keepUnusedStyles: 0,
multiFrames: 0
},
s = n(0),
l = n(1),
c = n.n(l),
u = n(3);
function d(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function h(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? d(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
c.a.$ = o.default;
var f, p, g = [n(108), n(106), n(77), n(78), n(102), n(101), n(105), n(100), n(104), n(103), n(99), n(98), n(107), n(96), n(110), n(94), n(92), n(69), n(93), n(109), n(95)],
v = c.a.Collection;
! function(t) {
var e = {
Backbone: c.a,
$: c.a.$
}.$;
if (e && "jQuery" !== e.prototype.constructor.name) {
var n = e.fn;
n.hide = function() {
return this.css("display", "none")
}, n.show = function() {
return this.css("display", "block")
}, n.focus = function() {
var t = this.get(0);
return t && t.focus(), this
}, n.bind = function(t, e) {
return this.on(t, e)
}, n.unbind = function(t, e) {
if (Object(s.isObject)(t)) {
for (var n in t) t.hasOwnProperty(n) && this.off(n, t[n]);
return this
}
return this.off(t, e)
}, n.click = function(t) {
return t ? this.on("click", t) : this.trigger("click")
}, n.change = function(t) {
return t ? this.on("change", t) : this.trigger("change")
}, n.keydown = function(t) {
return t ? this.on("keydown", t) : this.trigger("keydown")
}, n.delegate = function(t, e, n, r) {
return r || (r = n), this.on(e, t, function(t) {
t.data = n, r(t)
})
}, n.scrollLeft = function() {
var t = this.get(0),
e = (t = 9 == t.nodeType ? t.defaultView : t) instanceof Window ? t : null;
return e ? e.pageXOffset : t.scrollLeft || 0
}, n.scrollTop = function() {
var t = this.get(0),
e = (t = 9 == t.nodeType ? t.defaultView : t) instanceof Window ? t : null;
return e ? e.pageYOffset : t.scrollTop || 0
};
var r = e.prototype.offset;
n.offset = function(t) {
var e, n;
return t && (e = t.top, n = t.left), void 0 !== e && this.css("top", "".concat(e, "px")), void 0 !== n && this.css("left", "".concat(n, "px")), r.call(this)
}, e.map = function(t, e) {
for (var n = [], r = 0; r < t.length; r++) n.push(e(t[r], r));
return n
};
var i = Array.prototype.indexOf;
e.inArray = function(t, e, n) {
return null == e ? -1 : i.call(e, t, n)
}, e.Event = function(t, n) {
if (!(this instanceof e.Event)) return new e.Event(t, n);
this.type = t, this.isDefaultPrevented = function() {
return !1
}
}
}
}();
var m = {
debug: console.log,
info: console.info,
warning: console.warn,
error: console.error
},
b = c.a.Model.extend({
defaults: function() {
return {
editing: 0,
selected: new v,
clipboard: null,
dmode: 0,
componentHovered: null,
previousModel: null,
changesCount: 0,
storables: [],
modules: [],
toLoad: [],
opened: {},
device: ""
}
},
initialize: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.config = e, this.set("Config", e), this.set("modules", []), this.set("toLoad", []), this.set("storables", []), this.set("selected", new v), this.set("dmode", e.dragMode);
var n = e.el,
r = e.log,
i = !0 === r ? Object(s.keys)(m) : Object(s.isArray)(r) ? r : [];
Object(s.bindAll)(this, "initBaseColorPicker"), n && e.fromElement && (this.config.components = n.innerHTML), this.attrsOrig = n ? Object(s.toArray)(n.attributes).reduce(function(t, e) {
return t[e.nodeName] = e.nodeValue, t
}, {}) : "", g.forEach(function(e) {
return t.loadModule(e)
}), this.on("change:componentHovered", this.componentHovered, this), this.on("change:changesCount", this.updateChanges, this), i.forEach(function(e) {
return t.listenLog(e)
}), [{
from: "change:selectedComponent",
to: "component:toggled"
}].forEach(function(e) {
var n = e.from,
r = e.to;
t.listenTo(t, n, function() {
for (var e = arguments.length, i = new Array(e), o = 0; o < e; o++) i[o] = arguments[o];
t.trigger.apply(t, [r].concat(i)), t.logWarning("The event '".concat(n, "' is deprecated, replace it with '").concat(r, "'"))
})
})
},
getContainer: function() {
return this.config.el
},
listenLog: function(t) {
this.listenTo(this, "log:".concat(t), m[t])
},
getConfig: function(t) {
var e = this.config;
return Object(s.isUndefined)(t) ? e : e[t]
},
loadOnStart: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,
n = this.get("StorageManager");
this.get("toLoad").forEach(function(t) {
t.onLoad()
});
var r = function() {
t.get("modules").forEach(function(e) {
return e.postLoad && e.postLoad(t)
}), e && e()
};
n && n.canAutoload() ? this.load(r) : r()
},
updateChanges: function() {
var t = this,
e = this.get("StorageManager"),
n = this.get("changesCount");
p && clearTimeout(p), p = setTimeout(function() {
return t.trigger("update")
}), this.config.noticeOnUnload && (window.onbeforeunload = n ? function(t) {
return 1
} : null), e.isAutosave() && n >= e.getStepsBeforeSave() && this.store()
},
loadModule: function(t) {
var e = this.config,
n = new(t.default || t),
r = n.name.charAt(0).toLowerCase() + n.name.slice(1),
i = Object(s.isUndefined)(e[r]) ? e[n.name] : e[r],
o = i || {},
a = this.get("StorageManager");
if (o.pStylePrefix = e.pStylePrefix || "", Object(s.isUndefined)(i) || i || (o._disable = 1), n.storageKey && n.store && n.load && a) {
o.stm = a;
var l = "domComponents" == r ? "unshift" : "push";
this.get("storables")[l](n)
}
return o.em = this, n.init(h({}, o)), !n.private && this.set(n.name, n), n.onLoad && this.get("toLoad").push(n), this.get("modules").push(n), this
},
init: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
this.destroyed && (this.initialize(e), this.destroyed = 0), this.set("Editor", t)
},
getEditor: function() {
return this.get("Editor")
},
handleUpdates: function(t, e) {
var n = this,
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
r.temporary || r.noCount || r.avoidStore || (f && clearTimeout(f), f = setTimeout(function() {
n.set("changesCount", n.get("changesCount") + 1, r)
}, 0))
},
componentHovered: function(t, e, n) {
var r = this.previous("componentHovered");
r && this.trigger("component:unhovered", r, n), e && this.trigger("component:hovered", e, n)
},
getSelected: function() {
return this.get("selected").last()
},
getSelectedAll: function() {
var t = this.get("selected");
return t && t.models || []
},
setSelected: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = n.event,
i = r && (r.ctrlKey || r.metaKey),
a = (r || {}).shiftKey,
l = Object(s.isArray)(t),
c = l ? t : [t],
d = this.get("selected"),
h = this.getConfig("multipleSelection");
l && this.removeSelected(d.filter(function(t) {
return !Object(s.contains)(c, t)
})), c.forEach(function(t) {
var r = Object(u.g)(t, o.default);
if (!r || r.get("selectable")) {
if (i && h) return e.toggleSelected(r);
if (a && h) {
e.clearSelection(e.get("Canvas").getWindow());
var c, f, p = r.collection,
g = r.index();
if (e.getSelectedAll().forEach(function(t) {
var e = t.collection,
n = t.index();
e === p && (n < g ? c = Object(s.isUndefined)(c) ? n : Math.max(c, n) : n > g && (f = Object(s.isUndefined)(f) ? n : Math.min(f, n)))
}), !Object(s.isUndefined)(c))
for (; c !== g;) e.addSelected(p.at(c)), c++;
if (!Object(s.isUndefined)(f))
for (; f !== g;) e.addSelected(p.at(f)), f--;
return e.addSelected(r)
}!l && e.removeSelected(d.filter(function(t) {
return t !== r
})), e.addSelected(r, n)
}
})
},
addSelected: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = Object(u.g)(t, o.default);
(Object(s.isArray)(r) ? r : [r]).forEach(function(t) {
if (!t || t.get("selectable")) {
var r = e.get("selected");
n.forceChange && r.remove(t, n), r.push(t, n)
}
})
},
removeSelected: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
this.get("selected").remove(Object(u.g)(t, o.default), e)
},
toggleSelected: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = Object(u.g)(t, o.default);
(Object(s.isArray)(r) ? r : [r]).forEach(function(t) {
e.get("selected").contains(t) ? e.removeSelected(t, n) : e.addSelected(t, n)
})
},
setHovered: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = Object(u.g)(t, o.default);
n && !n.get("hoverable") || (e.forceChange && this.set("componentHovered", ""), this.set("componentHovered", n, e))
},
getHovered: function() {
return this.get("componentHovered")
},
setComponents: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return this.get("DomComponents").setComponents(t, e)
},
getComponents: function() {
var t = this.get("DomComponents"),
e = this.get("CodeManager");
if (t && e) {
var n = t.getComponents();
return e.getCode(n, "json")
}
},
setStyle: function(t) {
for (var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = this.get("CssComposer").getAll(), r = 0, i = n.length; r < i; r++) n.pop();
return n.add(t, e), this
},
getStyle: function() {
return this.get("CssComposer").getAll()
},
setState: function(t) {
return this.set("state", t), this
},
getState: function() {
return this.get("state") || ""
},
getHtml: function() {
var t = this.config,
e = t.exportWrapper,
n = t.wrapperIsBody,
r = t.jsInHtml ? this.getJs() : "",
i = this.get("DomComponents").getComponent();
return this.get("CodeManager").getCode(i, "html", {
exportWrapper: e,
wrapperIsBody: n
}) + (r ? "<script>".concat(r, "<\/script>") : "")
},
getCss: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.config,
n = e.wrapperIsBody,
r = t.avoidProtected,
i = Object(s.isUndefined)(t.keepUnusedStyles) ? e.keepUnusedStyles : t.keepUnusedStyles,
o = this.get("CssComposer"),
a = this.get("DomComponents").getComponent();
return (r ? "" : e.protectedCss) + this.get("CodeManager").getCode(a, "css", {
cssc: o,
wrapperIsBody: n,
keepUnusedStyles: i
})
},
getJs: function() {
var t = this.get("DomComponents").getWrapper();
return this.get("CodeManager").getCode(t, "js").trim()
},
store: function(t) {
var e = this,
n = this.get("StorageManager"),
r = {};
if (n) return this.get("storables").forEach(function(t) {
var e = t.store(1);
for (var n in e) r[n] = e[n]
}), n.store(r, function(n) {
t && t(n), e.set("changesCount", 0), e.trigger("storage:store", r)
}), r
},
load: function() {
var t = this,
e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;
this.getCacheLoad(1, function(n) {
t.get("storables").forEach(function(e) {
e.load(n), e.postLoad && e.postLoad(t)
}), e && e(n)
})
},
getCacheLoad: function(t, e) {
var n = this;
if (this.cacheLoad && !t) return this.cacheLoad;
var r = this.get("StorageManager"),
i = [];
if (!r) return {};
this.get("storables").forEach(function(t) {
var e = t.storageKey;
e = Object(s.isFunction)(e) ? e() : e, (Object(s.isArray)(e) ? e : [e]).forEach(function(t) {
return i.push(t)
})
}), r.load(i, function(t) {
n.cacheLoad = t, e && e(t), setTimeout(function() {
return n.trigger("storage:load", t)
})
})
},
getDeviceModel: function() {
var t = this.get("device");
return this.get("DeviceManager").get(t)
},
runDefault: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.get("Commands").get(this.config.defaultCommand);
e && !this.defaultRunning && (e.stop(this, this, t), e.run(this, this, t), this.defaultRunning = 1)
},
stopDefault: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.get("Commands").get(this.config.defaultCommand);
e && (e.stop(this, this, t), this.defaultRunning = 0)
},
refreshCanvas: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.set("canvasOffset", null), this.set("canvasOffset", this.get("Canvas").getOffset()), t.tools && this.trigger("canvas:updateTools")
},
clearSelection: function(t) {
(t || window).getSelection().removeAllRanges()
},
getCurrentMedia: function() {
var t = this.config,
e = this.getDeviceModel(),
n = t.mediaCondition,
r = t.devicePreviewMode,
i = e && e.get("widthMedia");
return e && i && !r ? "(".concat(n, ": ").concat(i, ")") : ""
},
getWrapper: function() {
return this.get("DomComponents").getWrapper()
},
setCurrentFrame: function(t) {
return this.set("currentFrame", t)
},
getCurrentFrame: function() {
return this.get("currentFrame")
},
getCurrentFrameModel: function() {
return (this.getCurrentFrame() || {}).model
},
getDirtyCount: function() {
return this.get("changesCount")
},
getZoomDecimal: function() {
return this.get("Canvas").getZoomDecimal()
},
getZoomMultiplier: function() {
return this.get("Canvas").getZoomMultiplier()
},
setDragMode: function(t) {
return this.set("dmode", t)
},
t: function() {
var t;
return (t = this.get("I18n")).t.apply(t, arguments)
},
inAbsoluteMode: function() {
return "absolute" === this.get("dmode")
},
destroyAll: function() {
var t = this,
e = this.config,
n = this.getEditor(),
r = (e.grapesjs || {}).editors,
i = void 0 === r ? [] : r;
this.stopDefault(), this.get("modules").slice().reverse().forEach(function(t) {
return t.destroy()
}), this.view.remove(), this.stopListening(), this.clear({
silent: !0
}), this.destroyed = 1, ["config", "view", "_previousAttributes", "_events", "_listeners"].forEach(function(e) {
return t[e] = {}
}), i.splice(i.indexOf(n), 1), Object(o.default)(e.el).empty().attr(this.attrsOrig)
},
setEditing: function(t) {
return this.set("editing", t), this
},
isEditing: function() {
return !!this.get("editing")
},
log: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = e.ns,
r = e.level,
i = void 0 === r ? "debug" : r;
if (this.trigger("log", t, e), i && this.trigger("log:".concat(i), t, e), n) {
var o = "log-".concat(n);
this.trigger(o, t, e), i && this.trigger("".concat(o, ":").concat(i), t, e)
}
},
logInfo: function(t, e) {
this.log(t, h(h({}, e), {}, {
level: "info"
}))
},
logWarning: function(t, e) {
this.log(t, h(h({}, e), {}, {
level: "warning"
}))
},
logError: function(t, e) {
this.log(t, h(h({}, e), {}, {
level: "error"
}))
},
initBaseColorPicker: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.getConfig(),
r = n.colorPicker,
i = void 0 === r ? {} : r,
a = n.el,
s = n.stylePrefix;
return Object(o.default)(t).spectrum(h(h({
containerClassName: "".concat(s, "one-bg ").concat(s, "two-color"),
appendTo: a || "body",
maxSelectionSize: 8,
showPalette: !0,
palette: [],
showAlpha: !0,
chooseText: "Ok",
cancelText: "⨯"
}, e), i))
},
data: function(t, e, n) {
var r = "_gjs-data";
if (t[r] || (t[r] = {}), Object(s.isUndefined)(n)) return t[r][e];
t[r][e] = n
}
}),
y = c.a.$,
w = c.a.View.extend({
initialize: function() {
var t = this,
e = this.model;
e.view = this, this.conf = e.config, this.pn = e.get("Panels"), this.cv = e.get("Canvas"), e.on("loaded", function() {
t.pn.active(), t.pn.disableButtons(), setTimeout(function() {
e.runDefault(), e.trigger("load", e.get("Editor"))
})
})
},
render: function() {
this.model;
var t = this.$el,
e = this.conf,
n = e.stylePrefix,
r = y(e.el || "body ".concat(e.container));
return Object(u.a)(e.cssIcons, {
unique: 1,
prepand: 1
}), t.empty(), e.width && r.css("width", e.width), e.height && r.css("height", e.height), t.append(this.cv.render()), t.append(this.pn.render()), t.attr("class", "".concat(n, "editor ").concat(n, "one-bg ").concat(n, "two-color")), r.addClass("".concat(n, "editor-cont")).empty().append(t), this
}
});
function x(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function O(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? x(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : x(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var C = function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = O(O({}, a), t);
e.pStylePrefix = e.stylePrefix;
var n = new b(e),
r = new w({
model: n,
config: e
});
return {
$: o.default,
editor: n,
init: function() {
var t = this,
i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return n.init(this, O(O({}, e), i)), ["I18n", "Utils", "Config", "Commands", "Keymaps", "Modal", "Panels", "Canvas", "Parser", "CodeManager", "UndoManager", "RichTextEditor", "DomComponents", ["Components", "DomComponents"], "LayerManager", ["Layers", "LayerManager"], "CssComposer", ["Css", "CssComposer"], "StorageManager", ["Storage", "StorageManager"], "AssetManager", ["Assets", "AssetManager"], "BlockManager", ["Blocks", "BlockManager"], "TraitManager", ["Traits", "TraitManager"], "SelectorManager", ["Selectors", "SelectorManager"], "StyleManager", ["Styles", "StyleManager"], "DeviceManager", ["Devices", "DeviceManager"]].forEach(function(e) {
Array.isArray(e) ? t[e[0]] = n.get(e[1]) : t[e] = n.get(e)
}), n.on("loaded", function() {
t.UndoManager.clear(), n.get("modules").forEach(function(t) {
t.postRender && t.postRender(r)
})
}), this
},
getConfig: function(t) {
return n.getConfig(t)
},
getHtml: function(t) {
return n.getHtml(t)
},
getCss: function(t) {
return n.getCss(t)
},
getJs: function() {
return n.getJs()
},
getComponents: function() {
return n.get("DomComponents").getComponents()
},
getWrapper: function() {
return n.get("DomComponents").getWrapper()
},
setComponents: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return n.setComponents(t, e), this
},
addComponents: function(t, e) {
return this.getWrapper().append(t, e)
},
getStyle: function() {
return n.get("CssComposer").getAll()
},
setStyle: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return n.setStyle(t, e), this
},
getSelected: function() {
return n.getSelected()
},
getSelectedAll: function() {
return n.getSelectedAll()
},
getSelectedToStyle: function() {
var t = n.getSelected();
if (t) return this.StyleManager.getModelToStyle(t)
},
select: function(t, e) {
return n.setSelected(t, e), this
},
selectAdd: function(t) {
return n.addSelected(t), this
},
selectRemove: function(t) {
return n.removeSelected(t), this
},
selectToggle: function(t) {
return n.toggleSelected(t), this
},
setDevice: function(t) {
return n.set("device", t), this
},
getDevice: function() {
return n.get("device")
},
runCommand: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return n.get("Commands").run(t, e)
},
stopCommand: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return n.get("Commands").stop(t, e)
},
store: function(t) {
return n.store(t)
},
load: function(t) {
return n.load(t)
},
getContainer: function() {
return e.el
},
getDirtyCount: function() {
return n.getDirtyCount()
},
refresh: function(t) {
n.refreshCanvas(t)
},
setCustomRte: function(t) {
this.RichTextEditor.customRte = t
},
setCustomParserCss: function(t) {
return this.Parser.getConfig().parserCss = t, this
},
setDragMode: function(t) {
return n.setDragMode(t), this
},
log: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return n.log(t, e), this
},
t: function() {
return n.t.apply(n, arguments)
},
on: function(t, e) {
return n.on(t, e), this
},
once: function(t, e) {
return n.once(t, e), this
},
off: function(t, e) {
return n.off(t, e), this
},
trigger: function(t) {
return n.trigger.apply(n, arguments), this
},
destroy: function() {
return n.destroyAll()
},
getEl: function() {
return r.el
},
getModel: function() {
return n
},
render: function() {
return r.render(), r.el
}
}
},
S = {
plugins: []
};
function k(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function j(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? k(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : k(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}! function() {
if (function() {
for (var t, e = window.navigator.userAgent, n = [
["edge", /Edge\/([0-9\._]+)/],
["ie", /MSIE\s(7\.0)/],
["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],
["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/]
], r = 0; r < n.length && !(t = n[r][1].exec(e)); r++);
return !!t
}()) {
var t = DOMImplementation.prototype.createHTMLDocument;
DOMImplementation.prototype.createHTMLDocument = function(e) {
return e || (e = ""), t.apply(document.implementation, [e])
}
}
}();
var T = new function(t) {
var e = {};
for (var n in S) n in e || (e[n] = S[n]);
var r = {};
return {
add: function(t, e) {
return r[t] ? r[t] : (r[t] = e, e)
},
get: function(t) {
return r[t]
},
getAll: function() {
return r
}
}
},
P = [],
E = {
autorender: 1,
plugins: [],
pluginsOpts: {}
};
e.default = {
$: o.default,
editors: P,
plugins: T,
version: "0.16.34",
init: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.container;
if (!e) throw new Error("'container' is required");
(t = j(j(j({}, E), t), {}, {
grapesjs: this
})).el = Object(s.isElement)(e) ? e : document.querySelector(e);
var n = new C(t).init();
return t.plugins.forEach(function(e) {
var r = T.get(e),
i = t.pluginsOpts[e] || {};
if (!r) {
var o = window[e];
r = o && o.default ? o.default : o
}
r ? r(n, i) : Object(s.isFunction)(e) ? e(n, i) : console.warn("Plugin ".concat(e, " not found"))
}), n.getModel().loadOnStart(), t.autorender && n.render(), P.push(n), n
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = "sw-visibility",
i = "export-template",
o = "open-sm",
a = "open-tm",
s = "open-layers",
l = "open-blocks",
c = "fullscreen",
u = "preview",
d = {
stylePrefix: "pn-",
defaults: [{
id: "commands",
buttons: [{}]
}, {
id: "options",
buttons: [{
active: !0,
id: r,
className: "fa fa-square-o",
command: r,
context: r,
attributes: {
title: "View components"
}
}, {
id: u,
className: "fa fa-eye",
command: u,
context: u,
attributes: {
title: "Preview"
}
}, {
id: c,
className: "fa fa-arrows-alt",
command: c,
context: c,
attributes: {
title: "Fullscreen"
}
}, {
id: i,
className: "fa fa-code",
command: i,
attributes: {
title: "View code"
}
}]
}, {
id: "views",
buttons: [{
id: o,
className: "fa fa-paint-brush",
command: o,
active: !0,
togglable: 0,
attributes: {
title: "Open Style Manager"
}
}, {
id: a,
className: "fa fa-cog",
command: a,
togglable: 0,
attributes: {
title: "Settings"
}
}, {
id: s,
className: "fa fa-bars",
command: s,
togglable: 0,
attributes: {
title: "Open Layer Manager"
}
}, {
id: l,
className: "fa fa-th-large",
command: l,
togglable: 0,
attributes: {
title: "Open Blocks"
}
}]
}],
em: null,
delayBtnsShow: 300
},
h = n(1),
f = n.n(h),
p = n(41),
g = f.a.Model.extend({
defaults: {
id: "",
content: "",
visible: !0,
buttons: [],
attributes: {}
},
initialize: function(t) {
this.btn = this.get("buttons") || [], this.buttons = new p.default(this.btn), this.set("buttons", this.buttons)
}
}),
v = f.a.Collection.extend({
model: g
}),
m = n(2),
b = n.n(m),
y = n(0);
function w(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function x(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? w(Object(n), !0).forEach(function(e) {
b()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : w(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
f.a.$;
var O = f.a.View.extend({
tagName: function() {
return this.model.get("tagName")
},
events: {
click: "clicked"
},
initialize: function(t) {
var e = this.model.get("className");
this.config = t.config || {}, this.em = this.config.em || {};
var n = this.config.stylePrefix || "",
r = this.config.pStylePrefix || "";
this.pfx = n, this.ppfx = this.config.pStylePrefix || "", this.id = n + this.model.get("id"), this.activeCls = "".concat(n, "active ").concat(r, "four-color"), this.disableCls = "".concat(r, "disabled"), this.btnsVisCls = "".concat(n, "visible"), this.className = n + "btn" + (e ? " " + e : ""), this.listenTo(this.model, "change", this.render), this.listenTo(this.model, "change:active updateActive", this.updateActive), this.listenTo(this.model, "checkActive", this.checkActive), this.listenTo(this.model, "change:bntsVis", this.updateBtnsVis), this.listenTo(this.model, "change:attributes", this.updateAttributes), this.listenTo(this.model, "change:className", this.updateClassName), this.listenTo(this.model, "change:disable", this.updateDisable), this.em && this.em.get && (this.commands = this.em.get("Commands"))
},
updateClassName: function() {
var t = this.model,
e = this.pfx,
n = t.get("className"),
r = t.get("attributes").class,
i = "".concat(r || "", " ").concat(e, "btn ").concat(n || "");
this.$el.attr("class", i.trim())
},
updateAttributes: function() {
var t = this.em,
e = this.model,
n = this.$el,
r = e.get("attributes") || {},
i = t && t.t && t.t("panels.buttons.titles.".concat(e.id));
n.attr(r), i && n.attr({
title: i
}), this.updateClassName()
},
updateBtnsVis: function() {
this.$buttons && (this.model.get("bntsVis") ? this.$buttons.addClass(this.btnsVisCls) : this.$buttons.removeClass(this.btnsVisCls))
},
updateActive: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.model,
n = this.commands,
r = this.$el,
i = this.activeCls,
o = t.fromCollection,
a = e.get("context"),
s = e.get("options"),
l = e.get("command"),
c = {};
l && (n && Object(y.isString)(l) ? c = n.get(l) || {} : Object(y.isFunction)(l) ? c = n.create({
run: l
}) : null !== l && Object(y.isObject)(l) && (c = n.create(l)), e.get("active") ? (!o && e.collection.deactivateAll(a, e), e.set("active", !0, {
silent: !0
}).trigger("checkActive"), n.runCommand(c, x(x({}, s), {}, {
sender: e
})), c.noStop && e.set("active", !1)) : (r.removeClass(i), n.stopCommand(c, x(x({}, s), {}, {
sender: e,
force: 1
}))))
},
updateDisable: function() {
var t = this.disableCls,
e = this.model.get("disable");
this.$el[e ? "addClass" : "removeClass"](t)
},
checkActive: function() {
var t = this.model,
e = this.$el,
n = this.activeCls;
t.get("active") ? e.addClass(n) : e.removeClass(n)
},
clicked: function(t) {
var e = this.model;
e.get("bntsVis") || e.get("disable") || !e.get("command") || this.toggleActive()
},
toggleActive: function() {
var t = this.model,
e = this.em,
n = t.attributes,
r = n.active,
i = n.togglable;
r && !i || (t.set("active", !r), r ? t.get("runDefaultCommand") && e.runDefault() : t.get("stopDefaultCommand") && e.stopDefault())
},
render: function() {
var t = this.model,
e = t.get("label"),
n = this.$el;
return !t.get("el") && n.empty(), this.updateAttributes(), e && n.append(e), this.checkActive(), this.updateDisable(), this
}
}),
C = f.a.View.extend({
initialize: function(t) {
this.opt = t || {}, this.config = this.opt.config || {}, this.pfx = this.config.stylePrefix || "", this.parentM = this.opt.parentM || null, this.listenTo(this.collection, "add", this.addTo), this.listenTo(this.collection, "reset remove", this.render), this.className = this.pfx + "buttons"
},
addTo: function(t) {
this.addToCollection(t)
},
addToCollection: function(t, e) {
var n = e || null,
r = new O({
el: t.get("el"),
model: t,
config: this.config,
parentM: this.parentM
}).render().el;
return n ? n.appendChild(r) : this.$el.append(r), r
},
render: function() {
var t = document.createDocumentFragment();
return this.$el.empty(), this.collection.each(function(e) {
this.addToCollection(e, t)
}, this), this.$el.append(t), this.$el.attr("class", Object(y.result)(this, "className")), this
}
});
function S(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
var k = f.a.View.extend({
initialize: function(t) {
var e = t.config || {},
n = this.model;
this.config = e, this.pfx = e.stylePrefix || "", this.ppfx = e.pStylePrefix || "", this.buttons = n.get("buttons"), this.className = this.pfx + "panel", this.id = this.pfx + n.get("id"), this.listenTo(n, "change:appendContent", this.appendContent), this.listenTo(n, "change:content", this.updateContent), this.listenTo(n, "change:visible", this.toggleVisible), n.view = this
},
appendContent: function() {
this.$el.append(this.model.get("appendContent"))
},
updateContent: function() {
this.$el.html(this.model.get("content"))
},
toggleVisible: function() {
this.model.get("visible") ? this.$el.removeClass("".concat(this.ppfx, "hidden")) : this.$el.addClass("".concat(this.ppfx, "hidden"))
},
attributes: function() {
return this.model.get("attributes")
},
initResize: function() {
var t = this.config.em,
e = t ? t.get("Editor") : "",
n = this.model.get("resizable");
if (e && n) {
var r, i, o, a = !0 === n ? [1, 1, 1, 1] : n,
s = a.length,
l = 0;
2 == s ? (r = a[0], o = a[0], i = a[1], l = a[1]) : 4 == s && (r = a[0], i = a[1], o = a[2], l = a[3]);
var c = e.Utils.Resizer.init(function(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? S(Object(n), !0).forEach(function(e) {
b()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : S(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}({
tc: r,
cr: i,
bc: o,
cl: l,
tl: 0,
tr: 0,
bl: 0,
br: 0,
appendTo: this.el,
silentFrames: 1,
avoidContainerUpdate: 1,
prefix: e.getConfig().stylePrefix,
onEnd: function() {
t && t.trigger("change:canvasOffset")
},
posFetcher: function(t, e) {
var n = e.target,
r = t.style,
i = c.getConfig(),
o = i.keyWidth,
a = i.keyHeight,
s = t.getBoundingClientRect(),
l = "container" == n,
u = r[o],
d = r[a];
return {
left: 0,
top: 0,
width: u && !l ? parseFloat(u) : s.width,
height: d && !l ? parseFloat(d) : s.height
}
}
}, n));
c.blur = function() {}, c.focus(this.el)
}
},
render: function() {
var t = this.$el,
e = this.ppfx,
n = "".concat(this.className, " ").concat(this.id, " ").concat(e, "one-bg ").concat(e, "two-color");
if (t.addClass(n), this.buttons.length) {
var r = new C({
collection: this.buttons,
config: this.config
});
t.append(r.render().el)
}
return t.append(this.model.get("content")), this
}
}),
j = f.a.View.extend({
initialize: function(t) {
this.opt = t || {}, this.config = this.opt.config || {}, this.pfx = this.config.stylePrefix || "";
var e = this.collection;
this.listenTo(e, "add", this.addTo), this.listenTo(e, "reset", this.render), this.listenTo(e, "remove", this.onRemove), this.className = this.pfx + "panels"
},
onRemove: function(t) {
var e = t.view;
e && e.remove()
},
addTo: function(t) {
this.addToCollection(t)
},
addToCollection: function(t, e) {
var n = e || null,
r = this.config,
i = t.get("el"),
o = new k({
el: i,
model: t,
config: r
}),
a = o.render().el,
s = t.get("appendTo");
return i || (s ? document.querySelector(s).appendChild(a) : n ? n.appendChild(a) : this.$el.append(a)), o.initResize(), a
},
render: function() {
var t = this,
e = this.$el,
n = document.createDocumentFragment();
return e.empty(), this.collection.each(function(e) {
return t.addToCollection(e, n)
}), e.append(n), e.attr("class", this.className), this
}
});
e.default = function() {
var t, e, n = {};
return {
name: "Panels",
init: function(r) {
for (var i in n = r || {}, d) i in n || (n[i] = d[i]);
var o = n.pStylePrefix;
return o && (n.stylePrefix = o + n.stylePrefix), t = new v(n.defaults), e = new j({
collection: t,
config: n
}), this
},
getPanels: function() {
return t
},
getPanelsEl: function() {
return e.el
},
addPanel: function(e) {
return t.add(e)
},
removePanel: function(e) {
return t.remove(e)
},
getPanel: function(e) {
var n = t.where({
id: e
});
return n.length ? n[0] : null
},
addButton: function(t, e) {
var n = this.getPanel(t);
return n ? n.get("buttons").add(e) : null
},
removeButton: function(t, e) {
var n = this.getPanel(t);
return n && n.get("buttons").remove(e)
},
getButton: function(t, e) {
var n = this.getPanel(t);
if (n) {
var r = n.get("buttons").where({
id: e
});
return r.length ? r[0] : null
}
return null
},
render: function() {
return e.render().el
},
active: function() {
this.getPanels().each(function(t) {
t.get("buttons").each(function(t) {
t.get("active") && t.trigger("updateActive")
})
})
},
disableButtons: function() {
this.getPanels().each(function(t) {
t.get("buttons").each(function(t) {
t.get("disable") && t.trigger("change:disable")
})
})
},
destroy: function() {
t.reset(), t.stopListening(), e.remove(), [n, t, e].forEach(function(t) {
return {}
})
},
Panel: g
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(0),
i = {
stylePrefix: "cm-",
inlineCss: !1
},
o = n(2),
a = n.n(o),
s = n(1),
l = n.n(s);
function c(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
var u = l.a.Model.extend({
build: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = t.get("components");
return e.exportWrapper ? t.toHTML(function(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? c(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : c(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}({}, e.wrapperIsBody && {
tag: "body"
})) : this.buildModels(n)
},
buildModels: function(t) {
var e = "";
return t.each(function(t) {
e += t.toHTML()
}), e
}
}),
d = n(31),
h = l.a.Model.extend({
build: function(t) {
var e = t.toJSON();
return this.beforeEach(e), Object(r.each)(e, function(t, n) {
var r = e[n];
if (r instanceof l.a.Model) e[n] = this.build(r);
else if (r instanceof l.a.Collection) {
var i = r;
e[n] = [], i.length && i.each(function(t, r) {
e[n][r] = this.build(t)
}, this)
}
}, this), e
},
beforeEach: function(t) {
delete t.status
}
}),
f = l.a.Model.extend({
mapModel: function(t) {
var e = "",
n = t.get("script-export") || t.get("script"),
i = t.get("type"),
o = t.get("components"),
s = t.getId();
if (n) {
var l = t.get("attributes");
l = Object(r.extend)({}, l, {
id: s
}), t.set("attributes", l, {
silent: 1
});
var c = t.getScriptString(n),
u = t.get("script-props");
if (t.get("scriptUpdated") && !u) this.mapJs[i + "-" + s] = {
ids: [s],
code: c
};
else {
var d, h = this.mapJs[i];
if (u && (d = t.__getScriptProps()), h) h.ids.push(s), d && (h.props[s] = d);
else {
var f = {
ids: [s],
code: c
};
d && (f.props = a()({}, s, d)), this.mapJs[i] = f
}
}
}
return o.each(function(t) {
e += this.mapModel(t)
}, this), e
},
build: function(t) {
this.mapJs = {}, this.mapModel(t);
var e = "";
for (var n in this.mapJs) {
var r = this.mapJs[n];
if (r.props) e += "\n var props = ".concat(JSON.stringify(r.props), ";\n var ids = Object.keys(props).map(function(id) { return '#'+id }).join(',');\n var els = document.querySelectorAll(ids);\n for (var i = 0, len = els.length; i < len; i++) {\n var el = els[i];\n (").concat(r.code, ".bind(el))(props[el.id]);\n }");
else {
var i = "#" + r.ids.join(", #");
e += "\n var items = document.querySelectorAll('".concat(i, "');\n for (var i = 0, len = items.length; i < len; i++) {\n (function(){").concat(r.code, "}.bind(items[i]))();\n }")
}
}
return e
}
}),
p = n(13),
g = n.n(p);
function v(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
n(83), n(44), n(86);
var m = l.a.Model.extend({
defaults: {
input: "",
label: "",
codeName: "",
theme: "hopscotch",
readOnly: !0,
lineNumbers: !0
},
init: function(t) {
return Object(r.bindAll)(this, "onChange"), this.editor = g.a.fromTextArea(t, function(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? v(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : v(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}({
dragDrop: !1,
lineWrapping: !0,
mode: this.get("codeName")
}, this.attributes)), this.element = t, this.editor.on("change", this.onChange), this
},
onChange: function() {
this.trigger("update", this)
},
getEditor: function() {
return this.editor
},
getElement: function() {
return this.element
},
setElement: function(t) {
return this.element = t, this
},
refresh: function() {
return this.getEditor().refresh(), this
},
focus: function() {
return this.getEditor().focus(), this
},
getContent: function() {
var t = this.getEditor();
return t && t.getValue()
},
setContent: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = this.editor;
r && (r.setValue(t), r.autoFormatRange && (g.a.commands.selectAll(r), r.autoFormatRange(r.getCursor(!0), r.getCursor(!1)), g.a.commands.goDocStart(r)), !n.noRefresh && setTimeout(function() {
return e.refresh()
}))
}
}),
b = l.a.View.extend({
template: Object(r.template)('\n <div class="<%= pfx %>editor" id="<%= pfx %><%= codeName %>">\n \t<div id="<%= pfx %>title"><%= label %></div>\n \t<div id="<%= pfx %>code"></div>\n </div>'),
initialize: function(t) {
this.config = t.config || {}, this.pfx = this.config.stylePrefix
},
render: function() {
var t = this.model.toJSON();
return t.pfx = this.pfx, this.$el.html(this.template(t)), this.$el.attr("class", this.pfx + "editor-c"), this.$el.find("#" + this.pfx + "code").append(this.model.get("input")), this
}
});
e.default = function() {
var t = {},
e = {},
n = {},
o = {},
a = {};
return {
getConfig: function() {
return t
},
config: t,
EditorView: b,
name: "CodeManager",
init: function(e) {
for (var r in t = e || {}, i) r in t || (t[r] = i[r]);
var o = t.pStylePrefix;
return o && (t.stylePrefix = o + t.stylePrefix), n.html = new u, n.css = new d.a, n.json = new h, n.js = new f, a.CodeMirror = new m, this.loadDefaultGenerators().loadDefaultViewers(), this
},
addGenerator: function(t, n) {
return e[t] = n, this
},
getGenerator: function(t) {
return e[t] || null
},
getGenerators: function() {
return e
},
addViewer: function(t, e) {
return o[t] = e, this
},
getViewer: function(t) {
return o[t] || null
},
getViewers: function() {
return o
},
createViewer: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = Object(r.isUndefined)(t.type) ? "CodeMirror" : t.type,
n = this.getViewer(e) && this.getViewer(e).clone(),
i = document.createElement("div"),
o = document.createElement("textarea");
return i.appendChild(o), n.set(t), n.init(o), n.setElement(i), n
},
updateViewer: function(t, e) {
t.setContent(e)
},
getCode: function(e, n) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
r.em = t.em;
var i = this.getGenerator(n);
return i ? i.build(e, r) : ""
},
loadDefaultGenerators: function() {
for (var t in n) this.addGenerator(t, n[t]);
return this
},
loadDefaultViewers: function() {
for (var t in a) this.addViewer(t, a[t]);
return this
},
destroy: function() {
[t, e, n, o, a].forEach(function(t) {
return {}
})
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(0),
a = {
stylePrefix: "sm-",
sectors: [],
appendTo: "",
hideNotStylable: !0,
highlightChanged: !0,
highlightComputed: !0,
showComputed: !0,
clearProperties: 0,
avoidComputed: ["width", "height"]
},
s = n(1),
l = n.n(s),
c = n(24),
u = function() {
return {
build: function(t) {
var e = [];
"string" == typeof t && (t = [t]);
for (var n = 0, r = t.length; n < r; n++) {
var i = {},
o = t[n];
switch (i.property = o, o) {
case "border-radius-c":
i.property = "border-radius"
}
switch (o) {
case "top":
case "right":
case "bottom":
case "left":
case "margin-top":
case "margin-right":
case "margin-bottom":
case "margin-left":
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "width":
case "max-width":
case "min-width":
case "height":
case "max-height":
case "min-height":
case "flex-basis":
i.fixedValues = ["initial", "inherit", "auto"];
break;
case "font-size":
i.fixedValues = ["medium", "xx-small", "x-small", "small", "large", "x-large", "xx-large", "smaller", "larger", "length", "initial", "inherit"];
break;
case "letter-spacing":
case "line-height":
i.fixedValues = ["normal", "initial", "inherit"]
}
switch (o) {
case "float":
case "position":
case "text-align":
i.type = "radio";
break;
case "display":
case "flex-direction":
case "flex-wrap":
case "justify-content":
case "align-items":
case "align-content":
case "align-self":
case "font-family":
case "font-weight":
case "border-style":
case "box-shadow-type":
case "background-repeat":
case "background-position":
case "background-attachment":
case "background-size":
case "transition-property":
case "transition-timing-function":
case "cursor":
case "overflow":
case "overflow-x":
case "overflow-y":
i.type = "select";
break;
case "top":
case "right":
case "bottom":
case "left":
case "margin-top":
case "margin-right":
case "margin-bottom":
case "margin-left":
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "min-height":
case "min-width":
case "max-height":
case "max-width":
case "width":
case "height":
case "font-size":
case "letter-spacing":
case "line-height":
case "text-shadow-h":
case "text-shadow-v":
case "text-shadow-blur":
case "border-radius-c":
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
case "border-width":
case "box-shadow-h":
case "box-shadow-v":
case "box-shadow-blur":
case "box-shadow-spread":
case "transition-duration":
case "perspective":
case "transform-rotate-x":
case "transform-rotate-y":
case "transform-rotate-z":
case "transform-scale-x":
case "transform-scale-y":
case "transform-scale-z":
case "order":
case "flex-grow":
case "flex-shrink":
case "flex-basis":
i.type = "integer";
break;
case "margin":
case "padding":
case "border-radius":
case "border":
case "transform":
i.type = "composite";
break;
case "color":
case "text-shadow-color":
case "background-color":
case "border-color":
case "box-shadow-color":
i.type = "color";
break;
case "text-shadow":
case "box-shadow":
case "background":
case "transition":
i.type = "stack";
break;
case "background-image":
i.type = "file"
}
switch (o) {
case "float":
case "background-color":
case "text-shadow":
i.defaults = "none";
break;
case "display":
i.defaults = "block";
break;
case "flex-direction":
i.defaults = "row";
break;
case "flex-wrap":
i.defaults = "nowrap";
break;
case "justify-content":
i.defaults = "flex-start";
break;
case "align-items":
case "align-content":
i.defaults = "stretch";
break;
case "align-self":
i.defaults = "auto";
break;
case "position":
i.defaults = "static";
break;
case "margin-top":
case "margin-right":
case "margin-bottom":
case "margin-left":
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "text-shadow-h":
case "text-shadow-v":
case "text-shadow-blur":
case "border-radius-c":
case "box-shadow-h":
case "box-shadow-v":
case "box-shadow-spread":
case "perspective":
case "transform-rotate-x":
case "transform-rotate-y":
case "transform-rotate-z":
case "order":
case "flex-grow":
i.defaults = 0;
break;
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
i.defaults = "0px";
break;
case "transform-scale-x":
case "transform-scale-y":
case "transform-scale-z":
case "flex-shrink":
i.defaults = 1;
break;
case "box-shadow-blur":
i.defaults = "5px";
break;
case "top":
case "right":
case "bottom":
case "left":
case "min-height":
case "min-width":
case "max-height":
case "max-width":
case "width":
case "height":
case "background-size":
case "cursor":
case "flex-basis":
i.defaults = "auto";
break;
case "font-family":
i.defaults = "Arial, Helvetica, sans-serif";
break;
case "font-size":
case "border-width":
i.defaults = "medium";
break;
case "font-weight":
i.defaults = "400";
break;
case "letter-spacing":
case "line-height":
i.defaults = "normal";
break;
case "color":
case "text-shadow-color":
case "border-color":
case "box-shadow-color":
i.defaults = "black";
break;
case "text-align":
i.defaults = "left";
break;
case "border-style":
i.defaults = "solid";
break;
case "box-shadow-type":
i.defaults = "";
break;
case "background-repeat":
i.defaults = "repeat";
break;
case "background-position":
i.defaults = "left top";
break;
case "background-attachment":
i.defaults = "scroll";
break;
case "transition-property":
i.defaults = "width";
break;
case "transition-duration":
i.defaults = "2";
break;
case "transition-timing-function":
i.defaults = "ease";
break;
case "overflow":
case "overflow-x":
case "overflow-y":
i.defaults = "visible"
}
switch (o) {
case "flex-direction":
case "flex-wrap":
case "justify-content":
case "align-items":
case "align-content":
i.requires = {
display: ["flex"]
};
break;
case "order":
case "flex-basis":
case "flex-grow":
case "flex-shrink":
case "align-self":
i.requiresParent = {
display: ["flex"]
}
}
switch (o) {
case "top":
case "bottom":
case "margin-top":
case "margin-bottom":
case "padding-top":
case "padding-bottom":
case "min-height":
case "max-height":
case "height":
i.units = ["px", "%", "vh"];
break;
case "right":
case "left":
case "margin-right":
case "margin-left":
case "padding-right":
case "padding-left":
case "min-width":
case "max-width":
case "width":
i.units = ["px", "%", "vw"];
break;
case "flex-basis":
i.units = ["px", "%", "vw", "vh"];
break;
case "text-shadow-v":
case "text-shadow-h":
case "text-shadow-blur":
case "border-radius-c":
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
case "box-shadow-h":
case "box-shadow-v":
i.units = ["px", "%"];
break;
case "font-size":
case "letter-spacing":
case "line-height":
i.units = ["px", "em", "rem", "%"];
break;
case "border-width":
i.units = ["px", "em"];
break;
case "box-shadow-blur":
case "box-shadow-spread":
case "perspective":
i.units = ["px"];
break;
case "transition-duration":
i.units = ["s"];
break;
case "transform-rotate-x":
case "transform-rotate-y":
case "transform-rotate-z":
i.units = ["deg"]
}
switch (o) {
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "min-height":
case "min-width":
case "max-height":
case "max-width":
case "width":
case "height":
case "font-size":
case "text-shadow-blur":
case "border-radius-c":
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
case "border-width":
case "box-shadow-blur":
case "transition-duration":
case "perspective":
case "flex-basis":
i.min = 0
}
switch (o) {
case "text-shadow":
case "box-shadow":
case "background":
i.preview = !0
}
switch (o) {
case "background":
i.detached = !0
}
switch (o) {
case "transform-rotate-x":
i.functionName = "rotateX";
break;
case "transform-rotate-y":
i.functionName = "rotateY";
break;
case "transform-rotate-z":
i.functionName = "rotateZ";
break;
case "transform-scale-x":
i.functionName = "scaleX";
break;
case "transform-scale-y":
i.functionName = "scaleY";
break;
case "transform-scale-z":
i.functionName = "scaleZ";
break;
case "background-image":
i.functionName = "url"
}
switch (o) {
case "float":
i.list = [{
value: "none"
}, {
value: "left"
}, {
value: "right"
}];
break;
case "display":
i.list = [{
value: "block"
}, {
value: "inline"
}, {
value: "inline-block"
}, {
value: "flex"
}, {
value: "none"
}];
break;
case "flex-direction":
i.list = [{
value: "row"
}, {
value: "row-reverse"
}, {
value: "column"
}, {
value: "column-reverse"
}];
break;
case "flex-wrap":
i.list = [{
value: "nowrap"
}, {
value: "wrap"
}, {
value: "wrap-reverse"
}];
break;
case "justify-content":
i.list = [{
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "space-between"
}, {
value: "space-around"
}, {
value: "space-evenly"
}];
break;
case "align-items":
i.list = [{
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "baseline"
}, {
value: "stretch"
}];
break;
case "align-content":
i.list = [{
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "space-between"
}, {
value: "space-around"
}, {
value: "stretch"
}];
break;
case "align-self":
i.list = [{
value: "auto"
}, {
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "baseline"
}, {
value: "stretch"
}];
break;
case "position":
i.list = [{
value: "static"
}, {
value: "relative"
}, {
value: "absolute"
}, {
value: "fixed"
}];
break;
case "font-family":
var a = ", sans-serif",
s = ["Arial, Helvetica" + a, "Arial Black, Gadget" + a, "Brush Script MT" + a, "Comic Sans MS, cursive" + a, "Courier New, Courier, monospace", "Georgia, serif", "Helvetica" + a, "Impact, Charcoal" + a, "Lucida Sans Unicode, Lucida Grande" + a, "Tahoma, Geneva" + a, "Times New Roman, Times, serif", "Trebuchet MS, Helvetica" + a, "Verdana, Geneva" + a];
i.list = [];
for (var l = 0, c = s.length; l < c; l++) {
var u = {};
u.value = s[l], u.name = s[l].split(",")[0], i.list.push(u)
}
break;
case "font-weight":
i.list = [{
value: "100",
name: "Thin"
}, {
value: "200",
name: "Extra-Light"
}, {
value: "300",
name: "Light"
}, {
value: "400",
name: "Normal"
}, {
value: "500",
name: "Medium"
}, {
value: "600",
name: "Semi-Bold"
}, {
value: "700",
name: "Bold"
}, {
value: "800",
name: "Extra-Bold"
}, {
value: "900",
name: "Ultra-Bold"
}];
break;
case "text-align":
i.list = [{
value: "left"
}, {
value: "center"
}, {
value: "right"
}, {
value: "justify"
}];
break;
case "border-style":
i.list = [{
value: "none"
}, {
value: "solid"
}, {
value: "dotted"
}, {
value: "dashed"
}, {
value: "double"
}, {
value: "groove"
}, {
value: "ridge"
}, {
value: "inset"
}, {
value: "outset"
}];
break;
case "box-shadow-type":
i.list = [{
value: "",
name: "Outside"
}, {
value: "inset",
name: "Inside"
}];
break;
case "background-repeat":
i.list = [{
value: "repeat"
}, {
value: "repeat-x"
}, {
value: "repeat-y"
}, {
value: "no-repeat"
}];
break;
case "background-position":
i.list = [{
value: "left top"
}, {
value: "left center"
}, {
value: "left bottom"
}, {
value: "right top"
}, {
value: "right center"
}, {
value: "right bottom"
}, {
value: "center top"
}, {
value: "center center"
}, {
value: "center bottom"
}];
break;
case "background-attachment":
i.list = [{
value: "scroll"
}, {
value: "fixed"
}, {
value: "local"
}];
break;
case "background-size":
i.list = [{
value: "auto"
}, {
value: "cover"
}, {
value: "contain"
}];
break;
case "transition-property":
i.list = [{
value: "all"
}, {
value: "width"
}, {
value: "height"
}, {
value: "background-color"
}, {
value: "transform"
}, {
value: "box-shadow"
}, {
value: "opacity"
}];
break;
case "transition-timing-function":
i.list = [{
value: "linear"
}, {
value: "ease"
}, {
value: "ease-in"
}, {
value: "ease-out"
}, {
value: "ease-in-out"
}];
break;
case "cursor":
i.list = [{
value: "auto"
}, {
value: "pointer"
}, {
value: "copy"
}, {
value: "crosshair"
}, {
value: "grab"
}, {
value: "grabbing"
}, {
value: "help"
}, {
value: "move"
}, {
value: "text"
}];
break;
case "overflow":
case "overflow-x":
case "overflow-y":
i.list = [{
value: "visible"
}, {
value: "hidden"
}, {
value: "scroll"
}, {
value: "auto"
}]
}
switch (o) {
case "margin":
i.properties = this.build(["margin-top", "margin-right", "margin-bottom", "margin-left"]);
break;
case "padding":
i.properties = this.build(["padding-top", "padding-right", "padding-bottom", "padding-left"]);
break;
case "text-shadow":
i.properties = this.build(["text-shadow-h", "text-shadow-v", "text-shadow-blur", "text-shadow-color"]);
break;
case "border":
i.properties = this.build(["border-width", "border-style", "border-color"]);
break;
case "border-radius":
i.properties = this.build(["border-top-left-radius", "border-top-right-radius", "border-bottom-right-radius", "border-bottom-left-radius"]);
break;
case "box-shadow":
i.properties = this.build(["box-shadow-h", "box-shadow-v", "box-shadow-blur", "box-shadow-spread", "box-shadow-color", "box-shadow-type"]);
break;
case "background":
i.properties = this.build(["background-image", "background-repeat", "background-position", "background-attachment", "background-size"]);
break;
case "transition":
i.properties = this.build(["transition-property", "transition-duration", "transition-timing-function"]);
break;
case "transform":
i.properties = this.build(["transform-rotate-x", "transform-rotate-y", "transform-rotate-z", "transform-scale-x", "transform-scale-y", "transform-scale-z"])
}
e.push(i)
}
return e
}
}
},
d = l.a.Model.extend({
defaults: {
id: "",
name: "",
open: !0,
buildProps: "",
extendBuilded: 1,
properties: []
},
initialize: function(t) {
var e, n = t || {},
r = this.buildProperties(n.buildProps),
i = this.get("name") || "";
!this.get("id") && this.set("id", i.replace(/ /g, "_").toLowerCase()), e = r ? this.extendProperties(r) : this.get("properties");
var o = new c.default(e);
o.sector = this, this.set("properties", o)
},
extendProperties: function(t, e, n) {
for (var r = t.length, i = e || this.get("properties"), a = this.get("extendBuilded"), s = [], l = 0, c = i.length; l < c; l++) {
for (var u = i[l], d = 0, h = 0; h < r; h++) {
var f = t[h];
if (u.property != f.property && u.id != f.property);
else {
var p = u.properties;
p && p.length && (u.properties = this.extendProperties(f.properties || [], p, 1)), t[h] = a ? Object(o.extend)(f, u) : u, s[h] = t[h], d = 1
}
}
d || (t.push(u), s.push(u))
}
return n ? s.filter(function(t) {
return t
}) : t
},
buildProperties: function(t) {
var e = t || [];
if (e.length) return this.propFactory || (this.propFactory = new u), this.propFactory.build(e)
}
}),
h = l.a.Collection.extend({
model: d,
initialize: function() {
this.listenTo(this, "reset", this.onReset)
},
onReset: function(t) {
((arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).previousModels || []).forEach(function(t) {
return t.get("properties").reset()
})
}
}),
f = n(3),
p = n(9),
g = n(19),
v = l.a.View.extend({
template: Object(o.template)('\n <div class="<%= pfx %>title" data-sector-title>\n <i id="<%= pfx %>caret" class="fa"></i>\n <%= label %>\n </div>'),
events: {
"click [data-sector-title]": "toggle"
},
initialize: function(t) {
this.config = t.config || {}, this.em = this.config.em, this.pfx = this.config.stylePrefix || "", this.target = t.target || {}, this.propTarget = t.propTarget || {}, this.caretR = "fa-caret-right", this.caretD = "fa-caret-down";
var e = this.model;
this.listenTo(e, "change:open", this.updateOpen), this.listenTo(e, "updateVisibility", this.updateVisibility), this.listenTo(e, "destroy remove", this.remove)
},
updateVisibility: function() {
var t;
this.model.get("properties").each(function(e) {
e.get("visible") && (t = 1)
}), this.el.style.display = t ? "" : "none"
},
updateOpen: function() {
this.model.get("open") ? this.show() : this.hide()
},
show: function() {
this.$el.addClass(this.pfx + "open"), this.getPropertiesEl().style.display = "", this.$caret.removeClass(this.caretR).addClass(this.caretD)
},
hide: function() {
this.$el.removeClass(this.pfx + "open"), this.getPropertiesEl().style.display = "none", this.$caret.removeClass(this.caretD).addClass(this.caretR)
},
getPropertiesEl: function() {
return this.$el.find(".".concat(this.pfx, "properties")).get(0)
},
toggle: function(t) {
var e = this.model.get("open") ? 0 : 1;
this.model.set("open", e)
},
render: function() {
var t = this.pfx,
e = this.model,
n = this.em,
r = this.$el,
i = e.attributes,
o = i.id,
a = i.name,
s = n && n.t("styleManager.sectors.".concat(o)) || a;
return r.html(this.template({
pfx: t,
label: s
})), this.$caret = r.find("#".concat(t, "caret")), this.renderProperties(), r.attr("class", "".concat(t, "sector ").concat(t, "sector__").concat(o, " no-select")), this.updateOpen(), this
},
renderProperties: function() {
var t = this.model.get("properties");
if (t) {
var e = new g.default({
collection: t,
target: this.target,
propTarget: this.propTarget,
config: this.config
});
this.$el.append(e.render().el)
}
}
});
function m(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function b(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? m(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : m(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var y = "hc-state",
w = l.a.View.extend({
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.config || {};
this.pfx = e.stylePrefix || "", this.ppfx = e.pStylePrefix || "", this.target = t.target || {}, this.config = e;
var n = {};
Object(o.extend)(n, l.a.Events);
var r = document.body,
i = document.createElement("el-".concat((new Date).getTime()));
r.appendChild(i), n.computedDefault = b({}, window.getComputedStyle(i)), r.removeChild(i), this.propTarget = n;
var a = this.collection;
this.listenTo(a, "add", this.addTo), this.listenTo(a, "reset", this.render), this.listenTo(this.target, "component:toggled component:update:classes change:state change:device frame:resized", this.targetUpdated)
},
remove: function() {
var t = this;
l.a.View.prototype.remove.apply(this, arguments), ["target", "config", "propTarget"].forEach(function(e) {
return t[e] = {}
})
},
addTo: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
this.addToCollection(t, null, n)
},
toggleStateCls: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
e = arguments.length > 1 ? arguments[1] : void 0;
t.forEach(function(t) {
var n = t.getEl();
n && n.classList && n.classList[e ? "add" : "remove"](y)
})
},
targetUpdated: function(t) {
var e = this.target,
n = this.propTarget,
r = e.getSelectedAll(),
i = e.getSelected(),
o = t && t.toHTML ? t : i;
if (o && this.toggleStateCls([o]), i) {
var a = e.get("Config").devicePreviewMode ? "" : e.get("state"),
s = e.get("SelectorManager").getConfig().componentFirst,
l = i.getEl();
if (n.helper = null, n.targets = null, l && Object(f.q)(l)) {
var c = a ? ":".concat(a) : null;
n.computed = window.getComputedStyle(l, c)
}
var u = e.get("StyleManager");
i = u.getModelToStyle(i), a && (function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
r = e.get("CssComposer"),
i = r.getAll(),
o = r.getClassRule(y);
o ? (i.remove(o), i.add(o)) : o = r.setClassRule(y), o.set("important", 1), o.setStyle(t), n.helper = o
}(i.getStyle()), this.toggleStateCls(r, 1)), n.model = i, s && (n.targets = r.map(function(t) {
return u.getModelToStyle(t)
}).filter(Boolean)), n.trigger("update")
}
},
setTarget: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.target,
r = Object(o.isArray)(t) ? t : [t],
i = e.targetIsClass,
a = e.stylable,
s = [];
r.forEach(function(t) {
var e = t;
if (Object(o.isString)(t)) {
var r, l = n.get("CssComposer").getAll();
i && (r = l.filter(function(e) {
return e.get("selectors").getFullString() === t
})[0]), r || (r = l.filter(function(e) {
return e.get("selectorsAdd") === t
})[0]), r || (r = l.add({
selectors: [],
selectorsAdd: t
})), a && r.set({
stylable: a
}), e = r
}
s.push(e)
});
var l = this.propTarget;
return l.targets = s, l.trigger("update", {
targets: s
}), s
},
addToCollection: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = this.pfx,
i = this.target,
o = this.propTarget,
a = this.config,
s = this.el,
l = e || s,
c = new v({
model: t,
id: "".concat(r).concat(t.get("id")),
name: t.get("name"),
properties: t.get("properties"),
target: i,
propTarget: o,
config: a
}).render().el;
return Object(p.b)(l, c, n.at), c
},
render: function() {
var t = this,
e = document.createDocumentFragment(),
n = this.$el,
r = this.pfx,
i = this.ppfx;
return n.empty(), this.collection.each(function(n) {
return t.addToCollection(n, e)
}), n.append(e), n.addClass("".concat(r, "sectors ").concat(i, "one-bg ").concat(i, "two-color")), this
}
});
function x(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function O(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? x(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : x(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n, r = {};
return {
PropertyFactory: {
build: function(t) {
var e = [];
"string" == typeof t && (t = [t]);
for (var n = 0, r = t.length; n < r; n++) {
var i = {},
o = t[n];
switch (i.property = o, o) {
case "border-radius-c":
i.property = "border-radius"
}
switch (o) {
case "top":
case "right":
case "bottom":
case "left":
case "margin-top":
case "margin-right":
case "margin-bottom":
case "margin-left":
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "width":
case "max-width":
case "min-width":
case "height":
case "max-height":
case "min-height":
case "flex-basis":
i.fixedValues = ["initial", "inherit", "auto"];
break;
case "font-size":
i.fixedValues = ["medium", "xx-small", "x-small", "small", "large", "x-large", "xx-large", "smaller", "larger", "length", "initial", "inherit"];
break;
case "letter-spacing":
case "line-height":
i.fixedValues = ["normal", "initial", "inherit"]
}
switch (o) {
case "float":
case "position":
case "text-align":
i.type = "radio";
break;
case "display":
case "flex-direction":
case "flex-wrap":
case "justify-content":
case "align-items":
case "align-content":
case "align-self":
case "font-family":
case "font-weight":
case "border-style":
case "box-shadow-type":
case "background-repeat":
case "background-position":
case "background-attachment":
case "background-size":
case "transition-property":
case "transition-timing-function":
case "cursor":
case "overflow":
case "overflow-x":
case "overflow-y":
i.type = "select";
break;
case "top":
case "right":
case "bottom":
case "left":
case "margin-top":
case "margin-right":
case "margin-bottom":
case "margin-left":
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "min-height":
case "min-width":
case "max-height":
case "max-width":
case "width":
case "height":
case "font-size":
case "letter-spacing":
case "line-height":
case "text-shadow-h":
case "text-shadow-v":
case "text-shadow-blur":
case "border-radius-c":
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
case "border-width":
case "box-shadow-h":
case "box-shadow-v":
case "box-shadow-blur":
case "box-shadow-spread":
case "transition-duration":
case "perspective":
case "transform-rotate-x":
case "transform-rotate-y":
case "transform-rotate-z":
case "transform-scale-x":
case "transform-scale-y":
case "transform-scale-z":
case "order":
case "flex-grow":
case "flex-shrink":
case "flex-basis":
i.type = "integer";
break;
case "margin":
case "padding":
case "border-radius":
case "border":
case "transform":
i.type = "composite";
break;
case "color":
case "text-shadow-color":
case "background-color":
case "border-color":
case "box-shadow-color":
i.type = "color";
break;
case "text-shadow":
case "box-shadow":
case "background":
case "transition":
i.type = "stack";
break;
case "background-image":
i.type = "file"
}
switch (o) {
case "float":
case "background-color":
case "text-shadow":
i.defaults = "none";
break;
case "display":
i.defaults = "block";
break;
case "flex-direction":
i.defaults = "row";
break;
case "flex-wrap":
i.defaults = "nowrap";
break;
case "justify-content":
i.defaults = "flex-start";
break;
case "align-items":
case "align-content":
i.defaults = "stretch";
break;
case "align-self":
i.defaults = "auto";
break;
case "position":
i.defaults = "static";
break;
case "margin-top":
case "margin-right":
case "margin-bottom":
case "margin-left":
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "text-shadow-h":
case "text-shadow-v":
case "text-shadow-blur":
case "border-radius-c":
case "box-shadow-h":
case "box-shadow-v":
case "box-shadow-spread":
case "perspective":
case "transform-rotate-x":
case "transform-rotate-y":
case "transform-rotate-z":
case "order":
case "flex-grow":
i.defaults = 0;
break;
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
i.defaults = "0px";
break;
case "transform-scale-x":
case "transform-scale-y":
case "transform-scale-z":
case "flex-shrink":
i.defaults = 1;
break;
case "box-shadow-blur":
i.defaults = "5px";
break;
case "top":
case "right":
case "bottom":
case "left":
case "min-height":
case "min-width":
case "max-height":
case "max-width":
case "width":
case "height":
case "background-size":
case "cursor":
case "flex-basis":
i.defaults = "auto";
break;
case "font-family":
i.defaults = "Arial, Helvetica, sans-serif";
break;
case "font-size":
case "border-width":
i.defaults = "medium";
break;
case "font-weight":
i.defaults = "400";
break;
case "letter-spacing":
case "line-height":
i.defaults = "normal";
break;
case "color":
case "text-shadow-color":
case "border-color":
case "box-shadow-color":
i.defaults = "black";
break;
case "text-align":
i.defaults = "left";
break;
case "border-style":
i.defaults = "solid";
break;
case "box-shadow-type":
i.defaults = "";
break;
case "background-repeat":
i.defaults = "repeat";
break;
case "background-position":
i.defaults = "left top";
break;
case "background-attachment":
i.defaults = "scroll";
break;
case "transition-property":
i.defaults = "width";
break;
case "transition-duration":
i.defaults = "2";
break;
case "transition-timing-function":
i.defaults = "ease";
break;
case "overflow":
case "overflow-x":
case "overflow-y":
i.defaults = "visible"
}
switch (o) {
case "flex-direction":
case "flex-wrap":
case "justify-content":
case "align-items":
case "align-content":
i.requires = {
display: ["flex"]
};
break;
case "order":
case "flex-basis":
case "flex-grow":
case "flex-shrink":
case "align-self":
i.requiresParent = {
display: ["flex"]
}
}
switch (o) {
case "top":
case "bottom":
case "margin-top":
case "margin-bottom":
case "padding-top":
case "padding-bottom":
case "min-height":
case "max-height":
case "height":
i.units = ["px", "%", "vh"];
break;
case "right":
case "left":
case "margin-right":
case "margin-left":
case "padding-right":
case "padding-left":
case "min-width":
case "max-width":
case "width":
i.units = ["px", "%", "vw"];
break;
case "flex-basis":
i.units = ["px", "%", "vw", "vh"];
break;
case "text-shadow-v":
case "text-shadow-h":
case "text-shadow-blur":
case "border-radius-c":
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
case "box-shadow-h":
case "box-shadow-v":
i.units = ["px", "%"];
break;
case "font-size":
case "letter-spacing":
case "line-height":
i.units = ["px", "em", "rem", "%"];
break;
case "border-width":
i.units = ["px", "em"];
break;
case "box-shadow-blur":
case "box-shadow-spread":
case "perspective":
i.units = ["px"];
break;
case "transition-duration":
i.units = ["s"];
break;
case "transform-rotate-x":
case "transform-rotate-y":
case "transform-rotate-z":
i.units = ["deg"]
}
switch (o) {
case "padding-top":
case "padding-right":
case "padding-bottom":
case "padding-left":
case "min-height":
case "min-width":
case "max-height":
case "max-width":
case "width":
case "height":
case "font-size":
case "text-shadow-blur":
case "border-radius-c":
case "border-top-left-radius":
case "border-top-right-radius":
case "border-bottom-left-radius":
case "border-bottom-right-radius":
case "border-width":
case "box-shadow-blur":
case "transition-duration":
case "perspective":
case "flex-basis":
i.min = 0
}
switch (o) {
case "text-shadow":
case "box-shadow":
case "background":
i.preview = !0
}
switch (o) {
case "background":
i.detached = !0
}
switch (o) {
case "transform-rotate-x":
i.functionName = "rotateX";
break;
case "transform-rotate-y":
i.functionName = "rotateY";
break;
case "transform-rotate-z":
i.functionName = "rotateZ";
break;
case "transform-scale-x":
i.functionName = "scaleX";
break;
case "transform-scale-y":
i.functionName = "scaleY";
break;
case "transform-scale-z":
i.functionName = "scaleZ";
break;
case "background-image":
i.functionName = "url"
}
switch (o) {
case "float":
i.list = [{
value: "none"
}, {
value: "left"
}, {
value: "right"
}];
break;
case "display":
i.list = [{
value: "block"
}, {
value: "inline"
}, {
value: "inline-block"
}, {
value: "flex"
}, {
value: "none"
}];
break;
case "flex-direction":
i.list = [{
value: "row"
}, {
value: "row-reverse"
}, {
value: "column"
}, {
value: "column-reverse"
}];
break;
case "flex-wrap":
i.list = [{
value: "nowrap"
}, {
value: "wrap"
}, {
value: "wrap-reverse"
}];
break;
case "justify-content":
i.list = [{
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "space-between"
}, {
value: "space-around"
}, {
value: "space-evenly"
}];
break;
case "align-items":
i.list = [{
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "baseline"
}, {
value: "stretch"
}];
break;
case "align-content":
i.list = [{
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "space-between"
}, {
value: "space-around"
}, {
value: "stretch"
}];
break;
case "align-self":
i.list = [{
value: "auto"
}, {
value: "flex-start"
}, {
value: "flex-end"
}, {
value: "center"
}, {
value: "baseline"
}, {
value: "stretch"
}];
break;
case "position":
i.list = [{
value: "static"
}, {
value: "relative"
}, {
value: "absolute"
}, {
value: "fixed"
}];
break;
case "font-family":
var a = ", sans-serif",
s = ["Arial, Helvetica" + a, "Arial Black, Gadget" + a, "Brush Script MT" + a, "Comic Sans MS, cursive" + a, "Courier New, Courier, monospace", "Georgia, serif", "Helvetica" + a, "Impact, Charcoal" + a, "Lucida Sans Unicode, Lucida Grande" + a, "Tahoma, Geneva" + a, "Times New Roman, Times, serif", "Trebuchet MS, Helvetica" + a, "Verdana, Geneva" + a];
i.list = [];
for (var l = 0, c = s.length; l < c; l++) {
var u = {};
u.value = s[l], u.name = s[l].split(",")[0], i.list.push(u)
}
break;
case "font-weight":
i.list = [{
value: "100",
name: "Thin"
}, {
value: "200",
name: "Extra-Light"
}, {
value: "300",
name: "Light"
}, {
value: "400",
name: "Normal"
}, {
value: "500",
name: "Medium"
}, {
value: "600",
name: "Semi-Bold"
}, {
value: "700",
name: "Bold"
}, {
value: "800",
name: "Extra-Bold"
}, {
value: "900",
name: "Ultra-Bold"
}];
break;
case "text-align":
i.list = [{
value: "left"
}, {
value: "center"
}, {
value: "right"
}, {
value: "justify"
}];
break;
case "border-style":
i.list = [{
value: "none"
}, {
value: "solid"
}, {
value: "dotted"
}, {
value: "dashed"
}, {
value: "double"
}, {
value: "groove"
}, {
value: "ridge"
}, {
value: "inset"
}, {
value: "outset"
}];
break;
case "box-shadow-type":
i.list = [{
value: "",
name: "Outside"
}, {
value: "inset",
name: "Inside"
}];
break;
case "background-repeat":
i.list = [{
value: "repeat"
}, {
value: "repeat-x"
}, {
value: "repeat-y"
}, {
value: "no-repeat"
}];
break;
case "background-position":
i.list = [{
value: "left top"
}, {
value: "left center"
}, {
value: "left bottom"
}, {
value: "right top"
}, {
value: "right center"
}, {
value: "right bottom"
}, {
value: "center top"
}, {
value: "center center"
}, {
value: "center bottom"
}];
break;
case "background-attachment":
i.list = [{
value: "scroll"
}, {
value: "fixed"
}, {
value: "local"
}];
break;
case "background-size":
i.list = [{
value: "auto"
}, {
value: "cover"
}, {
value: "contain"
}];
break;
case "transition-property":
i.list = [{
value: "all"
}, {
value: "width"
}, {
value: "height"
}, {
value: "background-color"
}, {
value: "transform"
}, {
value: "box-shadow"
}, {
value: "opacity"
}];
break;
case "transition-timing-function":
i.list = [{
value: "linear"
}, {
value: "ease"
}, {
value: "ease-in"
}, {
value: "ease-out"
}, {
value: "ease-in-out"
}];
break;
case "cursor":
i.list = [{
value: "auto"
}, {
value: "pointer"
}, {
value: "copy"
}, {
value: "crosshair"
}, {
value: "grab"
}, {
value: "grabbing"
}, {
value: "help"
}, {
value: "move"
}, {
value: "text"
}];
break;
case "overflow":
case "overflow-x":
case "overflow-y":
i.list = [{
value: "visible"
}, {
value: "hidden"
}, {
value: "scroll"
}, {
value: "auto"
}]
}
switch (o) {
case "margin":
i.properties = this.build(["margin-top", "margin-right", "margin-bottom", "margin-left"]);
break;
case "padding":
i.properties = this.build(["padding-top", "padding-right", "padding-bottom", "padding-left"]);
break;
case "text-shadow":
i.properties = this.build(["text-shadow-h", "text-shadow-v", "text-shadow-blur", "text-shadow-color"]);
break;
case "border":
i.properties = this.build(["border-width", "border-style", "border-color"]);
break;
case "border-radius":
i.properties = this.build(["border-top-left-radius", "border-top-right-radius", "border-bottom-right-radius", "border-bottom-left-radius"]);
break;
case "box-shadow":
i.properties = this.build(["box-shadow-h", "box-shadow-v", "box-shadow-blur", "box-shadow-spread", "box-shadow-color", "box-shadow-type"]);
break;
case "background":
i.properties = this.build(["background-image", "background-repeat", "background-position", "background-attachment", "background-size"]);
break;
case "transition":
i.properties = this.build(["transition-property", "transition-duration", "transition-timing-function"]);
break;
case "transform":
i.properties = this.build(["transform-rotate-x", "transform-rotate-y", "transform-rotate-z", "transform-scale-x", "transform-scale-y", "transform-scale-z"])
}
e.push(i)
}
return e
}
},
name: "StyleManager",
getConfig: function() {
return r
},
init: function(i) {
var o = (r = O(O({}, a), i)).pStylePrefix;
return this.em = r.em, o && (r.stylePrefix = o + r.stylePrefix), t = new c.default, e = new h([], r), n = new w({
collection: e,
target: r.em,
config: r
}), this
},
onLoad: function() {
e.add(r.sectors, {
silent: !0
})
},
postRender: function() {
var t = this.getConfig().appendTo;
t && (Object(o.isElement)(t) ? t : document.querySelector(t)).appendChild(this.render())
},
addSector: function(t, n) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = this.getSector(t);
return i || (n.id = t, i = e.add(n, r)), i
},
getSector: function(t) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = e.where({
id: t
})[0];
return !r && n.warn && this._logNoSector(t), r
},
removeSector: function(t) {
return this.getSectors().remove(this.getSector(t, {
warn: 1
}))
},
getSectors: function() {
return e
},
addProperty: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = this.getSector(t, {
warn: 1
}),
i = null;
return r && (i = r.get("properties").add(e, n)), i
},
getProperty: function(t, e) {
var n, r = this.getSector(t, {
warn: 1
});
return r && (n = r.get("properties").filter(function(t) {
return t.get("property") === e || t.get("id") === e
})[0]), n || null
},
removeProperty: function(t, e) {
var n = this.getProperties(t);
return n && n.remove(this.getProperty(t, e))
},
getProperties: function(t) {
var e = null,
n = this.getSector(t, {
warn: 1
});
return n && (e = n.get("properties")), e
},
getModelToStyle: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = r.em,
i = e.skipAdd,
o = t.get("classes"),
a = t.getId();
if (n) {
var s, l = n.getConfig(),
c = n.get("UndoManager"),
u = n.get("CssComposer"),
d = n.get("SelectorManager"),
h = d ? d.getConfig() : {},
f = l.devicePreviewMode ? "" : n.get("state"),
p = o.getStyleable(),
g = p.length,
v = !h.componentFirst || e.useClasses,
m = {
noCount: 1
},
b = {
state: f,
addOpts: m
};
if (c.stop(), g && v) {
var y = n.getCurrentMedia();
(s = u.get(p, f, y)) || i || (s = u.add(p, f, y, {}, m))
} else l.avoidInlineStyle && (!(s = u.getIdRule(a, b)) && !i && (s = u.setIdRule(a, {}, b)), t.is("wrapper") && s.set("wrapper", 1));
s && (t = s), c.start()
}
return t
},
addType: function(e, n) {
t.addType(e, n)
},
getType: function(e) {
return t.getType(e)
},
getTypes: function() {
return t.getTypes()
},
createType: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = e.model,
i = void 0 === n ? {} : n,
o = e.view,
a = void 0 === o ? {} : o,
s = this.getType(t);
if (s) return new s.view(O({
model: new s.model(i),
config: r
}, a))
},
setTarget: function(t, e) {
return n.setTarget(t, e)
},
getEmitter: function() {
return n.propTarget
},
render: function() {
return n.render().el
},
_logNoSector: function(t) {
var e = this.em;
e && e.logWarning("'".concat(t, "' sector not found"))
},
destroy: function() {
[t, e].forEach(function(t) {
t.reset(), t.stopListening()
}), n.remove(), [r, t, e, n].forEach(function(t) {
return {}
}), this.em = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = {
devices: []
},
a = n(1),
s = n.n(a),
l = s.a.Model.extend({
idAttribute: "name",
defaults: {
name: "",
width: null,
height: "",
widthMedia: null,
priority: null
},
initialize: function() {
var t = this;
null === this.get("widthMedia") && this.set("widthMedia", this.get("width")), null === this.get("width") && this.set("width", this.get("widthMedia")), !this.get("priority") && this.set("priority", parseFloat(this.get("widthMedia")) || 0), ["width", "height", "widthMedia"].forEach(function(e) {
return t.checkUnit(e)
})
},
checkUnit: function(t) {
var e = this.get(t) || "";
(parseFloat(e) || 0).toString() === e.toString() && this.set(t, "".concat(e, "px"))
}
}),
c = s.a.Collection.extend({
model: l,
comparator: function(t, e) {
var n = Number.MAX_VALUE;
return (e.get("priority") || n) - (t.get("priority") || n)
},
getSorted: function() {
return this.sort()
}
}),
u = n(0),
d = s.a.View.extend({
template: Object(u.template)('\n <div class="<%= ppfx %>device-label"><%= deviceLabel %></div>\n <div class="<%= ppfx %>field <%= ppfx %>select">\n <span id="<%= ppfx %>input-holder">\n <select class="<%= ppfx %>devices"></select>\n </span>\n <div class="<%= ppfx %>sel-arrow">\n <div class="<%= ppfx %>d-s-arrow"></div>\n </div>\n </div>\n <button style="display:none" class="<%= ppfx %>add-trasp">+</button>'),
events: {
change: "updateDevice"
},
initialize: function(t) {
this.config = t.config || {}, this.em = this.config.em, this.ppfx = this.config.pStylePrefix || "", this.events["click ." + this.ppfx + "add-trasp"] = this.startAdd, this.listenTo(this.em, "change:device", this.updateSelect), this.delegateEvents()
},
startAdd: function() {},
updateDevice: function() {
var t = this.em;
if (t) {
var e = this.devicesEl,
n = e ? e.val() : "";
t.set("device", n)
}
},
updateSelect: function() {
var t = this.em,
e = this.devicesEl;
if (t && t.getDeviceModel && e) {
var n = t.getDeviceModel(),
r = n ? n.get("name") : "";
e.val(r)
}
},
getOptions: function() {
var t = this.collection,
e = this.em,
n = "";
return t.each(function(t) {
var r = t.attributes,
i = r.name,
o = r.id,
a = e && e.t && e.t("deviceManager.devices.".concat(o)) || i;
n += '<option value="'.concat(i, '">').concat(a, "</option>")
}), n
},
render: function() {
var t = this.em,
e = this.ppfx,
n = this.$el,
r = this.el;
return n.html(this.template({
ppfx: e,
deviceLabel: t && t.t && t.t("deviceManager.device")
})), this.devicesEl = n.find(".".concat(e, "devices")), this.devicesEl.append(this.getOptions()), r.className = "".concat(e, "devices-c"), this
}
});
function h(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function f(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? h(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n = {};
return {
name: "DeviceManager",
init: function(r) {
var i = this;
for (var a in n = r || {}, o) a in n || (n[a] = o[a]);
return t = new c, (n.devices || []).forEach(function(t) {
return i.add(t.id || t.name, t.width, t)
}), e = new d({
collection: t,
config: n
}), this
},
add: function(e, n) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = f(f({}, r), {}, {
id: e,
name: r.name || e,
width: n
});
return t.add(i)
},
get: function(e) {
return t.get(e)
},
getAll: function() {
return t
},
render: function() {
return e.render().el
},
destroy: function() {
t.reset(), t.stopListening(), e.remove(), [t, e].forEach(function(t) {
return null
}), n = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = {
id: "gjs-",
autosave: 1,
autoload: 1,
type: "local",
stepsBeforeSave: 1,
storeComponents: 1,
storeStyles: 1,
storeHtml: 1,
storeCss: 1,
checkLocal: 1,
params: {},
headers: {},
urlStore: "",
urlLoad: "",
beforeSend: function(t, e) {},
onComplete: function(t, e) {},
contentTypeJson: !0,
credentials: "include",
fetchOptions: ""
},
a = n(1),
s = n.n(a),
l = s.a.Model.extend({
defaults: {
checkLocal: !0
},
store: function(t, e) {
for (var n in this.checkStorageEnvironment(), t) localStorage.setItem(n, t[n]);
"function" == typeof e && e()
},
load: function(t, e) {
this.checkStorageEnvironment();
for (var n = {}, r = 0, i = t.length; r < i; r++) {
var o = localStorage.getItem(t[r]);
o && (n[t[r]] = o)
}
return "function" == typeof e && e(n), n
},
remove: function(t) {
this.checkStorageEnvironment();
for (var e = 0, n = t.length; e < n; e++) localStorage.removeItem(t[e])
},
checkStorageEnvironment: function() {
this.get("checkLocal") && !localStorage && console.warn("Your browser doesn't support localStorage")
}
}),
c = n(28),
u = n(0);
function d(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function h(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? d(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var f = s.a.Model.extend({
fetch: c.a,
defaults: {
urlStore: "",
urlLoad: "",
params: {},
beforeSend: function() {},
onComplete: function() {},
contentTypeJson: !1,
credentials: "include",
fetchOptions: ""
},
onStart: function() {
this.get("em");
var t = this.get("beforeSend");
t && t()
},
onError: function(t, e) {
if (e) e(t);
else {
var n = this.get("em");
console.error(t), n && n.trigger("storage:error", t)
}
},
onResponse: function(t, e) {
var n = this.get("em"),
r = this.get("onComplete"),
i = this.get("contentTypeJson") && t && "string" == typeof t ? JSON.parse(t) : t;
r && r(i), e && e(i), n && n.trigger("storage:response", i)
},
store: function(t, e, n) {
var r = {};
for (var i in t) r[i] = t[i];
this.request(this.get("urlStore"), {
body: r
}, e, n)
},
load: function(t, e, n) {
this.request(this.get("urlLoad"), {
method: "get"
}, e, n)
},
request: function(t) {
var e, n, r = this,
i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null,
a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null,
s = this.get("contentTypeJson"),
l = this.get("headers") || {},
c = this.get("params"),
d = "X-Requested-With",
f = "Content-Type",
p = i.body || {};
for (var g in c) p[g] = c[g];
if (Object(u.isUndefined)(l[d]) && (l[d] = "XMLHttpRequest"), Object(u.isUndefined)(l[f]) && s && (l[f] = "application/json; charset=utf-8"), s) n = JSON.stringify(p);
else
for (var v in n = new FormData, p) n.append(v, p[v]);
"post" === (e = {
method: i.method || "post",
credentials: this.get("credentials"),
headers: l
}).method && (e.body = n);
var m = this.get("fetchOptions") || {},
b = Object(u.isFunction)(m) ? m(e) : e;
this.onStart(), this.fetch(t, h(h({}, e), b || {})).then(function(t) {
return 1 == (t.status / 200 | 0) ? t.text() : t.text().then(function(t) {
return Promise.reject(t)
})
}).then(function(t) {
return r.onResponse(t, o)
}).catch(function(t) {
return r.onError(t, a)
})
}
});
function p(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function g(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? p(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : p(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var v = "storage:start",
m = "storage:end",
b = "storage:error";
e.default = function() {
var t, e = {},
n = {},
r = {};
return {
name: "StorageManager",
init: function() {
var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return e = g(g({}, o), n), t = e.em, e._disable && (e.type = 0), r.remote = new f(e), r.local = new l(e), e.currentStorage = e.type, this.loadDefaultProviders().setCurrent(e.type), this
},
getConfig: function() {
return e
},
isAutosave: function() {
return !!e.autosave
},
setAutosave: function(t) {
return e.autosave = !!t, this
},
getStepsBeforeSave: function() {
return e.stepsBeforeSave
},
setStepsBeforeSave: function(t) {
return e.stepsBeforeSave = t, this
},
add: function(t, e) {
return n[t] = e, this
},
get: function(t) {
return n[t] || null
},
getStorages: function() {
return n
},
getCurrent: function() {
return e.currentStorage
},
setCurrent: function(t) {
return e.currentStorage = t, this
},
store: function(t, n) {
var r = this,
i = this.get(this.getCurrent()),
o = {};
for (var a in this.onStart("store", t), t) o[e.id + a] = t[a];
return i ? i.store(o, function(t) {
n && n(t), r.onEnd("store", t)
}, function(t) {
r.onError("store", t)
}) : null
},
load: function(t, n) {
var r = this,
i = this.get(this.getCurrent()),
o = [],
a = {};
"string" == typeof t && (t = [t]), this.onStart("load", t);
for (var s = 0, l = t.length; s < l; s++) o.push(e.id + t[s]);
i ? i.load(o, function(t) {
var i = new RegExp("^" + e.id);
for (var o in t) {
var s = o.replace(i, "");
a[s] = t[o]
}
n && n(a), r.onEnd("load", a)
}, function(t) {
n && n(a), r.onError("load", t)
}) : n && n(a)
},
loadDefaultProviders: function() {
for (var t in r) this.add(t, r[t]);
return this
},
getCurrentStorage: function() {
return this.get(this.getCurrent())
},
onStart: function(e, n) {
t && (t.trigger(v), e && t.trigger("".concat(v, ":").concat(e), n))
},
onEnd: function(e, n) {
t && (t.trigger(m), e && t.trigger("".concat(m, ":").concat(e), n))
},
onError: function(e, n) {
t && (t.trigger(b, n), e && t.trigger("".concat(b, ":").concat(e), n), this.onEnd(e, n))
},
canAutoload: function() {
return this.getCurrentStorage() && this.getConfig().autoload
},
destroy: function() {
[e, t, n, r].forEach(function(t) {
return {}
})
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = {
stylePrefix: "mdl-",
title: "",
content: "",
backdrop: !0
},
a = n(1),
s = n.n(a),
l = s.a.Model.extend({
defaults: {
title: "",
content: "",
open: !1
}
});
function c(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function u(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? c(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : c(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var d = s.a.View.extend({
template: function(t) {
var e = t.pfx,
n = t.ppfx,
r = t.content,
i = t.title;
return '<div class="'.concat(e, "dialog ").concat(n, "one-bg ").concat(n, 'two-color">\n <div class="').concat(e, 'header">\n <div class="').concat(e, 'title">').concat(i, '</div>\n <div class="').concat(e, 'btn-close" data-close-modal>⨯</div>\n </div>\n <div class="').concat(e, 'content">\n <div id="').concat(e, 'c">').concat(r, '</div>\n <div style="clear:both"></div>\n </div>\n </div>\n <div class="').concat(e, 'collector" style="display: none"></div>')
},
events: {
click: "onClick",
"click [data-close-modal]": "hide"
},
initialize: function(t) {
var e = this.model,
n = t.config || {},
r = n.stylePrefix || "";
this.config = n, this.pfx = r, this.ppfx = n.pStylePrefix || "", this.listenTo(e, "change:open", this.updateOpen), this.listenTo(e, "change:title", this.updateTitle), this.listenTo(e, "change:content", this.updateContent)
},
onClick: function(t) {
this.config.backdrop && t.target === this.el && this.hide()
},
getCollector: function() {
return this.$collector || (this.$collector = this.$el.find("." + this.pfx + "collector")), this.$collector
},
getContent: function() {
var t = this.pfx;
return this.$content || (this.$content = this.$el.find(".".concat(t, "content #").concat(t, "c"))), this.$content
},
getTitle: function() {
return this.$title || (this.$title = this.$el.find("." + this.pfx + "title")), this.$title.get(0)
},
updateContent: function() {
var t = this.getContent(),
e = t.children(),
n = this.getCollector(),
r = this.model.get("content");
e.length && n.append(e), t.empty().append(r)
},
updateTitle: function() {
var t = this.getTitle();
t && (t.innerHTML = this.model.get("title"))
},
updateOpen: function() {
this.el.style.display = this.model.get("open") ? "" : "none"
},
hide: function() {
this.model.set("open", 0)
},
show: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.model.set("open", 1), this.updateAttr(t.attributes)
},
updateAttr: function(t) {
var e = this.pfx,
n = this.$el,
r = this.el,
i = [].slice.call(r.attributes).map(function(t) {
return t.name
});
n.removeAttr(i.join(" ")), n.attr(u(u({}, t || {}), {}, {
class: "".concat(e, "container ").concat(t && t.class || "").trim()
}))
},
render: function() {
var t = this.$el,
e = this.model.toJSON();
return e.pfx = this.pfx, e.ppfx = this.ppfx, t.html(this.template(e)), this.updateAttr(), this.updateOpen(), this
}
});
function h(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function f(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? h(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n = {};
return {
name: "Modal",
getConfig: function() {
return n
},
init: function() {
var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
i = (n = f(f({}, o), r)).em;
this.em = i;
var a = n.pStylePrefix;
return a && (n.stylePrefix = a + n.stylePrefix), (t = new l(n)).on("change:open", function(t, e) {
return function(t, e) {
e && e.trigger("modal:".concat(t ? "open" : "close"))
}(e, i)
}), e = new d({
model: t,
config: n
}), this
},
postRender: function(t) {
var e = t.model.getConfig().el || t.el;
this.render().appendTo(e)
},
open: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return t.title && this.setTitle(t.title), t.content && this.setContent(t.content), e.show(t), this
},
close: function() {
return e.hide(), this
},
onceClose: function(t) {
return this.em.once("modal:close", t), this
},
onceOpen: function(t) {
return this.em.once("modal:open", t), this
},
isOpen: function() {
return !!t.get("open")
},
setTitle: function(e) {
return t.set("title", e), this
},
getTitle: function() {
return t.get("title")
},
setContent: function(e) {
return t.set("content", " "), t.set("content", e), this
},
getContent: function() {
return t.get("content")
},
getContentEl: function() {
return e.getContent().get(0)
},
getModel: function() {
return t
},
render: function() {
return e.render().$el
},
destroy: function() {
e.remove(), [n, t, e].forEach(function(t) {
return {}
}), this.em = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(0),
a = n(3),
s = {
stylePrefix: "clm-",
appendTo: "",
selectors: [],
states: [{
name: "hover"
}, {
name: "active"
}, {
name: "nth-of-type(2n)"
}],
escapeName: 0,
selectedName: 0,
iconAdd: '<svg viewBox="0 0 24 24"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></svg>',
iconSync: '<svg viewBox="0 0 24 24"><path d="M12 18c-3.31 0-6-2.69-6-6 0-1 .25-1.97.7-2.8L5.24 7.74A7.93 7.93 0 0 0 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4m0-11V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1-.25 1.97-.7 2.8l1.46 1.46A7.93 7.93 0 0 0 20 12c0-4.42-3.58-8-8-8z"></path></svg>',
iconTagOn: '<svg viewBox="0 0 24 24"><path d="M19 19H5V5h10V3H5c-1.11 0-2 .89-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8h-2m-11.09-.92L6.5 11.5 11 16 21 6l-1.41-1.42L11 13.17l-3.09-3.09z"></path></svg>',
iconTagOff: '<svg viewBox="0 0 24 24"><path d="M19 3H5c-1.11 0-2 .89-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5a2 2 0 0 0-2-2m0 2v14H5V5h14z"></path></svg>',
iconTagRemove: '<svg viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>',
render: 0,
componentFirst: 0
},
l = n(10),
c = n(12),
u = n(7),
d = n.n(u),
h = n(1),
f = n.n(h),
p = "contentEditable",
g = f.a.View.extend({
template: function() {
var t = this.pfx,
e = this.model,
n = this.config,
r = e.get("label") || "";
return '\n <span id="'.concat(t, 'checkbox" class="').concat(t, 'tag-status" data-tag-status></span>\n <span id="').concat(t, 'tag-label" data-tag-name>').concat(r, '</span>\n <span id="').concat(t, 'close" class="').concat(t, 'tag-close" data-tag-remove>\n ').concat(n.iconTagRemove, "\n </span>\n ")
},
events: {
"click [data-tag-remove]": "removeTag",
"click [data-tag-status]": "changeStatus",
"dblclick [data-tag-name]": "startEditTag",
"focusout [data-tag-name]": "endEditTag"
},
initialize: function(t) {
var e = t.config || {};
this.config = e, this.coll = t.coll || null, this.pfx = e.stylePrefix || "", this.ppfx = e.pStylePrefix || "", this.em = e.em, this.listenTo(this.model, "change:active", this.updateStatus)
},
getInputEl: function() {
return this.inputEl || (this.inputEl = this.el.querySelector("[data-tag-name]")), this.inputEl
},
startEditTag: function() {
var t = this.em,
e = this.getInputEl();
e[p] = !0, e.focus(), t && t.setEditing(1)
},
endEditTag: function() {
var t = this.model,
e = this.getInputEl(),
n = e.textContent,
r = this.em,
i = r && r.get("SelectorManager");
if (e[p] = !1, r && r.setEditing(0), i) {
var o = i.escapeName(n);
i.get(o) ? e.innerText = t.get("label") : t.set({
name: o,
label: n
})
}
},
changeStatus: function() {
var t = this.model;
t.set("active", !t.get("active"))
},
removeTag: function() {
var t = this.em,
e = this.model;
(t && t.getSelectedAll()).forEach(function(t) {
!e.get("protected") && t && t.getSelectors().remove(e)
})
},
updateStatus: function() {
var t = this.model,
e = this.$el,
n = this.config,
r = n.iconTagOn,
i = n.iconTagOff,
o = e.find("[data-tag-status]");
t.get("active") ? (o.html(r), e.removeClass("opac50")) : (o.html(i), e.addClass("opac50"))
},
render: function() {
var t = this.pfx,
e = this.ppfx;
return this.$el.html(this.template()), this.$el.attr("class", "".concat(t, "tag ").concat(e, "three-bg")), this.updateStatus(), this
}
}),
v = f.a.View.extend({
template: function(t) {
var e = t.labelInfo,
n = t.labelStates,
r = t.labelHead,
i = t.iconSync,
o = t.iconAdd,
a = t.pfx,
s = t.ppfx;
return '\n <div id="'.concat(a, 'up" class="').concat(a, 'header">\n <div id="').concat(a, 'label" class="').concat(a, 'header-label">').concat(r, '</div>\n <div id="').concat(a, 'status-c" class="').concat(a, 'header-status">\n <span id="').concat(a, 'input-c" data-states-c>\n <div class="').concat(s, "field ").concat(s, 'select">\n <span id="').concat(s, 'input-holder">\n <select id="').concat(a, 'states" data-states>\n <option value="">').concat(n, '</option>\n </select>\n </span>\n <div class="').concat(s, 'sel-arrow">\n <div class="').concat(s, 'd-s-arrow"></div>\n </div>\n </div>\n </span>\n </div>\n </div>\n <div id="').concat(a, 'tags-field" class="').concat(s, 'field">\n <div id="').concat(a, 'tags-c" data-selectors></div>\n <input id="').concat(a, 'new" data-input/>\n <span id="').concat(a, 'add-tag" class="').concat(a, "tags-btn ").concat(a, 'tags-btn__add" data-add>\n ').concat(o, '\n </span>\n <span class="').concat(a, "tags-btn ").concat(a, 'tags-btn__sync" style="display: none" data-sync-style>\n ').concat(i, '\n </span>\n </div>\n <div class="').concat(a, 'sels-info">\n <div class="').concat(a, 'label-sel">').concat(e, ':</div>\n <div class="').concat(a, 'sels" data-selected></div>\n <div style="clear:both"></div>\n </div>')
},
events: {
"change [data-states]": "stateChanged",
"click [data-add]": "startNewTag",
"focusout [data-input]": "endNewTag",
"keyup [data-input]": "onInputKeyUp",
"click [data-sync-style]": "syncStyle"
},
initialize: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.config = t.config || {}, this.pfx = this.config.stylePrefix || "", this.ppfx = this.config.pStylePrefix || "", this.className = this.pfx + "tags", this.stateInputId = this.pfx + "states", this.stateInputC = this.pfx + "input-c", this.states = this.config.states || [];
var e = this.config.em,
n = this.collection;
this.target = this.config.em, this.em = e;
var r = this.getStyleEmitter();
this.listenTo(e, "component:toggled component:update:classes", this.componentChanged), this.listenTo(r, "update", this.componentChanged), this.listenTo(e, "component:update:classes change:state", this.__handleStateChange), this.listenTo(e, "styleable:change change:device", this.checkSync), this.listenTo(n, "add", this.addNew), this.listenTo(n, "reset", this.renderClasses), this.listenTo(n, "remove", this.tagRemoved), this.delegateEvents()
},
syncStyle: function() {
var t, e = this.em,
n = this.getTarget(),
r = e.get("CssComposer"),
i = this.getCommonSelectors({
opts: {
noDisabled: 1
}
}),
o = e.get("state"),
a = e.getCurrentMedia(),
s = [],
l = r.get(i, o, a) || r.add(i, o, a);
this.getTargets().forEach(function(e) {
var n = r.getIdRule(e.getId(), {
state: o,
mediaText: a
});
t = n.getStyle(), n.setStyle({}), s.push(n)
}), t && l.addStyle(t), e.trigger("component:toggled"), e.trigger("component:sync-style", {
component: n,
selectors: i,
mediaText: a,
rule: l,
ruleComponents: s,
state: o
})
},
getStyleEmitter: function() {
var t = this.em,
e = t && t.get("StyleManager");
return e && e.getEmitter() || {}
},
tagRemoved: function(t) {
this.updateStateVis()
},
getStateOptions: function() {
var t = this.states,
e = this.em,
n = [];
return t.forEach(function(t) {
return n.push('<option value="'.concat(t.name, '">').concat(e.t("selectorManager.states.".concat(t.name)) || t.label || t.name, "</option>"))
}), n.join("")
},
addNew: function(t) {
this.addToClasses(t)
},
startNewTag: function() {
this.$addBtn.css({
display: "none"
}), this.$input.show().focus()
},
endNewTag: function() {
this.$addBtn.css({
display: ""
}), this.$input.hide().val("")
},
onInputKeyUp: function(t) {
13 === t.keyCode ? this.addNewTag(this.$input.val()) : 27 === t.keyCode && this.endNewTag()
},
checkStates: function() {
var t = this.em.getState(),
e = this.getStates();
e && e.val(t)
},
componentChanged: Object(o.debounce)(function() {
var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).targets;
this.updateSelection(t)
}),
updateSelection: function(t) {
var e = t || this.getTargets(),
n = [];
return (e = Object(o.isArray)(e) ? e : [e]) && e.length && (n = this.getCommonSelectors({
targets: e
}), this.checkSync({
validSelectors: n
})), this.collection.reset(n), this.updateStateVis(e), n
},
getCommonSelectors: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.targets,
n = t.opts,
r = void 0 === n ? {} : n,
i = (e || this.getTargets()).map(function(t) {
return t.getSelectors && t.getSelectors().getValid(r)
}).filter(function(t) {
return t
});
return this._commonSelectors.apply(this, d()(i))
},
_commonSelectors: function() {
for (var t = this, e = arguments.length, n = new Array(e), r = 0; r < e; r++) n[r] = arguments[r];
return n.length ? 1 === n.length ? n[0] : 2 === n.length ? n[0].filter(function(t) {
return n[1].indexOf(t) >= 0
}) : n.slice(1).reduce(function(e, n) {
return t._commonSelectors(e, n)
}, n[0]) : []
},
checkSync: Object(o.debounce)(function() {
var t, e = this.$btnSyncEl,
n = this.config,
r = this.collection,
i = this.getTarget();
if (i && n.componentFirst && r.length) {
var a = i.getStyle();
t = !Object(o.isEmpty)(a)
}
e && e[t ? "show" : "hide"]()
}),
getTarget: function() {
return this.target.getSelected()
},
getTargets: function() {
return this.target.getSelectedAll()
},
updateStateVis: function(t) {
var e = this.em,
n = e && e.getConfig("avoidInlineStyle"),
r = this.collection.length || n ? "" : "none";
this.getStatesC().css("display", r), this.updateSelector(t)
},
__handleStateChange: function() {
this.updateSelector(this.getTargets())
},
updateSelector: function(t) {
var e = this,
n = this.el.querySelector("[data-selected]"),
r = [],
i = t || this.getTargets();
(i = Object(o.isArray)(i) ? i : [i]).forEach(function(t) {
return r.push(e.__getName(t))
}), n && (n.innerHTML = r.join(", ")), this.checkStates()
},
__getName: function(t) {
var e, n = this.pfx,
r = this.config,
i = this.em,
a = r.selectedName,
s = r.componentFirst;
if (Object(o.isString)(t)) e = '<span class="'.concat(n, 'sel-gen">').concat(t, "</span>");
else {
if (!t || !t.get) return;
var l = t.getSelectors().getStyleable(),
c = i.get("state"),
u = t.getId ? '<span class="'.concat(n, 'sel-cmp">').concat(t.getName(), '</span><span class="').concat(n, 'sel-id">#').concat(t.getId(), "</span>") : "";
e = (e = this.collection.getFullString(l)) ? '<span class="'.concat(n, 'sel-rule">').concat(e, "</span>") : t.get("selectorsAdd") || u, e = s && u ? u : e, e += c ? '<span class="'.concat(n, 'sel-state">:').concat(c, "</span>") : "", e = a ? a({
result: e,
state: c,
target: t
}) : e
}
return e && '<span class="'.concat(n, 'sel">').concat(e, "</span>")
},
stateChanged: function(t) {
var e = this.em,
n = t.target.value;
e.set("state", n)
},
addNewTag: function(t) {
var e = this,
n = this.em;
if (t.trim()) {
if (n) {
var r = n.get("SelectorManager").add({
label: t
});
this.getTargets().forEach(function(t) {
t.getSelectors().add(r), e.collection.add(r), e.updateStateVis()
})
}
this.endNewTag()
}
},
addToClasses: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
n = this.getClasses(),
r = new g({
model: t,
config: this.config,
coll: this.collection
}).render().el;
return e ? e.appendChild(r) : n.append(r), r
},
renderClasses: function() {
var t = this,
e = document.createDocumentFragment(),
n = this.getClasses();
n.empty(), this.collection.each(function(n) {
return t.addToClasses(n, e)
}), n.append(e)
},
getClasses: function() {
return this.$el.find("[data-selectors]")
},
getStates: function() {
if (!this.$states) {
var t = this.$el.find("[data-states]");
this.$states = t[0] && t
}
return this.$states
},
getStatesC: function() {
return this.$statesC || (this.$statesC = this.$el.find("#" + this.stateInputC)), this.$statesC
},
render: function() {
var t = this.em,
e = this.pfx,
n = this.ppfx,
r = this.config,
i = this.$el,
o = this.el,
a = r.render,
s = {
iconSync: r.iconSync,
iconAdd: r.iconAdd,
labelHead: t.t("selectorManager.label"),
labelStates: t.t("selectorManager.emptyState"),
labelInfo: t.t("selectorManager.selected"),
ppfx: n,
pfx: e,
el: o
};
i.html(this.template(s));
var l = a && a(s);
l && l !== o && i.empty().append(l), this.$input = i.find("[data-input]"), this.$addBtn = i.find("[data-add]"), this.$classes = i.find("#" + e + "tags-c"), this.$btnSyncEl = i.find("[data-sync-style]"), this.$input.hide();
var c = this.getStates();
return c && c.append(this.getStateOptions()), this.renderClasses(), i.attr("class", "".concat(this.className, " ").concat(n, "one-bg ").concat(n, "two-color")), this
}
});
function m(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function b(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? m(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : m(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var y = function(t) {
return Object(o.isString)(t) && "#" == t[0]
},
w = function(t) {
return Object(o.isString)(t) && "." == t[0]
};
e.default = function(t) {
var e, n = t || {};
return {
Selector: l.a,
Selectors: c.a,
name: "SelectorManager",
getConfig: function() {
return n
},
init: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
r = (n = b(b({}, s), t)).em,
i = n.pStylePrefix;
return this.em = r, i && (n.stylePrefix = i + n.stylePrefix), this.selectorTags = new v({
collection: new c.a([], {
em: r,
config: n
}),
config: n
}), (e = new c.a(n.selectors)).on("add", function(t) {
return r.trigger("selector:add", t)
}), e.on("remove", function(t) {
return r.trigger("selector:remove", t)
}), e.on("change", function(t) {
return r.trigger("selector:update", t, t.previousAttributes(), t.changedAttributes())
}), r.on("change:state", function(t, e) {
return r.trigger("selector:state", e)
}), this
},
postRender: function() {
var t = this.getConfig().appendTo;
t && (Object(o.isElement)(t) ? t : document.querySelector(t)).appendChild(this.render([]))
},
select: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = Array.isArray(t) ? t : [t],
r = this.em.get("StyleManager").setTarget(n, e).filter(function(t) {
return t
}).map(function(t) {
return Object(a.l)(t) || Object(a.p)(t) && !t.get("selectorsAdd") ? t : t.getSelectorsString()
});
return this.selectorTags.componentChanged({
targets: r
}), this
},
setState: function(t) {
return this.em.setState(t), this
},
getState: function() {
return this.em.getState()
},
addSelector: function(t) {
var r = b({}, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {});
Object(o.isObject)(t) ? r = t : r.name = t, y(r.name) ? (r.name = r.name.substr(1), r.type = l.a.TYPE_ID) : w(r.name) && (r.name = r.name.substr(1)), r.label && !r.name && (r.name = this.escapeName(r.label));
var i = r.name;
return (i ? this.get(i, r.type) : e.where(r)[0]) || e.add(r, {
config: n
})
},
getSelector: function(t) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : l.a.TYPE_CLASS;
return y(t) ? (t = t.substr(1), n = l.a.TYPE_ID) : w(t) && (t = t.substr(1)), e.where({
name: t,
type: n
})[0]
},
add: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return Object(o.isArray)(t) ? t.map(function(t) {
return e.addSelector(t, n)
}) : this.addSelector(t, n)
},
addClass: function(t) {
var e = this,
n = [];
return Object(o.isString)(t) && (t = t.trim().split(" ")), t.forEach(function(t) {
return n.push(e.addSelector(t))
}), n
},
get: function(t, e) {
var n = this;
if (Object(o.isArray)(t)) {
var r = [];
return t.map(function(t) {
return n.getSelector(t)
}).filter(function(t) {
return t
}).forEach(function(t) {
return r.indexOf(t) < 0 && r.push(t)
}), r
}
return this.getSelector(t, e)
},
getAll: function() {
return e
},
escapeName: function(t) {
var e = n.escapeName;
return e ? e(t) : l.a.escapeName(t)
},
render: function(t) {
return t ? (this.selectorTags = new v({
collection: new c.a(t),
config: n
}), this.selectorTags.render().el) : this.selectorTags.render().el
},
destroy: function() {
e.reset(), e.stopListening(), this.selectorTags.remove(), [n, e].forEach(function(t) {
return {}
}), this.em = {}, this.selectorTags = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = {
textTags: ["br", "b", "i", "u", "a", "ul", "ol"],
parserCss: null,
parserHtml: null
},
a = n(0),
s = {
4: "media",
5: "font-face",
6: "page",
7: "keyframes",
11: "counter-style",
12: "supports",
13: "document",
14: "font-feature-values",
15: "viewport"
},
l = Object(a.keys)(s),
c = ["5", "6", "11", "15"],
u = ["font-face", "page", "counter-style", "viewport"],
d = function() {
for (var t = [], e = [], n = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "").split(","), r = 0, i = n.length; r < i; r++) {
var o = n[r].trim();
if (/^(\.{1}[\w\-]+)+(:{1,2}[\w\-()]+)?$/gi.test(o) || /^(#{1}[\w\-]+){1}(:{1,2}[\w\-()]+)?$/gi.test(o)) {
var a = o.split(".").filter(Boolean);
e.push(a)
} else t.push(o)
}
return {
result: e,
add: t
}
},
h = function(t) {
for (var e = t.style, n = {}, r = 0, i = e.length; r < i; r++) {
var o = e[r],
a = e.getPropertyValue(o),
s = e.getPropertyPriority(o);
n[o] = "".concat(a).concat(s ? " !".concat(s) : "")
}
return n
},
f = function(t) {
return (t.conditionText || t.media && t.media.mediaText || t.name || t.selectorText || "").trim()
},
p = function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = {},
i = t.length,
o = t[i - 1],
a = o ? o.split(/:(.+)/) : [],
s = a[1],
l = n.atRule,
c = n.selectorsAdd,
d = n.mediaText;
return u.indexOf(l) >= 0 && (r.singleAtRule = 1), l && (r.atRuleType = l), c && (r.selectorsAdd = c), d && (r.mediaText = d), s && (t[i - 1] = a[0], r.state = s, a.splice(a.length - 1, 1)), r.selectors = t, r.style = e, r
},
g = function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return {
parse: function(e) {
var n = this,
r = [],
i = t.parserCss,
o = t.em,
a = o && o.get && o.get("Editor");
return (i ? i(e, a) : function(t) {
var e = document.createElement("style");
e.innerHTML = t, document.head.appendChild(e);
var n = e.sheet;
return document.head.removeChild(e),
function t(e) {
for (var n = [], r = e.cssRules || [], i = 0, o = r.length; i < o; i++) {
var a = r[i],
u = a.type.toString(),
g = 0,
v = "",
m = "",
b = a.selectorText || a.keyText,
y = c.indexOf(u) >= 0;
if (y) g = 1, v = s[u], m = f(a);
else if (l.indexOf(u) >= 0) {
var w = t(a);
m = f(a);
for (var x = 0, O = w.length; x < O; x++) {
var C = w[x];
m && (C.mediaText = m), C.atRuleType = s[u]
}
n = n.concat(w)
}
if (b || y) {
for (var S = h(a), k = d(b), j = k.add, T = void 0, P = 0, E = (b = k.result).length; P < E; P++) {
var M = p(b[P], S, {
atRule: s[u]
});
n.push(M), T = M
}
if (j.length) {
var D = j.join(", ");
if (T) T.selectorsAdd = D;
else {
var A = {
selectors: [],
selectorsAdd: D,
style: S
};
g && (A.singleAtRule = g), v && (A.atRuleType = v), m && (A.mediaText = m), n.push(A)
}
}
}
}
return n
}(n)
}(e)).forEach(function(t) {
return r = r.concat(n.checkNode(t))
}), o && o.trigger("parse:css", {
input: e,
output: r
}), r
},
checkNode: function(t) {
var e = t,
n = e.selectors,
r = e.style;
if (Object(a.isString)(n)) {
var i = [],
o = d(n),
s = o.result,
l = o.add.join(", "),
c = {
atRule: t.atRule,
mediaText: t.params
};
s.length ? s.forEach(function(t) {
i.push(p(t, r, c))
}) : i.push(p([], r, c)), l && (i[i.length - 1].selectorsAdd = l), t = i
}
return t
}
}
},
v = n(29);
function m(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function b(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? m(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : m(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n = {};
return {
compTypes: "",
parserCss: null,
parserHtml: null,
name: "Parser",
getConfig: function() {
return n
},
init: function() {
var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return (n = b(b({}, o), r)).Parser = this, t = new v.a(n), e = new g(n), this.em = n.em, this.parserCss = e, this.parserHtml = t, this
},
parseHtml: function(n) {
var r = this.em,
i = this.compTypes;
return t.compTypes = r ? r.get("DomComponents").getTypes() : i, t.parse(n, e)
},
parseCss: function(t) {
return e.parse(t)
},
destroy: function() {
var r = this;
[n, t, e].forEach(function(t) {
return {}
}), ["em", "parserCss", "parserHtml"].forEach(function(t) {
return r[t] = {}
})
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(8),
a = n.n(o),
s = n(0),
l = {
placeholder: "eg. Text here"
},
c = {
locale: "en",
localeFallback: "en",
detectLocale: 1,
debug: 0,
messages: {
en: {
assetManager: {
addButton: "Add image",
inputPlh: "http://path/to/the/image.jpg",
modalTitle: "Select Image",
uploadTitle: "Drop files here or click to upload"
},
blockManager: {
labels: {},
categories: {}
},
domComponents: {
names: {
"": "Box",
wrapper: "Body",
text: "Text",
comment: "Comment",
image: "Image",
video: "Video",
label: "Label",
link: "Link",
map: "Map",
tfoot: "Table foot",
tbody: "Table body",
thead: "Table head",
table: "Table",
row: "Table row",
cell: "Table cell"
}
},
deviceManager: {
device: "Device",
devices: {
desktop: "Desktop",
tablet: "Tablet",
mobileLandscape: "Mobile Landscape",
mobilePortrait: "Mobile Portrait"
}
},
panels: {
buttons: {
titles: {
preview: "Preview",
fullscreen: "Fullscreen",
"sw-visibility": "View components",
"export-template": "View code",
"open-sm": "Open Style Manager",
"open-tm": "Settings",
"open-layers": "Open Layer Manager",
"open-blocks": "Open Blocks"
}
}
},
selectorManager: {
label: "Classes",
selected: "Selected",
emptyState: "- State -",
states: {
hover: "Hover",
active: "Click",
"nth-of-type(2n)": "Even/Odd"
}
},
styleManager: {
empty: "Select an element before using Style Manager",
layer: "Layer",
fileButton: "Images",
sectors: {
general: "General",
layout: "Layout",
typography: "Typography",
decorations: "Decorations",
extra: "Extra",
flex: "Flex",
dimension: "Dimension"
},
properties: {}
},
traitManager: {
empty: "Select an element before using Trait Manager",
label: "Component settings",
traits: {
labels: {},
attributes: {
id: l,
alt: l,
title: l,
href: {
placeholder: "eg. https://google.com"
}
},
options: {
target: {
false: "This window",
_blank: "New window"
}
}
}
}
}
}
};
function u(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function d(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? u(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var h = function(t) {
return !Array.isArray(t) && null !== t && "object" === a()(t)
};
e.default = function() {
return {
name: "I18n",
config: c,
init: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return this.config = d(d(d({}, c), t), {}, {
messages: d(d({}, c.messages), t.messages || {})
}), this.config.detectLocale && (this.config.locale = this._localLang()), this.em = t.em, this
},
getConfig: function() {
return this.config
},
setLocale: function(t) {
var e = this.em,
n = this.config,
r = {
value: t,
valuePrev: n.locale
};
return e && e.trigger("i18n:locale", r), n.locale = t, this
},
getLocale: function() {
return this.config.locale
},
getMessages: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.config.messages;
return t && !n[t] && this._debug("'".concat(t, "' i18n lang not found"), e), t ? n[t] : n
},
setMessages: function(t) {
var e = this.em;
return this.config.messages = t, e && e.trigger("i18n:update", t), this
},
addMessages: function(t) {
var e = this.em,
n = this.config.messages;
return e && e.trigger("i18n:add", t), this.setMessages(function t() {
for (var e = d({}, arguments.length <= 0 ? void 0 : arguments[0]), n = 1; n < arguments.length; n++) {
var r = d({}, n < 0 || arguments.length <= n ? void 0 : arguments[n]);
for (var i in r) {
var o = e[i],
a = r[i];
h(o) && h(a) ? e[i] = t(o, a) : e[i] = a
}
}
return e
}(n, t)), this
},
t: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.config,
r = e.params || {},
i = e.l || this.getLocale(),
o = e.lFlb || n.localeFallback,
a = this._getMsg(t, i, e);
return a || (a = this._getMsg(t, o, e)), !a && this._debug("'".concat(t, "' i18n key not found in '").concat(i, "' lang"), e), a && Object(s.isString)(a) ? this._addParams(a, r) : a
},
_localLang: function() {
var t = window.navigator || {},
e = t.language || t.userLanguage;
return e ? e.split("-")[0] : "en"
},
_addParams: function(t, e) {
var n = new RegExp("{([\\w\\d-]*)}", "g");
return t.replace(n, function(t, n) {
return e[n] || ""
}).trim()
},
_getMsg: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = this.getMessages(e, n);
if (r) {
var i = r[t];
return !i && t.indexOf(".") > 0 && (i = t.split(".").reduce(function(t, e) {
if (!Object(s.isUndefined)(t)) return t[e]
}, r)), i
}
},
_debug: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.em,
r = this.config;
(e.debug || r.debug) && n && n.logWarning(t)
},
destroy: function() {
this.config = c, this.em = {}
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(7),
i = n.n(r),
o = n(2),
a = n.n(o),
s = n(15),
l = n.n(s),
c = n(16),
u = n.n(c),
d = n(3);
function h(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function f(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? h(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var p = "_rte",
g = function(t) {
var e = t.selection().anchorNode,
n = e && e.parentNode,
r = e && e.nextSibling;
return n && "A" == n.nodeName || r && "A" == r.nodeName
},
v = {
bold: {
name: "bold",
icon: "<b>B</b>",
attributes: {
title: "Bold"
},
result: function(t) {
return t.exec("bold")
}
},
italic: {
name: "italic",
icon: "<i>I</i>",
attributes: {
title: "Italic"
},
result: function(t) {
return t.exec("italic")
}
},
underline: {
name: "underline",
icon: "<u>U</u>",
attributes: {
title: "Underline"
},
result: function(t) {
return t.exec("underline")
}
},
strikethrough: {
name: "strikethrough",
icon: "<s>S</s>",
attributes: {
title: "Strike-through"
},
result: function(t) {
return t.exec("strikeThrough")
}
},
link: {
icon: '<span style="transform:rotate(45deg)">⫘</span>',
name: "link",
attributes: {
style: "font-size:1.4rem;padding:0 4px 2px;",
title: "Link"
},
state: function(t, e) {
return t && t.selection() && g(t) ? 1 : 0
},
result: function(t) {
g(t) ? t.exec("unlink") : t.insertHTML('<a class="link" href="">'.concat(t.selection(), "</a>"))
}
}
},
m = function() {
function t() {
var e = this,
n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
l()(this, t);
var r = n.el;
if (r[p]) return r[p];
r[p] = this, this.setEl(r), this.updateActiveActions = this.updateActiveActions.bind(this);
var i = n.actions || [];
i.forEach(function(t, e) {
"string" == typeof t ? t = v[t] : v[t.name] && (t = f(f({}, v[t.name]), t)), i[e] = t
});
var o = i.length ? i : Object.keys(v).map(function(t) {
return v[t]
});
n.classes = f(f({}, {
actionbar: "actionbar",
button: "action",
active: "active",
disabled: "disabled",
inactive: "inactive"
}), n.classes);
var a = n.classes,
s = n.actionbar;
if (this.actionbar = s, this.settings = n, this.classes = a, this.actions = o, !s) {
var c = n.actionbarContainer;
(s = document.createElement("div")).className = a.actionbar, c.appendChild(s), this.actionbar = s, o.forEach(function(t) {
return e.addAction(t)
})
}
return n.styleWithCSS && this.exec("styleWithCSS"), this.syncActions(), this
}
return u()(t, [{
key: "destroy",
value: function() {
this.el = 0, this.doc = 0, this.actionbar = 0, this.settings = {}, this.classes = {}, this.actions = []
}
}, {
key: "setEl",
value: function(t) {
this.el = t, this.doc = t.ownerDocument
}
}, {
key: "updateActiveActions",
value: function() {
var t = this;
this.getActions().forEach(function(e) {
var n = e.btn,
r = e.update,
i = f({}, t.classes),
o = i.active,
a = i.inactive,
s = i.disabled,
l = e.state,
c = e.name,
u = t.doc;
if (n.className = n.className.replace(o, "").trim(), n.className = n.className.replace(a, "").trim(), n.className = n.className.replace(s, "").trim(), l) switch (l(t, u)) {
case 1:
n.className += " ".concat(o);
break;
case 0:
n.className += " ".concat(a);
break;
case -1:
n.className += " ".concat(s)
} else u.queryCommandSupported(c) && u.queryCommandState(c) && (n.className += " ".concat(o));
r && r(t, e)
})
}
}, {
key: "enable",
value: function() {
return this.enabled || (this.actionbarEl().style.display = "", this.el.contentEditable = !0, Object(d.v)(this.el, "mouseup keyup", this.updateActiveActions), this.syncActions(), this.updateActiveActions(), this.el.focus(), this.enabled = 1), this
}
}, {
key: "disable",
value: function() {
return this.actionbarEl().style.display = "none", this.el.contentEditable = !1, Object(d.u)(this.el, "mouseup keyup", this.updateActiveActions), this.enabled = 0, this
}
}, {
key: "syncActions",
value: function() {
var t = this;
this.getActions().forEach(function(e) {
if (t.settings.actionbar && (!e.state || e.state && e.state(t, t.doc) >= 0)) {
var n = e.event || "click";
e.btn["on".concat(n)] = function(n) {
e.result(t, e), t.updateActiveActions()
}
}
})
}
}, {
key: "addAction",
value: function(t) {
var e = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).sync,
n = document.createElement("span"),
r = t.icon,
i = t.attributes || {};
for (var o in n.className = this.classes.button, t.btn = n, i) n.setAttribute(o, i[o]);
"string" == typeof r ? n.innerHTML = r : n.appendChild(r), this.actionbarEl().appendChild(n), e && (this.actions.push(t), this.syncActions())
}
}, {
key: "getActions",
value: function() {
return this.actions
}
}, {
key: "selection",
value: function() {
return this.doc.getSelection()
}
}, {
key: "exec",
value: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
this.doc.execCommand(t, !1, e)
}
}, {
key: "actionbarEl",
value: function() {
return this.actionbar
}
}, {
key: "insertHTML",
value: function(t) {
var e = this.doc,
n = e.getSelection();
if (n && n.rangeCount) {
var r = e.createElement("div"),
i = n.getRangeAt(0);
i.deleteContents(), r.innerHTML = t, Array.prototype.slice.call(r.childNodes).forEach(function(t) {
i.insertNode(t)
}), n.removeAllRanges(), n.addRange(i), this.el.focus()
}
}
}]), t
}(),
b = {
stylePrefix: "rte-",
adjustToolbar: 1,
actions: ["bold", "italic", "underline", "strikethrough", "link"]
};
function y(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function w(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? y(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : y(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n, r, o, a = {},
s = function() {
var e = t.style,
n = "-1000px";
e.top = n, e.left = n, e.display = "none"
};
return {
customRte: null,
name: "RichTextEditor",
getConfig: function() {
return a
},
init: function() {
var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
r = (a = w(w({}, b), n)).pStylePrefix;
return r && (a.stylePrefix = r + a.stylePrefix), this.pfx = a.stylePrefix, e = a.actions || [], (t = document.createElement("div")).className = "".concat(r, "rte-toolbar ").concat(r, "one-bg"), o = this.initRte(document.createElement("div")), Object(d.v)(t, "mousedown", function(t) {
return t.stopPropagation()
}), this
},
destroy: function() {
var i = this.customRte;
o && o.destroy(), i && i.destroy && i.destroy(), this.actionbar = 0, this.actions = 0, [a, t, e, n, r, o].forEach(function(t) {
return {}
})
},
postRender: function(e) {
var n = e.model.get("Canvas");
t.style.pointerEvents = "all", s(), n.getToolsEl().appendChild(t)
},
initRte: function(e) {
var n = this.pfx,
r = t,
s = this.actionbar,
l = this.actions || i()(a.actions),
c = {
actionbar: "".concat(n, "actionbar"),
button: "".concat(n, "action"),
active: "".concat(n, "active"),
inactive: "".concat(n, "inactive"),
disabled: "".concat(n, "disabled")
},
u = new m({
el: e,
classes: c,
actions: l,
actionbar: s,
actionbarContainer: r
});
return o && o.setEl(e), u.actionbar && (this.actionbar = u.actionbar), u.actions && (this.actions = u.actions), u
},
add: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
e.name = t, o.addAction(e, {
sync: 1
})
},
get: function(t) {
var e;
return o.getActions().forEach(function(n) {
n.name == t && (e = n)
}), e
},
getAll: function() {
return o.getActions()
},
remove: function(t) {
var e = this.getAll(),
n = this.get(t);
if (n) {
var r = n.btn,
i = e.indexOf(n);
r.parentNode.removeChild(r), e.splice(i, 1)
}
return n
},
getToolbarEl: function() {
return t
},
updatePosition: function() {
var e = a.em.get("Canvas"),
r = t.style,
i = e.getTargetToElementFixed(n, t, {
event: "rteToolbarPosUpdate"
});
r.top = i.top + "px", r.left = "0px"
},
enable: function(e, i) {
n = e.el;
var o = a.em.get("Canvas"),
s = a.em,
l = e.getChildrenContainer(),
c = this.customRte;
if (r = o.getElementPos(n), t.style.display = "", i = c ? c.enable(l, i) : this.initRte(l).enable(), s) {
setTimeout(this.updatePosition.bind(this), 0);
var u = "change:canvasOffset canvasScroll frame:scroll component:update";
s.off(u, this.updatePosition, this), s.on(u, this.updatePosition, this), s.trigger("rte:enable", e, i)
}
return i
},
disable: function(t, e) {
var n = a.em,
r = this.customRte,
i = t.getChildrenContainer();
r ? r.disable(i, e) : e && e.disable(), s(), n && n.trigger("rte:disable", t, e)
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(17),
i = n(2),
o = n.n(i),
a = n(1),
s = n.n(a),
l = n(0),
c = n(3);
function u(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function d(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? u(Object(n), !0).forEach(function(e) {
o()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var h = s.a.$,
f = s.a.View.extend({
initialize: function(t) {
this.opt = t || {}, Object(l.bindAll)(this, "startSort", "onMove", "endMove", "rollback", "updateOffset", "moveDragHelper");
var e = t || {};
this.elT = 0, this.elL = 0, this.borderOffset = e.borderOffset || 10;
var n = e.container;
this.el = "string" == typeof n ? document.querySelector(n) : n, this.$el = h(this.el), this.containerSel = e.containerSel || "div", this.itemSel = e.itemSel || "div", this.draggable = e.draggable || !0, this.nested = e.nested || 0, this.pfx = e.pfx || "", this.ppfx = e.ppfx || "", this.freezeClass = e.freezeClass || this.pfx + "freezed", this.onStart = e.onStart || "", this.onEndMove = e.onEndMove || "", this.direction = e.direction || "v", this.onMoveClb = e.onMove || "", this.relative = e.relative || 0, this.ignoreViewChildren = e.ignoreViewChildren || 0, this.ignoreModels = e.ignoreModels || 0, this.plh = e.placer || "", this.wmargin = e.wmargin || 0, this.offTop = e.offsetTop || 0, this.offLeft = e.offsetLeft || 0, this.document = e.document || document, this.$document = h(this.document), this.dropContent = null, this.em = e.em || "", this.dragHelper = null, this.canvasRelative = e.canvasRelative || 0, this.selectOnEnd = !e.avoidSelectOnEnd, this.scale = e.scale, this.activeTextModel = null, this.em && this.em.on && (this.em.on("change:canvasOffset", this.updateOffset), this.updateOffset())
},
getScale: function() {
return Object(l.result)(this, scale) || 1
},
getContainerEl: function(t) {
if (t && (this.el = t), !this.el) {
var e = this.opt.container;
this.el = "string" == typeof e ? document.querySelector(e) : e, this.$el = h(this.el)
}
return this.el
},
getDocuments: function(t) {
var e = this.em,
n = t ? t.ownerDocument : e && e.get("Canvas").getBody().ownerDocument,
r = [document];
return n && r.push(n), r
},
updateOffset: function() {
var t = this.em.get("canvasOffset") || {};
this.offTop = t.top, this.offLeft = t.left
},
setDropContent: function(t) {
this.dropModel = null, this.dropContent = t
},
updateTextViewCursorPosition: function(t) {
var e = this.em.get("Canvas"),
n = e.getDocument(),
r = null;
if (n.caretRangeFromPoint) {
var i = Object(c.h)(t);
r = n.caretRangeFromPoint(i.clientX, i.clientY)
} else t.rangeParent && (r = n.createRange()).setStart(t.rangeParent, t.rangeOffset);
var o = e.getWindow().getSelection();
e.getFrameEl().focus(), o.removeAllRanges(), r && o.addRange(r)
},
setContentEditable: function(t, e) {
if (t) {
var n = t.getEl();
n.contentEditable != e && (n.contentEditable = e)
}
},
toggleSortCursor: function(t) {
var e = this.em,
n = e && e.get("Canvas");
n && (t ? n.startAutoscroll() : n.stopAutoscroll())
},
setDragHelper: function(t, e) {
for (var n = e || "", r = t.cloneNode(1), i = t.getBoundingClientRect(), o = getComputedStyle(t), a = "", s = 0; s < o.length; s++) {
var l = o[s];
a += "".concat(l, ":").concat(o.getPropertyValue(l), ";")
}
document.body.appendChild(r), r.className += " ".concat(this.pfx, "bdrag"), r.setAttribute("style", a), this.dragHelper = r, r.style.width = "".concat(i.width, "px"), r.style.height = "".concat(i.height, "px"), n && this.moveDragHelper(n), this.em && h(this.em.get("Canvas").getBody().ownerDocument).off("mousemove", this.moveDragHelper).on("mousemove", this.moveDragHelper), h(document).off("mousemove", this.moveDragHelper).on("mousemove", this.moveDragHelper)
},
moveDragHelper: function(t) {
var e = t.target.ownerDocument;
if (this.dragHelper && e) {
var n = t.pageY,
r = t.pageX,
i = 0,
o = 0,
a = (e.defaultView || e.parentWindow).frameElement,
s = this.dragHelper.style;
if (a) {
var l = a.getBoundingClientRect();
i = l.top + document.documentElement.scrollTop, o = l.left + document.documentElement.scrollLeft, n = t.clientY, r = t.clientX
}
s.top = n + i + "px", s.left = r + o + "px"
}
},
matches: function(t, e, n) {
return c.s.call(t, e)
},
closest: function(t, e) {
if (t) {
for (var n = t.parentNode; n && 1 === n.nodeType;) {
if (this.matches(n, e)) return n;
n = n.parentNode
}
return null
}
},
offset: function(t) {
var e = t.getBoundingClientRect();
return {
top: e.top + document.body.scrollTop,
left: e.left + document.body.scrollLeft
}
},
createPlaceholder: function() {
var t = this.pfx,
e = document.createElement("div"),
n = document.createElement("div");
return e.className = t + "placeholder", e.style.display = "none", e.style["pointer-events"] = "none", n.className = t + "placeholder-int", e.appendChild(n), e
},
startSort: function(t) {
var e, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = this.em,
i = this.itemSel,
o = this.containerSel,
a = this.getContainerEl(n.container),
s = this.getDocuments(t),
l = this.onStart,
u = this.plh;
this.dropModel = null, this.target = null, this.prevTarget = null, this.moved = 0, t && !this.matches(t, "".concat(i, ", ").concat(o)) && (t = this.closest(t, i)), this.eV = t, u || (u = this.createPlaceholder(), a.appendChild(u), this.plh = u), t && ((e = this.getSourceModel(t)) && e.set && e.set("status", "freezed"), this.srcModel = e), Object(c.v)(a, "mousemove dragover", this.onMove), Object(c.v)(s, "mouseup dragend touchend", this.endMove), Object(c.v)(s, "keydown", this.rollback), l && l({
target: e,
parent: e && e.parent(),
index: e && e.index()
}), r && r.clearSelection(), this.toggleSortCursor(1), r && r.trigger("sorter:drag:start", t, e)
},
getTargetModel: function(t) {
var e = t || this.target;
return h(e).data("model")
},
getSourceModel: function(t) {
var e = this,
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = n.target,
i = n.avoidChildren,
o = void 0 === i ? 1 : i,
a = this.em,
s = this.eV,
l = t || s,
c = this.dropModel,
u = this.dropContent,
f = function(t) {
return t && r && t.opt && t.opt.avoidChildren && e.isTextableActive(t, r)
};
if (u && a) {
if (f(c) && (c = null), !c) {
var p = a.get("DomComponents").getComponents(),
g = {
avoidChildren: o,
avoidStore: 1,
avoidUpdateStyle: 1
},
v = p.add(u, d(d({}, g), {}, {
temporary: 1
}));
if (c = (c = p.remove(v, g)) instanceof Array ? c[0] : c, this.dropModel = c, f(c)) return this.getSourceModel(l, {
target: r,
avoidChildren: 0
})
}
return c
}
return l && h(l).data("model")
},
selectTargetModel: function(t, e) {
if (!(t instanceof s.a.Collection || e && e === t)) {
var n = this.targetModel;
n && n !== this.srcModel && n.set("status", ""), t && t.set && (t.set("status", "selected-parent"), this.targetModel = t)
}
},
onMove: function(t) {
var e = t,
n = this.em,
r = this.onMoveClb,
i = this.plh;
this.moved = 1;
var o = i.style.display;
o && "none" !== o || (i.style.display = "block");
var a = this.offset(this.el);
this.elT = this.wmargin ? Math.abs(a.top) : a.top, this.elL = this.wmargin ? Math.abs(a.left) : a.left;
var s = t.pageY - this.elT + this.el.scrollTop,
c = t.pageX - this.elL + this.el.scrollLeft;
if (this.canvasRelative && n) {
var u = n.get("Canvas").getMouseRelativeCanvas(t, {
noScroll: 1
});
c = u.x, s = u.y
}
this.rX = c, this.rY = s, this.eventMove = t;
var d = this.getSourceModel(),
f = this.dimsFromTarget(t.target, c, s),
p = this.target,
g = p && this.getTargetModel(p);
if (this.selectTargetModel(g, d), g || (i.style.display = "none"), p) {
this.lastDims = f;
var v = this.findPosition(f, c, s);
this.isTextableActive(d, g) ? (this.activeTextModel = g, this.setContentEditable(g, !0), i.style.display = "none", this.lastPos = v, this.updateTextViewCursorPosition(e)) : (this.disableTextable(), this.activeTextModel = null, this.lastPos && this.lastPos.index == v.index && this.lastPos.method == v.method || (this.movePlaceholder(this.plh, f, v, this.prevTargetDim), this.$plh || (this.$plh = h(this.plh)), this.canvasRelative || (this.offTop && this.$plh.css("top", "+=" + this.offTop + "px"), this.offLeft && this.$plh.css("left", "+=" + this.offLeft + "px")), this.lastPos = v)), Object(l.isFunction)(r) && r({
event: t,
target: d,
parent: g,
index: v.index + ("after" == v.method ? 1 : 0)
}), n && n.trigger("sorter:drag", {
target: p,
targetModel: g,
sourceModel: d,
dims: f,
pos: v,
x: c,
y: s
})
}
},
isTextableActive: function(t, e) {
return t && t.get && t.get("textable") && e && e.is("text")
},
disableTextable: function() {
var t = this.activeTextModel;
t && t.getView().disableEditing()
},
isInFlow: function(t, e) {
if (!t) return !1;
e = e || document.body;
var n = t;
return n.offsetHeight, !!this.styleInFlow(n, e)
},
styleInFlow: function(t, e) {
if (!Object(c.r)(t)) {
var n = t.style || {},
r = h(t),
i = e && h(e);
if (!(n.overflow && "visible" !== n.overflow || "none" !== r.css("float") || i && "flex" == i.css("display") && "column" !== i.css("flex-direction"))) {
switch (n.position) {
case "static":
case "relative":
case "":
break;
default:
return
}
switch (t.tagName) {
case "TR":
case "TBODY":
case "THEAD":
case "TFOOT":
return !0
}
switch (r.css("display")) {
case "block":
case "list-item":
case "table":
case "flex":
return !0
}
}
}
},
validTarget: function(t, e) {
var n = this.getTargetModel(t),
r = this.getSourceModel(e, {
target: n
}),
i = {
valid: !0,
src: e = r && r.view && r.view.el,
srcModel: r,
trg: t = n && n.view && n.view.el,
trgModel: n
};
if (!e || !t) return i.valid = !1, i;
var o = r.get("draggable");
o = o instanceof Array ? o.join(", ") : o, i.dragInfo = o, o = Object(l.isString)(o) ? this.matches(t, o) : o, i.draggable = o;
var a = n.get("droppable");
return a = (a = a instanceof s.a.Collection ? 1 : a) instanceof Array ? a.join(", ") : a, i.dropInfo = a, a = Object(l.isString)(a) ? this.matches(e, a) : a, a = o && this.isTextableActive(r, n) ? 1 : a, i.droppable = a, a && o || (i.valid = !1), i
},
dimsFromTarget: function(t, e, n) {
var r = this.em,
i = [];
if (!t) return i;
if (this.matches(t, "".concat(this.itemSel, ", ").concat(this.containerSel)) || (t = this.closest(t, this.itemSel)), this.draggable instanceof Array && (t = this.closest(t, this.draggable.join(","))), !t) return i;
if (this.prevTarget && this.prevTarget != t && (this.prevTarget = null), !this.prevTarget) {
this.targetP = this.closest(t, this.containerSel);
var o = this.validTarget(t);
if (r && r.trigger("sorter:drag:validation", o), !o.valid && this.targetP) return this.dimsFromTarget(this.targetP, e, n);
this.prevTarget = t, this.prevTargetDim = this.getDim(t), this.cacheDimsP = this.getChildrenDim(this.targetP), this.cacheDims = this.getChildrenDim(t)
}
if (this.prevTarget == t && (i = this.cacheDims), this.target = this.prevTarget, this.nearBorders(this.prevTargetDim, e, n) || !this.nested && !this.cacheDims.length) {
var a = this.targetP;
a && this.validTarget(a).valid && (i = this.cacheDimsP, this.target = a)
}
return this.lastPos = null, i
},
getTargetFromEl: function(t) {
var e, n = t,
r = this.targetPrev,
i = this.em,
o = this.containerSel,
a = this.itemSel;
if (this.matches(n, "".concat(a, ", ").concat(o)) || (n = this.closest(n, a)), this.draggable instanceof Array && (n = this.closest(n, this.draggable.join(","))), r && r != n && (this.targetPrev = ""), !this.targetPrev) {
e = this.closest(n, o);
var s = this.validTarget(n);
if (i && i.trigger("sorter:drag:validation", s), !s.valid && e) return this.getTargetFromEl(e);
this.targetPrev = n
}
return this.nearElBorders(n) && (e = this.closest(n, o)) && this.validTarget(e).valid && (n = e), n
},
nearElBorders: function(t) {
var e = t.getBoundingClientRect(),
n = t.ownerDocument.body,
r = this.getCurrentPos(),
i = r.x,
o = r.y,
a = e.top + n.scrollTop,
s = e.left + n.scrollLeft,
l = e.width,
c = e.height;
if (o < a + 10 || o > a + c - 10 || i < s + 10 || i > s + l - 10) return 1
},
getCurrentPos: function() {
var t = this.eventMove;
return {
x: t.pageX || 0,
y: t.pageY || 0
}
},
getDim: function(t) {
var e, n, r, i, o = this.em;
if (this.canvasRelative && o) {
var a = o.get("Canvas"),
s = a.getElementPos(t, {
noScroll: 1
}),
l = a.getElementOffsets(t);
e = s.top - l.marginTop, n = s.left - l.marginLeft, r = s.height + l.marginTop + l.marginBottom, i = s.width + l.marginLeft + l.marginRight
} else {
var c = this.offset(t);
e = this.relative ? t.offsetTop : c.top - (this.wmargin ? -1 : 1) * this.elT, n = this.relative ? t.offsetLeft : c.left - (this.wmargin ? -1 : 1) * this.elL, r = t.offsetHeight, i = t.offsetWidth
}
return [e, n, r, i]
},
getChildrenDim: function(t) {
var e = this,
n = [];
if (!t) return n;
var r = this.getTargetModel(t);
if (r && r.view && !this.ignoreViewChildren) {
var i = r.getCurrentView ? r.getCurrentView() : r.view;
t = i.getChildrenContainer()
}
return Object(l.each)(t.children, function(r, i) {
var o = Object(c.g)(r, h),
a = o && o.index ? o.index() : i;
if (Object(c.r)(r) || e.matches(r, e.itemSel)) {
var s = e.getDim(r),
l = e.direction;
l = "v" == l || "h" != l && e.isInFlow(r, t), s.push(l, r, a), n.push(s)
}
}), n
},
nearBorders: function(t, e, n) {
var r = 0,
i = this.borderOffset,
o = e || 0,
a = n || 0,
s = t[0],
l = t[1],
c = t[2],
u = t[3];
return (s + i > a || a > s + c - i || l + i > o || o > l + u - i) && (r = 1), !!r
},
findPosition: function(t, e, n) {
for (var r = {
index: 0,
indexEl: 0,
method: "before"
}, i = 0, o = 0, a = 0, s = 0, l = 0, c = 0, u = 0, d = 0, h = 0, f = t.length; h < f; h++)
if (a = (d = t[h])[1] + d[3], u = d[0] + d[2], l = d[1] + d[3] / 2, c = d[0] + d[2] / 2, !(o && d[1] > o || s && c >= s || i && a < i))
if (r.index = h, r.indexEl = d[6], d[4]) {
if (n < c) {
r.method = "before";
break
}
r.method = "after"
} else n < u && (s = u), e < l ? (o = l, r.method = "before") : (i = l, r.method = "after");
return r
},
movePlaceholder: function(t, e, n, r) {
var i = 0,
o = 0,
a = 0,
s = 0,
l = "px",
c = n.method,
u = e[n.index];
if (t.classList.remove("vertical"), t.classList.add("horizontal"), u) u[4] ? (a = u[3] + l, s = "auto", i = "before" == c ? u[0] - 0 : u[0] + u[2] - 0, o = u[1]) : (a = "auto", s = u[2] - 0 + l, i = u[0] + 0, o = "before" == c ? u[1] - 0 : u[1] + u[3] - 0, t.classList.remove("horizontal"), t.classList.add("vertical"));
else {
if (!this.nested) return void(t.style.display = "none");
r && (i = r[0] + 5, o = r[1] + 5, a = parseInt(r[3]) - 10 + l, s = "auto")
}
t.style.top = i + l, t.style.left = o + l, a && (t.style.width = a), s && (t.style.height = s)
},
endMove: function(t) {
var e, n = this,
r = this.eV,
i = [],
o = this.getDocuments(),
a = this.getContainerEl(),
s = this.onEndMove,
u = this.target,
h = this.lastPos;
if (Object(c.u)(a, "mousemove dragover", this.onMove), Object(c.u)(o, "mouseup dragend touchend", this.endMove), Object(c.u)(o, "keydown", this.rollback), this.plh.style.display = "none", r && (e = this.getSourceModel(), this.selectOnEnd && e && e.set && (e.set("status", ""), e.set("status", "selected"))), this.moved) {
var f = this.toMove;
(Object(l.isArray)(f) ? f : f ? [f] : [r]).forEach(function(t) {
i.push(n.move(u, t, h))
})
}
this.plh && (this.plh.style.display = "none");
var p = this.dragHelper;
if (p && (p.parentNode.removeChild(p), this.dragHelper = null), this.disableTextable(), this.selectTargetModel(), this.toggleSortCursor(), this.toMove = null, this.eventMove = 0, this.dropModel = null, Object(l.isFunction)(s)) {
var g = {
target: e,
parent: e && e.parent(),
index: e && e.index()
};
i.length ? i.forEach(function(t) {
return s(t, n, g)
}) : s(null, this, d(d({}, g), {}, {
cancelled: 1
}))
}
},
move: function(t, e, n) {
var r = this.em,
i = this.activeTextModel,
o = this.dropContent,
a = Object(c.e)(e);
r && r.trigger("component:dragEnd:before", t, a, n);
var l, u, f, p = [],
g = n.indexEl,
v = this.validTarget(t, a),
m = h(t).data("collection"),
b = v.srcModel,
y = v.droppable,
w = v.draggable,
x = v.dropInfo,
O = v.dragInfo,
C = v.trgModel;
y = C instanceof s.a.Collection ? 1 : y;
var S = this.isTextableActive(b, C);
if (m && y && w) {
var k = {
at: g = "after" === n.method ? g + 1 : g,
noIncrement: 1
};
if (o ? (l = o, k.silent = !1, k.avoidUpdateStyle = 1) : (k.temporary = 1, u = m.add({}, d({}, k)), b.collection && (l = b.collection.remove(b, {
temporary: 1
}))), S) {
var j = i.getView();
i.trigger("active");
var T = j.activeRte,
P = b.getEl();
delete b.opt.temporary, b.getView().render(), P.setAttribute("data-gjs-textable", "true");
var E = P.outerHTML;
T.insertHTML && T.insertHTML(E)
} else f = m.add(l, k);
o ? this.dropContent = null : m.remove(u), this.prevTarget = null
} else m || p.push("Target collection not found"), y || p.push("Target is not droppable, accepts [".concat(x, "]")), w || p.push("Component not draggable, acceptable by [".concat(O, "]")), console.warn("Invalid target position: " + p.join(", "));
return r && r.trigger("component:dragEnd", m, l, p), r && r.trigger("sorter:drag:end", {
targetCollection: m,
modelToDrop: l,
warns: p,
validResult: v,
dst: t,
srcEl: a
}), f
},
rollback: function(t) {
Object(c.u)(this.getDocuments(), "keydown", this.rollback), 27 == (t.which || t.keyCode) && (this.moved = 0, this.endMove())
}
}),
p = n(15),
g = n.n(p),
v = n(16),
m = n.n(v);
function b(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function y(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? b(Object(n), !0).forEach(function(e) {
o()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : b(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var w = {
mousePosFetcher: null,
updateTarget: null,
ratioDefault: 0,
posFetcher: null,
onStart: null,
onMove: null,
onEnd: null,
onUpdateContainer: function() {},
step: 1,
minDim: 32,
maxDim: "",
unitHeight: "px",
unitWidth: "px",
keyHeight: "height",
keyWidth: "width",
currentUnit: 1,
silentFrames: 0,
avoidContainerUpdate: 0,
keepAutoHeight: !1,
keepAutoWidth: !1,
autoHeight: !1,
autoWidth: !1,
tl: 1,
tc: 1,
tr: 1,
cl: 1,
cr: 1,
bl: 1,
bc: 1,
br: 1
},
x = function() {
function t() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
return g()(this, t), this.setOptions(e), Object(l.bindAll)(this, "handleKeyDown", "handleMouseDown", "move", "stop"), this
}
return m()(t, [{
key: "getConfig",
value: function() {
return this.opts
}
}, {
key: "setOptions",
value: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
this.opts = Object(l.defaults)(t, w), this.setup()
}
}, {
key: "setup",
value: function() {
var t = this.opts,
e = t.prefix || "",
n = t.appendTo || document.body,
r = this.container;
for (r || ((r = document.createElement("div")).className = "".concat(e, "resizer-c"), n.appendChild(r), this.container = r); r.firstChild;) r.removeChild(r.firstChild);
var i = {};
for (var o in ["tl", "tc", "tr", "cl", "cr", "bl", "bc", "br"].forEach(function(e) {
return i[e] = t[e] ? function(t, e) {
var n = e.prefix || "",
r = document.createElement("i");
return r.className = n + "resizer-h " + n + "resizer-h-" + t, r.setAttribute("data-" + n + "handler", t), r
}(e, t) : ""
}), i) {
var a = i[o];
a && r.appendChild(a)
}
this.handlers = i, this.mousePosFetcher = t.mousePosFetcher, this.updateTarget = t.updateTarget, this.posFetcher = t.posFetcher, this.onStart = t.onStart, this.onMove = t.onMove, this.onEnd = t.onEnd, this.onUpdateContainer = t.onUpdateContainer
}
}, {
key: "toggleFrames",
value: function(t) {
if (this.opts.silentFrames) {
var e = document.querySelectorAll("iframe");
Object(l.each)(e, function(e) {
return e.style.pointerEvents = t ? "none" : ""
})
}
}
}, {
key: "isHandler",
value: function(t) {
var e = this.handlers;
for (var n in e)
if (e[n] === t) return !0;
return !1
}
}, {
key: "getFocusedEl",
value: function() {
return this.el
}
}, {
key: "getDocumentEl",
value: function() {
return [this.el.ownerDocument, document]
}
}, {
key: "getElementPos",
value: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.posFetcher || "";
return n ? n(t, e) : function(t, e) {
var n = e || window,
r = t.getBoundingClientRect();
return {
left: r.left + n.pageXOffset,
top: r.top + n.pageYOffset,
width: r.width,
height: r.height
}
}(t)
}
}, {
key: "focus",
value: function(t) {
t && t === this.el || (this.el = t, this.updateContainer({
forceShow: 1
}), Object(c.v)(this.getDocumentEl(), "mousedown", this.handleMouseDown))
}
}, {
key: "blur",
value: function() {
this.container.style.display = "none", this.el && (Object(c.u)(this.getDocumentEl(), "mousedown", this.handleMouseDown), this.el = null)
}
}, {
key: "start",
value: function(t) {
if (0 === t.button) {
t.preventDefault(), t.stopPropagation();
var e = this.el,
n = this.opts || {},
r = "data-" + n.prefix + "handler",
i = this.getElementPos(e, {
target: "el"
});
this.handlerAttr = t.target.getAttribute(r), this.clickedHandler = t.target, this.startDim = {
t: i.top,
l: i.left,
w: i.width,
h: i.height
}, this.rectDim = {
t: i.top,
l: i.left,
w: i.width,
h: i.height
}, this.startPos = {
x: t.clientX,
y: t.clientY
};
var o = this.getDocumentEl();
Object(c.v)(o, "mousemove", this.move), Object(c.v)(o, "keydown", this.handleKeyDown), Object(c.v)(o, "mouseup", this.stop), Object(l.isFunction)(this.onStart) && this.onStart(t, {
docs: o,
config: n,
el: e,
resizer: this
}), this.toggleFrames(1), this.move(t)
}
}
}, {
key: "move",
value: function(t) {
var e = this.onMove,
n = this.mousePosFetcher,
r = n ? n(t) : {
x: t.clientX,
y: t.clientY
};
this.currentPos = r, this.delta = {
x: r.x - this.startPos.x,
y: r.y - this.startPos.y
}, this.keys = {
shift: t.shiftKey,
ctrl: t.ctrlKey,
alt: t.altKey
}, this.rectDim = this.calc(this), this.updateRect(0), e && e(t), 0 === t.which && this.stop(t)
}
}, {
key: "stop",
value: function(t) {
var e = this.opts,
n = this.getDocumentEl();
Object(c.u)(n, "mousemove", this.move), Object(c.u)(n, "keydown", this.handleKeyDown), Object(c.u)(n, "mouseup", this.stop), this.updateRect(1), this.toggleFrames(), Object(l.isFunction)(this.onEnd) && this.onEnd(t, {
docs: n,
config: e
})
}
}, {
key: "updateRect",
value: function(t) {
var e = this.el,
n = this.opts,
r = this.rectDim,
i = this.updateTarget,
o = this.getSelectedHandler(),
a = n.unitHeight,
s = n.unitWidth,
c = n.keyWidth,
u = n.keyHeight;
if (Object(l.isFunction)(i)) i(e, r, {
store: t,
selectedHandler: o,
resizer: this,
config: n
});
else {
var d = e.style;
d[c] = r.w + s, d[u] = r.h + a
}
this.updateContainer()
}
}, {
key: "updateContainer",
value: function() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = this.opts,
n = this.container,
r = this.el,
i = n.style;
!e.avoidContainerUpdate && r && t.forceShow && (i.display = "block"), this.onUpdateContainer({
el: n,
resizer: this,
opts: y(y({}, e), t)
})
}
}, {
key: "getSelectedHandler",
value: function() {
var t = this.handlers;
if (this.selectedHandler)
for (var e in t)
if (t[e] === this.selectedHandler) return e
}
}, {
key: "handleKeyDown",
value: function(t) {
27 === t.keyCode && (this.rectDim = this.startDim, this.stop(t))
}
}, {
key: "handleMouseDown",
value: function(t) {
var e = t.target;
this.isHandler(e) ? (this.selectedHandler = e, this.start(t)) : e !== this.el && (this.selectedHandler = "", this.blur())
}
}, {
key: "calc",
value: function(t) {
var e, n = this.opts || {},
r = n.step,
i = this.startDim,
o = n.minDim,
a = n.maxDim,
s = t.delta.x,
l = t.delta.y,
u = i.w,
d = i.h,
h = {
t: 0,
l: 0,
w: u,
h: d
};
if (t) {
var f = t.handlerAttr;
~f.indexOf("r") && (e = Object(c.t)(u + s * r, r), e = Math.max(o, e), a && (e = Math.min(a, e)), h.w = e), ~f.indexOf("b") && (e = Object(c.t)(d + l * r, r), e = Math.max(o, e), a && (e = Math.min(a, e)), h.h = e), ~f.indexOf("l") && (e = Object(c.t)(u - s * r, r), e = Math.max(o, e), a && (e = Math.min(a, e)), h.w = e), ~f.indexOf("t") && (e = Object(c.t)(d - l * r, r), e = Math.max(o, e), a && (e = Math.min(a, e)), h.h = e);
var p = n.ratioDefault ? !t.keys.shift : t.keys.shift;
if (f.indexOf("c") < 0 && p) {
var g = i.w / i.h;
h.w / h.h > g ? h.h = Math.round(h.w / g) : h.w = Math.round(h.h * g)
}
return ~f.indexOf("l") && (h.l = i.w - h.w), ~f.indexOf("t") && (h.t = i.h - h.h), h
}
}
}]), t
}(),
O = {
init: function(t) {
return new x(t)
}
};
e.default = function() {
return {
name: "Utils",
init: function() {
return this
},
destroy: function() {},
Sorter: f,
Resizer: O,
Dragger: r.a
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(7),
i = n.n(r),
o = n(2),
a = n.n(o),
s = n(0),
l = n(22),
c = {
stylePrefix: "com-",
defaults: [],
strict: 1
},
u = n(5);
function d(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function h(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? d(Object(n), !0).forEach(function(e) {
a()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
var f = [
["preview", "Preview", "preview"],
["resize", "Resize", "resize"],
["fullscreen", "Fullscreen", "fullscreen"],
["copy", "CopyComponent"],
["paste", "PasteComponent"],
["canvas-move", "CanvasMove"],
["canvas-clear", "CanvasClear"],
["open-code", "ExportTemplate", "export-template"],
["open-layers", "OpenLayers", "open-layers"],
["open-styles", "OpenStyleManager", "open-sm"],
["open-traits", "OpenTraitManager", "open-tm"],
["open-blocks", "OpenBlocks", "open-blocks"],
["open-assets", "OpenAssets", "open-assets"],
["component-select", "SelectComponent", "select-comp"],
["component-outline", "SwitchVisibility", "sw-visibility"],
["component-offset", "ShowOffset", "show-offset"],
["component-move", "MoveComponent", "move-comp"],
["component-next", "ComponentNext"],
["component-prev", "ComponentPrev"],
["component-enter", "ComponentEnter"],
["component-exit", "ComponentExit", "select-parent"],
["component-delete", "ComponentDelete"],
["component-style-clear", "ComponentStyleClear"],
["component-drag", "ComponentDrag"]
];
e.default = function() {
var t, e = {},
r = {},
o = {},
a = {};
return {
CommandAbstract: l.default,
name: "Commands",
init: function() {
var r = this,
a = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
e = h(h({}, c), a), t = e.em;
var l = e.pStylePrefix;
return l && (e.stylePrefix = l + e.stylePrefix), Object.keys(e.defaults).forEach(function(t) {
var n = e.defaults[t];
n.id && r.add(n.id, n)
}), o["tlb-delete"] = {
run: function(t) {
return t.runCommand("core:component-delete")
}
}, o["tlb-clone"] = {
run: function(t) {
t.runCommand("core:copy"), t.runCommand("core:paste")
}
}, o["tlb-move"] = {
run: function(t, e) {
var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
r = t.getModel(),
o = n && n.event,
a = n.target,
l = a || t.getSelected(),
c = a ? [a] : i()(t.getSelectedAll()),
d = o && "dragstart" == o.type,
h = {
preserveSelected: 1
},
f = l.get("dmode") || r.get("dmode"),
p = function() {
return r.stopDefault(h)
},
g = Object(s.includes)(["absolute", "translate"], f);
if (c.forEach(function(t) {
return t.trigger("disable")
}), !l || !l.get("draggable")) return r.logWarning("The element is not draggable");
d ? setTimeout(p, 0) : p();
var v = function(t) {
r.trigger("".concat(u.eventDrag, ":start"), t)
},
m = function(t) {
r.trigger(u.eventDrag, t)
},
b = function(e, n, i) {
r.runDefault(h), c.forEach(function(t) {
return t.set("status", "selected")
}), t.select(c), l.emitUpdate(), r.trigger("".concat(u.eventDrag, ":end"), i), (g || i.cancelled) && r.set("_cmpDrag", 1)
};
if (g) t.runCommand("core:component-drag", {
guidesInfo: 1,
mode: f,
target: l,
onStart: v,
onDrag: m,
onEnd: b,
event: o
});
else {
d && o.dataTransfer.setDragImage(l.view.el, 0, 0);
var y = t.Commands.get("move-comp");
y.onStart = v, y.onDrag = m, y.onEndMoveFromModel = b, y.initSorterFromModels(c)
}
c.forEach(function(t) {
return t.set("status", "freezed-selected")
})
}
}, o["core:undo"] = function(t) {
return t.UndoManager.undo()
}, o["core:redo"] = function(t) {
return t.UndoManager.redo()
}, f.forEach(function(e) {
var r = e[2],
i = n(91)("./".concat(e[1])).default,
a = "core:".concat(e[0]);
o[a] = i, r && (o[r] = i, ["run", "stop"].forEach(function(e) {
t.on("".concat(e, ":").concat(r), function() {
for (var n, r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
return (n = t).trigger.apply(n, ["".concat(e, ":").concat(a)].concat(i))
})
}))
}), e.em && (e.model = e.em.get("Canvas")), this.loadDefaultCommands(), this
},
add: function(t, e) {
return Object(s.isFunction)(e) && (e = {
run: e
}), e.stop || (e.noStop = 1), delete e.initialize, e.id = t, r[t] = l.default.extend(e), this
},
get: function(n) {
var i = r[n];
return Object(s.isFunction)(i) ? (i = new i(e), r[n] = i) : i || t.logWarning("'".concat(n, "' command not found")), i
},
extend: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = this.get(t);
if (n) {
var r = h(h({}, n.constructor.prototype), e);
this.add(t, r);
var i = f.filter(function(e) {
return "core:".concat(e[0]) === t && e[2]
})[0];
i && this.add(i[2], r)
}
return this
},
has: function(t) {
return !!r[t]
},
getAll: function() {
return r
},
run: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return this.runCommand(this.get(t), e)
},
stop: function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
return this.stopCommand(this.get(t), e)
},
isActive: function(t) {
return this.getActive().hasOwnProperty(t)
},
getActive: function() {
return a
},
loadDefaultCommands: function() {
for (var t in o) this.add(t, o[t]);
return this
},
runCommand: function(n) {
var r, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (n && n.run) {
var o = n.id,
s = t.get("Editor");
this.isActive(o) && !i.force && e.strict || (r = n.callRun(s, i), o && n.stop && !n.noStop && !i.abort && (a[o] = r))
}
return r
},
stopCommand: function(n) {
var r, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (n && n.run) {
var o = n.id,
s = t.get("Editor");
(this.isActive(o) || i.force || !e.strict) && (o && delete a[o], r = n.callStop(s, i))
}
return r
},
create: function(t) {
return t.stop || (t.noStop = 1), new(l.default.extend(t))(e)
},
destroy: function() {
[t, e, r, o, a].forEach(function(t) {
return {}
})
}
}
}
}, function(t, e, n) {
"use strict";
n.r(e);
var r = n(2),
i = n.n(r),
o = n(0),
a = {
stylePrefix: "css-",
staticRules: "",
rules: []
},
s = n(34),
l = n(33),
c = n(37),
u = n(12),
d = n(10);
function h(t, e) {
var n = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(t);
e && (r = r.filter(function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
})), n.push.apply(n, r)
}
return n
}
function f(t) {
for (var e = 1; e < arguments.length; e++) {
var n = null != arguments[e] ? arguments[e] : {};
e % 2 ? h(Object(n), !0).forEach(function(e) {
i()(t, e, n[e])
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach(function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
})
}
return t
}
e.default = function() {
var t, e, n, r = {};
return {
Selectors: u.a,
name: "CssComposer",
getConfig: function() {
return r
},
storageKey: function() {
var t = [],
e = r.stm && r.stm.getConfig() || {};
return e.storeCss && t.push("css"), e.storeStyles && t.push("styles"), t
},
init: function(i) {
for (var o in r = i || {}, a) o in r || (r[o] = a[o]);
var s = r.pStylePrefix;
s && (r.stylePrefix = s + r.stylePrefix);
var u = r.em && r.em.config.style || "";
return r.rules = u || r.rules, t = r.em, e = new l.a([], r), n = new c.a({
collection: e,
config: r
}), this
},
onLoad: function() {
e.add(r.rules)
},
postLoad: function(t) {
var e = this,
n = "add remove",
r = this.getAll(),
i = t.get("UndoManager");
i && i.add(r), t.stopListening(r, n, this.handleChange), t.listenTo(r, n, this.handleChange), r.each(function(t) {
return e.handleChange(t, null, {
avoidStore: 1
})
})
},
handleChange: function(e, n) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = "change:style",
o = t.get("UndoManager");
o && o.add(e);
var a = t.handleUpdates.bind(t);
t.stopListening(e, i, a), t.listenTo(e, i, a), !r.avoidStore && a("", "", r)
},
load: function(t) {
var n = t || "";
!n && r.stm && (n = r.em.getCacheLoad());
var i = n.styles || "";
if (n.styles) try {
i = JSON.parse(n.styles)
} catch (t) {} else n.css && (i = r.em.get("Parser").parseCss(n.css));
return Object(o.isArray)(i) ? i.length && e.reset(i) : i && e.reset(i), i
},
store: function(t) {
if (r.stm) {
var n = {},
i = this.storageKey();
return i.indexOf("css") >= 0 && (n.css = r.em.getCss()), i.indexOf("styles") >= 0 && (n.styles = JSON.stringify(e)), t || r.stm.store(n), n
}
},
add: function(t, n, i) {
var o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
a = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {},
l = n || "",
c = i || "",
u = f({}, o),
d = this.get(t, l, c, u);
return d && d.config && !d.config.singleAtRule || (u.state = l, u.mediaText = c, u.selectors = [], (d = new s.a(u, r)).get("selectors").add(t, a), e.add(d, a)), d
},
get: function(t, n, r, i) {
var o = null;
return e.each(function(e) {
o || e.compare(t, n, r, i) && (o = e)
}), o
},
getAll: function() {
return e
},
clear: function() {
return this.getAll().reset(), this
},
addCollection: function(t) {
for (var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = [], i = t instanceof Array ? t : [t], o = 0, a = i.length; o < a; o++) {
var s = i[o] || {};
if (s.selectors) {
var l = r.em && r.em.get("SelectorManager");
l || console.warn("Selector Manager not found");
for (var c = s.selectors, u = c instanceof Array ? c : [c], d = [], h = 0, p = u.length; h < p; h++) {
var g = l.add(u[h]);
d.push(g)
}
var v = this.get(d, s.state, s.mediaText, s),
m = this.add(d, s.state, s.mediaText, s),
b = !v || !e.avoidUpdateStyle,
y = s.style || {};
if (b) {
var w = e.extend ? f(f({}, m.get("style")), y) : y;
m.set("style", w)
}
n.push(m)
}
}
return n
},
setRule: function(e, n) {
var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = r.atRuleType,
o = r.atRuleParams,
a = t.get("Parser").parserCss.checkNode({
selectors: e,
style: n
})[0],
s = a.state,
l = a.selectorsAdd,
c = t.get("SelectorManager").add(a.selectors),
u = this.add(c, s, o, {
selectorsAdd: l,
atRule: i
});
return u.setStyle(n, r), u
},
getRule: function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = t.get("SelectorManager"),
i = t.get("Parser").parserCss.checkNode({
selectors: e
})[0],
o = r.get(i.selectors),
a = i.state,
s = i.selectorsAdd,
l = n.atRuleType,
c = n.atRuleParams;
return o && this.get(o, a, c, {
selectorsAdd: s,
atRule: l
})
},
getRules: function(t) {
return this.getAll().filter(function(e) {
return e.getSelectors().getFullString() === t
})
},
setIdRule: function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = r.addOpts,
o = void 0 === i ? {} : i,
a = r.state || "",
s = r.mediaText || t.getCurrentMedia(),
l = t.get("SelectorManager").add({
name: e,
type: d.a.TYPE_ID
}, o),
c = this.add(l, a, s, {}, o);
return c.setStyle(n, f(f({}, r), o)), c
},
getIdRule: function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = n.state || "",
i = n.mediaText || t.getCurrentMedia(),
o = t.get("SelectorManager").get(e, d.a.TYPE_ID);
return o && this.get(o, r, i)
},
setClassRule: function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
i = r.state || "",
o = r.mediaText || t.getCurrentMedia(),
a = t.get("SelectorManager").add({
name: e,
type: d.a.TYPE_CLASS
}),
s = this.add(a, i, o);
return s.setStyle(n, r), s
},
getClassRule: function(e) {
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
r = n.state || "",
i = n.mediaText || t.getCurrentMedia(),
o = t.get("SelectorManager").get(e, d.a.TYPE_CLASS);
return o && this.get(o, r, i)
},
render: function() {
return n.render().el
},
destroy: function() {
e.reset(), e.stopListening(), n.remove(), [t, e, n].forEach(function(t) {
return null
}), r = {}
}
}
}
}]).default
});