From 862a3f7545e2ee0fe8741bcabf5cd92207376fff Mon Sep 17 00:00:00 2001
From: Yuval Adam <_@yuv.al>
Date: Fri, 14 Nov 2025 13:22:26 +0100
Subject: Fix slider jumps

---
 src/components/Geshem.tsx | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

(limited to 'src/components/Geshem.tsx')

diff --git a/src/components/Geshem.tsx b/src/components/Geshem.tsx
index b235f6f..30fb9fa 100644
--- a/src/components/Geshem.tsx
+++ b/src/components/Geshem.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from "react";
+import React, { useState, useEffect, useRef } from "react";
 
 import { Map } from "./Map";
 import { Slider } from "./Slider";
@@ -18,6 +18,7 @@ export function Geshem({ date }: GeshemProps) {
     undefined
   );
   const [slider, setSlider] = useState(0);
+  const isInitialLoad = useRef(true);
 
   useEffect(() => {
     const fetchImages = async () =>
@@ -60,10 +61,18 @@ export function Geshem({ date }: GeshemProps) {
     if (images.length > 0) {
       setSlider(prevSlider => {
         const maxIndex = playback ? PLAYBACK_SLOTS : images.length - 1;
-        // If this is the first load (slider is 0) or if slider is out of bounds, set to max
-        if (prevSlider === 0 || prevSlider > maxIndex) {
+
+        // On initial load, set to the latest image (rightmost)
+        if (isInitialLoad.current) {
+          isInitialLoad.current = false;
           return maxIndex;
         }
+
+        // If slider is out of bounds (e.g., after image count changes), clamp it
+        if (prevSlider > maxIndex) {
+          return maxIndex;
+        }
+
         return prevSlider;
       });
     }
-- 
cgit v1.3.1

