"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 = '') }, 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(); }; function imgError(url) { $("img").on("error", function () { $(this).attr("src", url); }); }