diff --git a/package.json b/package.json index 67162e9..0fc64b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ui", - "version": "6.1.15", + "version": "6.1.16", "license": "BUSL-1.1", "private": true, "packageManager": "pnpm@9.14.4", diff --git a/src/lib/components/ui/player/player.svelte b/src/lib/components/ui/player/player.svelte index f36fa26..cf47ac7 100644 --- a/src/lib/components/ui/player/player.svelte +++ b/src/lib/components/ui/player/player.svelte @@ -403,6 +403,8 @@ function seekBarKey (event: KeyboardEvent) { // left right up down return preventdefault if (['ArrowLeft', 'ArrowRight'].includes(event.key)) event.stopPropagation() + + if (event.repeat) return switch (event.key) { case 'ArrowLeft': seek(-Number($settings.playerSeek)) @@ -577,26 +579,33 @@ function holdToFF (document: HTMLElement, type: 'key' | 'pointer') { const ctrl = new AbortController() let timeout = 0 + let oldPlaybackRate = playbackRate const startFF = () => { timeout = setTimeout(() => { paused = false ff = true + oldPlaybackRate = playbackRate playbackRate = 2 }, 1000) } const endFF = () => { clearTimeout(timeout) - ff = false - playbackRate = 1 + if (ff) { + ff = false + playbackRate = oldPlaybackRate + paused = true + } } document.addEventListener(type + 'down' as 'keydown' | 'pointerdown', (event) => { if (isMiniplayer) return if ('code' in event && (event.code !== 'Space' || event.repeat)) return + if ('pointerId' in event) document.setPointerCapture(event.pointerId) startFF() }, { signal: ctrl.signal }) - document.addEventListener(type + 'up' as 'keydown' | 'pointerdown', (event) => { + document.addEventListener(type + 'up' as 'keyup' | 'pointerup', (event) => { if (isMiniplayer) return if ('code' in event && event.code !== 'Space') return + if ('pointerId' in event) document.releasePointerCapture(event.pointerId) endFF() }, { signal: ctrl.signal })