Задача

Необходимо разработать блок инструментов (тулбар) для форматирования текста и управления версткой внутри HTML-контейнера с атрибутом contenteditable. Textarea использовать запрещено. Данные должны передаваться наружу единой функцией обратного вызова (callback), без сохранения в базу данных.

Общая структура компонента

Создать один корневой Vue-компонент, который делегирует события наверх через вызов функции. Внутри корневого компонента должны находиться два дочерних компонента:

  • Верхняя панель (тулбар): содержит все кнопки форматирования текста (жирный, курсив, список, заголовки и т.д., согласно референсу на скриншоте).
  • Рабочая область: контейнер с атрибутом contenteditable.

Требования к контейнеру для текста

  • Область ввода должна быть "живым" редактором (не textarea), управляемым через contenteditable.
  • Альтернативные варианты реализации рабочей области (iframe, чистый document designMode и т.д.) также допускаются, главное - избегать использования фреймворков для рендера текста и стандартной textarea.

Функционал панели инструментов

  • Стандартные опции форматирования текста (HTML SWH), как указано на скриншоте (выравнивание, списки, заголовки, цвета, размеры, жирность).
  • Особое внимание рheбрам (линейкам): они должны держать отступы абзацев (например, изменение margin у блока). Желательно сделать их перетаскиваемыми для возможности динамической настройки отступов переноса текста (номер строки эмуляции вертикального ритма).

Взаимодействие:

  • При любом изменении текста или переключении инструмента корневой компонент вызывает одну переданную из родительского компонента функцию (emit/callback), которая передает актуальное содержимое контейнера и/или состояние модификации (type-строку).

Технологический стек

  • Vue.js 3 (опционально Options / Composition, ТЗ склоняется к Options API).
  • Отсутствие сторонних «canvas-» и сложных Hоковских фреймворков text-mate/код-mirror. Только голые браузерные API и стандартные Browser-Snapshots (execCommand или полифилы. Допускается библиотека скрин-снятия приставок от сторон если соприкасается с "древовидностью ами. не текстлв")). точная информация уточняется.

Автоматизированный перевод и озвучка видео и текстов на иностранные языки

Требуется организовать массовый перевод видео и презентаций на иностранные языки с использованием автоматизированных инструментов. Задача масштабная, необходима оптимизация и распараллеливание процесса. Будут предоставлены инструменты для работы.