ради чего всё это нужно?
-
цепочки состоят из атомов в стилистических пакетах-бундлях.
-
бундли и атомы сортируются в цепочке
-
ну да... нужно просто слушать события
-
у стопки есть титульный итем (хватит одного)
-
нужна возможность подписаться на добавление штуковин в стопку: титульная штуковина может быть объявлена слушателем
-
при создании штуковина -- создаём ей стопку, объявляем слушателем
-
при добавлении штуковин в ту же стопку -- уведомляем слушателя, добавляем штуковину последней ссылкой.
-
при удалении штуковины из стопки -- убираем штуковину изнутри
-
так и получается, что переиспользуется логика сортировки атомов для сортировки и отображения штуковин.
-
для того, чтобы это стало полезно, нужно следующее:
createPileItem(item, pile) // создаёт итем, привязывает к пайлу
setPiles(item, piles) // устанавливает стопки, если в них есть титульная штука -- уведомляет
addToPile(item, pile) // работает внутри. уведомляет или просто добавляет
removePile(item, pile) // работает внутри. ремувит, если нужно
Уведомление подразумевает или создание новой бундли в конце со специальным реферальным типом, или добавление в бундлю с таким типом