Ну вот исходя из момента , где нужно выбрать ширину текущей ячейки - я бы сразу посмотрел в сторону грида, это почти хрестоматийный пример. Но сам алгоритм перетаскивания для меня немножко загадка.
В флекс контейнере помню можно было менять порядок элементов. Есть ли такое в грид контейнере? Можете в эту сторону покопать .
И да, то что вы делаете - очень красиво)