Предложение по улучшению для Rich Text Editor: команда `/` (как в Notion)

Возможно, это просто оговорка, но эта идея может быть полезной, так как она стала стандартом UX/UI во многих приложениях, таких как Notion.

Как насчет добавления функции команды / с контекстным меню, когда пользователь находится на новой/пустой строке, чтобы предлагать создание конкретных элементов, таких как изображения, ссылки, GIF-файлы, опросы и т. д.?

Было бы здорово, если бы плагины и компоненты тем могли «получать доступ» к этому.

Что вы думаете? Имеет ли это смысл?

3 лайка

Я думаю, это уже в нашем поле зрения, но чем больше запросов мы получаем от сообщества по этому поводу, тем лучше!

2 лайка

Возможно ли это сделать через TC/плагин или требуется прямой PR/изменение в коде? Поскольку, судя по этому, это не кажется легко изменяемым с помощью TC/плагина, так как также требуется файл из lib/?

1 лайк

Я точно не тот человек, к которому стоит обращаться, но сомневаюсь, что что-либо, затрагивающее композитор, легко или вообще возможно сделать через TC. Оставляю это на усмотрение нашего внутреннего эксперта @renato :slight_smile:

2 лайка

Компонент визуального редактора полностью настраиваем с помощью зарегистрированных расширений, которые соответствуют типу RichEditorExtension. Каждое пользовательское расширение ProseMirror (узел, маркер, плагин и т. д.), которое сейчас используется в ядре, регистрируется через вызов registerRichEditorExtension.

Если бы нужно было реализовать функцию слэш-команд только для визуального редактора, то это был бы правильный путь. Однако, на мой взгляд, у нас уже есть реализация автодополнения, которая очень похожа на то, что мы хотим получить от слэш-команд, и тот факт, что при этом легко можно поддерживать режим Markdown, представляет большой интерес.

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

Они применяются в setupEditor и уничтожаются вместе с экземпляром редактора (например, при переключении между режимами):

Да, это можно реализовать через компонент темы или плагин (хотя работа через setupEditor/деструктор в данный момент может быть неуклюжей), но это область, где в идеале мы хотели бы предоставить возможности для дальнейшей кастомизации — новые компоненты тем или плагины должны иметь возможность добавлять дополнительные опции к слэш-командам со своими собственными правилами фильтрации. Поэтому идеальный вариант — это API для плагинов, предоставляемое ядром.

3 лайка