Does not work with an indexed scrollwheel -- one click of the scroll wheel moves like 4 lines in your list, which seems to break the assumptions of your code. I get very strange behaviors, e.g. "pick" Five, scroll up and down, see swapping of Ten and Six during scroll. Then "place" results in Five being in the same place as before but Nine and Ten are swapped. Similar when using arrow keys.

I have a regular scroll wheel and it moves two items each time. Totally unusable for me.

(great idea, though)

These feel like fixable things.

Somewhat shockingly, apparently DOM does not give access to the raw scrollwheel data.

The ones that are moving the wrong item to the wrong place are fixable, but there will always be a problem when scrolling is quantized if there is a possibility that any item in the list is shorter than the scroll quantum.

dom scroll event interceptor maybe?