jonasgeiler / svelte-tiny-virtual-list

A tiny but mighty list virtualization library for Svelte, with zero dependencies 💪 Supports variable heights/widths, sticky items, scrolling to index, and more!
https://svelte-tiny-virtual-list.jonasgeiler.com
MIT License
405 stars 23 forks source link

List with await block works in Svelte 4, but not Svelte 5 Preview #57

Open mjadobson opened 2 weeks ago

mjadobson commented 2 weeks ago

Works fine in Svelte 4, but in current 5 RC it only works when scrolling down, scrolling back up shows empty rows.

https://svelte.dev/repl/7ec0fcf9617441b598ea7ecfe64b5e09?version=4.2.18

vs

https://svelte-5-preview.vercel.app/#H4sIAAAAAAAAE3VTbYvbMAz-K8JlXAtJL22vH5ZrC7fB2GCDwY19WfbBTZRWnGMHW23aC_nvw07TK2yLyYseSX6kR04rSlLoRPqrFVpWKFLxVNciEnyuveGOqBhFJJw52NwjK5dbqnmT6Yypqo1l-EmWD1J9JcdQWlPBXZ8WM-lzfOy9sSLHd48-zd-50Y7BKcQa1qBhvQGNDXy3piKHY4vOQw75B1VoDuyRCPRk8pjp1f1bDXp1w-433iPt9rxul0nSebuhgvfrTMgDm0yEqhmrj-aged3OEn91A_pMr-gzu9DdqqAjOGV4nQnvzQQo5JR0gafw5fisENrw6iBX0rl1JqxpMhE2yLgdyUbSpc-xZ5t0vSdjZWRBejedTi-xKe9RX91fGCsYtYHtArb3Ybdgre4LOm68Fjf994KEejaZTnfKbKUab01xnkQwmHuu1ATaTAMA9GqlMEuSd489VEm7I51C0s-KtzJ_2Vlz0EWcG2VsCna3Hc8f3kcwPPxQfFVXyunt0OPGyrpGG0gzHvafJ_UpULwRpDAqy7IHjS3QxlYWdHApzIdYc4rdXhamSSHxaLgTX5IcJ5Ff09nDJEpgUZ9gVp8g9gG37rn3es_y78z55B8VSb8CXhrNcSkrUucUYlnXCmN3doxV9EGRfvkm8-dgfjKao8-ojsiUy-jJklSRk9rFDi31HV7EHC0Wi2DHDW5fiONA4ipjeE96l4LUTFKRdFgMMk-taXoxa1kUISqB2fKqUZBua5hNlYZWnVFUwAgR31Sk15B4je6TFWmMh1OxHEYUamquaPK_uXXh5wznT0SiMgWVhIVI2R6w-939AeUv_sJuBAAA

<script>
    import VirtualList from 'svelte-tiny-virtual-list';

    const sleep = n => new Promise(res => setTimeout(res, n));
</script>

<VirtualList
    height={500}
    width="auto"
    itemCount={100000}
    itemSize={50}>
    <div slot="item" let:index let:style {style} class="row">
        {#await sleep(1000)}
            loading...
        {:then}
            Item #{index}
        {/await}
    </div>
</VirtualList>
</style>

Svelte 4.2.18, Svelte 5.0.0-next.162 Chrome 126.0.6478.62 macOS

mjadobson commented 2 weeks ago

It works ok in v5 RC after modifying the lib to use snippets instead of slots:

REPL