# Модули
## Presenters
+ ### Presenter(Abstract class)
Работает с представлением документа(следит за изменением содержимого, получает информацию о каретке и т.д), оповещает подписчиков об изменениях и передает операцию, используя для ее генерации модуль OT
+ ### PlainTextPresenter
Наследует от Presenter, работает с текстовыми элементами(input, textarea)
+ ### HtmlPresenter
Наследует от Presenter, работает с dom содержимым(contenteditable)
+ ### Api for creating presenters
API для создания кастомных презентаторов(Например, для отслеживания содержимого Canvas)
## Client
+ ### Client
Точка входа библиотеки на стороне клиента, работает с сетевым взаимодействием(клиент-сервер, возможно peer2peer)
+ ### ClientManager
Работает с состоянием на стороне клиента: добавляет элементы, обновляет версии, подготавливает данные для отправки, передает логику применения операций презентатору
+ ### \<\<data structure>> Element
структура, отражающая состояние одной отслеживаемой ноды, имеет свою версию, свою очередь операций
+ ### \<\<data structure>> Change
структура, передаваемая по сети(другому актору)
## Protocols
+ ### \<\<interface>> Protocol
Отражает состояние содержимого элемента в удобном для пользователя вида, включает в себя логику применения операций, предоставления состояния внешнему коду(используется презентатором, который в свою очередь прокидывает экземпляр ClientManager)