diff --git a/src/views/Expertise.svelte b/src/views/Expertise.svelte index 19b286d..229ef79 100644 --- a/src/views/Expertise.svelte +++ b/src/views/Expertise.svelte @@ -189,27 +189,39 @@ const onFwdUpdate = () => { if (!videoFwd || videoFwd.paused || fwdTarget === null) return - if (videoFwd.currentTime >= fwdTarget) { - currentFwdTime = fwdTarget // snap exactement à la cible - videoFwd.currentTime = fwdTarget + if (videoFwd.currentTime >= fwdTarget - 0.05) { + currentFwdTime = fwdTarget videoFwd.pause() fwdTarget = null } } videoFwd?.addEventListener('timeupdate', onFwdUpdate) + // Quand la vidéo forward atteint la fin naturellement, timeupdate + // peut ne pas fire avec currentTime >= duration. ended le garantit. + const onFwdEnded = () => { + currentFwdTime = videoDuration + fwdTarget = null + } + videoFwd?.addEventListener('ended', onFwdEnded) + const onRevUpdate = () => { if (!videoRev || videoRev.paused || revTarget === null) return - if (videoRev.currentTime >= revTarget) { + if (videoRev.currentTime >= revTarget - 0.05) { const fwdPos = videoDuration - revTarget - currentFwdTime = Math.max(fwdPos, 0) // snap exactement - videoRev.currentTime = revTarget + currentFwdTime = Math.max(fwdPos, 0) videoRev.pause() revTarget = null } } videoRev?.addEventListener('timeupdate', onRevUpdate) + const onRevEnded = () => { + currentFwdTime = 0 + revTarget = null + } + videoRev?.addEventListener('ended', onRevEnded) + const onResize = () => { if (isActive) computeOffset() } window.addEventListener('resize', onResize) window.addEventListener('orientationchange', onResize) @@ -218,7 +230,9 @@ return () => { sectionEl?.removeEventListener('wheel', nav.onWheel) videoFwd?.removeEventListener('timeupdate', onFwdUpdate) + videoFwd?.removeEventListener('ended', onFwdEnded) videoRev?.removeEventListener('timeupdate', onRevUpdate) + videoRev?.removeEventListener('ended', onRevEnded) window.removeEventListener('resize', onResize) window.removeEventListener('orientationchange', onResize) window.removeEventListener('keydown', nav.onKeyDown)