# wolkenschutz/emojify architecture

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

- Interactive diagram: https://gitdiagram.com/wolkenschutz/emojify
- Repository: https://github.com/wolkenschutz/emojify

## Overview

Emojify is a World of Warcraft addon for searching, browsing, and inserting static or animated emojis into chat. The documented quick-insert path starts when a player types `:` in a chat box, then uses live search, keyboard selection, and Tab insertion. The visual picker provides a separate browse-and-click path; chat bubbles and usage-weighted results are additional capabilities. With no source excerpts available, edges below reflect README statements only; module-level relationships not documented there are omitted.

Main entry points: [`Core/Autocomplete.lua`](https://github.com/wolkenschutz/emojify/blob/main/Core/Autocomplete.lua) (Autocomplete), [`Core/EmojiSearch.lua`](https://github.com/wolkenschutz/emojify/blob/main/Core/EmojiSearch.lua) (Emoji search), [`Core/VisualPicker.lua`](https://github.com/wolkenschutz/emojify/blob/main/Core/VisualPicker.lua) (Visual picker), [`Emojify.lua`](https://github.com/wolkenschutz/emojify/blob/main/Emojify.lua) (Pack API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Chat entry"]
  node_chat["WoW chat"]
  node_autocomplete["Autocomplete<br/>[Autocomplete.lua]"]
  node_search["Emoji search<br/>[EmojiSearch.lua]"]
end

subgraph group_emoji["Emoji experience"]
  node_picker["Visual picker<br/>[VisualPicker.lua]"]
  node_registry[("Emoji registry<br/>[EmojiRegistry.lua]")]
  node_animation["Animation system<br/>[Animation.lua]"]
  node_usage["Usage tracking<br/>[EmojiRegistry.lua]"]
  node_addon["Emojify addon<br/>[Emojify.lua]"]
end

subgraph group_content["Emoji content"]
  node_packs["Emoji packs"]
  node_packapi["Pack API<br/>[Emojify.lua]"]
  node_assets["Emoji assets"]
end

subgraph group_integration["Chat integrations"]
  node_chatbubbles["Chat bubbles<br/>[ChatBubbles.lua]"]
  node_chatfilter["Chat filter<br/>[ChatFilter.lua]"]
  node_framehooks["Chat frame hooks<br/>[ChatFrameHooks.lua]"]
  node_prat["Prat integration"]
end

node_player(("WoW player"))

node_player -->|"types in"| node_chat
node_chat -->|"triggers with colon"| node_autocomplete
node_autocomplete -->|"searches live"| node_search
node_player -->|"selects and inserts"| node_autocomplete
node_player -->|"opens and browses"| node_picker
node_picker -->|"inserts emoji"| node_chat
node_search -->|"weights by usage"| node_usage
node_player -->|"views chat bubbles"| node_chatbubbles
node_packapi -->|"registers packs"| node_registry
node_packs -->|"provides emoji assets"| node_assets
node_player -->|"creates custom packs"| node_packapi
node_animation -->|"animates sprite sheets"| node_assets

click node_autocomplete "https://github.com/wolkenschutz/emojify/blob/main/Core/Autocomplete.lua"
click node_search "https://github.com/wolkenschutz/emojify/blob/main/Core/EmojiSearch.lua"
click node_picker "https://github.com/wolkenschutz/emojify/blob/main/Core/VisualPicker.lua"
click node_registry "https://github.com/wolkenschutz/emojify/blob/main/Core/EmojiRegistry.lua"
click node_animation "https://github.com/wolkenschutz/emojify/blob/main/Core/Animation.lua"
click node_usage "https://github.com/wolkenschutz/emojify/blob/main/Core/EmojiRegistry.lua"
click node_chatbubbles "https://github.com/wolkenschutz/emojify/blob/main/Modules/ChatBubbles.lua"
click node_chatfilter "https://github.com/wolkenschutz/emojify/blob/main/Modules/ChatFilter.lua"
click node_framehooks "https://github.com/wolkenschutz/emojify/blob/main/Modules/ChatFrameHooks.lua"
click node_prat "https://github.com/wolkenschutz/emojify/blob/main/Modules/PratIntegration.lua"
click node_addon "https://github.com/wolkenschutz/emojify/blob/main/Emojify.lua"
click node_packs "https://github.com/wolkenschutz/emojify/tree/main/Packs"
click node_packapi "https://github.com/wolkenschutz/emojify/blob/main/Emojify.lua"
click node_assets "https://github.com/wolkenschutz/emojify/tree/main/Packs"

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_chat,node_autocomplete,node_search toneBlue
class node_picker,node_registry,node_animation,node_usage,node_addon toneAmber
class node_packs,node_packapi,node_assets toneMint
class node_chatbubbles,node_chatfilter,node_framehooks,node_prat toneRose
class node_player toneIndigo
```

## Components

### Chat entry

- **WoW chat**
- [Autocomplete](https://github.com/wolkenschutz/emojify/blob/main/Core/Autocomplete.lua): `Core/Autocomplete.lua`
- [Emoji search](https://github.com/wolkenschutz/emojify/blob/main/Core/EmojiSearch.lua): `Core/EmojiSearch.lua`

### Emoji experience

- [Visual picker](https://github.com/wolkenschutz/emojify/blob/main/Core/VisualPicker.lua): `Core/VisualPicker.lua`
- [Emoji registry](https://github.com/wolkenschutz/emojify/blob/main/Core/EmojiRegistry.lua): `Core/EmojiRegistry.lua`
- [Animation system](https://github.com/wolkenschutz/emojify/blob/main/Core/Animation.lua): `Core/Animation.lua`
- [Usage tracking](https://github.com/wolkenschutz/emojify/blob/main/Core/EmojiRegistry.lua): `Core/EmojiRegistry.lua`
- [Emojify addon](https://github.com/wolkenschutz/emojify/blob/main/Emojify.lua): `Emojify.lua`

### Emoji content

- [Emoji packs](https://github.com/wolkenschutz/emojify/tree/main/Packs): `Packs`
- [Pack API](https://github.com/wolkenschutz/emojify/blob/main/Emojify.lua): `Emojify.lua`
- [Emoji assets](https://github.com/wolkenschutz/emojify/tree/main/Packs): `Packs`

### Chat integrations

- [Chat bubbles](https://github.com/wolkenschutz/emojify/blob/main/Modules/ChatBubbles.lua): `Modules/ChatBubbles.lua`
- [Chat filter](https://github.com/wolkenschutz/emojify/blob/main/Modules/ChatFilter.lua): `Modules/ChatFilter.lua`
- [Chat frame hooks](https://github.com/wolkenschutz/emojify/blob/main/Modules/ChatFrameHooks.lua): `Modules/ChatFrameHooks.lua`
- [Prat integration](https://github.com/wolkenschutz/emojify/blob/main/Modules/PratIntegration.lua): `Modules/PratIntegration.lua`

### Other components

- **WoW player**

## Connections

- WoW player → WoW chat: types in (evidence: `README.md`)
- WoW chat → Autocomplete: triggers with colon (evidence: `README.md`)
- Autocomplete → Emoji search: searches live (evidence: `README.md`)
- WoW player → Autocomplete: selects and inserts (evidence: `README.md`)
- WoW player → Visual picker: opens and browses (evidence: `README.md`)
- Visual picker → WoW chat: inserts emoji (evidence: `README.md`)
- Emoji search → Usage tracking: weights by usage (evidence: `README.md`)
- WoW player → Chat bubbles: views chat bubbles (evidence: `README.md`)
- Pack API → Emoji registry: registers packs (evidence: `README.md`)
- Emoji packs → Emoji assets: provides emoji assets (evidence: `README.md`)
- WoW player → Pack API: creates custom packs (evidence: `README.md`)
- Animation system → Emoji assets: animates sprite sheets (evidence: `README.md`)
