refactor: split monolithic state into context-based modules

Extract image, desktop, mobile, and config state into separate context
providers to improve modularity and reduce unnecessary re-renders.

Signed-off-by: Sped0n <hi@sped0n.com>
This commit is contained in:
Sped0n
2026-03-22 19:45:05 +08:00
parent 1c386386f3
commit f25b71a858
20 changed files with 1165 additions and 894 deletions

View File

@@ -0,0 +1,26 @@
import { type Swiper } from 'swiper'
import type { Vector } from '../utils'
export async function loadSwiper(): Promise<typeof Swiper> {
const swiper = await import('swiper')
return swiper.Swiper
}
export function getActiveImageIndexes(
currentIndex: number,
length: number,
navigateVector: Vector
): number[] {
const nextIndex = Math.min(currentIndex + 1, length - 1)
const prevIndex = Math.max(currentIndex - 1, 0)
switch (navigateVector) {
case 'next':
return [nextIndex]
case 'prev':
return [prevIndex]
case 'none':
return [currentIndex, nextIndex, prevIndex]
}
}