createDefaultAiMessageEditor function

Editor createDefaultAiMessageEditor({
  1. MutableDocument? document,
  2. MutableDocumentComposer? composer,
})

Creates an Editor, which is nominally configured for a typical AI message, such as a message generated by ChatGPT or Gemini.

This Editor still supports document editing, despite being intended for read-only AI messages. This is because AI might generate message bit-by-bit, and AI might also want to change previous messages. Therefore, document editing must still be supported.

Implementation

Editor createDefaultAiMessageEditor({
  MutableDocument? document,
  MutableDocumentComposer? composer,
}) {
  return Editor(
    editables: {
      Editor.documentKey: document ?? MutableDocument.empty(),
      Editor.composerKey: composer ?? MutableDocumentComposer(),
    },
    requestHandlers: [
      (editor, request) => request is ReplaceDocumentRequest ? ReplaceDocumentCommand(request.nodes) : null,
      ...defaultRequestHandlers,
    ],
    reactionPipeline: List.from(defaultEditorReactions),
    isHistoryEnabled: false,
  );
}