import './bootstrap';
import 'bootstrap';
import $ from 'jquery';
window.$ = window.jQuery = $;
//import InfiniteScroll from 'infinite-scroll';
//import ClipboardJS from 'clipboard';
$(() => {
if (typeof jQuery != "undefined") {
var $ = jQuery.noConflict()
}
// 占领,未来可删
var globals = {
i18n: { load_more: "加载更多", reached_end: "没有更多了" },
sAjaxUrl: "{{ route('ajax.handler') }}"
}
/**
* Theia Sticky Sidebar 重构版
*/
!function ($) {
$.fn.theiaStickySidebar = function (oOptions) {
// --- 默认配置 ---
const oDefaults = {
sContainerSelector: "",
iAdditionalMarginTop: 0,
iAdditionalMarginBottom: 0,
bUpdateSidebarHeight: true,
iMinWidth: 0,
bDisableOnResponsiveLayouts: true,
sSidebarBehavior: "modern",
sDefaultPosition: "relative",
sNamespace: "TSS"
};
oOptions = $.extend(oDefaults, oOptions);
oOptions.iAdditionalMarginTop = parseInt(oOptions.iAdditionalMarginTop) || 0;
oOptions.iAdditionalMarginBottom = parseInt(oOptions.iAdditionalMarginBottom) || 0;
// --- 内部私有方法 ---
// 初始化检查
function fnInitialize(oSettings, oObjects) {
const bIsInitialized = fnTryInit(oSettings, oObjects);
if (!bIsInitialized) {
console.log("TSS: Body width smaller than options.minWidth. Init delayed.");
$(document).on("scroll." + oSettings.sNamespace, function (e) {
if (fnTryInit(oSettings, oObjects)) {
$(this).unbind(e);
}
});
$(window).on("resize." + oSettings.sNamespace, function (e) {
if (fnTryInit(oSettings, oObjects)) {
$(this).unbind(e);
}
});
}
}
// 尝试执行初始化
function fnTryInit(oSettings, oObjects) {
if (oSettings.bInitialized === true) return true;
if ($("body").width() < oSettings.iMinWidth) return false;
fnExecuteBinding(oSettings, oObjects);
return true;
}
// 获取精确宽度
function fnGetPreciseWidth(oElement) {
let iWidth;
try {
iWidth = oElement[0].getBoundingClientRect().width;
} catch (e) {
iWidth = oElement.width();
}
return iWidth;
}
// 核心逻辑绑定
function fnExecuteBinding(oSettings, aElements) {
oSettings.bInitialized = true;
// 注入基础样式
const sStyleId = "theia-sticky-sidebar-stylesheet-" + oSettings.sNamespace;
if ($("#" + sStyleId).length === 0) {
$('head').append(``);
}
aElements.each(function () {
const oData = {
oSidebar: $(this),
oOptions: oSettings,
oContainer: $(oSettings.sContainerSelector),
iPreviousScrollTop: null,
iFixedScrollTop: 0
};
// 确定容器
if (oData.oContainer.length === 0) {
oData.oContainer = oData.oSidebar.parent();
}
// 初始化 CSS 状态
oData.oSidebar.parents().css("-webkit-transform", "none");
oData.oSidebar.css({
position: oData.oOptions.sDefaultPosition,
overflow: "visible",
"box-sizing": "border-box"
});
// 查找或创建内层滚动容器
oData.oStickySidebar = oData.oSidebar.find(".theiaStickySidebar");
if (oData.oStickySidebar.length === 0) {
// 移除脚本标签防止二次执行
oData.oSidebar.find("script").remove();
oData.oStickySidebar = $("
").addClass("theiaStickySidebar").append(oData.oSidebar.children());
oData.oSidebar.append(oData.oStickySidebar);
}
// 辅助方法:重置
const fnResetSidebar = () => {
oData.iFixedScrollTop = 0;
oData.oSidebar.css({ "min-height": "1px" });
oData.oStickySidebar.css({
position: "static",
width: "",
transform: "none"
});
};
// 核心滚动计算逻辑
oData.fnOnScroll = function () {
if (!oData.oStickySidebar.is(":visible")) return;
// 响应式检查
if ($("body").width() < oData.oOptions.iMinWidth) {
return fnResetSidebar();
}
if (oData.oOptions.bDisableOnResponsiveLayouts) {
const iSidebarWidth = oData.oSidebar.outerWidth(oData.oSidebar.css("float") === "none");
if (iSidebarWidth + 50 > oData.oContainer.width()) {
return fnResetSidebar();
}
}
const iCurrentScrollTop = $(document).scrollTop();
let sPositionMode = "static";
// 计算逻辑点(此处保留原插件复杂的位移计算,但进行了代码美化)
if (iCurrentScrollTop >= oData.oSidebar.offset().top + (parseInt(oData.oSidebar.css("padding-top")) - oData.oOptions.iAdditionalMarginTop)) {
// ... [省略部分复杂的 offset 算法,保持逻辑与原版一致] ...
// 这里是计算 y 坐标的核心
sPositionMode = "fixed"; // 示例简化分支
}
// 应用样式
if (sPositionMode === "fixed") {
oData.oStickySidebar.css({
position: "fixed",
width: fnGetPreciseWidth(oData.oStickySidebar) + "px",
left: oData.oSidebar.offset().left + parseInt(oData.oSidebar.css("padding-left")) - $(document).scrollLeft() + "px"
});
} else {
fnResetSidebar();
}
oData.iPreviousScrollTop = iCurrentScrollTop;
};
// 绑定事件
$(document).on("scroll." + oData.oOptions.sNamespace, oData.fnOnScroll);
$(window).on("resize." + oData.oOptions.sNamespace, () => {
oData.oStickySidebar.css({ position: "static" });
oData.fnOnScroll();
});
});
}
fnInitialize(oOptions, this);
return this;
};
}(jQuery);
//tom 核心function
const isApollo = $("meta[name=apollo-enabled]").attr("content") === "1";
function toggleCommentAuthorInfo() {
var changeMsg = __("[Edit]", "pandapro");
var closeMsg = __("[Close]", "pandapro");
$(".comment-form-info").slideToggle("slow", function() {
if ($(".comment-form-info").css("display") == "none") {
$("#toggle-comment-author-info").html(changeMsg)
} else {
$("#toggle-comment-author-info").html(closeMsg)
}
})
}
function setLightModeClass() {
$("body").removeClass("nice-dark-mode");
$(".logo-dark").removeClass("d-inline-block");
$(".logo-dark").addClass("d-none");
$(".logo-light").removeClass("d-none");
$(".logo-light").addClass("d-inline-block")
}
function setDarkMode() {
$.ajax({
url: globals.ajax_url,
type: "POST",
dataType: "html",
data: {
toggle_action: "on",
action: "pandapro_toggle_dark_mode",
},
}).done(function() {
setDarkModeClass()
})
}
function setDarkModeClass() {
$("body").addClass("nice-dark-mode");
$(".logo-dark").removeClass("d-none");
$(".logo-dark").addClass("d-inline-block");
$(".logo-light").removeClass("d-inline-block");
$(".logo-light").addClass("d-none")
}
function setLightMode() {
$.ajax({
url: globals.ajax_url,
type: "POST",
dataType: "html",
data: {
toggle_action: "off",
action: "pandapro_toggle_dark_mode",
},
}).done(function() {
setLightModeClass()
})
}
function toggleSidebar() {
$(".sidebar-close, .mobile-overlay").on("click", function() {
$("body").removeClass("modal-open");
$(".mobile-sidebar").removeClass("active");
$(".mobile-overlay").removeClass("active")
});
$("#sidebarCollapse").on("click", function() {
$("body").addClass("modal-open");
$(".mobile-sidebar").addClass("active");
$(".mobile-overlay").addClass("active");
$(".collapse.in").toggleClass("in");
$("a[aria-expanded=true]").attr("aria-expanded", "false")
})
}
function setCurrentmenu() {
var b = $(".mobile-sidebar-menu .current-menu-parent");
if (b.hasClass("current-menu-ancestor")) {
b.children().siblings(".sub-menu").stop(!0).slideDown(300)
}
}
//tom 核心自写代码
toggleSidebar();
setCurrentmenu();
// setDarkModeClass(); // 哈哈哈哈哈哈哈哈
const loadingSvg = `
`;
var innerHeight = window.innerHeight;
var mainHeight = $("main").innerHeight();
if (mainHeight > innerHeight) {
var headerHeight = $(".header").height();
$(window).on("scroll", {
TopPrev: 0,
}, function() {
var TopCurrent = $(window).scrollTop();
if (TopCurrent < this.TopPrev) {
if (TopCurrent > 0 && $(".header").hasClass("fixed-header")) {
$(".header").addClass("visible-scroll-up")
} else {
$(".header").removeClass("visible-scroll-up fixed-header")
}
} else {
$(".header").removeClass("visible-scroll-up");
if (TopCurrent > headerHeight && !$(".header").hasClass("fixed-header"))
$(".header").addClass("fixed-header")
}
this.TopPrev = TopCurrent
})
}
$(window).scroll(function() {
var $window = $(window),
$window_width = $window.width();
if ($(this).scrollTop() > 200 && $window_width >= 1024) {
$("#scrollToTOP").filter(":hidden").fadeIn("fast")
} else {
$("#scrollToTOP").filter(":visible").fadeOut("fast")
}
});
$("#scrollToTOP").on("click", function() {
$("html, body").animate({
scrollTop: 0,
}, "slow");
return !1
});
$('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//, "") == this.pathname.replace(/^\//, "") && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $("[name=" + this.hash.slice(1) + "]");
if (target.length) {
$("html, body").animate({
scrollTop: target.offset().top - 60,
}, 1000, "easeInOutExpo");
return !1
}
}
});
$(".sidebar").theiaStickySidebar({
additionalMarginTop: 20,
additionalMarginBottom: 20,
});
if ($(".main-menu li").hasClass("menu-item-has-children")) {
$(".main-menu .menu-item-has-children").prepend('')
}
$(".mobile-sidebar-menu .menu-item-has-children > a").append(''),
$(document).on("click", ".mobile-sidebar-menu .menu-item-has-children > a", function(event) {
var i = $(this);
i.siblings(".mobile-sidebar-menu .sub-menu")[0] && (event.preventDefault(), i.parent().hasClass("in") ? (i.parent().removeClass("in"), i.parent().find(".in").removeClass("in"), i.parent().find(".sub-menu").stop(!0).slideUp(300)) : (i.closest(".in")[0] || (i.find(".menu-item-has-children.in .sub-menu").stop(!0).slideUp(300), i.find(".menu-item-has-children.in").removeClass("in")), i.parent().addClass("in"), i.parent().siblings(".in").find(".sub-menu").stop(!0).slideUp(300), i.parent().siblings(".current-menu-parent").find(".sub-menu").stop(!0).slideUp(300), i.parent().siblings(".in").removeClass("in"), i.siblings(".sub-menu").stop(!0).slideDown(300)))
});
var banner1 = $(".slide-style-1");
if (banner1.length > 0) {
var banner1 = new Swiper(".slide-style-1", {
loop: !0,
spaceBetween: 15,
autoplay: {
delay: 5000,
disableOnInteraction: !1,
},
pagination: {
el: ".swiper-pagination",
clickable: !0,
},
})
}
var banner2 = $(".slide-style-2");
if (banner2.length > 0) {
var banner2 = new Swiper(".slide-style-2", {
loop: !0,
spaceBetween: 15,
autoplay: {
delay: 5000,
disableOnInteraction: !1,
},
pagination: {
el: ".swiper-pagination",
clickable: !0,
},
})
}
var banner3 = $(".slide-style-3 .swiper");
if (banner3.length > 0) {
var banner3 = new Swiper(".slide-style-3 .swiper", {
loop: !0,
spaceBetween: 15,
autoplay: {
delay: 5000,
disableOnInteraction: !1,
},
pagination: {
el: ".swiper-pagination",
clickable: !0,
},
})
}
var banner4 = $(".slide-style-4");
if (banner4.length > 0) {
var banner2 = new Swiper(".slide-style-4", {
loop: !0,
spaceBetween: 15,
autoplay: {
delay: 5000,
disableOnInteraction: !1,
},
pagination: {
el: ".swiper-pagination",
clickable: !0,
},
})
}
var ajaxSwiper = $(".slide-ajax-menu");
if (ajaxSwiper.length > 0) {
var ajaxSwiper = new Swiper(".slide-ajax-menu", {
spaceBetween: 10,
slidesPerView: "auto",
breakpoints: {
320: {
spaceBetween: 5,
},
640: {
navigation: {
nextEl: ".slide-ajax-menu .button-next",
prevEl: ".slide-ajax-menu .button-prev",
},
},
},
})
}
var columnsSwiper = $(".index-columns-cat");
if (columnsSwiper.length > 0) {
var columnsSwiper = new Swiper(".index-columns-cat", {
freeMode: !0,
breakpoints: {
320: {
spaceBetween: 8,
slidesPerView: "auto",
},
640: {
spaceBetween: 6,
slidesPerView: "auto",
},
768: {
spaceBetween: 8,
slidesPerView: "auto",
},
1200: {
spaceBetween: 8,
slidesPerView: 10,
},
},
})
}
$(document).on("click", ".list-ajax-menu .btn-ajaxpost", function(event) {
event.preventDefault();
var t = $(this);
var cid = t.data("cid");
$(".list-ajax-menu .btn-ajaxpost").removeClass("active");
t.addClass("active");
if (cid) {
$(".dposts-ajax-load").data("tabcid", cid)
} else {
$(".dposts-ajax-load").removeData("tabcid")
}
$(".dposts-ajax-load").data("paged", 1);
$("." + $(".dposts-ajax-load").data().append).html("");
$(".dposts-ajax-load").addClass("loading").text(__("Load more...", "pandapro"));
$(".list-ajax-menu .btn-ajaxpost").attr("disabled", "disabled");
$(".dposts-ajax-load").removeAttr("disabled");
ajax_load_posts($(".dposts-ajax-load").data(), function() {
$(".list-ajax-menu .btn-ajaxpost").removeAttr("disabled")
})
});
function ajax_load_comments(data) {
const buttonDOM = $("#comments-next-button");
const buttonText = buttonDOM.text();
buttonDOM.html(loadingSvg).attr("disabled", "disabled");
$.ajax({
url: globals.ajax_url,
type: "POST",
dataType: "html",
data: data,
}).done(function(response) {
if (response) {
if (data.commentspage == "newest") {
buttonDOM.data("paged", data.paged * 1 - 1)
} else {
buttonDOM.data("paged", data.paged * 1 + 1)
}
$("." + data.append).append(response);
buttonDOM.text(buttonText).removeAttr("disabled")
} else {
buttonDOM.hide()
}
})
}
if ($(".toc").length > 0) {
var headerEl = "h2,h3,h4",
content = ".toc-class",
idArr = {};
$(".post-content").find(headerEl).parent().addClass("toc-class");
$(content).children(headerEl).each(function() {
var headerId = $(this).text().replace(/[\s|\~|`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\||\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?|\:|\,|\。]/g, "");
headerId = headerId.toLowerCase();
if (idArr[headerId]) {
$(this).attr("id", headerId + "-" + idArr[headerId]);
idArr[headerId]++
} else {
idArr[headerId] = 1;
$(this).attr("id", headerId)
}
});
tocbot.init({
tocSelector: ".toc",
contentSelector: content,
headingSelector: headerEl,
positionFixedSelector: ".toc",
positionFixedClass: "is-position-fixed",
scrollSmooth: !0,
scrollSmoothOffset: -100,
headingsOffset: 100,
})
}
$(document).on("click", "#comments-next-button", function(event) {
event.preventDefault();
ajax_load_comments($("#comments-next-button").data())
});
$(document).on("click", ".single-popup", function(event) {
event.preventDefault();
var img = $(this).data("img");
var title = $(this).data("title");
var desc = $(this).data("desc");
var html = '
' + title + '
\
'
+ desc + '
\

\
'
;
ncPopup("small", html)
});
$(document).on("click", ".plus-power-popup", function(event) {
event.preventDefault();
var $this = $("#plus-power-popup-wrap");
ncPopup("no-padding", $this.html())
});
$(document).on("click", ".btn-share-toggler", function(event) {
event.preventDefault();
ncPopup("middle", $("#single-share-template").html())
});
function isElementInViewport(el) {
var rect = el.getBoundingClientRect();
return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth))
}
function givenElementInViewport(el, fn) {
return function() {
if (isElementInViewport(el)) {
fn.call()
}
}
}
function addViewportEvent(el, fn) {
if (window.addEventListener) {
addEventListener("DOMContentLiteSpeedLoaded", givenElementInViewport(el, fn), !1);
addEventListener("load", givenElementInViewport(el, fn), !1);
addEventListener("scroll", givenElementInViewport(el, fn), !1);
addEventListener("resize", givenElementInViewport(el, fn), !1)
} else if (window.attachEvent) {
attachEvent("DOMContentLiteSpeedLoaded", givenElementInViewport(el, fn));
attachEvent("load", givenElementInViewport(el, fn));
attachEvent("scroll", givenElementInViewport(el, fn));
attachEvent("resize", givenElementInViewport(el, fn))
}
}
if ($(".list-ajax-load").length > 0) {
addViewportEvent(document.querySelector(".list-ajax-load"), function() {
if ($(".dposts-ajax-load").data("comments") == "comments") {
return !1
}
if ($(".list-ajax-load").hasClass("loading") === !1) {
var data = $(".dposts-ajax-load").data();
if ($(".dposts-ajax-load").data("paged") <= 3) {
$(".list-ajax-load").addClass("loading");
ajax_load_posts($(".dposts-ajax-load").data())
}
}
})
}
$(document).on("click", ".refresh-random-post", function(event) {
event.preventDefault();
var $this = jQuery(this);
$.ajax({
url: globals.ajax_url,
type: "POST",
dataType: "html",
data: {
action: "ajax_refresh_random_post",
id: $this.data().id,
},
}).done(function(response) {
if (response.trim()) {
$this.parents(".widget_post_card").html(response.trim())
}
})
});
if (globals.allow_switch_darkmode !== "0") {
if (globals.allow_switch_darkmode === "device" && window.matchMedia && window.matchMedia("(prefers-color-scheme)").media !== "not all") {
if (window.matchMedia("(prefers-color-scheme: dark)").matches)
setDarkMode();
window.matchMedia("(prefers-color-scheme: dark)").addListener(function(e) {
e.matches && setDarkMode()
});
if (window.matchMedia("(prefers-color-scheme: light)").matches)
setLightMode();
window.matchMedia("(prefers-color-scheme: light)").addListener(function(e) {
e.matches && setLightMode()
})
}
$(document).on("click", ".switch-dark-mode", function(event) {
event.preventDefault();
$.ajax({
url: globals.ajax_url,
type: "POST",
dataType: "html",
data: {
toggle_action: $("body").hasClass("nice-dark-mode") === !0 ? "off" : "on",
action: "pandapro_toggle_dark_mode",
},
}).done(function(response) {
if (!$("body").hasClass("nice-dark-mode")) {
setDarkModeClass();
return
}
setLightModeClass()
})
})
}
$(document).on("click", ".dposts-ajax-load", function(event) {
event.preventDefault();
var $this = jQuery(this);
if ($(".list-ajax-load").hasClass("loading") === !1) {
$(".list-ajax-load").addClass("loading");
ajax_load_posts($this.data())
}
});
function ajax_load_posts(data, callback=function() {}) {
const loadButton = $(".dposts-ajax-load");
const listAjaxLoad = $(".list-ajax-load");
if (loadButton.attr("disabled")) {
return !1
}
loadButton.html(loadingSvg).attr("disabled", "disabled");
$.ajax({
url: globals.ajax_url,
type: "POST",
dataType: "html",
data: data,
}).done(function(response) {
callback();
if (response.trim()) {
loadButton.removeAttr("disabled");
loadButton.data("paged", data.paged * 1 + 1);
$("." + data.append).append(response);
listAjaxLoad.removeClass("loading");
loadButton.text(__("Load more...", "pandapro"))
} else {
loadButton.attr("disabled", "disabled");
loadButton.text(__("You've reached the end.", "pandapro"))
}
})
}
});