[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Scroll into view

Scrolls into view when selection is out of view

Kasper (May 27, 2025, 9:39 AM +0200) b55635a5 9af359d0

+20 -2
+20 -2
src/components/TrackList.svelte
··· 55 55 56 56 export let params: { playlist_id: string } 57 57 $: $current_playlist_id = params.playlist_id 58 + const item_height = 24 58 59 59 60 let tracks_page = get_tracks_page({ 60 61 playlistId: params.playlist_id, ··· 394 395 const grid = document.createElement('revo-grid') 395 396 grid.setAttribute('theme', 'darkCompact') 396 397 grid.readonly = true 397 - grid.rowSize = 24 398 - grid.style.lineHeight = '24px' 398 + grid.rowSize = item_height 399 + grid.style.lineHeight = 'item_height' + 'px' 399 400 grid.canFocus = false 400 401 grid.resize = false 401 402 grid.canDrag = false ··· 424 425 ...track, 425 426 index: i + 1, 426 427 row_class, 428 + } 429 + }) 430 + 431 + onMount(() => { 432 + tracklist_actions.scroll_to_index = (index) => { 433 + const dummy = document.createElement('div') 434 + dummy.style.height = item_height + 'px' 435 + dummy.style.position = 'absolute' 436 + dummy.style.top = index * item_height + 'px' 437 + const scroll_area = grid.querySelector('.vertical-inner.scroll-rgRow') 438 + if (!scroll_area) { 439 + throw new Error('Scroll area not found') 440 + } 441 + // eslint-disable-next-line svelte/no-dom-manipulating 442 + scroll_area.prepend(dummy) 443 + dummy.scrollIntoView({ behavior: 'instant', block: 'nearest' }) 444 + dummy.remove() 427 445 } 428 446 }) 429 447