fdsfasdfasdfasd
This commit is contained in:
+59
-13
@@ -2550,7 +2550,6 @@ html[theme='95'] .item-main-content .metadata {
|
|||||||
z-index: 900 !important;
|
z-index: 900 !important;
|
||||||
/* below navbar dropdowns (1000+) but above page content */
|
/* below navbar dropdowns (1000+) but above page content */
|
||||||
transition: right 0.3s ease-in-out, visibility 0.3s !important;
|
transition: right 0.3s ease-in-out, visibility 0.3s !important;
|
||||||
box-shadow: -5px 0 15px rgba(0, 0, 0, 0.5) !important;
|
|
||||||
overflow: visible !important;
|
overflow: visible !important;
|
||||||
/* iOS Safari: allow vertical scroll but let JS handle horizontal swipe-to-close */
|
/* iOS Safari: allow vertical scroll but let JS handle horizontal swipe-to-close */
|
||||||
touch-action: pan-y;
|
touch-action: pan-y;
|
||||||
@@ -5716,32 +5715,61 @@ body.layout-modern.sidebar-right-hidden .pagination-container-fluid {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.content,
|
||||||
|
._204863,
|
||||||
|
.item_title {
|
||||||
|
animation: contentSlideIn 0.55s cubic-bezier(0.16, 1, 0.3, 1) both;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
display: grid;
|
display: grid;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
grid-template-columns: 0fr 1fr 0fr;
|
grid-template-columns: 0fr 1fr 0fr;
|
||||||
position: relative;
|
position: relative;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
animation: contentSlideIn 0.55s cubic-bezier(0.16, 1, 0.3, 1) both;
|
}
|
||||||
|
|
||||||
|
.content.slide-next,
|
||||||
|
._204863.slide-next,
|
||||||
|
.item_title.slide-next,
|
||||||
|
#onara-modal .content.slide-next,
|
||||||
|
#onara-modal ._204863.slide-next,
|
||||||
|
#onara-modal .item_title.slide-next {
|
||||||
|
animation: contentSlideInRight 0.45s cubic-bezier(0.16, 1, 0.3, 1) both !important;
|
||||||
will-change: transform, opacity;
|
will-change: transform, opacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content.slide-next {
|
.content.slide-prev,
|
||||||
animation: contentSlideInRight 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
|
._204863.slide-prev,
|
||||||
|
.item_title.slide-prev,
|
||||||
|
#onara-modal .content.slide-prev,
|
||||||
|
#onara-modal ._204863.slide-prev,
|
||||||
|
#onara-modal .item_title.slide-prev {
|
||||||
|
animation: contentSlideInLeft 0.45s cubic-bezier(0.16, 1, 0.3, 1) both !important;
|
||||||
|
will-change: transform, opacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content.slide-prev {
|
.content.slide-out-left,
|
||||||
animation: contentSlideInLeft 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
|
._204863.slide-out-left,
|
||||||
}
|
.item_title.slide-out-left,
|
||||||
|
#onara-modal .content.slide-out-left,
|
||||||
.content.slide-out-left {
|
#onara-modal ._204863.slide-out-left,
|
||||||
|
#onara-modal .item_title.slide-out-left {
|
||||||
animation: contentSlideOutLeft 0.22s cubic-bezier(0.3, 0, 0.8, 1) forwards !important;
|
animation: contentSlideOutLeft 0.22s cubic-bezier(0.3, 0, 0.8, 1) forwards !important;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
will-change: transform, opacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content.slide-out-right {
|
.content.slide-out-right,
|
||||||
|
._204863.slide-out-right,
|
||||||
|
.item_title.slide-out-right,
|
||||||
|
#onara-modal .content.slide-out-right,
|
||||||
|
#onara-modal ._204863.slide-out-right,
|
||||||
|
#onara-modal .item_title.slide-out-right {
|
||||||
animation: contentSlideOutRight 0.22s cubic-bezier(0.3, 0, 0.8, 1) forwards !important;
|
animation: contentSlideOutRight 0.22s cubic-bezier(0.3, 0, 0.8, 1) forwards !important;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
will-change: transform, opacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes contentSlideIn {
|
@keyframes contentSlideIn {
|
||||||
@@ -7743,7 +7771,7 @@ input {
|
|||||||
div#flash {
|
div#flash {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: -28px;
|
bottom: -28px;
|
||||||
z-index: 999;
|
z-index: 100200 !important;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -8963,7 +8991,7 @@ div.posts>a.thumb > p {
|
|||||||
img#f0ck-image,
|
img#f0ck-image,
|
||||||
div.imageDoor,
|
div.imageDoor,
|
||||||
video {
|
video {
|
||||||
animation: 0.4s ease-out 0s 1 fadeInFX;
|
animation: 0.35s ease-out 0s 1 both fadeInFX;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings {
|
.settings {
|
||||||
@@ -9708,7 +9736,7 @@ input#s_avatar {
|
|||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
width: 90%;
|
width: 90%;
|
||||||
max-width: 600px;
|
max-width: 600px;
|
||||||
z-index: 10001;
|
z-index: 100200 !important;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
@@ -19000,6 +19028,13 @@ body.layout-modern #onara-modal .item-layout-container .item-main-content {
|
|||||||
margin-right: auto !important;
|
margin-right: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#onara-modal .content:not(.slide-next):not(.slide-prev):not(.slide-out-left):not(.slide-out-right),
|
||||||
|
#onara-modal ._204863:not(.slide-next):not(.slide-prev):not(.slide-out-left):not(.slide-out-right),
|
||||||
|
#onara-modal .item_title:not(.slide-next):not(.slide-prev):not(.slide-out-left):not(.slide-out-right) {
|
||||||
|
animation: contentSlideIn 0.55s cubic-bezier(0.16, 1, 0.3, 1) both !important;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
}
|
||||||
|
|
||||||
#onara-modal .item-main-content .metadata {
|
#onara-modal .item-main-content .metadata {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
max-width: 600px !important;
|
max-width: 600px !important;
|
||||||
@@ -19063,6 +19098,17 @@ body.onara-modal-open #gchat-img-modal {
|
|||||||
z-index: 100100 !important;
|
z-index: 100100 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Toast and flash notifications must always float in front of Onara modal and all overlays */
|
||||||
|
#f0ck-flash-container,
|
||||||
|
#flash-container,
|
||||||
|
div#flash,
|
||||||
|
#share-toast,
|
||||||
|
.emoji-fav-toast,
|
||||||
|
.flash-message,
|
||||||
|
.toast {
|
||||||
|
z-index: 100200 !important;
|
||||||
|
}
|
||||||
|
|
||||||
#onara-modal:fullscreen {
|
#onara-modal:fullscreen {
|
||||||
overflow: hidden !important;
|
overflow: hidden !important;
|
||||||
background: #000 !important;
|
background: #000 !important;
|
||||||
|
|||||||
+60
-28
@@ -362,12 +362,19 @@ window.cancelAnimFrame = (function () {
|
|||||||
|
|
||||||
window.flashMessage = (text, duration = 2000, type = 'info') => {
|
window.flashMessage = (text, duration = 2000, type = 'info') => {
|
||||||
// Ensure the stacking container exists
|
// Ensure the stacking container exists
|
||||||
|
const fsEl = document.fullscreenElement;
|
||||||
|
const targetParent = fsEl || document.body;
|
||||||
let container = document.getElementById('f0ck-flash-container');
|
let container = document.getElementById('f0ck-flash-container');
|
||||||
if (!container) {
|
if (!container) {
|
||||||
container = document.createElement('div');
|
container = document.createElement('div');
|
||||||
container.id = 'f0ck-flash-container';
|
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;';
|
container.style.cssText = 'position:fixed;bottom:20px;left:20px;z-index:100200;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none;';
|
||||||
document.body.appendChild(container);
|
targetParent.appendChild(container);
|
||||||
|
} else {
|
||||||
|
container.style.zIndex = '100200';
|
||||||
|
if (container.parentElement !== targetParent) {
|
||||||
|
targetParent.appendChild(container);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const flash = document.createElement('div');
|
const flash = document.createElement('div');
|
||||||
@@ -4060,11 +4067,11 @@ window.cancelAnimFrame = (function () {
|
|||||||
} else {
|
} else {
|
||||||
_container.insertAdjacentHTML('beforeend', _html);
|
_container.insertAdjacentHTML('beforeend', _html);
|
||||||
if (options.direction) {
|
if (options.direction) {
|
||||||
const _newContent = _container.querySelector('.content');
|
const _newEls = _container.querySelectorAll('.content, ._204863, .item_title');
|
||||||
if (_newContent) {
|
_newEls.forEach(el => {
|
||||||
_newContent.classList.remove('slide-next', 'slide-prev');
|
el.classList.remove('slide-next', 'slide-prev', 'slide-out-left', 'slide-out-right');
|
||||||
_newContent.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
el.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4274,11 +4281,11 @@ window.cancelAnimFrame = (function () {
|
|||||||
} else {
|
} else {
|
||||||
container.insertAdjacentHTML('beforeend', html);
|
container.insertAdjacentHTML('beforeend', html);
|
||||||
if (options.direction) {
|
if (options.direction) {
|
||||||
const newContent = container.querySelector('.content');
|
const newEls = container.querySelectorAll('.content, ._204863, .item_title');
|
||||||
if (newContent) {
|
newEls.forEach(el => {
|
||||||
newContent.classList.remove('slide-next', 'slide-prev');
|
el.classList.remove('slide-next', 'slide-prev', 'slide-out-left', 'slide-out-right');
|
||||||
newContent.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
el.classList.add(options.direction === 'next' ? 'slide-next' : 'slide-prev');
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: Prefetching video src immediately after DOM injection has been removed
|
// 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);
|
const direction = isNext ? 'next' : (isPrev ? 'prev' : null);
|
||||||
|
|
||||||
if (direction) {
|
if (direction) {
|
||||||
const curContent = document.querySelector('.content');
|
const outEls = document.querySelectorAll('.content, ._204863, .item_title');
|
||||||
if (curContent) {
|
outEls.forEach(el => {
|
||||||
curContent.classList.remove('slide-out-left', 'slide-out-right', 'slide-next', 'slide-prev');
|
el.classList.remove('slide-out-left', 'slide-out-right', 'slide-next', 'slide-prev');
|
||||||
curContent.classList.add(direction === 'next' ? 'slide-out-left' : 'slide-out-right');
|
el.classList.add(direction === 'next' ? 'slide-out-left' : 'slide-out-right');
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (link.href.match(/\/p\/\d+/) || link.href.match(/[?&]page=\d+/)) {
|
if (link.href.match(/\/p\/\d+/) || link.href.match(/[?&]page=\d+/)) {
|
||||||
@@ -5341,22 +5348,47 @@ window.cancelAnimFrame = (function () {
|
|||||||
// </keybindings>
|
// </keybindings>
|
||||||
|
|
||||||
// <wheeler>
|
// <wheeler>
|
||||||
|
let lastNavWheelTime = 0;
|
||||||
const wheelEventListener = function (event) {
|
const wheelEventListener = function (event) {
|
||||||
// User preference: enabled wheel navigation
|
|
||||||
if (localStorage.getItem('wheelNavEnabled') !== 'true') return;
|
|
||||||
|
|
||||||
// Block interaction if content warning is visible
|
// Block interaction if content warning is visible
|
||||||
const cwModal = document.getElementById('content-warning-modal');
|
const cwModal = document.getElementById('content-warning-modal');
|
||||||
if (cwModal && cwModal.style.display !== 'none') return;
|
if (cwModal && cwModal.style.display !== 'none') return;
|
||||||
|
|
||||||
if (event.target.closest('.media-object') && !event.target.closest('#favs')) {
|
// Block if image modal / lightbox is open
|
||||||
event.preventDefault(); // Prevent default scroll
|
const imageModal = document.getElementById('image-modal');
|
||||||
if (event.deltaY < 0) {
|
if (imageModal && imageModal.classList.contains('visible')) return;
|
||||||
const el = document.getElementById('prev');
|
|
||||||
if (el && el.href && !el.href.endsWith('#')) el.click();
|
const navBtn = event.target.closest('.nav-next, .nav-prev');
|
||||||
} else if (event.deltaY > 0) {
|
const isNavHover = !!navBtn;
|
||||||
const el = document.getElementById('next');
|
const isMediaHover = !isNavHover && !!event.target.closest('.media-object') && !event.target.closest('#favs');
|
||||||
if (el && el.href && !el.href.endsWith('#')) el.click();
|
|
||||||
|
// 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