Если не смотреть на то, как это там реализовано, а подумать своей головой, то я бы сказал, что это в разы проще сделать с помощью SVG. Раскраска - это по сути векторная картинка с большим количеством замкнутых контуров (элементы path
), которые еще на этапе рисования объединены в группы (элемент g
), которые потом будут краситься в один цвет, клик на группу легко делается стандартным addEventListener('click' ...
, а заливка - это атрибут fill
с цветом. Ну а выбор карандашей - это стандартная карусель, только не с картинками, а с кучей кружков, на которые можно кликать и выбирать цвет для заливки.