# Модули ## 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)