hello, Jack. Thank you very much for help!!
Your decision looks so accurate.
var availableWidth = window.innerWidth,
hidenWidth = thisAnimWrap.scrollWidth - window.innerWidth;
const snapArray = items.reduce((acc, item, index) => {
const sum = acc[index - 1] ? acc[index - 1] : 0,
multiplier = 1000;
availableWidth = availableWidth - item.scrollWidth;
if ((availableWidth) > 0) return [...acc, 0];
else if (availableWidth < 0 && availableWidth > -item.scrollWidth) return [...acc, Math.round((Math.abs(availableWidth)/hidenWidth) * multiplier) / multiplier];
availableWidth = item.scrollWidth;
var newValue = Math.round((sum + (availableWidth / hidenWidth)) * multiplier) / multiplier;
return [...acc, newValue];
}, [])
My thoughts was enough only for this solution, and then pass an array to snap object
snap: {
snapTo: snapArray,
inertia: true,
duration: 0.5,
delay: 0,
},