fdsfasdfasdfasd
This commit is contained in:
+60
-28
@@ -362,12 +362,19 @@ window.cancelAnimFrame = (function () {
|
||||
|
||||
window.flashMessage = (text, duration = 2000, type = 'info') => {
|
||||
// Ensure the stacking container exists
|
||||
const fsEl = document.fullscreenElement;
|
||||
const targetParent = fsEl || document.body;
|
||||
let container = document.getElementById('f0ck-flash-container');
|
||||
if (!container) {
|
||||
container = document.createElement('div');
|
||||
container.id = 'f0ck-flash-container';
|
||||
container.style.cssText = 'position:fixed;bottom:20px;left:20px;z-index:9999;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none;';
|
||||
document.body.appendChild(container);
|
||||
container.style.cssText = 'position:fixed;bottom:20px;left:20px;z-index:100200;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none;';
|
||||
targetParent.appendChild(container);
|
||||
} else {
|
||||
container.style.zIndex = '100200';
|
||||
if (container.parentElement !== targetParent) {
|
||||
targetParent.appendChild(container);
|
||||
}
|
||||
}
|
||||
|
||||
const flash = document.createElement('div');
|
||||
@@ -4060,11 +4067,11 @@ window.cancelAnimFrame = (function () {
|
||||
} else {
|
||||
_container.insertAdjacentHTML('beforeend', _html);
|
||||
if (options.direction) {
|
||||
const _newContent = _container.querySelector('.content');
|
||||
if (_newContent) {
|
||||
_newContent.classList.remove('slide-next', 'slide-prev');
|
||||
_newContent.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
||||
}
|
||||
const _newEls = _container.querySelectorAll('.content, ._204863, .item_title');
|
||||
_newEls.forEach(el => {
|
||||
el.classList.remove('slide-next', 'slide-prev', 'slide-out-left', 'slide-out-right');
|
||||
el.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4274,11 +4281,11 @@ window.cancelAnimFrame = (function () {
|
||||
} else {
|
||||
container.insertAdjacentHTML('beforeend', html);
|
||||
if (options.direction) {
|
||||
const newContent = container.querySelector('.content');
|
||||
if (newContent) {
|
||||
newContent.classList.remove('slide-next', 'slide-prev');
|
||||
newContent.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
||||
}
|
||||
const newEls = container.querySelectorAll('.content, ._204863, .item_title');
|
||||
newEls.forEach(el => {
|
||||
el.classList.remove('slide-next', 'slide-prev', 'slide-out-left', 'slide-out-right');
|
||||
el.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
||||
});
|
||||
}
|
||||
|
||||
// Note: Prefetching video src immediately after DOM injection has been removed
|
||||
@@ -4616,11 +4623,11 @@ window.cancelAnimFrame = (function () {
|
||||
const direction = isNext ? 'next' : (isPrev ? 'prev' : null);
|
||||
|
||||
if (direction) {
|
||||
const curContent = document.querySelector('.content');
|
||||
if (curContent) {
|
||||
curContent.classList.remove('slide-out-left', 'slide-out-right', 'slide-next', 'slide-prev');
|
||||
curContent.classList.add(direction === 'next' ? 'slide-out-left' : 'slide-out-right');
|
||||
}
|
||||
const outEls = document.querySelectorAll('.content, ._204863, .item_title');
|
||||
outEls.forEach(el => {
|
||||
el.classList.remove('slide-out-left', 'slide-out-right', 'slide-next', 'slide-prev');
|
||||
el.classList.add(direction === 'next' ? 'slide-out-left' : 'slide-out-right');
|
||||
});
|
||||
}
|
||||
|
||||
if (link.href.match(/\/p\/\d+/) || link.href.match(/[?&]page=\d+/)) {
|
||||
@@ -5341,22 +5348,47 @@ window.cancelAnimFrame = (function () {
|
||||
// </keybindings>
|
||||
|
||||
// <wheeler>
|
||||
let lastNavWheelTime = 0;
|
||||
const wheelEventListener = function (event) {
|
||||
// User preference: enabled wheel navigation
|
||||
if (localStorage.getItem('wheelNavEnabled') !== 'true') return;
|
||||
|
||||
// Block interaction if content warning is visible
|
||||
const cwModal = document.getElementById('content-warning-modal');
|
||||
if (cwModal && cwModal.style.display !== 'none') return;
|
||||
|
||||
if (event.target.closest('.media-object') && !event.target.closest('#favs')) {
|
||||
event.preventDefault(); // Prevent default scroll
|
||||
if (event.deltaY < 0) {
|
||||
const el = document.getElementById('prev');
|
||||
if (el && el.href && !el.href.endsWith('#')) el.click();
|
||||
} else if (event.deltaY > 0) {
|
||||
const el = document.getElementById('next');
|
||||
if (el && el.href && !el.href.endsWith('#')) el.click();
|
||||
// Block if image modal / lightbox is open
|
||||
const imageModal = document.getElementById('image-modal');
|
||||
if (imageModal && imageModal.classList.contains('visible')) return;
|
||||
|
||||
const navBtn = event.target.closest('.nav-next, .nav-prev');
|
||||
const isNavHover = !!navBtn;
|
||||
const isMediaHover = !isNavHover && !!event.target.closest('.media-object') && !event.target.closest('#favs');
|
||||
|
||||
// For media-object, user preference 'wheelNavEnabled' must be enabled.
|
||||
// For .nav-next / .nav-prev, scrolling always triggers next/prev navigation directly.
|
||||
if (!isNavHover && (!isMediaHover || localStorage.getItem('wheelNavEnabled') !== 'true')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Always prevent default page scroll when scrolling over nav-next / nav-prev or media
|
||||
event.preventDefault();
|
||||
|
||||
// Prevent rapid multi-firing while navigating or during throttle cooldown
|
||||
const now = Date.now();
|
||||
if (isNavigating || now - lastNavWheelTime < 250) return;
|
||||
|
||||
const delta = Math.abs(event.deltaY) >= Math.abs(event.deltaX) ? event.deltaY : event.deltaX;
|
||||
if (delta === 0) return;
|
||||
|
||||
if (delta < 0) {
|
||||
const el = document.querySelector("#prev:not([href='#']), .nav-prev:not([href='#'])") || document.getElementById('prev') || document.querySelector('.nav-prev');
|
||||
if (el && el.href && !el.href.endsWith('#')) {
|
||||
lastNavWheelTime = now;
|
||||
el.click();
|
||||
}
|
||||
} else if (delta > 0) {
|
||||
const el = document.querySelector("#next:not([href='#']), .nav-next:not([href='#'])") || document.getElementById('next') || document.querySelector('.nav-next');
|
||||
if (el && el.href && !el.href.endsWith('#')) {
|
||||
lastNavWheelTime = now;
|
||||
el.click();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user