@ЮрийСПб. Говорю честно. До готового продукта я пока не дошёл, но релизовал функции редактирования заголовков, смены их местами, изменения уровней заголовков, добавления/изменения/редактирования подзаголовков, реализовал автоматическое преобразование заголовков в ID (для ссылок), исключил случаи повторяющихся ID даже при одинаковых заголовках. Также я реализовал функцию редактирования группы абзацев и собственную разметку с подсветкой синтаксиса и горячими клавишами.
На очереди список с четырьмя уровнями вложенности, возможностью вставлять промежуточные абзацы и особые маркеры.
Проблема, которую я пока полностью не решил - это слежение за кареткой с целью автоматического изменения высоты textarea. Я реализовал автоматическое увеличение высоты textarea при добавлении пустых строк, а также уменьшение высоты при удалении этих строк, но в последнем случае каретка оказывается на строку ниже, чем последняя строка текстового поля.
Дело в том, чем я так и не нашел способа получать точное положение каретки от браузера, потому устанавливаю высоту откна на основе сопоставления содержимого textarea и также выходного слоя над textarea, где к исходному тексту добавляется подсветка разметки, выделение цветом текста, жирность шрифта и так далее.
@OlmerDale, задача далеко нетривиальная - CMS, напоминающая Wordpress по принципу добавления блоков (Text, Mediagrid и т. д.).Каждый блок описывается классом, но при этом в каждом классе должен быть доступ к некоторым переменным и функциям.
В следующем рефакторинге кода я планирую перейти на ES6-классы. Я не сделал этого раньше потому, что не понимал, как буду обращаться к экземплярам классов после того, как они будут созданы без присваивания им имени. Теперь я планирую их помещать в map и брать по ID.
Скажите лучше вот что. Смотрите: WordPress, gulp и все его утилиты, движок Laravel - всё это абсолютно бесплатные вещь, которые сделали энтузиасты просто ради креатива (и я делаю свою CMS тоже ради кретива). Я понимаю, что для этого нужна уйма времени, что трудно совмещать с работой. Скажите: КАК и КОГДА разработчики перечисленных выше средств зарабатывают себе на достойную жизнь, тратя столько времени на неоплачиваемый креативизм?
Цукерберг делал Facebook для себя, то же и про изобретателей ICQ. Botstrap сначала был просто фронтенд-частью для Twitter. Нужно сначала пройти этот этап, когда делаешь чисто для себя, и на этом этапе довести свои продукты до чего-то стоящего, а предлагать это ещё кому-то - это уже следующий этап.
Так что, если Вы изволите пожетвовать Ваше бесценное время профессионала на моё "страдание ерундой", то прошу Вас помощь новыми ответами на мои вопросы - ведь они могут пригодиться людям, которые в отличие от меня делом занимаются.