src/project/WorkingSetView.js
function scroll($container, $el, dir, callback) {
            var container = $container[0],
                maxScroll = container.scrollHeight - container.clientHeight;
            if (maxScroll && dir && !interval) {
                // Scroll view if the mouse is over the first or last pixels of the container
                interval = window.setInterval(function () {
                    var scrollTop = $container.scrollTop();
                    if ((dir === -1 && scrollTop <= 0) || (dir === 1 && scrollTop >= maxScroll)) {
                        endScroll($el);
                    } else {
                        $container.scrollTop(scrollTop + 7 * dir);
                        callback($el);
                    }
                }, 50);
            }
        }
function scroll($container, $el, dir, callback) {
            var container = $container[0],
                maxScroll = container.scrollHeight - container.clientHeight;
            if (maxScroll && dir && !interval) {
                // Scroll view if the mouse is over the first or last pixels of the container
                interval = window.setInterval(function () {
                    var scrollTop = $container.scrollTop();
                    if ((dir === -1 && scrollTop <= 0) || (dir === 1 && scrollTop >= maxScroll)) {
                        endScroll($el);
                    } else {
                        $container.scrollTop(scrollTop + 7 * dir);
                        callback($el);
                    }
                }, 50);
            }
        }
function scroll ( $container , $el , dir , callback ) { var container = $container [ 0 ] , maxScroll = container . scrollHeight - container . clientHeight ; if ( maxScroll && dir && ! interval ) { // Scroll view if the mouse is over the first or last pixels of the container interval = window . setInterval ( function ( ) { var scrollTop = $container . scrollTop ( ) ; if ( ( dir === - 1 && scrollTop <= 0 ) || ( dir === 1 && scrollTop >= maxScroll ) ) { endScroll ( $el ) ; } else { $container . scrollTop ( scrollTop + 7 * dir ) ; callback ( $el ) ; } } , 50 ) ; } }
We scroll the list while hovering over the first or last visible list element in the working set, so that positioning a working set item before or after one that has been scrolled out of view can be performed.  This function will call the drag interface repeatedly on an interval to allow the item to be dragged while scrolling the list until the mouse is moved off the first or last item or endScroll is called
We scroll the list while hovering over the first or last visible list element in the working set so that positioning a working set item before or after one that has been scrolled out of view can be performed . This function will call the drag interface repeatedly on an interval to allow the item to be dragged while scrolling the list until the mouse is moved off the first or last item or endScroll is called