Есть вот такая вот панель с виджетами. Юзается
vue grid layout.
Все виджеты разных размеров.
Количество колонок - 24.
Сверху есть кнопки которые добавляют виджеты.
Из документации предлагается рассчитывать координаты добавляемого виджета так:
x: (this.selectedWidgets.length * 2) % (this.colNum || 12),
y: (this.selectedWidgets.length + (this.colNum || 12)),
Это работает если все добавляемые виджеты одинакового размера, но если разного то не работает и всё располагается очень криво.
И в общем надо формировать виджеты слева направо заполняя пустые места (если виджет туда влезает).
Иначе говоря есть сетка, и нужно как то рассчитать координаты так, чтобы добавляемые виджеты заполняли всю сетку.