in client/src/components/scroll-list/scroll-list.ts [221:249]
stopDrag() {
if(!this.dragInfo) {
return;
}
if(this.dragInfo.interval) {
clearInterval(this.dragInfo.interval);
}
if(!this.snappingEnabled) {
if(this.isDragging) {
const velocity = this.dragInfo.velocityX;
this.dragInfo = null;
const decelerationInfo = { velocity: velocity, prevTime: ScrollListComponent.getTime() };
this.animationInterval = setInterval(() => this.updateDeceleration(decelerationInfo), this.config.animationInterval);
} else {
this.dragInfo = null;
}
} else if (this.isDragging) {
const velocity = this.dragInfo.velocityX;
this.dragInfo = null;
const snapItemIndex = this.getEndingSnapItemIndex(this.getScrollPosition(), velocity);
this.scrollToItem(snapItemIndex, velocity, true);
} else {
const itemIndex = this.getItemIndexFromPosition(this.dragInfo.lastClientX, this.dragInfo.lastClientY);
this.dragInfo = null;
if(itemIndex >= 0 && this.items && itemIndex < this.items.length) {
this.scrollToItem(itemIndex, 0, true);
}
}
}