farallon/dist/js/bundle.js

355 lines
16 KiB
JavaScript
Raw Normal View History

2024-05-17 16:02:08 +08:00
(() => {
// <stdin>
window.addComment = function(v) {
var I, C, h, E = v.document, b = { commentReplyClass: "comment-reply-link", commentReplyTitleId: "reply-title", cancelReplyId: "cancel-comment-reply-link", commentFormId: "commentform", temporaryFormId: "wp-temp-form-div", parentIdFieldId: "comment_parent", postIdFieldId: "comment_post_ID" }, e = v.MutationObserver || v.WebKitMutationObserver || v.MozMutationObserver, r = "querySelector" in E && "addEventListener" in v, n = !!E.documentElement.dataset;
function t() {
d(), e && new e(o).observe(E.body, { childList: true, subtree: true });
}
function d(e2) {
if (r && (I = g(b.cancelReplyId), C = g(b.commentFormId), I)) {
let t3 = function(e3) {
if ((e3.metaKey || e3.ctrlKey) && 13 === e3.keyCode)
return C.removeEventListener("keydown", t3), e3.preventDefault(), C.submit.click(), false;
};
var t2 = t3;
I.addEventListener("touchstart", l), I.addEventListener("click", l);
C && C.addEventListener("keydown", t3);
for (var n2, d2 = function(e3) {
var t4 = b.commentReplyClass;
e3 && e3.childNodes || (e3 = E);
e3 = E.getElementsByClassName ? e3.getElementsByClassName(t4) : e3.querySelectorAll("." + t4);
return e3;
}(e2), o2 = 0, i = d2.length; o2 < i; o2++)
(n2 = d2[o2]).addEventListener("touchstart", a), n2.addEventListener("click", a);
}
}
function l(e2) {
var t2, n2, d2 = g(b.temporaryFormId);
d2 && h && (g(b.parentIdFieldId).value = "0", t2 = d2.textContent, d2.parentNode.replaceChild(h, d2), this.style.display = "none", n2 = (d2 = (d2 = g(b.commentReplyTitleId)) && d2.firstChild) && d2.nextSibling, d2 && d2.nodeType === Node.TEXT_NODE && t2 && (n2 && "A" === n2.nodeName && n2.id !== b.cancelReplyId && (n2.style.display = ""), d2.textContent = t2), e2.preventDefault());
}
function a(e2) {
var t2 = g(b.commentReplyTitleId), t2 = t2 && t2.firstChild.textContent, n2 = this, d2 = m(n2, "belowelement"), o2 = m(n2, "commentid"), i = m(n2, "respondelement"), r2 = m(n2, "postid"), n2 = m(n2, "replyto") || t2;
d2 && o2 && i && r2 && false === v.addComment.moveForm(d2, o2, i, r2, n2) && e2.preventDefault();
}
function o(e2) {
for (var t2 = e2.length; t2--; )
if (e2[t2].addedNodes.length)
return void d();
}
function m(e2, t2) {
return n ? e2.dataset[t2] : e2.getAttribute("data-" + t2);
}
function g(e2) {
return E.getElementById(e2);
}
return r && "loading" !== E.readyState ? t() : r && v.addEventListener("DOMContentLoaded", t, false), { init: d, moveForm: function(e2, t2, n2, d2, o2) {
var i, r2, l2, a2, m2, c, s, e2 = g(e2), n2 = (h = g(n2), g(b.parentIdFieldId)), y = g(b.postIdFieldId), p = g(b.commentReplyTitleId), u = (p = p && p.firstChild) && p.nextSibling;
if (e2 && h && n2) {
void 0 === o2 && (o2 = p && p.textContent), a2 = h, m2 = b.temporaryFormId, c = g(m2), s = (s = g(b.commentReplyTitleId)) ? s.firstChild.textContent : "", c || ((c = E.createElement("div")).id = m2, c.style.display = "none", c.textContent = s, a2.parentNode.insertBefore(c, a2)), d2 && y && (y.value = d2), n2.value = t2, I.style.display = "", e2.parentNode.insertBefore(h, e2.nextSibling), p && p.nodeType === Node.TEXT_NODE && (u && "A" === u.nodeName && u.id !== b.cancelReplyId && (u.style.display = "none"), p.textContent = o2), I.onclick = function() {
return false;
};
try {
for (var f = 0; f < C.elements.length; f++)
if (i = C.elements[f], r2 = false, "getComputedStyle" in v ? l2 = v.getComputedStyle(i) : E.documentElement.currentStyle && (l2 = i.currentStyle), (i.offsetWidth <= 0 && i.offsetHeight <= 0 || "hidden" === l2.visibility) && (r2 = true), "hidden" !== i.type && !i.disabled && !r2) {
i.focus();
break;
}
} catch (e3) {
}
return false;
}
} };
}(window);
})();
/*! This file is auto-generated */
;
(() => {
// ns-hugo:E:\OneDrive\桌面\suxiaoxiao\bigfa\bigfa.github.io\themes\farallon\assets\ts\utils.ts
var farallonHelper = class {
getCookie(t) {
if (0 < document.cookie.length) {
var e = document.cookie.indexOf(t + "=");
if (-1 != e) {
e = e + t.length + 1;
var n = document.cookie.indexOf(";", e);
return -1 == n && (n = document.cookie.length), document.cookie.substring(e, n);
}
}
return "";
}
setCookie(t, e, n) {
var o = /* @__PURE__ */ new Date();
o.setTime(o.getTime() + 24 * n * 60 * 60 * 1e3);
var i = "expires=" + o.toUTCString();
document.cookie = t + "=" + e + ";" + i + ";path=/";
}
showNotice(message, type = "success") {
const html = `<div class="notice--wrapper">${message}</div>`;
document.querySelector("body").insertAdjacentHTML("beforeend", html);
document.querySelector(".notice--wrapper").classList.add("is-active");
setTimeout(() => {
document.querySelector(".notice--wrapper").remove();
}, 3e3);
}
};
// ns-hugo:E:\OneDrive\桌面\suxiaoxiao\bigfa\bigfa.github.io\themes\farallon\assets\ts\date.ts
var farallonDate = class {
selector;
timeFormat = {
second: "second ago",
seconds: "seconds ago",
minute: "minute ago",
minutes: "minutes ago",
hour: "hour ago",
hours: "hours ago",
day: "day ago",
days: "days ago",
week: "week ago",
weeks: "weeks ago",
month: "month ago",
months: "months ago",
year: "year ago",
years: "years ago"
};
doms = [];
constructor(config) {
this.selector = config.selector;
if (config.timeFormat) {
this.timeFormat = config.timeFormat;
}
this.init();
setTimeout(() => {
this.refresh();
}, 1e3 * 5);
}
init() {
this.doms = Array.from(document.querySelectorAll(this.selector));
this.doms.forEach((dom) => {
dom.innerText = this.humanize_time_ago(
dom.attributes["datetime"].value
);
});
}
humanize_time_ago(datetime) {
const time = new Date(datetime);
const between = Date.now() / 1e3 - Number(time.getTime() / 1e3);
if (between < 3600) {
return `${Math.ceil(between / 60)} ${Math.ceil(between / 60) == 1 ? this.timeFormat.second : this.timeFormat.seconds}`;
} else if (between < 86400) {
return `${Math.ceil(between / 3600)} ${Math.ceil(between / 3660) == 1 ? this.timeFormat.hour : this.timeFormat.hours}`;
} else if (between < 86400 * 30) {
return `${Math.ceil(between / 86400)} ${Math.ceil(between / 86400) == 1 ? this.timeFormat.day : this.timeFormat.days}`;
} else if (between < 86400 * 30 * 12) {
return `${Math.ceil(between / (86400 * 30))} ${Math.ceil(between / (86400 * 30)) == 1 ? this.timeFormat.month : this.timeFormat.months}`;
} else {
return time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
}
}
refresh() {
this.doms.forEach((dom) => {
dom.innerText = this.humanize_time_ago(
dom.attributes["datetime"].value
);
});
}
};
var date_default = farallonDate;
// ns-hugo:E:\OneDrive\桌面\suxiaoxiao\bigfa\bigfa.github.io\themes\farallon\assets\ts\action.ts
var farallonActions = class extends farallonHelper {
singleSelector = ".post--single";
likeButtonSelctor = ".like-btn";
articleSelector = ".post--item";
viewSelector = ".article--views";
actionDomain;
text = "";
likeButton = null;
post_id;
is_single = false;
constructor(config) {
super();
this.singleSelector = config.singleSelector ?? this.singleSelector;
this.likeButtonSelctor = config.likeButtonSelctor ?? this.likeButtonSelctor;
this.articleSelector = config.articleSelector ?? this.articleSelector;
this.viewSelector = config.viewSelector ?? this.viewSelector;
this.actionDomain = config.actionDomain;
this.text = config.text ?? this.text;
this.is_single = document.querySelector(this.singleSelector) ? true : false;
if (this.is_single) {
const postSingle = document.querySelector(
this.singleSelector
);
this.post_id = postSingle.dataset.id ?? "";
this.initArticleLike();
}
}
initArticleLike() {
this.likeButton = document.querySelector(this.likeButtonSelctor);
if (this.likeButton) {
fetch(this.actionDomain + "post/" + this.post_id + "/like").then(
(res) => {
res.json().then((data) => {
this.likeButton.querySelector(
".count"
).innerText = data.likes;
});
}
);
this.likeButton.addEventListener("click", () => {
this.handleLike();
});
if (this.getCookie("like_" + this.post_id)) {
this.likeButton.classList.add("is-active");
}
}
}
handleLike() {
if (this.getCookie("like_" + this.post_id)) {
return this.showNotice("You have already liked this post");
}
if (this.likeButton) {
const url = this.actionDomain + "post/" + this.post_id + "/like";
fetch(url, {
method: "post"
}).then((response) => {
return response.json();
}).then((data) => {
this.showNotice("Thanks for your like");
const countElement = this.likeButton?.querySelector(
".count"
);
if (countElement) {
countElement.innerText = data.likes;
}
this.setCookie("like_" + this.post_id, "1", 1);
});
this.likeButton?.classList.add("is-active");
}
}
};
var action_default = farallonActions;
// <stdin>
var farallonBase = class extends farallonHelper {
is_single = false;
post_id = 0;
is_archive = false;
VERSION = "0.4.1";
like_btn;
selctor = ".like-btn";
// @ts-ignore
actionDomain = window.actionDomain;
constructor() {
super();
this.initCopyright();
this.initThemeSwitch();
this.initBack2Top();
this.initSearch();
}
initSearch() {
document.querySelector('[data-action="show-search"]').addEventListener("click", () => {
document.querySelector(".site--header__center .inner").classList.toggle("search--active");
});
}
initBack2Top() {
if (document.querySelector(".backToTop")) {
const backToTop = document.querySelector(
".backToTop"
);
window.addEventListener("scroll", () => {
const t = window.scrollY || window.pageYOffset;
t > 200 ? backToTop.classList.add("is-active") : backToTop.classList.remove("is-active");
});
backToTop.addEventListener("click", () => {
window.scrollTo({ top: 0, behavior: "smooth" });
});
}
}
initCopyright() {
const copyright = `<div class="site--footer__info">
Theme <a href="https://fatesinger.com/101971" target="_blank">farallon</a> by bigfa / version ${this.VERSION}
</div>`;
document.querySelector(".site--footer__content").insertAdjacentHTML("afterend", copyright);
document.querySelector(".icon--copryrights").addEventListener("click", () => {
document.querySelector(".site--footer__info").classList.toggle("active");
});
}
initThemeSwitch() {
const theme = localStorage.getItem("theme") ? localStorage.getItem("theme") : "auto";
const html = `<div class="fixed--theme">
<span class="${theme == "dark" ? "is-active" : ""}" data-action-value="dark">
<svg fill="none" height="24" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"
style="color: currentcolor; width: 16px; height: 16px;">
<path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
</svg>
</span>
<span class="${theme == "light" ? "is-active" : ""}" data-action-value="light">
<svg fill="none" height="24" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"
style="color: currentcolor; width: 16px; height: 16px;">
<circle cx="12" cy="12" r="5"></circle>
<path d="M12 1v2"></path>
<path d="M12 21v2"></path>
<path d="M4.22 4.22l1.42 1.42"></path>
<path d="M18.36 18.36l1.42 1.42"></path>
<path d="M1 12h2"></path>
<path d="M21 12h2"></path>
<path d="M4.22 19.78l1.42-1.42"></path>
<path d="M18.36 5.64l1.42-1.42"></path>
</svg>
</span>
<span class="${theme == "auto" ? "is-active" : ""}" data-action-value="auto">
<svg fill="none" height="24" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"
style="color: currentcolor; width: 16px; height: 16px;">
<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
<path d="M8 21h8"></path>
<path d="M12 17v4"></path>
</svg>
</span>
</div>`;
document.querySelector("body").insertAdjacentHTML("beforeend", html);
document.querySelectorAll(".fixed--theme span").forEach((item) => {
item.addEventListener("click", () => {
if (item.classList.contains("is-active"))
return;
document.querySelectorAll(".fixed--theme span").forEach((item2) => {
item2.classList.remove("is-active");
});
if (item.dataset.actionValue == "dark") {
localStorage.setItem("theme", "dark");
document.querySelector("body").classList.remove("auto");
document.querySelector("body").classList.add("dark");
item.classList.add("is-active");
} else if (item.dataset.actionValue == "light") {
localStorage.setItem("theme", "light");
document.querySelector("body").classList.remove("auto");
document.querySelector("body").classList.remove("dark");
item.classList.add("is-active");
} else if (item.dataset.actionValue == "auto") {
localStorage.setItem("theme", "auto");
document.querySelector("body").classList.remove("dark");
document.querySelector("body").classList.add("auto");
item.classList.add("is-active");
}
});
});
}
};
new action_default({
singleSelector: ".post--single",
articleSelector: ".post--item",
likeButtonSelctor: ".like-btn",
// @ts-ignore
actionDomain: window.actionDomain
});
new farallonBase();
new date_default({
selector: ".humane--time",
//@ts-ignore
timeFormat: window.timeFormat
});
})();