yes i need i need my samurai

This commit is contained in:
2026-09-11 16:19:52 +02:00
parent d0bae284ec
commit 925913188f
3 changed files with 120 additions and 35 deletions
+48 -12
View File
@@ -5727,27 +5727,27 @@ body.layout-modern.sidebar-right-hidden .pagination-container-fluid {
} }
.content.slide-next { .content.slide-next {
animation: contentSlideInRight 0.65s cubic-bezier(0.16, 1, 0.3, 1) both; animation: contentSlideInRight 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
} }
.content.slide-prev { .content.slide-prev {
animation: contentSlideInLeft 0.65s cubic-bezier(0.16, 1, 0.3, 1) both; animation: contentSlideInLeft 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
} }
.content.slide-out-left { .content.slide-out-left {
animation: contentSlideOutLeft 0.38s 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;
} }
.content.slide-out-right { .content.slide-out-right {
animation: contentSlideOutRight 0.38s 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;
} }
@keyframes contentSlideIn { @keyframes contentSlideIn {
0% { 0% {
opacity: 0; opacity: 0;
transform: translateY(24px) scale(0.96); transform: translateY(20px) scale(0.97);
} }
100% { 100% {
opacity: 1; opacity: 1;
@@ -5757,37 +5757,45 @@ body.layout-modern.sidebar-right-hidden .pagination-container-fluid {
@keyframes contentSlideInRight { @keyframes contentSlideInRight {
0% { 0% {
transform: translateX(120px) scale(0.95); opacity: 0;
transform: translateX(70px) scale(0.97);
} }
100% { 100% {
opacity: 1;
transform: translateX(0) scale(1); transform: translateX(0) scale(1);
} }
} }
@keyframes contentSlideInLeft { @keyframes contentSlideInLeft {
0% { 0% {
transform: translateX(-120px) scale(0.95); opacity: 0;
transform: translateX(-70px) scale(0.97);
} }
100% { 100% {
opacity: 1;
transform: translateX(0) scale(1); transform: translateX(0) scale(1);
} }
} }
@keyframes contentSlideOutLeft { @keyframes contentSlideOutLeft {
0% { 0% {
opacity: 1;
transform: translateX(0) scale(1); transform: translateX(0) scale(1);
} }
100% { 100% {
transform: translateX(-120px) scale(0.95); opacity: 0;
transform: translateX(-70px) scale(0.97);
} }
} }
@keyframes contentSlideOutRight { @keyframes contentSlideOutRight {
0% { 0% {
opacity: 1;
transform: translateX(0) scale(1); transform: translateX(0) scale(1);
} }
100% { 100% {
transform: translateX(120px) scale(0.95); opacity: 0;
transform: translateX(70px) scale(0.97);
} }
} }
@@ -18834,13 +18842,30 @@ body.onara-modal-open #sidebar-drag-zone {
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
overscroll-behavior: contain !important; overscroll-behavior: contain !important;
box-sizing: border-box !important; box-sizing: border-box !important;
animation: onaraFadeIn 0.22s cubic-bezier(0.16, 1, 0.3, 1) forwards; opacity: 0;
transition: right 0.3s ease-in-out !important; transform: scale(0.99);
transition: opacity 0.28s cubic-bezier(0.16, 1, 0.3, 1),
transform 0.28s cubic-bezier(0.16, 1, 0.3, 1),
right 0.3s ease-in-out !important;
cursor: default; cursor: default;
} }
body.onara-modal-open .onara-modal-wrapper { body.onara-modal-open .onara-modal-wrapper,
.onara-modal-wrapper.onara-fade-in {
display: flex !important; display: flex !important;
opacity: 1 !important;
transform: scale(1) !important;
pointer-events: auto !important;
}
.onara-modal-wrapper.onara-fade-out {
display: flex !important;
opacity: 0 !important;
transform: scale(0.99) !important;
pointer-events: none !important;
transition: opacity 0.24s cubic-bezier(0.3, 0, 0.8, 1),
transform 0.24s cubic-bezier(0.3, 0, 0.8, 1),
right 0.3s ease-in-out !important;
} }
/* Sidebar hidden: modal expands to right edge */ /* Sidebar hidden: modal expands to right edge */
@@ -18876,6 +18901,17 @@ body.sidebar-right-hidden .onara-modal-wrapper {
} }
} }
@keyframes onaraFadeOut {
from {
opacity: 1;
transform: scale(1);
}
to {
opacity: 0;
transform: scale(0.99);
}
}
.onara-backdrop { .onara-backdrop {
position: absolute !important; position: absolute !important;
top: 0 !important; top: 0 !important;
+1 -1
View File
@@ -114,7 +114,7 @@
} }
.v0ck_hidden { .v0ck_hidden {
display: none; display: none !important;
} }
.v0ck_player_controls svg { .v0ck_player_controls svg {
+71 -22
View File
@@ -1076,6 +1076,23 @@ window.cancelAnimFrame = (function () {
return modal; return modal;
}; };
const openOnaraModal = () => {
const modal = getOrCreateOnaraModal();
if (modal._closeTimeout) {
clearTimeout(modal._closeTimeout);
modal._closeTimeout = null;
}
modal._isClosing = false;
document.body.classList.add('onara-modal-open');
modal.style.display = 'flex';
modal.setAttribute('aria-hidden', 'false');
modal.classList.remove('onara-fade-out');
void modal.offsetWidth; // Force reflow so transition starts reliably
modal.classList.add('onara-fade-in');
return modal;
};
window.openOnaraModal = openOnaraModal;
const updateOnaraActiveItem = (itemid, url) => { const updateOnaraActiveItem = (itemid, url) => {
if (!isOnaraActive()) return; if (!isOnaraActive()) return;
// Clear onara-active from any and all elements to guarantee only 1 item is selected // Clear onara-active from any and all elements to guarantee only 1 item is selected
@@ -1145,7 +1162,9 @@ window.cancelAnimFrame = (function () {
const closeOnaraModal = (options = {}) => { const closeOnaraModal = (options = {}) => {
const modal = document.getElementById('onara-modal'); const modal = document.getElementById('onara-modal');
if (!modal || modal.style.display === 'none') return; if (!modal || modal.style.display === 'none' || modal._isClosing) return;
modal._isClosing = true;
// Close any auxiliary modals that may be open // Close any auxiliary modals that may be open
const infoModal = document.getElementById('info-modal'); const infoModal = document.getElementById('info-modal');
@@ -1159,11 +1178,12 @@ window.cancelAnimFrame = (function () {
if (typeof window.closeImageModal === 'function') window.closeImageModal(); if (typeof window.closeImageModal === 'function') window.closeImageModal();
document.body.classList.remove('modal-open'); document.body.classList.remove('modal-open');
stopMedia(); // Pause any playing media immediately
const mount = document.getElementById('onara-item-mount'); modal.querySelectorAll('video, audio').forEach(el => { try { el.pause(); } catch {} });
if (mount) mount.innerHTML = '';
modal.style.display = 'none'; // Smooth fade out
modal.setAttribute('aria-hidden', 'true'); modal.classList.remove('onara-fade-in');
modal.classList.add('onara-fade-out');
document.body.classList.remove('onara-modal-open'); document.body.classList.remove('onara-modal-open');
// Restore background canvas if needed // Restore background canvas if needed
@@ -1193,6 +1213,31 @@ window.cancelAnimFrame = (function () {
activeThumb.focus({ preventScroll: true }); activeThumb.focus({ preventScroll: true });
} catch {} } catch {}
} }
if (modal._closeTimeout) clearTimeout(modal._closeTimeout);
if (options.immediate) {
stopMedia();
const mount = document.getElementById('onara-item-mount');
if (mount) mount.innerHTML = '';
modal.style.display = 'none';
modal.setAttribute('aria-hidden', 'true');
modal.classList.remove('onara-fade-out', 'onara-fade-in');
modal._isClosing = false;
modal._closeTimeout = null;
return;
}
modal._closeTimeout = setTimeout(() => {
if (!modal._isClosing) return;
stopMedia();
const mount = document.getElementById('onara-item-mount');
if (mount) mount.innerHTML = '';
modal.style.display = 'none';
modal.setAttribute('aria-hidden', 'true');
modal.classList.remove('onara-fade-out');
modal._isClosing = false;
modal._closeTimeout = null;
}, 240);
}; };
window.closeOnaraModal = closeOnaraModal; window.closeOnaraModal = closeOnaraModal;
window.isOnaraActive = isOnaraActive; window.isOnaraActive = isOnaraActive;
@@ -1891,11 +1936,7 @@ window.cancelAnimFrame = (function () {
if (!isOnaraActive()) return; if (!isOnaraActive()) return;
promoteOnaraModals(); promoteOnaraModals();
if (document.body.classList.contains('onara-modal-open')) { if (document.body.classList.contains('onara-modal-open')) {
const modal = document.getElementById('onara-modal'); const modal = openOnaraModal();
if (modal) {
modal.style.display = 'flex';
modal.setAttribute('aria-hidden', 'false');
}
if (!window._onaraReturnUrl) { if (!window._onaraReturnUrl) {
window._onaraReturnUrl = getOnaraBaseUrl(); window._onaraReturnUrl = getOnaraBaseUrl();
window._onaraReturnTitle = window.f0ckDomain || 'f0ck'; window._onaraReturnTitle = window.f0ckDomain || 'f0ck';
@@ -3767,8 +3808,12 @@ window.cancelAnimFrame = (function () {
const _m = document.getElementById('main'); const _m = document.getElementById('main');
if (_m) ['height', 'overflow'].forEach(p => _m.style.removeProperty(p)); if (_m) ['height', 'overflow'].forEach(p => _m.style.removeProperty(p));
// Stop all media // Stop all media
document.querySelectorAll('video:not(#gchat-messages video), audio:not(#gchat-messages audio)').forEach(el => { try { el.pause(); el.removeAttribute('src'); el.load(); } catch {} }); if (options.direction) {
document.querySelectorAll('ruffle-player').forEach(el => { try { el.remove(); } catch {} }); document.querySelectorAll('video:not(#gchat-messages video), audio:not(#gchat-messages audio)').forEach(el => { try { el.pause(); } catch {} });
} else {
document.querySelectorAll('video:not(#gchat-messages video), audio:not(#gchat-messages audio)').forEach(el => { try { el.pause(); el.removeAttribute('src'); el.load(); } catch {} });
document.querySelectorAll('ruffle-player').forEach(el => { try { el.remove(); } catch {} });
}
} }
// Dispatch pjax:start so navigation-aware listeners (e.g. metadata modal, image modal) can react // Dispatch pjax:start so navigation-aware listeners (e.g. metadata modal, image modal) can react
@@ -3789,7 +3834,11 @@ window.cancelAnimFrame = (function () {
// Reverted to native-only // Reverted to native-only
if (!options.keepMedia) { if (!options.keepMedia) {
stopMedia(); // Abort previous media immediately if (!options.direction) {
stopMedia(); // Abort previous media immediately if not sliding out
} else {
document.querySelectorAll('video:not(#gchat-messages video), audio:not(#gchat-messages audio)').forEach(el => { try { el.pause(); } catch {} });
}
// Fade out background canvas for smooth transition // Fade out background canvas for smooth transition
const canvas = document.getElementById('bg'); const canvas = document.getElementById('bg');
@@ -3958,12 +4007,10 @@ window.cancelAnimFrame = (function () {
let _container; let _container;
if (useOnara) { if (useOnara) {
const onaraModal = getOrCreateOnaraModal(); const onaraModal = openOnaraModal();
const onaraMount = document.getElementById('onara-item-mount'); const onaraMount = document.getElementById('onara-item-mount');
document.body.classList.add('onara-modal-open');
onaraModal.style.display = 'flex';
onaraModal.setAttribute('aria-hidden', 'false');
if (!options.keepMedia) { if (!options.keepMedia) {
stopMedia();
onaraMount.innerHTML = ''; onaraMount.innerHTML = '';
} }
_container = onaraMount; _container = onaraMount;
@@ -3990,10 +4037,12 @@ window.cancelAnimFrame = (function () {
main.className = 'item-view'; main.className = 'item-view';
ensureLayoutClass(); ensureLayoutClass();
if (window.syncNavbarHeight) window.syncNavbarHeight(); if (window.syncNavbarHeight) window.syncNavbarHeight();
stopMedia();
main.innerHTML = ''; main.innerHTML = '';
_container = main; _container = main;
} }
} else if (_container && !options.keepMedia) { } else if (_container && !options.keepMedia) {
stopMedia();
_container.innerHTML = ''; _container.innerHTML = '';
_container.removeAttribute('style'); _container.removeAttribute('style');
if (main) main.className = 'item-view'; if (main) main.className = 'item-view';
@@ -4142,12 +4191,10 @@ window.cancelAnimFrame = (function () {
let container; let container;
if (useOnara) { if (useOnara) {
const onaraModal = getOrCreateOnaraModal(); const onaraModal = openOnaraModal();
const onaraMount = document.getElementById('onara-item-mount'); const onaraMount = document.getElementById('onara-item-mount');
document.body.classList.add('onara-modal-open');
onaraModal.style.display = 'flex';
onaraModal.setAttribute('aria-hidden', 'false');
if (!options.keepMedia) { if (!options.keepMedia) {
stopMedia();
onaraMount.innerHTML = ''; onaraMount.innerHTML = '';
} }
container = onaraMount; container = onaraMount;
@@ -4188,11 +4235,13 @@ window.cancelAnimFrame = (function () {
// Toggle button lives permanently in body via header.html — no creation needed // Toggle button lives permanently in body via header.html — no creation needed
// HTML goes directly into #main without outdated .container wrapper for New Layout // HTML goes directly into #main without outdated .container wrapper for New Layout
stopMedia();
main.innerHTML = ''; main.innerHTML = '';
container = main; // HTML goes directly into #main container = main; // HTML goes directly into #main
} }
} else if (container && !options.keepMedia) { } else if (container && !options.keepMedia) {
// Already in some kind of item view or compatible layout, just clear it // Already in some kind of item view or compatible layout, just clear it
stopMedia();
container.innerHTML = ''; container.innerHTML = '';
container.removeAttribute('style'); // Ensure no carry-over styles container.removeAttribute('style'); // Ensure no carry-over styles
if (main) main.className = 'item-view'; if (main) main.className = 'item-view';