# aieditor-team/aieditor architecture

> Architecture diagram of the GitHub repository aieditor-team/aieditor, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aieditor-team/aieditor
- Repository: https://github.com/aieditor-team/aieditor

## Overview

AiEditor is a framework-independent Web Components rich-text editor with AI-assisted authoring and document features. A typical workflow is to integrate and configure AiEditor, edit structured content through its extension set and menus, optionally invoke AI from the sidebar, then review or apply AI-proposed document changes. Media upload, document utilities, and the TinyUI layer support these experiences. The graph uses README statements and the supplied source index or excerpts as evidence; unsampled implementations and wiring are not assumed.

Main entry points: [`src/editor/AiEditor.ts`](https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditor.ts) (AiEditor), [`src/features/sidebar/ai-chat/AiSidebarItem.ts`](https://github.com/aieditor-team/aieditor/blob/main/src/features/sidebar/ai-chat/AiSidebarItem.ts) (AI sidebar), [`src/ai/OpenAiService.ts`](https://github.com/aieditor-team/aieditor/blob/main/src/ai/OpenAiService.ts) (AI service), [`src/editor/runtime/AiEditorExtensionManager.ts`](https://github.com/aieditor-team/aieditor/blob/main/src/editor/runtime/AiEditorExtensionManager.ts) (Editor extensions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Editor Core"]
  node_editor["AiEditor<br/>[AiEditor.ts]"]
  node_options["Editor options<br/>[AiEditorOptions.ts]"]
end

subgraph group_content["Document Editing"]
  node_extensions["Editor extensions"]
  node_table["Tables<br/>[Table.ts]"]
  node_sanitizer["Content sanitizer"]
  node_outline["Document outline"]
  node_documentstyle["Document styling"]
  node_template["Document templates"]
end

subgraph group_experience["Editor Experience"]
  node_menus["Menu components<br/>[MenuBar.ts]"]
  node_toolbar["Toolbar<br/>[ToolbarMenu.ts]"]
  node_bubble["Context menus<br/>[BubbleMenu.ts]"]
  node_blockdrag["Block drag menu<br/>[BlockDragMenu.ts]"]
  node_uploadui["Media upload UI<br/>[MediaDropUpload.ts]"]
end

subgraph group_ai["AI Authoring"]
  node_sidebar["AI sidebar<br/>[AiSidebarItem.ts]"]
  node_aiservice["AI service<br/>[OpenAiService.ts]"]
  node_providers["AI providers<br/>[Providers.ts]"]
  node_aitools["Editor AI tools<br/>[editor-tools.ts]"]
end

subgraph group_support["Supporting Services"]
  node_tinyui["TinyUI runtime"]
  node_uploader["Uploader<br/>[Uploader.ts]"]
  node_i18n["Localization<br/>[AiEditorI18n.ts]"]
end

node_developer(("Integrating app"))

node_developer -->|"integrates"| node_editor
node_editor -->|"uses"| node_options
node_editor -->|"configures"| node_extensions
node_extensions -->|"registers"| node_table
node_editor -->|"sanitizes"| node_sanitizer
node_editor -->|"uses"| node_outline
node_editor -->|"uses"| node_documentstyle
node_editor -->|"uses"| node_template
node_editor -->|"integrates"| node_toolbar
node_editor -->|"integrates"| node_bubble
node_editor -->|"uses"| node_menus
node_editor -->|"integrates"| node_sidebar
node_editor -->|"integrates"| node_blockdrag
node_editor -->|"integrates"| node_uploadui
node_uploadui -->|"uses"| node_uploader
node_sidebar -->|"requests generation"| node_aiservice
node_aiservice -->|"resolves provider"| node_providers
node_aiservice -->|"executes tools"| node_aitools
node_sidebar -->|"renders with"| node_tinyui
node_sidebar -.->|"uses"| node_i18n

click node_editor "https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditor.ts"
click node_options "https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorOptions.ts"
click node_extensions "https://github.com/aieditor-team/aieditor/blob/main/src/editor/runtime/AiEditorExtensionManager.ts"
click node_table "https://github.com/aieditor-team/aieditor/blob/main/src/extensions/table/Table.ts"
click node_sanitizer "https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorContentSanitizer.ts"
click node_outline "https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorDocumentOutline.ts"
click node_documentstyle "https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorDocumentStyle.ts"
click node_template "https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorTemplate.ts"
click node_menus "https://github.com/aieditor-team/aieditor/blob/main/src/menus/core/MenuBar.ts"
click node_toolbar "https://github.com/aieditor-team/aieditor/blob/main/src/features/toolbar/ToolbarMenu.ts"
click node_bubble "https://github.com/aieditor-team/aieditor/blob/main/src/features/bubble/BubbleMenu.ts"
click node_blockdrag "https://github.com/aieditor-team/aieditor/blob/main/src/features/block-drag/BlockDragMenu.ts"
click node_uploadui "https://github.com/aieditor-team/aieditor/blob/main/src/features/upload/MediaDropUpload.ts"
click node_sidebar "https://github.com/aieditor-team/aieditor/blob/main/src/features/sidebar/ai-chat/AiSidebarItem.ts"
click node_aiservice "https://github.com/aieditor-team/aieditor/blob/main/src/ai/OpenAiService.ts"
click node_providers "https://github.com/aieditor-team/aieditor/blob/main/src/ai/Providers.ts"
click node_aitools "https://github.com/aieditor-team/aieditor/blob/main/src/ai/editor-tools.ts"
click node_tinyui "https://github.com/aieditor-team/aieditor/blob/main/src/tinyui/template/UITemplateParser.ts"
click node_uploader "https://github.com/aieditor-team/aieditor/blob/main/src/uploader/Uploader.ts"
click node_i18n "https://github.com/aieditor-team/aieditor/blob/main/src/i18n/AiEditorI18n.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_editor,node_options toneBlue
class node_extensions,node_table,node_sanitizer,node_outline,node_documentstyle,node_template toneAmber
class node_menus,node_toolbar,node_bubble,node_blockdrag,node_uploadui toneMint
class node_sidebar,node_aiservice,node_providers,node_aitools toneRose
class node_tinyui,node_uploader,node_i18n,node_developer toneIndigo
```

## Components

### Editor Core

- [AiEditor](https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditor.ts): `src/editor/AiEditor.ts`
- [Editor options](https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorOptions.ts): `src/editor/AiEditorOptions.ts`

### Document Editing

- [Editor extensions](https://github.com/aieditor-team/aieditor/blob/main/src/editor/runtime/AiEditorExtensionManager.ts): `src/editor/runtime/AiEditorExtensionManager.ts`
- [Tables](https://github.com/aieditor-team/aieditor/blob/main/src/extensions/table/Table.ts): `src/extensions/table/Table.ts`
- [Content sanitizer](https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorContentSanitizer.ts): `src/editor/AiEditorContentSanitizer.ts`
- [Document outline](https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorDocumentOutline.ts): `src/editor/AiEditorDocumentOutline.ts`
- [Document styling](https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorDocumentStyle.ts): `src/editor/AiEditorDocumentStyle.ts`
- [Document templates](https://github.com/aieditor-team/aieditor/blob/main/src/editor/AiEditorTemplate.ts): `src/editor/AiEditorTemplate.ts`

### Editor Experience

- [Menu components](https://github.com/aieditor-team/aieditor/blob/main/src/menus/core/MenuBar.ts): `src/menus/core/MenuBar.ts`
- [Toolbar](https://github.com/aieditor-team/aieditor/blob/main/src/features/toolbar/ToolbarMenu.ts): `src/features/toolbar/ToolbarMenu.ts`
- [Context menus](https://github.com/aieditor-team/aieditor/blob/main/src/features/bubble/BubbleMenu.ts): `src/features/bubble/BubbleMenu.ts`
- [Block drag menu](https://github.com/aieditor-team/aieditor/blob/main/src/features/block-drag/BlockDragMenu.ts): `src/features/block-drag/BlockDragMenu.ts`
- [Media upload UI](https://github.com/aieditor-team/aieditor/blob/main/src/features/upload/MediaDropUpload.ts): `src/features/upload/MediaDropUpload.ts`

### AI Authoring

- [AI sidebar](https://github.com/aieditor-team/aieditor/blob/main/src/features/sidebar/ai-chat/AiSidebarItem.ts): `src/features/sidebar/ai-chat/AiSidebarItem.ts`
- [AI service](https://github.com/aieditor-team/aieditor/blob/main/src/ai/OpenAiService.ts): `src/ai/OpenAiService.ts`
- [AI providers](https://github.com/aieditor-team/aieditor/blob/main/src/ai/Providers.ts): `src/ai/Providers.ts`
- [Editor AI tools](https://github.com/aieditor-team/aieditor/blob/main/src/ai/editor-tools.ts): `src/ai/editor-tools.ts`

### Supporting Services

- [TinyUI runtime](https://github.com/aieditor-team/aieditor/blob/main/src/tinyui/template/UITemplateParser.ts): `src/tinyui/template/UITemplateParser.ts`
- [Uploader](https://github.com/aieditor-team/aieditor/blob/main/src/uploader/Uploader.ts): `src/uploader/Uploader.ts`
- [Localization](https://github.com/aieditor-team/aieditor/blob/main/src/i18n/AiEditorI18n.ts): `src/i18n/AiEditorI18n.ts`

### Other components

- **Integrating app**

## Connections

- Integrating app → AiEditor: integrates
- AiEditor → Editor options: uses (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Editor extensions: configures (evidence: `src/editor/AiEditor.ts`)
- Editor extensions → Tables: registers (evidence: `src/editor/runtime/AiEditorExtensionManager.ts`)
- AiEditor → Content sanitizer: sanitizes (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Document outline: uses (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Document styling: uses (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Document templates: uses (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Toolbar: integrates (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Context menus: integrates (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Menu components: uses (evidence: `src/editor/AiEditor.ts`)
- AiEditor → AI sidebar: integrates (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Block drag menu: integrates (evidence: `src/editor/AiEditor.ts`)
- AiEditor → Media upload UI: integrates
- Media upload UI → Uploader: uses
- AI sidebar → AI service: requests generation (evidence: `src/features/sidebar/ai-chat/AiSidebarItem.ts`)
- AI service → AI providers: resolves provider (evidence: `src/ai/OpenAiService.ts`)
- AI service → Editor AI tools: executes tools (evidence: `src/ai/OpenAiService.ts`)
- AI sidebar → TinyUI runtime: renders with (evidence: `src/features/sidebar/ai-chat/AiSidebarItem.ts`)
- AI sidebar → Localization: uses
