---
# System prepended metadata

title: Модули

---

# Модули

## 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)
    