t10015/utils/scrollCue.min.js
2025-08-21 15:58:23 +08:00

313 lines
10 KiB
JavaScript

function scrollQue() {
var r,
n,
a,
o = {},
s = 0,
l = !0,
c = !0,
d = !1,
t = !1,
i = {
duration: 600,
interval: -0.7,
percentage: 0.75,
enable: !0,
docSlider: !1,
pageChangeReset: !1,
},
o = {
setEvents: function (e) {
function t() {
l &&
(requestAnimationFrame(function () {
(l = !0), c && (o.setQuery(), o.runQuery());
}),
(l = !1));
}
if (
(c && !e && window.addEventListener("load", o.runQuery),
window.addEventListener("scroll", t),
d)
) {
e = docSlider.getElements().pages;
for (var i = 0; i < e.length; i++)
e[i].addEventListener("scroll", function (e) {
if (
docSlider.getCurrentIndex() + "" !==
(e = e.target.getAttribute("data-ds-index"))
)
return !1;
docSlider._getWheelEnable() && t();
});
}
window.addEventListener("resize", function () {
0 < s && clearTimeout(s),
(s = setTimeout(function () {
c && (o.searchElements(), o.setQuery(), o.runQuery());
}, 200));
});
},
setOptions: function (t, i) {
var s = {};
if (void 0 !== t)
return (
Object.keys(t).forEach(function (e) {
"[object Object]" === Object.prototype.toString.call(t[e])
? (s[e] = o.setOptions(t[e], i[e]))
: ((s[e] = t[e]),
void 0 !== i && void 0 !== i[e] && (s[e] = i[e]));
}),
s
);
},
searchElements: function () {
r = [];
for (
var e = document.querySelectorAll("[data-cues]:not([data-disabled])"),
t = 0;
t < e.length;
t++
) {
for (var i = e[t], s = 0; s < i.children.length; s++) {
var n = i.children[s];
o.setAttrPtoC(n, "data-cue", i, "data-cues", ""),
o.setAttrPtoC(n, "data-duration", i, "data-duration", !1),
o.setAttrPtoC(n, "data-interval", i, "data-interval", !1),
o.setAttrPtoC(n, "data-sort", i, "data-sort", !1),
o.setAttrPtoC(n, "data-addClass", i, "data-addClass", !1),
o.setAttrPtoC(n, "data-group", i, "data-group", !1),
o.setAttrPtoC(n, "data-delay", i, "data-delay", !1);
}
i.setAttribute("data-disabled", "true");
}
for (
e = document.querySelectorAll('[data-cue]:not([data-show="true"])'),
t = 0;
t < e.length;
t++
)
(i = e[t]),
r.push({
elm: i,
cue: o.getAttr(i, "data-cue", "fadeIn"),
duration: Number(o.getAttr(i, "data-duration", a.duration)),
interval: Number(o.getAttr(i, "data-interval", a.interval)),
order: o.getOrderNumber(i),
sort: o.getAttr(i, "data-sort", null),
addClass: o.getAttr(i, "data-addClass", null),
group: o.getAttr(i, "data-group", null),
delay: Number(o.getAttr(i, "data-delay", 0)),
});
if (d)
for (e = docSlider.getElements().pages.length, t = 0; t < e; t++)
for (
i = document.querySelectorAll(
'[data-ds-index="' + t + '"] [data-cue]:not([data-scpage])'
),
s = 0;
s < i.length;
s++
)
i[s].setAttribute("data-scpage", t);
},
sortElements: function () {
for (
var e = arguments[0],
r = [].slice.call(arguments).slice(1),
t = { $jscomp$loop$prop$i$4: 0 };
t.$jscomp$loop$prop$i$4 < r.length;
(t = { $jscomp$loop$prop$i$4: t.$jscomp$loop$prop$i$4 })
.$jscomp$loop$prop$i$4++
)
e.sort(
(function (n) {
return function (e, t) {
var i =
void 0 === r[n.$jscomp$loop$prop$i$4][1] ||
r[n.$jscomp$loop$prop$i$4][1],
s = r[n.$jscomp$loop$prop$i$4][0];
return e[s] > t[s]
? i
? 1
: -1
: e[s] < t[s]
? i
? -1
: 1
: 0;
};
})(t)
);
},
randElements: function (e) {
for (var t = e.length - 1; 0 < t; t--) {
var i = Math.floor(Math.random() * (t + 1)),
s = e[t];
(e[t] = e[i]), (e[i] = s);
}
return e;
},
setDurationValue: function (e, t, i) {
return void 0 !== t &&
((t = t.duration),
(e = -1 === (i + "").indexOf(".") ? e + t + i : e + t + t * i) < 0)
? 0
: e;
},
getOrderNumber: function (e) {
return e.hasAttribute("data-order")
? 0 <= (e = Number(e.getAttribute("data-order")))
? e
: Math.pow(2, 53) - 1 + e
: Math.pow(2, 52) - 1;
},
setAttrPtoC: function (e, t, i, s, n) {
i.hasAttribute(s)
? e.hasAttribute(t) || e.setAttribute(t, i.getAttribute(s))
: !1 !== n && e.setAttribute(t, n);
},
getAttr: function (e, t, i) {
return e.hasAttribute(t) ? e.getAttribute(t) : i;
},
getOffsetTop: function (e) {
return (
e.getBoundingClientRect().top +
(window.pageYOffset || document.documentElement.scrollTop)
);
},
setClassNames: function (e, t) {
if (t) {
t = t.split(" ");
for (var i = 0; i < t.length; i++) e.classList.add(t[i]);
}
},
setQuery: function () {
n = {};
for (var e = 0; e < r.length; e++) {
var t = r[e],
i = t.group || "$" + o.getOffsetTop(t.elm);
if (!t.elm.hasAttribute("data-show")) {
if (d) {
var s = t.elm.getAttribute("data-scpage");
if (s !== docSlider.getCurrentIndex() + "" && null !== s)
continue;
}
void 0 === n[i] && (n[i] = []), n[i].push(t);
}
}
},
runQuery: function () {
for (
var e = Object.keys(n), t = {}, i = 0;
i < e.length;
t = {
$jscomp$loop$prop$elms$6: t.$jscomp$loop$prop$elms$6,
$jscomp$loop$prop$interval$7: t.$jscomp$loop$prop$interval$7,
},
i++
)
if (
((t.$jscomp$loop$prop$elms$6 = n[e[i]]),
o.isElementIn(t.$jscomp$loop$prop$elms$6[0].elm))
) {
"reverse" === t.$jscomp$loop$prop$elms$6[0].sort
? t.$jscomp$loop$prop$elms$6.reverse()
: "random" === t.$jscomp$loop$prop$elms$6[0].sort &&
o.randElements(t.$jscomp$loop$prop$elms$6),
o.sortElements(t.$jscomp$loop$prop$elms$6, ["order"]);
for (
var s = (t.$jscomp$loop$prop$interval$7 = 0);
s < t.$jscomp$loop$prop$elms$6.length;
s++
)
!(function (t) {
return function (e) {
t.$jscomp$loop$prop$elms$6[e].elm.setAttribute(
"data-show",
"true"
),
o.setClassNames(
t.$jscomp$loop$prop$elms$6[e].elm,
t.$jscomp$loop$prop$elms$6[e].addClass
),
(t.$jscomp$loop$prop$interval$7 = o.setDurationValue(
t.$jscomp$loop$prop$interval$7,
t.$jscomp$loop$prop$elms$6[e - 1],
t.$jscomp$loop$prop$elms$6[e].interval
)),
(t.$jscomp$loop$prop$elms$6[e].elm.style.animationName =
t.$jscomp$loop$prop$elms$6[e].cue),
(t.$jscomp$loop$prop$elms$6[e].elm.style.animationDuration =
t.$jscomp$loop$prop$elms$6[e].duration + "ms"),
(t.$jscomp$loop$prop$elms$6[
e
].elm.style.animationTimingFunction = "ease"),
(t.$jscomp$loop$prop$elms$6[e].elm.style.animationDelay =
t.$jscomp$loop$prop$interval$7 +
t.$jscomp$loop$prop$elms$6[e].delay +
"ms"),
(t.$jscomp$loop$prop$elms$6[
e
].elm.style.animationDirection = "normal"),
(t.$jscomp$loop$prop$elms$6[e].elm.style.animationFillMode =
"both");
};
})(t)(s);
delete n[e[i]];
}
},
isElementIn: function (e) {
var t = e.hasAttribute("data-scpage")
? o.isScrollEndWithDocSlider
: o.isScrollEnd;
return (
window.pageYOffset >
o.getOffsetTop(e) - window.innerHeight * a.percentage || t()
);
},
isScrollEnd: function () {
var e = window.document.documentElement;
return (
(window.document.body.scrollTop || e.scrollTop) >=
e.scrollHeight - e.clientHeight
);
},
isScrollEndWithDocSlider: function () {
var e = docSlider.getCurrentPage();
return e.scrollTop >= e.scrollHeight - e.clientHeight;
},
};
return {
init: function (e) {
(a = o.setOptions(i, e)),
(c = a.enable),
(d = a.docSlider),
(t = a.pageChangeReset),
d || (o.setEvents(), o.searchElements(), o.setQuery());
},
update: function () {
c && (o.searchElements(), o.setQuery(), o.runQuery());
},
enable: function (e) {
(c = void 0 === e ? !c : e), scrollCue.update();
},
_hasDocSlider: function () {
return d;
},
_hasPageChangeReset: function () {
return t;
},
_initWithDocSlider: function (e) {
o.setEvents(e), o.searchElements(), o.setQuery();
},
_updateWithDocSlider: function () {
c && (o.setQuery(), o.runQuery());
},
_searchElements: function () {
o.searchElements();
},
};
}
export default scrollQue;