mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-20 08:40:36 +03:00
improve tests and code
This commit is contained in:
+507
-510
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+193
-192
@@ -339,11 +339,11 @@
|
|||||||
};
|
};
|
||||||
var M = [ "-webkit-", "-moz-", "-o-", "-ms-" ];
|
var M = [ "-webkit-", "-moz-", "-o-", "-ms-" ];
|
||||||
var P = [ "WebKit", "Moz", "O", "MS", "webkit", "moz", "o", "ms" ];
|
var P = [ "WebKit", "Moz", "O", "MS", "webkit", "moz", "o", "ms" ];
|
||||||
var F = {};
|
|
||||||
var R = {};
|
var R = {};
|
||||||
var N = function cssProperty(r) {
|
var N = {};
|
||||||
var a = R[r];
|
var F = function cssProperty(r) {
|
||||||
if (s(R, r)) {
|
var a = N[r];
|
||||||
|
if (s(N, r)) {
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
var e = I(r);
|
var e = I(r);
|
||||||
@@ -355,25 +355,25 @@
|
|||||||
return void 0 !== t[r];
|
return void 0 !== t[r];
|
||||||
})));
|
})));
|
||||||
}));
|
}));
|
||||||
return R[r] = a || "";
|
return N[r] = a || "";
|
||||||
};
|
};
|
||||||
var j = function jsAPI(r) {
|
var j = function jsAPI(r) {
|
||||||
var a = F[r] || window[r];
|
var a = R[r] || window[r];
|
||||||
if (s(F, r)) {
|
if (s(R, r)) {
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
each(P, (function(e) {
|
each(P, (function(e) {
|
||||||
a = a || window[e + I(r)];
|
a = a || window[e + I(r)];
|
||||||
return !a;
|
return !a;
|
||||||
}));
|
}));
|
||||||
F[r] = a;
|
R[r] = a;
|
||||||
return a;
|
return a;
|
||||||
};
|
};
|
||||||
var B = j("MutationObserver");
|
var V = j("MutationObserver");
|
||||||
var V = j("IntersectionObserver");
|
var B = j("IntersectionObserver");
|
||||||
var k = j("ResizeObserver");
|
var k = j("ResizeObserver");
|
||||||
var H = j("cancelAnimationFrame");
|
var U = j("cancelAnimationFrame");
|
||||||
var U = j("requestAnimationFrame");
|
var H = j("requestAnimationFrame");
|
||||||
var q = /[^\x20\t\r\n\f]+/g;
|
var q = /[^\x20\t\r\n\f]+/g;
|
||||||
var W = function classListAction(r, a, e) {
|
var W = function classListAction(r, a, e) {
|
||||||
var t;
|
var t;
|
||||||
@@ -434,7 +434,7 @@
|
|||||||
};
|
};
|
||||||
var rr = function clearTimeouts(r) {
|
var rr = function clearTimeouts(r) {
|
||||||
r && window.clearTimeout(r);
|
r && window.clearTimeout(r);
|
||||||
r && H(r);
|
r && U(r);
|
||||||
};
|
};
|
||||||
var ar = function noop() {};
|
var ar = function noop() {};
|
||||||
var er = function debounce(r, a) {
|
var er = function debounce(r, a) {
|
||||||
@@ -465,7 +465,7 @@
|
|||||||
if (v) {
|
if (v) {
|
||||||
var s = isFunction(f) ? f() : f;
|
var s = isFunction(f) ? f() : f;
|
||||||
var p = isNumber(s) && s >= 0;
|
var p = isNumber(s) && s >= 0;
|
||||||
var h = a > 0 ? c : U;
|
var h = a > 0 ? c : H;
|
||||||
var w = d(r);
|
var w = d(r);
|
||||||
var y = w || r;
|
var y = w || r;
|
||||||
var m = l.bind(0, y);
|
var m = l.bind(0, y);
|
||||||
@@ -693,15 +693,15 @@
|
|||||||
var Tr = Ir + "-flexbox-glue";
|
var Tr = Ir + "-flexbox-glue";
|
||||||
var Mr = Tr + "-max";
|
var Mr = Tr + "-max";
|
||||||
var Pr = "data-overlayscrollbars";
|
var Pr = "data-overlayscrollbars";
|
||||||
var Fr = Pr + "-overflow-x";
|
var Rr = Pr + "-overflow-x";
|
||||||
var Rr = Pr + "-overflow-y";
|
var Nr = Pr + "-overflow-y";
|
||||||
var Nr = "overflowVisible";
|
var Fr = "overflowVisible";
|
||||||
var jr = "viewportStyled";
|
var jr = "viewportStyled";
|
||||||
var Br = "os-padding";
|
var Vr = "os-padding";
|
||||||
var Vr = "os-viewport";
|
var Br = "os-viewport";
|
||||||
var kr = Vr + "-arrange";
|
var kr = Br + "-arrange";
|
||||||
var Hr = "os-content";
|
var Ur = "os-content";
|
||||||
var Ur = Vr + "-scrollbar-styled";
|
var Hr = Br + "-scrollbar-styled";
|
||||||
var qr = "os-overflow-visible";
|
var qr = "os-overflow-visible";
|
||||||
var Wr = "os-size-observer";
|
var Wr = "os-size-observer";
|
||||||
var Gr = Wr + "-appear";
|
var Gr = Wr + "-appear";
|
||||||
@@ -791,9 +791,9 @@
|
|||||||
};
|
};
|
||||||
var ca = function getNativeScrollbarStyling(r) {
|
var ca = function getNativeScrollbarStyling(r) {
|
||||||
var a = false;
|
var a = false;
|
||||||
var e = Y(r, Ur);
|
var e = Y(r, Hr);
|
||||||
try {
|
try {
|
||||||
a = "none" === style(r, N("scrollbar-width")) || "none" === window.getComputedStyle(r, "::-webkit-scrollbar").getPropertyValue("display");
|
a = "none" === style(r, F("scrollbar-width")) || "none" === window.getComputedStyle(r, "::-webkit-scrollbar").getPropertyValue("display");
|
||||||
} catch (t) {}
|
} catch (t) {}
|
||||||
e();
|
e();
|
||||||
return a;
|
return a;
|
||||||
@@ -833,13 +833,7 @@
|
|||||||
var a = window.screen.logicalXDPI || 1;
|
var a = window.screen.logicalXDPI || 1;
|
||||||
return window.devicePixelRatio || r / a;
|
return window.devicePixelRatio || r / a;
|
||||||
};
|
};
|
||||||
var pa = function getDefaultInitializationStrategy(r) {
|
var pa = function createEnvironment() {
|
||||||
return {
|
|
||||||
A: !r,
|
|
||||||
D: false
|
|
||||||
};
|
|
||||||
};
|
|
||||||
var ha = function createEnvironment() {
|
|
||||||
var r = document, a = r.body;
|
var r = document, a = r.body;
|
||||||
var e = L('<div class="' + Ir + '"><div></div></div>');
|
var e = L('<div class="' + Ir + '"><div></div></div>');
|
||||||
var t = e[0];
|
var t = e[0];
|
||||||
@@ -855,7 +849,10 @@
|
|||||||
x: 0 === l.x,
|
x: 0 === l.x,
|
||||||
y: 0 === l.y
|
y: 0 === l.y
|
||||||
};
|
};
|
||||||
var h = pa(d);
|
var h = {
|
||||||
|
A: !d,
|
||||||
|
D: false
|
||||||
|
};
|
||||||
var w = assignDeep({}, na);
|
var w = assignDeep({}, na);
|
||||||
var y = {
|
var y = {
|
||||||
L: l,
|
L: l,
|
||||||
@@ -863,20 +860,20 @@
|
|||||||
T: d,
|
T: d,
|
||||||
M: "-1" === style(t, "zIndex"),
|
M: "-1" === style(t, "zIndex"),
|
||||||
P: la(t, n),
|
P: la(t, n),
|
||||||
F: da(t, n),
|
R: da(t, n),
|
||||||
R: function _addListener(r) {
|
N: function _addListener(r) {
|
||||||
return v("_", r);
|
return v("_", r);
|
||||||
},
|
},
|
||||||
N: assignDeep.bind(0, {}, h),
|
F: assignDeep.bind(0, {}, h),
|
||||||
j: function _setInitializationStrategy(r) {
|
j: function _setInitializationStrategy(r) {
|
||||||
assignDeep(h, r);
|
assignDeep(h, r);
|
||||||
},
|
},
|
||||||
B: assignDeep.bind(0, {}, w),
|
V: assignDeep.bind(0, {}, w),
|
||||||
V: function _setDefaultOptions(r) {
|
B: function _setDefaultOptions(r) {
|
||||||
assignDeep(w, r);
|
assignDeep(w, r);
|
||||||
},
|
},
|
||||||
k: assignDeep({}, h),
|
k: assignDeep({}, h),
|
||||||
H: assignDeep({}, w)
|
U: assignDeep({}, w)
|
||||||
};
|
};
|
||||||
g(t, "style");
|
g(t, "style");
|
||||||
E(t);
|
E(t);
|
||||||
@@ -919,20 +916,24 @@
|
|||||||
}
|
}
|
||||||
return y;
|
return y;
|
||||||
};
|
};
|
||||||
var wa = function getEnvironment() {
|
var ha = function getEnvironment() {
|
||||||
if (!va) {
|
if (!va) {
|
||||||
va = ha();
|
va = pa();
|
||||||
}
|
}
|
||||||
return va;
|
return va;
|
||||||
};
|
};
|
||||||
|
var wa = function resolveInitialization(r, a) {
|
||||||
|
return isFunction(r) ? r.apply(0, a) : r;
|
||||||
|
};
|
||||||
var ya = function staticInitializationElement(r, a, e, t) {
|
var ya = function staticInitializationElement(r, a, e, t) {
|
||||||
var n = t || (isFunction(e) ? e.apply(0, r) : e);
|
return wa(t || wa(e, r), r) || a.apply(0, r);
|
||||||
return (isFunction(n) ? n.apply(0, r) : n) || a.apply(0, r);
|
|
||||||
};
|
};
|
||||||
var ma = function dynamicInitializationElement(r, a, e, t) {
|
var ma = function dynamicInitializationElement(r, a, e, t) {
|
||||||
var n = isBoolean(t) || !!t;
|
var n = wa(t, r);
|
||||||
var i = n ? t : isFunction(e) ? e.apply(0, r) : e;
|
if (isNull(n) || isUndefined(n)) {
|
||||||
return true === i || isNull(i) || isUndefined(i) || isFunction(i) ? a.apply(0, r) : i;
|
n = wa(e, r);
|
||||||
|
}
|
||||||
|
return true === n || isNull(n) || isUndefined(n) ? a.apply(0, r) : n;
|
||||||
};
|
};
|
||||||
var ba = 0;
|
var ba = 0;
|
||||||
var _a = z.bind(0, "");
|
var _a = z.bind(0, "");
|
||||||
@@ -941,7 +942,7 @@
|
|||||||
E(r);
|
E(r);
|
||||||
};
|
};
|
||||||
var Ca = function createUniqueViewportArrangeElement() {
|
var Ca = function createUniqueViewportArrangeElement() {
|
||||||
var r = wa(), a = r.T, e = r.I, t = r.M;
|
var r = ha(), a = r.T, e = r.I, t = r.M;
|
||||||
var n = !t && !a && (e.x || e.y);
|
var n = !t && !a && (e.x || e.y);
|
||||||
var i = n ? document.createElement("style") : false;
|
var i = n ? document.createElement("style") : false;
|
||||||
if (i) {
|
if (i) {
|
||||||
@@ -951,12 +952,12 @@
|
|||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
var Oa = function addDataAttrHost(r, a) {
|
var Oa = function addDataAttrHost(r, a) {
|
||||||
attr(r, Pr, a || "");
|
attr(r, Pr, a);
|
||||||
return g.bind(0, r, Pr);
|
return g.bind(0, r, Pr);
|
||||||
};
|
};
|
||||||
var Aa = function createStructureSetupElements(r) {
|
var Aa = function createStructureSetupElements(r) {
|
||||||
var a = wa(), e = a.N, t = a.T;
|
var a = ha(), e = a.F, t = a.T;
|
||||||
var n = e(), o = n.U, u = n.q, s = n.A, p = n.D;
|
var n = e(), o = n.H, u = n.q, s = n.A, p = n.D;
|
||||||
var h = isHTMLElement(r);
|
var h = isHTMLElement(r);
|
||||||
var w = r;
|
var w = r;
|
||||||
var _ = h ? r : w.target;
|
var _ = h ? r : w.target;
|
||||||
@@ -965,19 +966,19 @@
|
|||||||
var A = _.ownerDocument;
|
var A = _.ownerDocument;
|
||||||
var z = A.body;
|
var z = A.body;
|
||||||
var L = A.defaultView;
|
var L = A.defaultView;
|
||||||
var I = !!k && t;
|
var I = !!k && !S && t;
|
||||||
var T = ya.bind(0, [ _ ]);
|
var T = ya.bind(0, [ _ ]);
|
||||||
var M = ma.bind(0, [ _ ]);
|
var M = ma.bind(0, [ _ ]);
|
||||||
var P = T(_a, u, w.viewport);
|
var P = [ T(_a, u, w.viewport), T(_a, u), T(_a) ].filter((function(r) {
|
||||||
var F = P === _;
|
return !I ? r !== _ : true;
|
||||||
var R = I && F;
|
}))[0];
|
||||||
var N = F && !R ? T(_a) : P;
|
var R = P === _;
|
||||||
var j = {
|
var N = {
|
||||||
W: _,
|
W: _,
|
||||||
U: S ? T(_a, o, w.host) : _,
|
H: S ? T(_a, o, w.host) : _,
|
||||||
q: N,
|
q: P,
|
||||||
A: M(_a, s, w.padding),
|
A: !R && M(_a, s, w.padding),
|
||||||
D: M(_a, p, w.content),
|
D: !R && M(_a, p, w.content),
|
||||||
G: !R && Ca(),
|
G: !R && Ca(),
|
||||||
X: L,
|
X: L,
|
||||||
Y: A,
|
Y: A,
|
||||||
@@ -988,72 +989,72 @@
|
|||||||
rr: h,
|
rr: h,
|
||||||
ar: R,
|
ar: R,
|
||||||
er: function _viewportHasClass(r, a) {
|
er: function _viewportHasClass(r, a) {
|
||||||
return R ? d(N, Pr, a) : G(N, r);
|
return R ? d(P, Pr, a) : G(P, r);
|
||||||
},
|
},
|
||||||
tr: function _viewportAddRemoveClass(r, a, e) {
|
tr: function _viewportAddRemoveClass(r, a, e) {
|
||||||
return R ? l(N, Pr, a, e) : (e ? Y : X)(N, r);
|
return R ? l(P, Pr, a, e) : (e ? Y : X)(P, r);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var B = c(j).reduce((function(r, a) {
|
var F = c(N).reduce((function(r, a) {
|
||||||
var e = j[a];
|
var e = N[a];
|
||||||
return v(r, e && !b(e) ? e : false);
|
return v(r, e && !b(e) ? e : false);
|
||||||
}), []);
|
}), []);
|
||||||
var V = function elementIsGenerated(r) {
|
var j = function elementIsGenerated(r) {
|
||||||
return r ? i(B, r) > -1 : null;
|
return r ? i(F, r) > -1 : null;
|
||||||
};
|
};
|
||||||
var H = j.W, U = j.U, q = j.A, W = j.q, $ = j.D, J = j.G;
|
var V = N.W, B = N.H, U = N.A, H = N.q, q = N.D, W = N.G;
|
||||||
var K = [];
|
var $ = [];
|
||||||
var Z = S && V(U);
|
var J = S && j(B);
|
||||||
var Q = S ? H : m([ $, W, q, U, H ].find((function(r) {
|
var K = S ? V : m([ q, H, U, B, V ].find((function(r) {
|
||||||
return false === V(r);
|
return false === j(r);
|
||||||
})));
|
})));
|
||||||
var rr = $ || W;
|
var Z = q || H;
|
||||||
var ar = Oa(U, R ? "viewport" : "host");
|
var Q = Oa(B, R ? "viewport" : "host");
|
||||||
var er = Y(q, Br);
|
var rr = Y(U, Vr);
|
||||||
var tr = Y(W, !R && Vr);
|
var ar = Y(H, !R && Br);
|
||||||
var nr = Y($, Hr);
|
var er = Y(q, Ur);
|
||||||
if (Z) {
|
if (J) {
|
||||||
D(H, U);
|
D(V, B);
|
||||||
v(K, (function() {
|
v($, (function() {
|
||||||
D(U, H);
|
D(B, V);
|
||||||
E(U);
|
E(B);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
O(rr, Q);
|
O(Z, K);
|
||||||
O(U, q);
|
O(B, U);
|
||||||
O(q || U, !R && W);
|
O(U || B, !R && H);
|
||||||
O(W, $);
|
O(H, q);
|
||||||
v(K, (function() {
|
v($, (function() {
|
||||||
ar();
|
Q();
|
||||||
g(W, Fr);
|
g(H, Rr);
|
||||||
g(W, Rr);
|
g(H, Nr);
|
||||||
if (V($)) {
|
if (j(q)) {
|
||||||
Sa($);
|
|
||||||
}
|
|
||||||
if (V(W)) {
|
|
||||||
Sa(W);
|
|
||||||
}
|
|
||||||
if (V(q)) {
|
|
||||||
Sa(q);
|
Sa(q);
|
||||||
}
|
}
|
||||||
|
if (j(H)) {
|
||||||
|
Sa(H);
|
||||||
|
}
|
||||||
|
if (j(U)) {
|
||||||
|
Sa(U);
|
||||||
|
}
|
||||||
|
rr();
|
||||||
|
ar();
|
||||||
er();
|
er();
|
||||||
tr();
|
|
||||||
nr();
|
|
||||||
}));
|
}));
|
||||||
if (t && !R) {
|
if (t && !R) {
|
||||||
v(K, X.bind(0, W, Ur));
|
v($, X.bind(0, H, Hr));
|
||||||
}
|
}
|
||||||
if (J) {
|
if (W) {
|
||||||
x(W, J);
|
x(H, W);
|
||||||
v(K, E.bind(0, J));
|
v($, E.bind(0, W));
|
||||||
}
|
}
|
||||||
return [ j, f.bind(0, K) ];
|
return [ N, f.bind(0, $) ];
|
||||||
};
|
};
|
||||||
var xa = function createTrinsicUpdate(r, a) {
|
var xa = function createTrinsicUpdate(r, a) {
|
||||||
var e = r.D;
|
var e = r.D;
|
||||||
var t = a[0];
|
var t = a[0];
|
||||||
return function(r) {
|
return function(r) {
|
||||||
var a = wa(), n = a.F;
|
var a = ha(), n = a.R;
|
||||||
var i = t(), v = i.nr;
|
var i = t(), v = i.nr;
|
||||||
var o = r.ir;
|
var o = r.ir;
|
||||||
var u = (e || !n) && o;
|
var u = (e || !n) && o;
|
||||||
@@ -1070,14 +1071,14 @@
|
|||||||
};
|
};
|
||||||
var Da = function createPaddingUpdate(r, a) {
|
var Da = function createPaddingUpdate(r, a) {
|
||||||
var e = a[0], t = a[1];
|
var e = a[0], t = a[1];
|
||||||
var n = r.U, i = r.A, v = r.q, o = r.ar;
|
var n = r.H, i = r.A, v = r.q, o = r.ar;
|
||||||
var u = createCache({
|
var u = createCache({
|
||||||
o: Z,
|
o: Z,
|
||||||
v: ur()
|
v: ur()
|
||||||
}, ur.bind(0, n, "padding", "")), f = u[0], s = u[1];
|
}, ur.bind(0, n, "padding", "")), f = u[0], s = u[1];
|
||||||
return function(r, a, n) {
|
return function(r, a, n) {
|
||||||
var u = s(n), c = u[0], l = u[1];
|
var u = s(n), c = u[0], l = u[1];
|
||||||
var d = wa(), g = d.T, p = d.F;
|
var d = ha(), g = d.T, p = d.R;
|
||||||
var h = e(), w = h.sr;
|
var h = e(), w = h.sr;
|
||||||
var y = r.vr, m = r.ur, b = r.cr;
|
var y = r.vr, m = r.ur, b = r.cr;
|
||||||
var _ = a("paddingAbsolute"), S = _[0], C = _[1];
|
var _ = a("paddingAbsolute"), S = _[0], C = _[1];
|
||||||
@@ -1149,16 +1150,16 @@
|
|||||||
h: n.h > t ? n.h : 0
|
h: n.h > t ? n.h : 0
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
var Fa = function conditionalClass(r, a, e) {
|
var Ra = function conditionalClass(r, a, e) {
|
||||||
return e ? Y(r, a) : X(r, a);
|
return e ? Y(r, a) : X(r, a);
|
||||||
};
|
};
|
||||||
var Ra = function overflowIsVisible(r) {
|
var Na = function overflowIsVisible(r) {
|
||||||
return 0 === r.indexOf(za);
|
return 0 === r.indexOf(za);
|
||||||
};
|
};
|
||||||
var Na = function createOverflowUpdate(r, a) {
|
var Fa = function createOverflowUpdate(r, a) {
|
||||||
var e = a[0], t = a[1];
|
var e = a[0], t = a[1];
|
||||||
var n = r.U, i = r.A, v = r.q, o = r.G, u = r.ar, f = r.tr;
|
var n = r.H, i = r.A, v = r.q, o = r.G, u = r.ar, f = r.tr;
|
||||||
var s = wa(), d = s.L, g = s.F, p = s.T, h = s.I;
|
var s = ha(), d = s.L, g = s.R, p = s.T, h = s.I;
|
||||||
var w = !u && !p && (h.x || h.y);
|
var w = !u && !p && (h.x || h.y);
|
||||||
var y = createCache(Ta, gr.bind(0, v)), m = y[0], b = y[1];
|
var y = createCache(Ta, gr.bind(0, v)), m = y[0], b = y[1];
|
||||||
var _ = createCache(Ta, dr.bind(0, v)), S = _[0], C = _[1];
|
var _ = createCache(Ta, dr.bind(0, v)), S = _[0], C = _[1];
|
||||||
@@ -1215,9 +1216,9 @@
|
|||||||
};
|
};
|
||||||
var I = function setViewportOverflowState(r, a, e, t) {
|
var I = function setViewportOverflowState(r, a, e, t) {
|
||||||
var n = function setAxisOverflowStyle(r, a) {
|
var n = function setAxisOverflowStyle(r, a) {
|
||||||
var e = Ra(r);
|
var e = Na(r);
|
||||||
var t = a && e && r.replace(za + "-", "") || "";
|
var t = a && e && r.replace(za + "-", "") || "";
|
||||||
return [ a && !e ? r : "", Ra(t) ? "hidden" : t ];
|
return [ a && !e ? r : "", Na(t) ? "hidden" : t ];
|
||||||
};
|
};
|
||||||
var i = n(e.x, a.x), v = i[0], o = i[1];
|
var i = n(e.x, a.x), v = i[0], o = i[1];
|
||||||
var u = n(e.y, a.y), f = u[0], s = u[1];
|
var u = n(e.y, a.y), f = u[0], s = u[1];
|
||||||
@@ -1315,37 +1316,37 @@
|
|||||||
};
|
};
|
||||||
return function(r, a, o) {
|
return function(r, a, o) {
|
||||||
var s = r.vr, c = r.mr, d = r.ur, w = r.gr, y = r.ir, _ = r.cr;
|
var s = r.vr, c = r.mr, d = r.ur, w = r.gr, y = r.ir, _ = r.cr;
|
||||||
var O = e(), D = O.nr, F = O.sr;
|
var O = e(), D = O.nr, R = O.sr;
|
||||||
var R = a("nativeScrollbarsOverlaid.show"), N = R[0], j = R[1];
|
var N = a("nativeScrollbarsOverlaid.show"), F = N[0], j = N[1];
|
||||||
var B = a("overflow"), V = B[0], k = B[1];
|
var V = a("overflow"), B = V[0], k = V[1];
|
||||||
var H = N && h.x && h.y;
|
var U = F && h.x && h.y;
|
||||||
var U = !u && !g && (s || d || c || j || y);
|
var H = !u && !g && (s || d || c || j || y);
|
||||||
var q = Ra(V.x);
|
var q = Na(B.x);
|
||||||
var W = Ra(V.y);
|
var W = Na(B.y);
|
||||||
var G = q || W;
|
var G = q || W;
|
||||||
var X = b(o);
|
var X = b(o);
|
||||||
var Y = C(o);
|
var Y = C(o);
|
||||||
var $ = x(o);
|
var $ = x(o);
|
||||||
var J;
|
var J;
|
||||||
if (j && p) {
|
if (j && p) {
|
||||||
f(Ur, jr, !H);
|
f(Hr, jr, !U);
|
||||||
}
|
}
|
||||||
if (U) {
|
if (H) {
|
||||||
J = L(H);
|
J = L(U);
|
||||||
z(J, D);
|
z(J, D);
|
||||||
}
|
}
|
||||||
if (s || w || d || _ || j) {
|
if (s || w || d || _ || j) {
|
||||||
if (G) {
|
if (G) {
|
||||||
f(qr, Nr, false);
|
f(qr, Fr, false);
|
||||||
}
|
}
|
||||||
var K = P(H, F, J), Z = K[0], Q = K[1];
|
var K = P(U, R, J), Z = K[0], Q = K[1];
|
||||||
var rr = X = m(o), ar = rr[0], er = rr[1];
|
var rr = X = m(o), ar = rr[0], er = rr[1];
|
||||||
var tr = Y = S(o), nr = tr[0], ir = tr[1];
|
var tr = Y = S(o), nr = tr[0], ir = tr[1];
|
||||||
var vr = lr(v);
|
var vr = lr(v);
|
||||||
var or = nr;
|
var or = nr;
|
||||||
var ur = vr;
|
var ur = vr;
|
||||||
Z();
|
Z();
|
||||||
if ((ir || er || j) && Q && !H && T(Q, nr, ar, F)) {
|
if ((ir || er || j) && Q && !U && T(Q, nr, ar, R)) {
|
||||||
ur = lr(v);
|
ur = lr(v);
|
||||||
or = dr(v);
|
or = dr(v);
|
||||||
}
|
}
|
||||||
@@ -1365,7 +1366,7 @@
|
|||||||
y: sr.h > 0
|
y: sr.h > 0
|
||||||
};
|
};
|
||||||
var _r = q && W && (br.x || br.y) || q && br.x && !br.y || W && br.y && !br.x;
|
var _r = q && W && (br.x || br.y) || q && br.x && !br.y || W && br.y && !br.x;
|
||||||
if (w || _ || mr || hr || cr || k || j || U) {
|
if (w || _ || mr || hr || cr || k || j || H) {
|
||||||
var Sr = {
|
var Sr = {
|
||||||
marginRight: 0,
|
marginRight: 0,
|
||||||
marginBottom: 0,
|
marginBottom: 0,
|
||||||
@@ -1374,25 +1375,25 @@
|
|||||||
overflowY: "",
|
overflowY: "",
|
||||||
overflowX: ""
|
overflowX: ""
|
||||||
};
|
};
|
||||||
var Cr = I(H, br, V, Sr);
|
var Cr = I(U, br, B, Sr);
|
||||||
var Or = T(Cr, pr, yr, F);
|
var Or = T(Cr, pr, yr, R);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
M(Cr, F, Or, Sr);
|
M(Cr, R, Or, Sr);
|
||||||
}
|
}
|
||||||
if (U) {
|
if (H) {
|
||||||
z(Cr, D);
|
z(Cr, D);
|
||||||
}
|
}
|
||||||
if (u) {
|
if (u) {
|
||||||
attr(n, Fr, Sr.overflowX);
|
attr(n, Rr, Sr.overflowX);
|
||||||
attr(n, Rr, Sr.overflowY);
|
attr(n, Nr, Sr.overflowY);
|
||||||
} else {
|
} else {
|
||||||
style(v, Sr);
|
style(v, Sr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
l(n, Pr, Nr, _r);
|
l(n, Pr, Fr, _r);
|
||||||
Fa(i, qr, _r);
|
Ra(i, qr, _r);
|
||||||
!u && Fa(v, qr, G);
|
!u && Ra(v, qr, G);
|
||||||
var Ar = E(L(H).wr), xr = Ar[0], Dr = Ar[1];
|
var Ar = E(L(U).wr), xr = Ar[0], Dr = Ar[1];
|
||||||
t({
|
t({
|
||||||
wr: xr,
|
wr: xr,
|
||||||
br: {
|
br: {
|
||||||
@@ -1418,11 +1419,11 @@
|
|||||||
}));
|
}));
|
||||||
return t;
|
return t;
|
||||||
};
|
};
|
||||||
var Ba = function createStructureSetupUpdate(r, a) {
|
var Va = function createStructureSetupUpdate(r, a) {
|
||||||
var e = r.q;
|
var e = r.q;
|
||||||
var t = wa(), n = t.T, i = t.I, v = t.F;
|
var t = ha(), n = t.T, i = t.I, v = t.R;
|
||||||
var o = !n && (i.x || i.y);
|
var o = !n && (i.x || i.y);
|
||||||
var u = [ xa(r, a), Da(r, a), Na(r, a) ];
|
var u = [ xa(r, a), Da(r, a), Fa(r, a) ];
|
||||||
return function(r, a, t) {
|
return function(r, a, t) {
|
||||||
var n = ja(assignDeep({
|
var n = ja(assignDeep({
|
||||||
vr: false,
|
vr: false,
|
||||||
@@ -1450,10 +1451,10 @@
|
|||||||
return c;
|
return c;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
var Va = "animationstart";
|
var Ba = "animationstart";
|
||||||
var ka = "scroll";
|
var ka = "scroll";
|
||||||
var Ha = 3333333;
|
var Ua = 3333333;
|
||||||
var Ua = function getElmDirectionIsRTL(r) {
|
var Ha = function getElmDirectionIsRTL(r) {
|
||||||
return "rtl" === style(r, "direction");
|
return "rtl" === style(r, "direction");
|
||||||
};
|
};
|
||||||
var qa = function domRectHasDimensions(r) {
|
var qa = function domRectHasDimensions(r) {
|
||||||
@@ -1461,11 +1462,11 @@
|
|||||||
};
|
};
|
||||||
var Wa = function createSizeObserver(r, a, e) {
|
var Wa = function createSizeObserver(r, a, e) {
|
||||||
var t = e || {}, n = t.Or, i = void 0 === n ? false : n, o = t.Ar, u = void 0 === o ? false : o;
|
var t = e || {}, n = t.Or, i = void 0 === n ? false : n, o = t.Ar, u = void 0 === o ? false : o;
|
||||||
var s = wa(), c = s.P;
|
var s = ha(), c = s.P;
|
||||||
var l = L('<div class="' + Wr + '"><div class="' + Xr + '"></div></div>');
|
var l = L('<div class="' + Wr + '"><div class="' + Xr + '"></div></div>');
|
||||||
var d = l[0];
|
var d = l[0];
|
||||||
var g = d.firstChild;
|
var g = d.firstChild;
|
||||||
var p = Ua.bind(0, d);
|
var p = Ha.bind(0, d);
|
||||||
var h = createCache({
|
var h = createCache({
|
||||||
v: void 0,
|
v: void 0,
|
||||||
u: true,
|
u: true,
|
||||||
@@ -1492,9 +1493,9 @@
|
|||||||
v = true === r;
|
v = true === r;
|
||||||
}
|
}
|
||||||
if (i && o) {
|
if (i && o) {
|
||||||
var p = t ? r[0] : Ua(d);
|
var p = t ? r[0] : Ha(d);
|
||||||
scrollLeft(d, p ? c.n ? -Ha : c.i ? 0 : Ha : Ha);
|
scrollLeft(d, p ? c.n ? -Ua : c.i ? 0 : Ua : Ua);
|
||||||
scrollTop(d, Ha);
|
scrollTop(d, Ua);
|
||||||
}
|
}
|
||||||
if (!n) {
|
if (!n) {
|
||||||
a({
|
a({
|
||||||
@@ -1524,15 +1525,15 @@
|
|||||||
var T = cr(x);
|
var T = cr(x);
|
||||||
var M = T;
|
var M = T;
|
||||||
var P = false;
|
var P = false;
|
||||||
var F;
|
var R;
|
||||||
var R = function reset() {
|
var N = function reset() {
|
||||||
scrollLeft(z, Ha);
|
scrollLeft(z, Ua);
|
||||||
scrollTop(z, Ha);
|
scrollTop(z, Ua);
|
||||||
scrollLeft(D, Ha);
|
scrollLeft(D, Ua);
|
||||||
scrollTop(D, Ha);
|
scrollTop(D, Ua);
|
||||||
};
|
};
|
||||||
var N = function onResized(r) {
|
var F = function onResized(r) {
|
||||||
F = 0;
|
R = 0;
|
||||||
if (P) {
|
if (P) {
|
||||||
T = M;
|
T = M;
|
||||||
y(true === r);
|
y(true === r);
|
||||||
@@ -1543,30 +1544,30 @@
|
|||||||
P = !r || !J(M, T);
|
P = !r || !J(M, T);
|
||||||
if (r) {
|
if (r) {
|
||||||
Cr(r);
|
Cr(r);
|
||||||
if (P && !F) {
|
if (P && !R) {
|
||||||
H(F);
|
U(R);
|
||||||
F = U(N);
|
R = H(F);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
N(false === r);
|
F(false === r);
|
||||||
}
|
}
|
||||||
R();
|
N();
|
||||||
};
|
};
|
||||||
v(m, [ br(z, ka, j), br(D, ka, j) ]);
|
v(m, [ br(z, ka, j), br(D, ka, j) ]);
|
||||||
style(I, {
|
style(I, {
|
||||||
width: Ha,
|
width: Ua,
|
||||||
height: Ha
|
height: Ua
|
||||||
});
|
});
|
||||||
R();
|
N();
|
||||||
b = u ? j.bind(0, false) : R;
|
b = u ? j.bind(0, false) : N;
|
||||||
}
|
}
|
||||||
if (i) {
|
if (i) {
|
||||||
_ = createCache({
|
_ = createCache({
|
||||||
v: !p()
|
v: !p()
|
||||||
}, p);
|
}, p);
|
||||||
var B = _, V = B[0];
|
var V = _, B = V[0];
|
||||||
v(m, br(d, ka, (function(r) {
|
v(m, br(d, ka, (function(r) {
|
||||||
var a = V();
|
var a = B();
|
||||||
var e = a[0], t = a[1];
|
var e = a[0], t = a[1];
|
||||||
if (t) {
|
if (t) {
|
||||||
X(g, "ltr rtl");
|
X(g, "ltr rtl");
|
||||||
@@ -1582,7 +1583,7 @@
|
|||||||
}
|
}
|
||||||
if (b) {
|
if (b) {
|
||||||
Y(d, Gr);
|
Y(d, Gr);
|
||||||
v(m, br(d, Va, b, {
|
v(m, br(d, Ba, b, {
|
||||||
O: !!k
|
O: !!k
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@@ -1610,8 +1611,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (V) {
|
if (B) {
|
||||||
var u = new V((function(r) {
|
var u = new B((function(r) {
|
||||||
if (r && r.length > 0) {
|
if (r && r.length > 0) {
|
||||||
o(r.pop());
|
o(r.pop());
|
||||||
}
|
}
|
||||||
@@ -1744,7 +1745,7 @@
|
|||||||
e(s, p);
|
e(s, p);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var O = new B(C);
|
var O = new V(C);
|
||||||
O.observe(r, {
|
O.observe(r, {
|
||||||
attributes: true,
|
attributes: true,
|
||||||
attributeOldValue: true,
|
attributeOldValue: true,
|
||||||
@@ -1767,7 +1768,7 @@
|
|||||||
} ];
|
} ];
|
||||||
};
|
};
|
||||||
var Ja = "[" + Pr + "]";
|
var Ja = "[" + Pr + "]";
|
||||||
var Ka = "." + Vr;
|
var Ka = "." + Br;
|
||||||
var Za = [ "tabindex" ];
|
var Za = [ "tabindex" ];
|
||||||
var Qa = [ "wrap", "cols", "rows" ];
|
var Qa = [ "wrap", "cols", "rows" ];
|
||||||
var re = [ "id", "class", "style", "open" ];
|
var re = [ "id", "class", "style", "open" ];
|
||||||
@@ -1776,8 +1777,8 @@
|
|||||||
var n;
|
var n;
|
||||||
var v;
|
var v;
|
||||||
var o = a[1];
|
var o = a[1];
|
||||||
var u = r.U, f = r.q, s = r.D, l = r.K, d = r.ar, p = r.er, h = r.tr;
|
var u = r.H, f = r.q, s = r.D, l = r.K, d = r.ar, p = r.er, h = r.tr;
|
||||||
var w = wa(), y = w.T, m = w.F;
|
var w = ha(), y = w.T, m = w.R;
|
||||||
var b = createCache({
|
var b = createCache({
|
||||||
o: J,
|
o: J,
|
||||||
v: {
|
v: {
|
||||||
@@ -1785,12 +1786,12 @@
|
|||||||
h: 0
|
h: 0
|
||||||
}
|
}
|
||||||
}, (function() {
|
}, (function() {
|
||||||
var r = p(qr, Nr);
|
var r = p(qr, Fr);
|
||||||
r && h(qr, Nr);
|
r && h(qr, Fr);
|
||||||
var a = dr(s);
|
var a = dr(s);
|
||||||
var e = dr(f);
|
var e = dr(f);
|
||||||
var t = gr(f);
|
var t = gr(f);
|
||||||
r && h(qr, Nr, true);
|
r && h(qr, Fr, true);
|
||||||
return {
|
return {
|
||||||
w: e.w + a.w + t.w,
|
w: e.w + a.w + t.w,
|
||||||
h: e.h + a.h + t.h
|
h: e.h + a.h + t.h
|
||||||
@@ -1972,7 +1973,7 @@
|
|||||||
f(n, [ r, a || {}, !!e ]);
|
f(n, [ r, a || {}, !!e ]);
|
||||||
};
|
};
|
||||||
var o = Aa(r), u = o[0], s = o[1];
|
var o = Aa(r), u = o[0], s = o[1];
|
||||||
var c = Ba(u, t);
|
var c = Va(u, t);
|
||||||
var l = ae(u, t, (function(r) {
|
var l = ae(u, t, (function(r) {
|
||||||
v(c(e, r));
|
v(c(e, r));
|
||||||
})), d = l[0], g = l[1];
|
})), d = l[0], g = l[1];
|
||||||
@@ -1980,7 +1981,7 @@
|
|||||||
p.Pr = function(r) {
|
p.Pr = function(r) {
|
||||||
n.add(r);
|
n.add(r);
|
||||||
};
|
};
|
||||||
p.Fr = u;
|
p.Rr = u;
|
||||||
return [ function(r, e) {
|
return [ function(r, e) {
|
||||||
var t = zr(a, r, e);
|
var t = zr(a, r, e);
|
||||||
d(t);
|
d(t);
|
||||||
@@ -1998,27 +1999,27 @@
|
|||||||
O(a, e);
|
O(a, e);
|
||||||
O(e, t);
|
O(e, t);
|
||||||
return {
|
return {
|
||||||
Rr: a,
|
Nr: a,
|
||||||
Nr: e,
|
Fr: e,
|
||||||
jr: t
|
jr: t
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
var ie = function createScrollbarsSetupElements(r, a) {
|
var ie = function createScrollbarsSetupElements(r, a) {
|
||||||
var e = wa(), t = e.N;
|
var e = ha(), t = e.F;
|
||||||
var n = t(), i = n.Br;
|
var n = t(), i = n.Vr;
|
||||||
var v = a.W, o = a.U, u = a.q, f = a.rr;
|
var v = a.W, o = a.H, u = a.q, f = a.rr;
|
||||||
var s = !f && r.scrollbarsSlot;
|
var s = !f && r.scrollbarsSlot;
|
||||||
var c = ma([ v, o, u ], (function() {
|
var c = ma([ v, o, u ], (function() {
|
||||||
return o;
|
return o;
|
||||||
}), i, s);
|
}), i, s);
|
||||||
var l = ne(Qr);
|
var l = ne(Qr);
|
||||||
var d = ne(ra);
|
var d = ne(ra);
|
||||||
var g = l.Rr;
|
var g = l.Nr;
|
||||||
var p = d.Rr;
|
var p = d.Nr;
|
||||||
O(c, g);
|
O(c, g);
|
||||||
O(c, p);
|
O(c, p);
|
||||||
return [ {
|
return [ {
|
||||||
Vr: l,
|
Br: l,
|
||||||
kr: d
|
kr: d
|
||||||
}, E.bind(0, [ g, p ]) ];
|
}, E.bind(0, [ g, p ]) ];
|
||||||
};
|
};
|
||||||
@@ -2027,7 +2028,7 @@
|
|||||||
var n = t[0];
|
var n = t[0];
|
||||||
var i = ie(r, e), v = i[0], o = i[1];
|
var i = ie(r, e), v = i[0], o = i[1];
|
||||||
var u = n.bind(0);
|
var u = n.bind(0);
|
||||||
u.Fr = v;
|
u.Rr = v;
|
||||||
return [ function(r, e) {
|
return [ function(r, e) {
|
||||||
var t = zr(a, r, e);
|
var t = zr(a, r, e);
|
||||||
console.log(t);
|
console.log(t);
|
||||||
@@ -2059,7 +2060,7 @@
|
|||||||
return le.get(r);
|
return le.get(r);
|
||||||
};
|
};
|
||||||
var he = function OverlayScrollbars(r, a, e) {
|
var he = function OverlayScrollbars(r, a, e) {
|
||||||
var t = wa(), n = t.B, i = t.I, v = t.R;
|
var t = ha(), n = t.V, i = t.I, v = t.N;
|
||||||
var o = ue();
|
var o = ue();
|
||||||
var u = isHTMLElement(r) ? r : r.target;
|
var u = isHTMLElement(r) ? r : r.target;
|
||||||
var f = pe(u);
|
var f = pe(u);
|
||||||
@@ -2069,7 +2070,7 @@
|
|||||||
var s = o[se];
|
var s = o[se];
|
||||||
var l = function validateOptions(r) {
|
var l = function validateOptions(r) {
|
||||||
var a = r || {};
|
var a = r || {};
|
||||||
var e = s && s.Hr;
|
var e = s && s.Ur;
|
||||||
return e ? e(a, true) : a;
|
return e ? e(a, true) : a;
|
||||||
};
|
};
|
||||||
var d = assignDeep({}, n(), l(a));
|
var d = assignDeep({}, n(), l(a));
|
||||||
@@ -2078,7 +2079,7 @@
|
|||||||
w("initializationWithdrawn");
|
w("initializationWithdrawn");
|
||||||
}
|
}
|
||||||
var y = te(r, d), m = y[0], b = y[1], _ = y[2];
|
var y = te(r, d), m = y[0], b = y[1], _ = y[2];
|
||||||
var S = ve(r, d, b.Fr), C = S[0], O = S[2];
|
var S = ve(r, d, b.Rr), C = S[0], O = S[2];
|
||||||
var A = function update(r, a) {
|
var A = function update(r, a) {
|
||||||
m(r, a);
|
m(r, a);
|
||||||
C(r, a);
|
C(r, a);
|
||||||
@@ -2124,7 +2125,7 @@
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
elements: function elements() {
|
elements: function elements() {
|
||||||
var r = b.Fr, a = r.W, e = r.U, t = r.A, n = r.q, i = r.D;
|
var r = b.Rr, a = r.W, e = r.H, t = r.A, n = r.q, i = r.D;
|
||||||
return assignDeep({}, {
|
return assignDeep({}, {
|
||||||
target: a,
|
target: a,
|
||||||
host: e,
|
host: e,
|
||||||
@@ -2158,7 +2159,7 @@
|
|||||||
};
|
};
|
||||||
he.plugin = fe;
|
he.plugin = fe;
|
||||||
he.env = function() {
|
he.env = function() {
|
||||||
var r = wa(), a = r.L, e = r.I, t = r.T, n = r.P, i = r.F, v = r.M, o = r.k, u = r.H, f = r.N, s = r.j, c = r.B, l = r.V;
|
var r = ha(), a = r.L, e = r.I, t = r.T, n = r.P, i = r.R, v = r.M, o = r.k, u = r.U, f = r.F, s = r.j, c = r.V, l = r.B;
|
||||||
return assignDeep({}, {
|
return assignDeep({}, {
|
||||||
scrollbarSize: a,
|
scrollbarSize: a,
|
||||||
scrollbarIsOverlaid: e,
|
scrollbarIsOverlaid: e,
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -147,13 +147,6 @@ const getWindowDPR = (): number => {
|
|||||||
return window.devicePixelRatio || dDPI / sDPI;
|
return window.devicePixelRatio || dDPI / sDPI;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getDefaultInitializationStrategy = (
|
|
||||||
nativeScrollbarStyling: boolean
|
|
||||||
): InitializationStrategy => ({
|
|
||||||
_padding: !nativeScrollbarStyling,
|
|
||||||
_content: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
const createEnvironment = (): InternalEnvironment => {
|
const createEnvironment = (): InternalEnvironment => {
|
||||||
const { body } = document;
|
const { body } = document;
|
||||||
const envDOM = createDOM(`<div class="${classNameEnvironment}"><div></div></div>`);
|
const envDOM = createDOM(`<div class="${classNameEnvironment}"><div></div></div>`);
|
||||||
@@ -170,7 +163,10 @@ const createEnvironment = (): InternalEnvironment => {
|
|||||||
x: nativeScrollbarSize.x === 0,
|
x: nativeScrollbarSize.x === 0,
|
||||||
y: nativeScrollbarSize.y === 0,
|
y: nativeScrollbarSize.y === 0,
|
||||||
};
|
};
|
||||||
const initializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);
|
const initializationStrategy = {
|
||||||
|
_padding: !nativeScrollbarStyling,
|
||||||
|
_content: false,
|
||||||
|
};
|
||||||
const defaultDefaultOptions = assignDeep({}, defaultOptions);
|
const defaultDefaultOptions = assignDeep({}, defaultOptions);
|
||||||
|
|
||||||
const env: InternalEnvironment = {
|
const env: InternalEnvironment = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { isFunction, isBoolean, isNull, isUndefined } from 'support';
|
import { isFunction, isNull, isUndefined } from 'support';
|
||||||
import type {
|
import type {
|
||||||
StructureInitialization,
|
StructureInitialization,
|
||||||
StructureInitializationStrategy,
|
StructureInitializationStrategy,
|
||||||
@@ -47,23 +47,20 @@ export type DefaultInitializtationElementStrategy<
|
|||||||
? (...args: P) => HTMLElement
|
? (...args: P) => HTMLElement
|
||||||
: never;
|
: never;
|
||||||
|
|
||||||
|
const resolveInitialization = <T>(value: any, args: any): T =>
|
||||||
|
isFunction(value) ? value.apply(0, args) : value;
|
||||||
|
|
||||||
const staticInitializationElement = <T extends StaticInitializationElement<any>>(
|
const staticInitializationElement = <T extends StaticInitializationElement<any>>(
|
||||||
args: Parameters<Extract<T, (...args: any[]) => any>>,
|
args: Parameters<Extract<T, (...args: any[]) => any>>,
|
||||||
defaultStaticInitializationElement: DefaultInitializtationElementStrategy<T>,
|
defaultStaticInitializationElement: DefaultInitializtationElementStrategy<T>,
|
||||||
staticInitializationElementStrategy?: InitializtationElementStrategy<T>,
|
staticInitializationElementStrategy?: InitializtationElementStrategy<T>,
|
||||||
staticInitializationElementValue?: T | false
|
staticInitializationElementValue?: T | false
|
||||||
): HTMLElement => {
|
): HTMLElement =>
|
||||||
const result =
|
resolveInitialization<StaticInitialization>(
|
||||||
staticInitializationElementValue ||
|
staticInitializationElementValue ||
|
||||||
(isFunction(staticInitializationElementStrategy)
|
resolveInitialization<StaticInitialization>(staticInitializationElementStrategy, args),
|
||||||
? staticInitializationElementStrategy.apply(0, args)
|
args
|
||||||
: staticInitializationElementStrategy);
|
) || defaultStaticInitializationElement.apply(0, args);
|
||||||
|
|
||||||
return (
|
|
||||||
(isFunction(result) ? result.apply(0, args) : result) ||
|
|
||||||
defaultStaticInitializationElement.apply(0, args)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const dynamicInitializationElement = <T extends DynamicInitializationElement<any>>(
|
const dynamicInitializationElement = <T extends DynamicInitializationElement<any>>(
|
||||||
args: Parameters<Extract<T, (...args: any[]) => any>>,
|
args: Parameters<Extract<T, (...args: any[]) => any>>,
|
||||||
@@ -71,15 +68,19 @@ const dynamicInitializationElement = <T extends DynamicInitializationElement<any
|
|||||||
dynamicInitializationElementStrategy?: InitializtationElementStrategy<T>,
|
dynamicInitializationElementStrategy?: InitializtationElementStrategy<T>,
|
||||||
dynamicInitializationElementValue?: T | false
|
dynamicInitializationElementValue?: T | false
|
||||||
): HTMLElement | false => {
|
): HTMLElement | false => {
|
||||||
const takeInitializationValue =
|
let result = resolveInitialization<DynamicInitialization>(
|
||||||
isBoolean(dynamicInitializationElementValue) || !!dynamicInitializationElementValue;
|
dynamicInitializationElementValue,
|
||||||
const result = takeInitializationValue
|
args
|
||||||
? (dynamicInitializationElementValue as boolean | HTMLElement)
|
);
|
||||||
: isFunction(dynamicInitializationElementStrategy)
|
|
||||||
? dynamicInitializationElementStrategy.apply(0, args)
|
|
||||||
: dynamicInitializationElementStrategy;
|
|
||||||
|
|
||||||
return result === true || isNull(result) || isUndefined(result) || isFunction(result)
|
if (isNull(result) || isUndefined(result)) {
|
||||||
|
result = resolveInitialization<DynamicInitialization>(
|
||||||
|
dynamicInitializationElementStrategy,
|
||||||
|
args
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result === true || isNull(result) || isUndefined(result)
|
||||||
? defaultDynamicInitializationElement.apply(0, args)
|
? defaultDynamicInitializationElement.apply(0, args)
|
||||||
: result;
|
: result;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -92,8 +92,8 @@ const createUniqueViewportArrangeElement = (): HTMLStyleElement | false => {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
const addDataAttrHost = (elm: HTMLElement, value?: string | false | null | undefined) => {
|
const addDataAttrHost = (elm: HTMLElement, value: string) => {
|
||||||
attr(elm, dataAttributeHost, value || '');
|
attr(elm, dataAttributeHost, value);
|
||||||
return removeAttr.bind(0, elm, dataAttributeHost);
|
return removeAttr.bind(0, elm, dataAttributeHost);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ export const createStructureSetupElements = (
|
|||||||
const ownerDocument = targetElement!.ownerDocument;
|
const ownerDocument = targetElement!.ownerDocument;
|
||||||
const bodyElm = ownerDocument.body as HTMLBodyElement;
|
const bodyElm = ownerDocument.body as HTMLBodyElement;
|
||||||
const wnd = ownerDocument.defaultView as Window;
|
const wnd = ownerDocument.defaultView as Window;
|
||||||
const singleElmSupport = !!ResizeObserverConstructor && _nativeScrollbarStyling;
|
const singleElmSupport = !!ResizeObserverConstructor && !isTextarea && _nativeScrollbarStyling;
|
||||||
const staticInitializationElement =
|
const staticInitializationElement =
|
||||||
generalStaticInitializationElement<StructureStaticInitializationElement>.bind(0, [
|
generalStaticInitializationElement<StructureStaticInitializationElement>.bind(0, [
|
||||||
targetElement,
|
targetElement,
|
||||||
@@ -126,17 +126,18 @@ export const createStructureSetupElements = (
|
|||||||
generalDynamicInitializationElement<StructureDynamicInitializationElement>.bind(0, [
|
generalDynamicInitializationElement<StructureDynamicInitializationElement>.bind(0, [
|
||||||
targetElement,
|
targetElement,
|
||||||
]);
|
]);
|
||||||
const potentialViewportElement = staticInitializationElement(
|
const viewportElement = [
|
||||||
createNewDiv,
|
staticInitializationElement(
|
||||||
viewportInitializationStrategy,
|
createNewDiv,
|
||||||
targetStructureInitialization.viewport
|
viewportInitializationStrategy,
|
||||||
);
|
targetStructureInitialization.viewport
|
||||||
const potentiallySingleElm = potentialViewportElement === targetElement;
|
),
|
||||||
const viewportIsTarget = singleElmSupport && potentiallySingleElm;
|
staticInitializationElement(createNewDiv, viewportInitializationStrategy),
|
||||||
const viewportElement =
|
staticInitializationElement(createNewDiv),
|
||||||
potentiallySingleElm && !viewportIsTarget
|
].filter((potentialViewport) =>
|
||||||
? staticInitializationElement(createNewDiv)
|
!singleElmSupport ? potentialViewport !== targetElement : true
|
||||||
: potentialViewportElement;
|
)[0];
|
||||||
|
const viewportIsTarget = viewportElement === targetElement;
|
||||||
const evaluatedTargetObj: StructureSetupElementsObj = {
|
const evaluatedTargetObj: StructureSetupElementsObj = {
|
||||||
_target: targetElement,
|
_target: targetElement,
|
||||||
_host: isTextarea
|
_host: isTextarea
|
||||||
@@ -147,16 +148,20 @@ export const createStructureSetupElements = (
|
|||||||
)
|
)
|
||||||
: (targetElement as HTMLElement),
|
: (targetElement as HTMLElement),
|
||||||
_viewport: viewportElement,
|
_viewport: viewportElement,
|
||||||
_padding: dynamicInitializationElement(
|
_padding:
|
||||||
createNewDiv,
|
!viewportIsTarget &&
|
||||||
paddingInitializationStrategy,
|
dynamicInitializationElement(
|
||||||
targetStructureInitialization.padding
|
createNewDiv,
|
||||||
),
|
paddingInitializationStrategy,
|
||||||
_content: dynamicInitializationElement(
|
targetStructureInitialization.padding
|
||||||
createNewDiv,
|
),
|
||||||
contentInitializationStrategy,
|
_content:
|
||||||
targetStructureInitialization.content
|
!viewportIsTarget &&
|
||||||
),
|
dynamicInitializationElement(
|
||||||
|
createNewDiv,
|
||||||
|
contentInitializationStrategy,
|
||||||
|
targetStructureInitialization.content
|
||||||
|
),
|
||||||
_viewportArrange: !viewportIsTarget && createUniqueViewportArrangeElement(),
|
_viewportArrange: !viewportIsTarget && createUniqueViewportArrangeElement(),
|
||||||
_windowElm: wnd,
|
_windowElm: wnd,
|
||||||
_documentElm: ownerDocument,
|
_documentElm: ownerDocument,
|
||||||
|
|||||||
@@ -39,6 +39,13 @@ export function attr(
|
|||||||
elm && elm.setAttribute(attrName, value);
|
elm && elm.setAttribute(attrName, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Treats the given attribute like the "class" attribute and adds or removes the given value from it.
|
||||||
|
* @param elm The element.
|
||||||
|
* @param attrName The attributeName to which the value shall be added or removed.
|
||||||
|
* @param value The value which shall be added or removed.
|
||||||
|
* @param add True if the value shall be added, false otherwise.
|
||||||
|
*/
|
||||||
export const attrClass = (
|
export const attrClass = (
|
||||||
elm: HTMLElement | false | null | undefined,
|
elm: HTMLElement | false | null | undefined,
|
||||||
attrName: string,
|
attrName: string,
|
||||||
@@ -52,6 +59,13 @@ export const attrClass = (
|
|||||||
attr(elm, attrName, from(currValuesSet).join(' ').trim());
|
attr(elm, attrName, from(currValuesSet).join(' ').trim());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Treats the given attribute like the "class" attribute and checks if the given value is in it.
|
||||||
|
* @param elm The element.
|
||||||
|
* @param attrName The attributeName from which the content shall be checked.
|
||||||
|
* @param value The value.
|
||||||
|
* @returns True if the given attribute has the value in it, false otherwise.
|
||||||
|
*/
|
||||||
export const hasAttrClass = (
|
export const hasAttrClass = (
|
||||||
elm: HTMLElement | false | null | undefined,
|
elm: HTMLElement | false | null | undefined,
|
||||||
attrName: string,
|
attrName: string,
|
||||||
|
|||||||
+204
-127
@@ -1,3 +1,5 @@
|
|||||||
|
import { hasClass, isFunction, isHTMLElement } from 'support';
|
||||||
|
import { dataAttributeHost } from 'classnames';
|
||||||
import { InternalEnvironment } from 'environment';
|
import { InternalEnvironment } from 'environment';
|
||||||
import {
|
import {
|
||||||
createStructureSetupElements,
|
createStructureSetupElements,
|
||||||
@@ -9,13 +11,20 @@ import type {
|
|||||||
StructureStaticInitializationElement,
|
StructureStaticInitializationElement,
|
||||||
StructureDynamicInitializationElement,
|
StructureDynamicInitializationElement,
|
||||||
} from 'setups/structureSetup/structureSetup.initialization';
|
} from 'setups/structureSetup/structureSetup.initialization';
|
||||||
import { isHTMLElement } from 'support';
|
|
||||||
|
|
||||||
const mockGetEnvironment = jest.fn();
|
const mockGetEnvironment = jest.fn();
|
||||||
jest.mock('environment', () => ({
|
jest.mock('environment', () => ({
|
||||||
getEnvironment: jest.fn().mockImplementation(() => mockGetEnvironment()),
|
getEnvironment: jest.fn().mockImplementation(() => mockGetEnvironment()),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
jest.mock('support/compatibility/apis', () => {
|
||||||
|
const originalModule = jest.requireActual('support/compatibility/apis');
|
||||||
|
return {
|
||||||
|
...originalModule,
|
||||||
|
ResizeObserverConstructor: true,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
interface StructureSetupElementsProxy {
|
interface StructureSetupElementsProxy {
|
||||||
input: InitializationTarget;
|
input: InitializationTarget;
|
||||||
elements: StructureSetupElementsObj;
|
elements: StructureSetupElementsObj;
|
||||||
@@ -67,31 +76,39 @@ const getElements = (textarea?: boolean) => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const assertCorrectDOMStructure = (textarea?: boolean) => {
|
const assertCorrectDOMStructure = (textarea: boolean, viewportIsTarget: boolean) => {
|
||||||
const { target, host, padding, viewport, content } = getElements(textarea);
|
const { target, host, padding, viewport, content } = getElements(textarea);
|
||||||
|
|
||||||
expect(host).toBeTruthy();
|
if (viewportIsTarget) {
|
||||||
expect(viewport).toBeTruthy();
|
|
||||||
expect(viewport.parentElement).toBe(padding || host);
|
|
||||||
|
|
||||||
if (content) {
|
|
||||||
expect(content.parentElement).toBe(viewport);
|
|
||||||
}
|
|
||||||
if (padding) {
|
|
||||||
expect(padding.parentElement).toBe(host);
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(host.parentElement).toBe(document.body);
|
|
||||||
expect(host.previousElementSibling).toBe(document.querySelector('nav'));
|
|
||||||
expect(host.nextElementSibling).toBe(document.querySelector('footer'));
|
|
||||||
|
|
||||||
const contentElm = content || viewport;
|
|
||||||
if (textarea) {
|
|
||||||
expect(target.parentElement).toBe(contentElm);
|
|
||||||
expect(contentElm.innerHTML).toBe(textareaContent);
|
|
||||||
} else {
|
|
||||||
expect(target).toBe(host);
|
expect(target).toBe(host);
|
||||||
expect(contentElm.innerHTML).toBe(dynamicContent);
|
expect(host).toBeTruthy();
|
||||||
|
expect(padding).toBeFalsy();
|
||||||
|
expect(viewport).toBeFalsy();
|
||||||
|
expect(content).toBeFalsy();
|
||||||
|
} else {
|
||||||
|
expect(host).toBeTruthy();
|
||||||
|
expect(viewport).toBeTruthy();
|
||||||
|
expect(viewport.parentElement).toBe(padding || host);
|
||||||
|
|
||||||
|
if (content) {
|
||||||
|
expect(content.parentElement).toBe(viewport);
|
||||||
|
}
|
||||||
|
if (padding) {
|
||||||
|
expect(padding.parentElement).toBe(host);
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(host.parentElement).toBe(document.body);
|
||||||
|
expect(host.previousElementSibling).toBe(document.querySelector('nav'));
|
||||||
|
expect(host.nextElementSibling).toBe(document.querySelector('footer'));
|
||||||
|
|
||||||
|
const contentElm = content || viewport;
|
||||||
|
if (textarea) {
|
||||||
|
expect(target.parentElement).toBe(contentElm);
|
||||||
|
expect(contentElm.innerHTML).toBe(textareaContent);
|
||||||
|
} else {
|
||||||
|
expect(target).toBe(host);
|
||||||
|
expect(contentElm.innerHTML).toBe(dynamicContent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -112,7 +129,16 @@ const assertCorrectSetupElements = (
|
|||||||
environment: InternalEnvironment
|
environment: InternalEnvironment
|
||||||
): [StructureSetupElementsObj, () => void] => {
|
): [StructureSetupElementsObj, () => void] => {
|
||||||
const { input, elements, destroy } = setupElementsProxy;
|
const { input, elements, destroy } = setupElementsProxy;
|
||||||
const { _target, _host, _padding, _viewport, _content } = elements;
|
const {
|
||||||
|
_target,
|
||||||
|
_host,
|
||||||
|
_padding,
|
||||||
|
_viewport,
|
||||||
|
_content,
|
||||||
|
_viewportIsTarget,
|
||||||
|
_viewportHasClass,
|
||||||
|
_viewportAddRemoveClass,
|
||||||
|
} = elements;
|
||||||
const { target, host, padding, viewport, content } = getElements(textarea);
|
const { target, host, padding, viewport, content } = getElements(textarea);
|
||||||
const isTextarea = target.matches('textarea');
|
const isTextarea = target.matches('textarea');
|
||||||
const isBody = target.matches('body');
|
const isBody = target.matches('body');
|
||||||
@@ -122,21 +148,29 @@ const assertCorrectSetupElements = (
|
|||||||
expect(_target).toBe(target);
|
expect(_target).toBe(target);
|
||||||
expect(_host).toBe(host);
|
expect(_host).toBe(host);
|
||||||
|
|
||||||
if (padding || _padding) {
|
if (_viewportIsTarget) {
|
||||||
|
expect(padding).toBeFalsy();
|
||||||
|
expect(_padding).toBeFalsy();
|
||||||
|
} else if (padding || _padding) {
|
||||||
expect(_padding).toBe(padding);
|
expect(_padding).toBe(padding);
|
||||||
} else {
|
} else {
|
||||||
expect(padding).toBeFalsy();
|
expect(padding).toBeFalsy();
|
||||||
expect(_padding).toBeFalsy();
|
expect(_padding).toBeFalsy();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (viewport || _viewport) {
|
if (_viewportIsTarget) {
|
||||||
|
expect(_viewport).toBe(_target);
|
||||||
|
} else if (viewport || _viewport) {
|
||||||
expect(_viewport).toBe(viewport);
|
expect(_viewport).toBe(viewport);
|
||||||
} else {
|
} else {
|
||||||
expect(viewport).toBeFalsy();
|
expect(viewport).toBeFalsy();
|
||||||
expect(_viewport).toBeFalsy();
|
expect(_viewport).toBeFalsy();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (content || _content) {
|
if (_viewportIsTarget) {
|
||||||
|
expect(content).toBeFalsy();
|
||||||
|
expect(_content).toBeFalsy();
|
||||||
|
} else if (content || _content) {
|
||||||
expect(_content).toBe(content);
|
expect(_content).toBe(content);
|
||||||
} else {
|
} else {
|
||||||
expect(content).toBeFalsy();
|
expect(content).toBeFalsy();
|
||||||
@@ -166,14 +200,18 @@ const assertCorrectSetupElements = (
|
|||||||
const styleElm = document.querySelector('style');
|
const styleElm = document.querySelector('style');
|
||||||
const checkStrategyDependendElements = (
|
const checkStrategyDependendElements = (
|
||||||
elm: Element | null,
|
elm: Element | null,
|
||||||
input: StructureStaticInitializationElement | StructureDynamicInitializationElement,
|
inputStrategy: StructureStaticInitializationElement | StructureDynamicInitializationElement,
|
||||||
isStaticStrategy: boolean,
|
isStaticStrategy: boolean,
|
||||||
strategy:
|
strategy:
|
||||||
| InitializtationElementStrategy<StructureStaticInitializationElement>
|
| InitializtationElementStrategy<StructureStaticInitializationElement>
|
||||||
| InitializtationElementStrategy<StructureDynamicInitializationElement>
|
| InitializtationElementStrategy<StructureDynamicInitializationElement>,
|
||||||
|
kind: 'padding' | 'viewport' | 'content' | 'host'
|
||||||
) => {
|
) => {
|
||||||
|
const input = isFunction(inputStrategy) ? inputStrategy(target) : inputStrategy;
|
||||||
if (input) {
|
if (input) {
|
||||||
expect(elm).toBeTruthy();
|
if (!_viewportIsTarget) {
|
||||||
|
expect(elm).toBeTruthy();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (input === false) {
|
if (input === false) {
|
||||||
expect(elm).toBeFalsy();
|
expect(elm).toBeFalsy();
|
||||||
@@ -184,7 +222,13 @@ const assertCorrectSetupElements = (
|
|||||||
strategy as InitializtationElementStrategy<StructureStaticInitializationElement>;
|
strategy as InitializtationElementStrategy<StructureStaticInitializationElement>;
|
||||||
if (typeof strategy === 'function') {
|
if (typeof strategy === 'function') {
|
||||||
const result = strategy(target);
|
const result = strategy(target);
|
||||||
if (result) {
|
if (_viewportIsTarget) {
|
||||||
|
if (kind === 'host') {
|
||||||
|
expect(elm).toBeTruthy();
|
||||||
|
} else {
|
||||||
|
expect(elm).toBeFalsy();
|
||||||
|
}
|
||||||
|
} else if (result && !isTextarea) {
|
||||||
expect(result).toBe(elm);
|
expect(result).toBe(elm);
|
||||||
} else {
|
} else {
|
||||||
expect(elm).toBeTruthy();
|
expect(elm).toBeTruthy();
|
||||||
@@ -195,12 +239,17 @@ const assertCorrectSetupElements = (
|
|||||||
} else {
|
} else {
|
||||||
strategy =
|
strategy =
|
||||||
strategy as InitializtationElementStrategy<StructureDynamicInitializationElement>;
|
strategy as InitializtationElementStrategy<StructureDynamicInitializationElement>;
|
||||||
expect(strategy).not.toBe(null);
|
|
||||||
expect(strategy).not.toBe(undefined);
|
|
||||||
if (typeof strategy === 'function') {
|
if (typeof strategy === 'function') {
|
||||||
const result = strategy(target);
|
const result = strategy(target);
|
||||||
const resultIsBoolean = typeof result === 'boolean';
|
const resultIsBoolean = typeof result === 'boolean';
|
||||||
if (resultIsBoolean) {
|
if (_viewportIsTarget) {
|
||||||
|
if (kind === 'host') {
|
||||||
|
expect(elm).toBeTruthy();
|
||||||
|
} else {
|
||||||
|
expect(elm).toBeFalsy();
|
||||||
|
}
|
||||||
|
} else if (resultIsBoolean) {
|
||||||
if (result) {
|
if (result) {
|
||||||
expect(elm).toBeTruthy();
|
expect(elm).toBeTruthy();
|
||||||
} else {
|
} else {
|
||||||
@@ -231,10 +280,10 @@ const assertCorrectSetupElements = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (inputIsElement) {
|
if (inputIsElement) {
|
||||||
checkStrategyDependendElements(padding, undefined, false, paddingInitStrategy);
|
checkStrategyDependendElements(padding, undefined, false, paddingInitStrategy, 'padding');
|
||||||
checkStrategyDependendElements(content, undefined, false, contentInitStrategy);
|
checkStrategyDependendElements(content, undefined, false, contentInitStrategy, 'content');
|
||||||
checkStrategyDependendElements(viewport, undefined, true, viewportInitStrategy);
|
checkStrategyDependendElements(viewport, undefined, true, viewportInitStrategy, 'viewport');
|
||||||
checkStrategyDependendElements(host, undefined, true, hostInitStrategy);
|
checkStrategyDependendElements(host, undefined, true, hostInitStrategy, 'host');
|
||||||
} else {
|
} else {
|
||||||
const {
|
const {
|
||||||
padding: inputPadding,
|
padding: inputPadding,
|
||||||
@@ -242,10 +291,30 @@ const assertCorrectSetupElements = (
|
|||||||
viewport: inputViewport,
|
viewport: inputViewport,
|
||||||
host: inputHost,
|
host: inputHost,
|
||||||
} = inputAsObj;
|
} = inputAsObj;
|
||||||
checkStrategyDependendElements(padding, inputPadding, false, paddingInitStrategy);
|
checkStrategyDependendElements(padding, inputPadding, false, paddingInitStrategy, 'padding');
|
||||||
checkStrategyDependendElements(content, inputContent, false, contentInitStrategy);
|
checkStrategyDependendElements(content, inputContent, false, contentInitStrategy, 'content');
|
||||||
checkStrategyDependendElements(viewport, inputViewport, true, viewportInitStrategy);
|
checkStrategyDependendElements(viewport, inputViewport, true, viewportInitStrategy, 'viewport');
|
||||||
checkStrategyDependendElements(host, inputHost, true, hostInitStrategy);
|
checkStrategyDependendElements(host, inputHost, true, hostInitStrategy, 'host');
|
||||||
|
}
|
||||||
|
|
||||||
|
const className = 'clazz';
|
||||||
|
const attrName = 'attr';
|
||||||
|
|
||||||
|
_viewportAddRemoveClass(className, attrName, true);
|
||||||
|
if (_viewportIsTarget) {
|
||||||
|
expect(_host.getAttribute(dataAttributeHost)!.indexOf(attrName) >= 0).toBe(true);
|
||||||
|
expect(_viewportHasClass('', attrName)).toBe(true);
|
||||||
|
} else {
|
||||||
|
expect(hasClass(_viewport, className)).toBe(true);
|
||||||
|
expect(_viewportHasClass(className, '')).toBe(true);
|
||||||
|
}
|
||||||
|
_viewportAddRemoveClass(className, attrName);
|
||||||
|
if (_viewportIsTarget) {
|
||||||
|
expect(_host.getAttribute(dataAttributeHost)!.indexOf(attrName) >= 0).toBe(false);
|
||||||
|
expect(_viewportHasClass('', attrName)).toBe(false);
|
||||||
|
} else {
|
||||||
|
expect(hasClass(_viewport, className)).toBe(false);
|
||||||
|
expect(_viewportHasClass(className, '')).toBe(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [elements, destroy];
|
return [elements, destroy];
|
||||||
@@ -294,7 +363,6 @@ const envInitStrategyMin = {
|
|||||||
_viewport: () => null,
|
_viewport: () => null,
|
||||||
_content: () => false,
|
_content: () => false,
|
||||||
_padding: false,
|
_padding: false,
|
||||||
_scrollbarsSlot: null,
|
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -307,7 +375,6 @@ const envInitStrategyMax = {
|
|||||||
_viewport: null,
|
_viewport: null,
|
||||||
_content: true,
|
_content: true,
|
||||||
_padding: () => true,
|
_padding: () => true,
|
||||||
_scrollbarsSlot: null,
|
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -320,7 +387,16 @@ const envInitStrategyAssigned = {
|
|||||||
_viewport: (target: HTMLElement) => target.querySelector('#viewport') as HTMLElement,
|
_viewport: (target: HTMLElement) => target.querySelector('#viewport') as HTMLElement,
|
||||||
_content: (target: HTMLElement) => target.querySelector<HTMLElement>('#content'),
|
_content: (target: HTMLElement) => target.querySelector<HTMLElement>('#content'),
|
||||||
_padding: (target: HTMLElement) => target.querySelector<HTMLElement>('#padding'),
|
_padding: (target: HTMLElement) => target.querySelector<HTMLElement>('#padding'),
|
||||||
_scrollbarsSlot: null,
|
}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const envInitStrategyViewportIsTarget = {
|
||||||
|
name: 'initialization strategy assigned',
|
||||||
|
env: {
|
||||||
|
...env,
|
||||||
|
_nativeScrollbarStyling: true,
|
||||||
|
_getInitializationStrategy: () => ({
|
||||||
|
_viewport: (target: HTMLElement) => target,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -335,6 +411,7 @@ describe('structureSetup', () => {
|
|||||||
envInitStrategyMin,
|
envInitStrategyMin,
|
||||||
envInitStrategyMax,
|
envInitStrategyMax,
|
||||||
envInitStrategyAssigned,
|
envInitStrategyAssigned,
|
||||||
|
envInitStrategyViewportIsTarget,
|
||||||
].forEach((envWithName) => {
|
].forEach((envWithName) => {
|
||||||
const { env: currEnv, name } = envWithName;
|
const { env: currEnv, name } = envWithName;
|
||||||
describe(`Environment: ${name}`, () => {
|
describe(`Environment: ${name}`, () => {
|
||||||
@@ -347,23 +424,23 @@ describe('structureSetup', () => {
|
|||||||
describe('basic', () => {
|
describe('basic', () => {
|
||||||
test('Element', () => {
|
test('Element', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy(getTarget(isTextarea)),
|
createStructureSetupProxy(getTarget(isTextarea)),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Object', () => {
|
test('Object', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({ target: getTarget(isTextarea) }),
|
createStructureSetupProxy({ target: getTarget(isTextarea) }),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -376,16 +453,16 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding">${content}</div></div>`
|
`<div id="${hostId}"><div id="padding">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: document.querySelector<HTMLElement>('#padding')!,
|
padding: () => document.querySelector<HTMLElement>('#padding')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -395,16 +472,16 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: () => document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -414,7 +491,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="content">${content}</div></div>`
|
`<div id="${hostId}"><div id="content">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -423,7 +500,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -435,18 +512,18 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding"><div id="viewport"><div id="content">${content}</div></div></div></div>`
|
`<div id="${hostId}"><div id="padding"><div id="viewport"><div id="content">${content}</div></div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: document.querySelector<HTMLElement>('#padding')!,
|
padding: document.querySelector<HTMLElement>('#padding')!,
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
content: document.querySelector<HTMLElement>('#content')!,
|
content: () => document.querySelector<HTMLElement>('#content')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -456,17 +533,17 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding"><div id="viewport">${content}</div></div></div>`
|
`<div id="${hostId}"><div id="padding"><div id="viewport">${content}</div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: () => document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: document.querySelector<HTMLElement>('#padding')!,
|
padding: document.querySelector<HTMLElement>('#padding')!,
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -476,17 +553,17 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding"><div id="content">${content}</div></div></div>`
|
`<div id="${hostId}"><div id="padding"><div id="content">${content}</div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: document.querySelector<HTMLElement>('#padding')!,
|
padding: () => document.querySelector<HTMLElement>('#padding')!,
|
||||||
content: document.querySelector<HTMLElement>('#content')!,
|
content: document.querySelector<HTMLElement>('#content')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -496,17 +573,17 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport"><div id="content">${content}</div></div></div>`
|
`<div id="${hostId}"><div id="viewport"><div id="content">${content}</div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
content: document.querySelector<HTMLElement>('#content')!,
|
content: () => document.querySelector<HTMLElement>('#content')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -514,7 +591,7 @@ describe('structureSetup', () => {
|
|||||||
describe('single false', () => {
|
describe('single false', () => {
|
||||||
test('padding', () => {
|
test('padding', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
@@ -522,21 +599,21 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('content', () => {
|
test('content', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
content: false,
|
content: () => false,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -544,21 +621,21 @@ describe('structureSetup', () => {
|
|||||||
describe('single true', () => {
|
describe('single true', () => {
|
||||||
test('padding', () => {
|
test('padding', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: true,
|
padding: () => true,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('content', () => {
|
test('content', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
@@ -566,7 +643,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -574,7 +651,7 @@ describe('structureSetup', () => {
|
|||||||
describe('multiple false', () => {
|
describe('multiple false', () => {
|
||||||
test('padding & content', () => {
|
test('padding & content', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
@@ -583,7 +660,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -591,7 +668,7 @@ describe('structureSetup', () => {
|
|||||||
describe('multiple true', () => {
|
describe('multiple true', () => {
|
||||||
test('padding & content', () => {
|
test('padding & content', () => {
|
||||||
const snapshot = fillBody(isTextarea);
|
const snapshot = fillBody(isTextarea);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
@@ -600,7 +677,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -612,7 +689,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -623,7 +700,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -633,7 +710,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -644,7 +721,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -654,18 +731,18 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: false,
|
padding: () => false,
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
content: true,
|
content: () => true,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -675,18 +752,18 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: true,
|
padding: true,
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: () => document.querySelector<HTMLElement>('#viewport')!,
|
||||||
content: false,
|
content: false,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -696,7 +773,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="content">${content}</div></div>`
|
`<div id="${hostId}"><div id="content">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -706,7 +783,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -716,7 +793,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="content">${content}</div></div>`
|
`<div id="${hostId}"><div id="content">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -726,7 +803,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -736,17 +813,17 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: false,
|
padding: () => false,
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -756,7 +833,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -766,7 +843,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -776,18 +853,18 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport"><div id="content">${content}</div></div></div>`
|
`<div id="${hostId}"><div id="viewport"><div id="content">${content}</div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
padding: false,
|
padding: false,
|
||||||
content: document.querySelector<HTMLElement>('#content')!,
|
content: () => document.querySelector<HTMLElement>('#content')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -797,18 +874,18 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport"><div id="content">${content}</div></div></div>`
|
`<div id="${hostId}"><div id="viewport"><div id="content">${content}</div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: () => document.querySelector<HTMLElement>('#viewport')!,
|
||||||
padding: true,
|
padding: true,
|
||||||
content: document.querySelector<HTMLElement>('#content')!,
|
content: document.querySelector<HTMLElement>('#content')!,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -818,7 +895,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding">${content}</div></div>`
|
`<div id="${hostId}"><div id="padding">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -828,7 +905,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -838,17 +915,17 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding">${content}</div></div>`
|
`<div id="${hostId}"><div id="padding">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: () => document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: document.querySelector<HTMLElement>('#padding')!,
|
padding: document.querySelector<HTMLElement>('#padding')!,
|
||||||
content: true,
|
content: true,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -858,17 +935,17 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: () => document.querySelector<HTMLElement>('#viewport')!,
|
||||||
content: false,
|
content: false,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -878,7 +955,7 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
`<div id="${hostId}"><div id="viewport">${content}</div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
@@ -888,7 +965,7 @@ describe('structureSetup', () => {
|
|||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -898,18 +975,18 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding"><div id="viewport">${content}</div></div></div>`
|
`<div id="${hostId}"><div id="padding"><div id="viewport">${content}</div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: document.querySelector<HTMLElement>('#padding')!,
|
padding: () => document.querySelector<HTMLElement>('#padding')!,
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
||||||
content: false,
|
content: () => false,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -919,18 +996,18 @@ describe('structureSetup', () => {
|
|||||||
(content, hostId) =>
|
(content, hostId) =>
|
||||||
`<div id="${hostId}"><div id="padding"><div id="viewport">${content}</div></div></div>`
|
`<div id="${hostId}"><div id="padding"><div id="viewport">${content}</div></div></div>`
|
||||||
);
|
);
|
||||||
const [, destroy] = assertCorrectSetupElements(
|
const [elements, destroy] = assertCorrectSetupElements(
|
||||||
isTextarea,
|
isTextarea,
|
||||||
createStructureSetupProxy({
|
createStructureSetupProxy({
|
||||||
host: document.querySelector<HTMLElement>('#host')!,
|
host: () => document.querySelector<HTMLElement>('#host')!,
|
||||||
target: getTarget(isTextarea),
|
target: getTarget(isTextarea),
|
||||||
padding: document.querySelector<HTMLElement>('#padding')!,
|
padding: document.querySelector<HTMLElement>('#padding')!,
|
||||||
viewport: document.querySelector<HTMLElement>('#viewport')!,
|
viewport: () => document.querySelector<HTMLElement>('#viewport')!,
|
||||||
content: true,
|
content: true,
|
||||||
}),
|
}),
|
||||||
currEnv
|
currEnv
|
||||||
);
|
);
|
||||||
assertCorrectDOMStructure(isTextarea);
|
assertCorrectDOMStructure(isTextarea, elements._viewportIsTarget);
|
||||||
assertCorrectDestroy(snapshot, destroy);
|
assertCorrectDestroy(snapshot, destroy);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
import { attr, removeAttr, val, scrollLeft, scrollTop } from 'support/dom/attribute';
|
import {
|
||||||
|
attr,
|
||||||
|
attrClass,
|
||||||
|
hasAttrClass,
|
||||||
|
removeAttr,
|
||||||
|
val,
|
||||||
|
scrollLeft,
|
||||||
|
scrollTop,
|
||||||
|
} from 'support/dom/attribute';
|
||||||
|
|
||||||
const testElm = document.body;
|
const testElm = document.body;
|
||||||
|
const getAttribute = (name: string) => testElm.getAttribute(name);
|
||||||
const setAttribute = (name: string, value: string) => {
|
const setAttribute = (name: string, value: string) => {
|
||||||
testElm.setAttribute(name, value);
|
testElm.setAttribute(name, value);
|
||||||
};
|
};
|
||||||
@@ -46,6 +55,66 @@ describe('dom attributes', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('attrClass', () => {
|
||||||
|
test('add', () => {
|
||||||
|
const attrName = 'data-test-attrClass-add';
|
||||||
|
|
||||||
|
attrClass(testElm, attrName, '000', true);
|
||||||
|
expect(getAttribute(attrName)).toBe('000');
|
||||||
|
|
||||||
|
setAttribute(attrName, '123');
|
||||||
|
attrClass(testElm, attrName, '456', true);
|
||||||
|
expect(getAttribute(attrName)).toBe('123 456');
|
||||||
|
|
||||||
|
attrClass(testElm, attrName, '789', true);
|
||||||
|
attrClass(testElm, attrName, '789', true);
|
||||||
|
expect(getAttribute(attrName)).toBe('123 456 789');
|
||||||
|
|
||||||
|
attrClass(testElm, attrName, '', true);
|
||||||
|
expect(getAttribute(attrName)).toBe('123 456 789');
|
||||||
|
|
||||||
|
removeAttribute(attrName);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('remove', () => {
|
||||||
|
const attrName = 'data-test-attrClass-remove';
|
||||||
|
|
||||||
|
setAttribute(attrName, '123');
|
||||||
|
attrClass(testElm, attrName, '456');
|
||||||
|
expect(getAttribute(attrName)).toBe('123');
|
||||||
|
|
||||||
|
attrClass(testElm, attrName, '123');
|
||||||
|
expect(getAttribute(attrName)).toBe('');
|
||||||
|
attrClass(testElm, attrName, '123');
|
||||||
|
expect(getAttribute(attrName)).toBe('');
|
||||||
|
|
||||||
|
attrClass(testElm, attrName, '', true);
|
||||||
|
expect(getAttribute(attrName)).toBe('');
|
||||||
|
|
||||||
|
removeAttribute(attrName);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('hasAttrClass', () => {
|
||||||
|
test('hasAttrClass', () => {
|
||||||
|
const attrName = 'data-test-hasAttrClass';
|
||||||
|
|
||||||
|
expect(hasAttrClass(testElm, attrName, '123')).toBe(false);
|
||||||
|
|
||||||
|
setAttribute(attrName, '123');
|
||||||
|
attrClass(testElm, attrName, '456', true);
|
||||||
|
attrClass(testElm, attrName, '789', true);
|
||||||
|
expect(hasAttrClass(testElm, attrName, '123')).toBe(true);
|
||||||
|
expect(hasAttrClass(testElm, attrName, '456')).toBe(true);
|
||||||
|
expect(hasAttrClass(testElm, attrName, '789')).toBe(true);
|
||||||
|
expect(hasAttrClass(testElm, attrName, '123 456 789')).toBe(false);
|
||||||
|
|
||||||
|
expect(hasAttrClass(testElm, attrName, '')).toBe(false);
|
||||||
|
|
||||||
|
removeAttribute(attrName);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('scrollLeft', () => {
|
describe('scrollLeft', () => {
|
||||||
test('get', () => {
|
test('get', () => {
|
||||||
setScrollLeft(100);
|
setScrollLeft(100);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ describe('dom class names', () => {
|
|||||||
describe('add', () => {
|
describe('add', () => {
|
||||||
test('none', () => {
|
test('none', () => {
|
||||||
addClass(testElm, '');
|
addClass(testElm, '');
|
||||||
|
addClass(testElm, ' ');
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
addClass(testElm, null);
|
addClass(testElm, null);
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -53,6 +54,7 @@ describe('dom class names', () => {
|
|||||||
test('none', () => {
|
test('none', () => {
|
||||||
addClass(testElm, 'test-class');
|
addClass(testElm, 'test-class');
|
||||||
removeClass(testElm, '');
|
removeClass(testElm, '');
|
||||||
|
removeClass(testElm, ' ');
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
removeClass(testElm, null);
|
removeClass(testElm, null);
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -82,6 +84,7 @@ describe('dom class names', () => {
|
|||||||
describe('has', () => {
|
describe('has', () => {
|
||||||
test('none', () => {
|
test('none', () => {
|
||||||
expect(hasClass(testElm, '')).toBe(false);
|
expect(hasClass(testElm, '')).toBe(false);
|
||||||
|
expect(hasClass(testElm, ' ')).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('single', () => {
|
test('single', () => {
|
||||||
@@ -103,6 +106,7 @@ describe('dom class names', () => {
|
|||||||
describe('diff', () => {
|
describe('diff', () => {
|
||||||
test('none', () => {
|
test('none', () => {
|
||||||
expect(diffClass('', '')).toEqual([]);
|
expect(diffClass('', '')).toEqual([]);
|
||||||
|
expect(diffClass('', ' ')).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('single', () => {
|
test('single', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user