diff --git a/package.json b/package.json index a61b9a7..ad0efe1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ui", - "version": "6.3.3", + "version": "6.3.4", "license": "BUSL-1.1", "private": true, "packageManager": "pnpm@9.14.4", diff --git a/src/lib/components/ui/player/wrapper.svelte b/src/lib/components/ui/player/wrapper.svelte index 7c54cef..fb3708a 100644 --- a/src/lib/components/ui/player/wrapper.svelte +++ b/src/lib/components/ui/player/wrapper.svelte @@ -13,32 +13,112 @@ import { goto } from '$app/navigation' import { page } from '$app/stores' + import { cn } from '$lib/utils' $: isMiniplayer = $page.route.id !== '/app/player' function openPlayer () { goto('/app/player/') } + + let wrapper: HTMLDivElement + + let dragging = false + + let bottom = '0px' + let right = '0px' + + function calculatePosition (e: PointerEvent) { + if (!isMiniplayer) return + dragging = true + bottom = e.offsetY - initialY + 'px' + right = e.offsetX - initialX + 'px' + } + + function endHover () { + if (!isMiniplayer) return + dragging = false + } + + let initialX = 0 + let initialY = 0 + + function startSeeking ({ offsetX, offsetY, pointerId }: PointerEvent) { + if (!isMiniplayer) return + initialX = offsetX + initialY = offsetY + + if (pointerId) wrapper.setPointerCapture(pointerId) + } + function endSeeking ({ pointerId, clientX, clientY }: PointerEvent) { + if (!isMiniplayer) return + if (!dragging) goto('/app/player/') + const istop = window.innerHeight / 2 - clientY >= 0 + const isleft = window.innerWidth / 2 - clientX >= 0 + bottom = istop ? '-100vb' : '0px' + right = isleft ? '-100vi' : '0px' + dragging = false + if (pointerId) wrapper.releasePointerCapture(pointerId) + } -
- {#if $active} - {#await $active} -
-
-
- {:then mediaInfo} - {#if mediaInfo} - - {:else} -
- There's nothing here,
how about playing something? +
+
+ {#if $active} + {#await $active} +
+
+ Loading torrent metadata,
+ this might take a minute...
- {/if} - {/await} - {:else} -
- There's nothing here,
how about playing something? -
- {/if} + {:then mediaInfo} + {#if mediaInfo} + + {/if} + {/await} + {/if} +
+ +