294 lines
13 KiB
JavaScript
294 lines
13 KiB
JavaScript
"use strict";
|
||
|
||
function _createForOfIteratorHelper(e, t) {
|
||
var o = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
|
||
if (!o) {
|
||
if (Array.isArray(e) || (o = _unsupportedIterableToArray(e)) || t && e && "number" == typeof e.length) {
|
||
o && (e = o);
|
||
var n = 0, r = function () {
|
||
};
|
||
return {
|
||
s: r, n: function () {
|
||
return n >= e.length ? {done: !0} : {done: !1, value: e[n++]}
|
||
}, e: function (e) {
|
||
throw e
|
||
}, f: r
|
||
}
|
||
}
|
||
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}
|
||
var a, i = !0, c = !1;
|
||
return {
|
||
s: function () {
|
||
o = o.call(e)
|
||
}, n: function () {
|
||
var e = o.next();
|
||
return i = e.done, e
|
||
}, e: function (e) {
|
||
c = !0, a = e
|
||
}, f: function () {
|
||
try {
|
||
i || null == o.return || o.return()
|
||
} finally {
|
||
if (c) throw a
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function _unsupportedIterableToArray(e, t) {
|
||
if (e) {
|
||
if ("string" == typeof e) return _arrayLikeToArray(e, t);
|
||
var o = Object.prototype.toString.call(e).slice(8, -1);
|
||
return "Object" === o && e.constructor && (o = e.constructor.name), "Map" === o || "Set" === o ? Array.from(e) : "Arguments" === o || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o) ? _arrayLikeToArray(e, t) : void 0
|
||
}
|
||
}
|
||
|
||
function _arrayLikeToArray(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var o = 0, n = new Array(t); o < t; o++) n[o] = e[o];
|
||
return n
|
||
}
|
||
|
||
function _typeof(e) {
|
||
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
||
return typeof e
|
||
} : function (e) {
|
||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
|
||
})(e)
|
||
}
|
||
|
||
function checkOpen() {
|
||
}
|
||
|
||
// https://blog.zhheo.com/p/c86d8f1f.html
|
||
// ?imageAve 使用 七牛云获取图片主色调,阿里云 oss 则是 @imageAve
|
||
// TODO 可以切换为使用本地 JS 获取色调
|
||
// function coverColor() {
|
||
// var _document$getElementB,
|
||
// path = null === (_document$getElementB = document.getElementById("post-cover")) || void 0 === _document$getElementB ? void 0 : _document$getElementB.src,
|
||
// httpRequest;
|
||
// void 0 !== path ? (httpRequest = new XMLHttpRequest, httpRequest.open("GET", path + "?imageAve", !0), httpRequest.send(), httpRequest.onreadystatechange = function () {
|
||
// var json, obj, value, value;
|
||
// 4 == httpRequest.readyState && 200 == httpRequest.status && (json = httpRequest.responseText, obj = eval("(" + json + ")"), value = obj.RGB, value = "#" + value.slice(2), "light" == getContrastYIQ(value) && (value = LightenDarkenColor(colorHex(value), -40)), document.styleSheets[0].addRule(":root", "--heo-main:" + value + "!important"), document.styleSheets[0].addRule(":root", "--heo-main-op:" + value + "23!important"), document.styleSheets[0].addRule(":root", "--heo-main-none:" + value + "00!important"), heo.initThemeColor(), document.getElementById("coverdiv").classList.add("loaded"))
|
||
// }) : (document.styleSheets[0].addRule(":root", "--heo-main: var(--heo-theme)!important"), document.styleSheets[0].addRule(":root", "--heo-main-op: var(--heo-theme-op)!important"), document.styleSheets[0].addRule(":root", "--heo-main-none: var(--heo-theme-none)!important"), heo.initThemeColor())
|
||
// }
|
||
|
||
function colorHex(e) {
|
||
var t = e;
|
||
if (/^(rgb|RGB)/.test(t)) {
|
||
for (var o = t.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(","), n = "#", r = 0; r < o.length; r++) {
|
||
var a = Number(o[r]).toString(16);
|
||
"0" === a && (a += a), n += a
|
||
}
|
||
return 7 !== n.length && (n = t), n
|
||
}
|
||
if (!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)) return t;
|
||
var i = t.replace(/#/, "").split("");
|
||
if (6 === i.length) return t;
|
||
if (3 === i.length) {
|
||
for (var c = "#", r = 0; r < i.length; r += 1) c += i[r] + i[r];
|
||
return c
|
||
}
|
||
}
|
||
|
||
function colorRgb(e) {
|
||
var t = e.toLowerCase();
|
||
if (t && /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)) {
|
||
if (4 === t.length) {
|
||
for (var o = "#", n = 1; n < 4; n += 1) o += t.slice(n, n + 1).concat(t.slice(n, n + 1));
|
||
t = o
|
||
}
|
||
for (var r = [], n = 1; n < 7; n += 2) r.push(parseInt("0x" + t.slice(n, n + 2)));
|
||
return "rgb(" + r.join(",") + ")"
|
||
}
|
||
return t
|
||
}
|
||
|
||
function LightenDarkenColor(e, t) {
|
||
var o = !1;
|
||
"#" == e[0] && (e = e.slice(1), o = !0);
|
||
var n = parseInt(e, 16), r = (n >> 16) + t;
|
||
255 < r ? r = 255 : r < 0 && (r = 0);
|
||
var a = (n >> 8 & 255) + t;
|
||
255 < a ? a = 255 : a < 0 && (a = 0);
|
||
var i = (255 & n) + t;
|
||
return 255 < i ? i = 255 : i < 0 && (i = 0), (o ? "#" : "") + String("000000" + (i | a << 8 | r << 16).toString(16)).slice(-6)
|
||
}
|
||
|
||
function getContrastYIQ(e) {
|
||
var t = colorRgb(e).match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/), o = 299 * t[1] + 587 * t[2] + 114 * t[3];
|
||
return .5 <= (o /= 255e3) ? "light" : "dark"
|
||
}
|
||
|
||
function navTitle() {
|
||
var e = document.title.replace(" | halo", "");
|
||
document.getElementById("page-name-text").innerHTML = e
|
||
}
|
||
|
||
checkOpen.toString = function () {
|
||
this.opened = !0
|
||
}, window.onload = function () {
|
||
for (var e = document.getElementsByClassName("copybtn"), t = 0; t < e.length; t++) document.getElementsByClassName("copybtn")[t].addEventListener("click", function () {
|
||
showcopy()
|
||
});
|
||
heo.initThemeColor()
|
||
};
|
||
|
||
var getTimeState = function () {
|
||
var e = (new Date).getHours(), t = "";
|
||
return 0 <= e && e <= 5 ? t = "晚安" : 5 < e && e <= 10 ? t = "早上好" : 10 < e && e <= 14 ? t = "中午好" : 14 < e && e <= 18 ? t = "下午好" : 18 < e && e <= 24 && (t = "晚上好"), t
|
||
};
|
||
|
||
function fly_to_top() {
|
||
document.getElementById("guli_top").classList.add("open_wing"), setTimeout(function () {
|
||
document.getElementById("guli_top").classList.add("flying"), btf.scrollToDest(0, 300)
|
||
}, 300), setTimeout(function () {
|
||
document.getElementById("guli_top").classList.remove("flying"), document.getElementById("guli_top").classList.remove("open_wing"), document.getElementById("guli_top").style.cssText = "opacity: ''; transform: ''"
|
||
}, 600)
|
||
}
|
||
|
||
var navFn = {
|
||
switchDarkMode: function () {
|
||
"light" == ("dark" === document.documentElement.getAttribute("data-theme") ? "dark" : "light") ? (activateDarkMode(), saveToLocal.set("theme", "dark", 2), void 0 !== GLOBAL_CONFIG.Snackbar && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.day_to_night, !1, 2e3)) : (activateLightMode(), saveToLocal.set("theme", "light", 2), void 0 !== GLOBAL_CONFIG.Snackbar && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.night_to_day, !1, 2e3)), "function" == typeof utterancesTheme && utterancesTheme(), "object" === ("undefined" == typeof FB ? "undefined" : _typeof(FB)) && window.loadFBComment(), window.DISQUS && document.getElementById("disqus_thread").children.length && setTimeout(function () {
|
||
return window.disqusReset()
|
||
}, 200);
|
||
var e, t, o, n = "light" === document.documentElement.getAttribute("data-theme") ? "#363636" : "#F7F7FA";
|
||
document.getElementById("posts-chart") && ((e = postsOption).textStyle.color = n, e.title.textStyle.color = n, e.xAxis.axisLine.lineStyle.color = n, e.yAxis.axisLine.lineStyle.color = n, postsChart.setOption(e)), document.getElementById("tags-chart") && ((t = tagsOption).textStyle.color = n, t.title.textStyle.color = n, t.xAxis.axisLine.lineStyle.color = n, t.yAxis.axisLine.lineStyle.color = n, tagsChart.setOption(t)), document.getElementById("categories-chart") && ((o = categoriesOption).textStyle.color = n, o.title.textStyle.color = n, o.legend.textStyle.color = n, categoriesChart.setOption(o))
|
||
}
|
||
};
|
||
|
||
function RemoveRewardMask() {
|
||
$(".reward-main").attr("style", "display: none"), $("#quit-box").attr("style", "display: none")
|
||
}
|
||
// 移除加载动画
|
||
function removeLoading() {
|
||
setTimeout(function () {
|
||
preloader.endLoading()
|
||
}, 3e3)
|
||
}
|
||
|
||
function getArrayItems(e, t) {
|
||
var o = new Array;
|
||
for (var n in e) o.push(e[n]);
|
||
for (var r = new Array, a = 0; a < t && 0 < o.length; a++) {
|
||
var i = Math.floor(Math.random() * o.length);
|
||
r[a] = o[i], o.splice(i, 1)
|
||
}
|
||
return r
|
||
}
|
||
|
||
function owoBig() {
|
||
document.getElementById("post-comment").addEventListener("DOMNodeInserted", function (e) {
|
||
var t, o, n, a;
|
||
!e.target.classList || "OwO-body" != e.target.classList.value || (t = e.target) && (n = !(o = ""), (a = document.createElement("div")).id = "owo-big", document.querySelector("body").appendChild(a), t.addEventListener("contextmenu", function (e) {
|
||
return e.preventDefault()
|
||
}), t.addEventListener("mouseover", function (r) {
|
||
"LI" == r.target.tagName && n && (n = !1, o = setTimeout(function () {
|
||
var e = 3 * r.path[0].clientHeight, t = 3 * r.path[0].clientWidth,
|
||
o = r.x - r.offsetX - (t - r.path[0].clientWidth) / 2, n = r.y - r.offsetY;
|
||
a.style.height = e + "px", a.style.width = t + "px", a.style.left = o + "px", a.style.top = n + "px", a.style.display = "flex", a.innerHTML = '<img src="'.concat(r.target.querySelector("img").src, '">')
|
||
}, 300))
|
||
}), t.addEventListener("mouseout", function (e) {
|
||
a.style.display = "none", n = !0, clearTimeout(o)
|
||
}))
|
||
})
|
||
}
|
||
|
||
function percent() {
|
||
var e = document.documentElement.scrollTop || window.pageYOffset,
|
||
t = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight) - document.documentElement.clientHeight,
|
||
o = Math.round(e / t * 100), n = document.querySelector("#percent"),
|
||
r = window.scrollY + document.documentElement.clientHeight,
|
||
a = document.getElementById("post-tools") || document.getElementById("footer");
|
||
a.offsetTop + a.offsetHeight / 2 < r || 90 < o ? (document.querySelector("#nav-totop").classList.add("long"), n.innerHTML = "返回顶部") : (document.querySelector("#nav-totop").classList.remove("long"), n.innerHTML = o)
|
||
}
|
||
|
||
document.addEventListener("touchstart", function (e) {
|
||
RemoveRewardMask()
|
||
}, !1);
|
||
|
||
$(document).unbind("keydown").bind("keydown", function (e) {
|
||
if ((e.ctrlKey || e.metaKey) && 67 == e.keyCode && "" != selectTextNow) return btf.snackbarShow("复制成功,复制和转载请标注本文地址"), rm.rightmenuCopyText(selectTextNow), !1
|
||
});
|
||
|
||
document.addEventListener("scroll", btf.throttle(function () {
|
||
heo.initThemeColor()
|
||
}, 200));
|
||
|
||
navigator.serviceWorker.getRegistrations().then(function (e) {
|
||
var t, o = _createForOfIteratorHelper(e);
|
||
try {
|
||
for (o.s(); !(t = o.n()).done;) {
|
||
t.value.unregister()
|
||
}
|
||
} catch (e) {
|
||
o.e(e)
|
||
} finally {
|
||
o.f()
|
||
}
|
||
});
|
||
|
||
window.onkeydown = function (e) {
|
||
123 === e.keyCode && btf.snackbarShow("开发者模式已打开,请遵循GPL协议", !1, 3e3)
|
||
};
|
||
|
||
document.querySelector("#console").addEventListener("wheel", function (e) {
|
||
e.preventDefault()
|
||
});
|
||
|
||
window.addEventListener("resize", function () {
|
||
document.querySelector("#waterfall") && heo.reflashEssayWaterFall()
|
||
});
|
||
|
||
|
||
document.getElementById("post-comment") && owoBig(), document.addEventListener("scroll", btf.throttle(function () {
|
||
var e, t = window.scrollY + document.documentElement.clientHeight,
|
||
o = (window.scrollY, document.getElementById("pagination")), n = document.getElementById("post-tools");
|
||
n && o && (e = n.offsetTop + n.offsetHeight / 2, 1300 < document.body.clientWidth && (e < t ? o.classList.add("show-window") : o.classList.remove("show-window")))
|
||
}, 200)), "false" !== localStorage.getItem("keyboardToggle") ? document.querySelector("#consoleKeyboard").classList.add("on") : document.querySelector("#consoleKeyboard").classList.remove("on"), $(window).on("keydown", function (e) {
|
||
if (27 == e.keyCode && (heo.hideLoading(), heo.hideConsole(), rm.hideRightMenu()), heo_keyboard && e.shiftKey) {
|
||
if (16 == e.keyCode && document.querySelector("#keyboard-tips").classList.add("show"), 75 == e.keyCode) return heo.keyboardToggle(), !1;
|
||
if (65 == e.keyCode) return heo.showConsole(), !1;
|
||
if (77 == e.keyCode) return heo.musicToggle(), !1;
|
||
if (82 == e.keyCode) return toRandomPost(), !1;
|
||
if (66 == e.keyCode) return pjax.loadUrl("/"), !1;
|
||
if (68 == e.keyCode) return rm.switchDarkMode(), !1;
|
||
if (70 == e.keyCode) return pjax.loadUrl("/moments/"), !1
|
||
}
|
||
});
|
||
|
||
$(window).on("keyup", function (e) {
|
||
16 == e.keyCode && document.querySelector("#keyboard-tips").classList.remove("show")
|
||
});
|
||
|
||
document.addEventListener("pjax:send", function () {
|
||
//heo.showLoading()
|
||
});
|
||
|
||
document.addEventListener("load", function () {
|
||
heo.categoriesBarActive();
|
||
heo.tagPageActive();
|
||
heo.onlyHome();
|
||
heo.addNavBackgroundInit();
|
||
heo.reflashEssayWaterFall();
|
||
heo.darkModeStatus();
|
||
heo.initThemeColor();
|
||
percent();
|
||
heo.hideLoading();
|
||
});
|
||
heo.initThemeColor();
|
||
window.onscroll = function () {
|
||
percent();
|
||
};
|
||
|
||
|
||
<!-- 图片 404 -->
|
||
function imgError(url) {
|
||
$("img").on("error", function () {
|
||
$(this).attr("src", url);
|
||
});
|
||
}
|
||
|
||
|