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