Isso pode ser apenas uma distração minha, mas pode ser útil, pois se tornou um padrão de UX/UI em muitos aplicativos, como o Notion.
Que tal adicionar um recurso de comando / com um menu de contexto quando um usuário estiver em uma linha nova/vazia para oferecer a criação de elementos específicos, como imagens, links, GIFs, enquetes, etc.?
Seria ótimo se plugins e componentes de tema pudessem “acessar” isso.
Seria possível através de um TC/plugin, ou um PR/alteração direta na base de código? Porque olhando para isto, não parece ser facilmente modificado usando um TC/plugin, já que também precisa de um arquivo lib/?
Eu definitivamente não sou a pessoa certa para perguntar, mas duvido que algo que toque no composer seja fácil/possível via um TC. Eu deixo para o nosso especialista interno @renato
O editor rico é altamente personalizável por meio de extensões registradas, que seguem o tipo RichEditorExtension. Cada nó/marca/plugin/etc. personalizado do ProseMirror passa por uma chamada registerRichEditorExtension.
Se um recurso de comando de barra fosse criado apenas para o editor rico, esse seria o caminho a seguir, embora, na minha opinião, já tenhamos nossa implementação de autocompletar, que é muito semelhante ao que queremos para um comando de barra, e o fato de que também seria possível suportar o modo Markdown facilmente é muito interessante.
Autocompletar, sendo um recurso voltado para funcionar em ambos os editores, não apenas no editor rico, fica acima das personalizações específicas do editor rico. Emojis, menções e hashtags funcionam da mesma forma em ambos os modos de editor.
Eles são aplicados em setupEditor e são destruídos quando essa instância do editor é destruída também (por exemplo, ao alternar entre os modos):
Sim, é possível construir isso por meio de um componente de tema ou plugin (embora passar pelo setupEditor/destrutor possa ser complicado atualmente), mas esta é uma área que idealmente permitiríamos mais personalização – novos componentes de tema ou plugins devem ser capazes de adicionar mais opções ao comando de barra, com suas regras de filtragem específicas –, então uma API de plugin fornecida pelo núcleo é ideal.