# esuvii/actionbarpaging architecture

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

- Interactive diagram: https://gitdiagram.com/esuvii/actionbarpaging
- Repository: https://github.com/esuvii/actionbarpaging

## Overview

ActionBarPaging is a World of Warcraft addon that adds conditional paging to Blizzard’s built-in action bars. The documented user workflow is to choose a bar in Edit Mode, open its paging configuration, and set rules that select another built-in or virtual/class page; modifier keys, stances, and custom conditionals are supported. The README also documents profile management, import/export, and migration to or from other action-bar addons. Source excerpts were unavailable, so internal call wiring beyond these documented relationships is not shown.

Main entry points: [`UI/PagingConfigUI.lua`](https://github.com/esuvii/actionbarpaging/blob/main/UI/PagingConfigUI.lua) (Paging settings), [`Engine.lua`](https://github.com/esuvii/actionbarpaging/blob/main/Engine.lua) (Paging engine), [`UI/ProfilesUI.lua`](https://github.com/esuvii/actionbarpaging/blob/main/UI/ProfilesUI.lua) (Profile manager), [`UI/MigrationUI.lua`](https://github.com/esuvii/actionbarpaging/blob/main/UI/MigrationUI.lua) (Migration interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_configuration["Paging configuration"]
  node_pagingui["Paging settings<br/>[PagingConfigUI.lua]"]
  node_conditionalsui["Custom conditionals"]
end

subgraph group_runtime["Addon runtime"]
  node_actionbarpaging["Addon entry"]
  node_compiler["Conditional compiler<br/>[Compiler.lua]"]
  node_engine["Paging engine<br/>[Engine.lua]"]
  node_enums["Paging enums<br/>[Enums.lua]"]
  node_serial["Serialization<br/>[Serial.lua]"]
  node_utils["Utilities<br/>[Utils.lua]"]
end

subgraph group_management["Profiles and migration"]
  node_profilesui["Profile manager<br/>[ProfilesUI.lua]"]
  node_profilesapi["Profiles API<br/>[ProfilesAPI.lua]"]
  node_importexport["Import/export<br/>[ImportExportUI.lua]"]
  node_migrationui["Migration interface<br/>[MigrationUI.lua]"]
  node_migrationapi["Migration API<br/>[MigrationAPI.lua]"]
end

node_user(("Player"))
node_blizzardbars["Blizzard action bars"]
node_otherbars["Dominos / Bartender"]

node_user -->|"configures paging"| node_pagingui
node_pagingui -->|"sets paging rules"| node_engine
node_engine -->|"pages bars"| node_blizzardbars
node_user -->|"defines conditionals"| node_conditionalsui
node_user -->|"manages profiles"| node_profilesui
node_profilesui -->|"manages profiles"| node_profilesapi
node_user -->|"imports or exports"| node_importexport
node_user -->|"starts migration"| node_migrationui
node_migrationui -->|"requests migration"| node_migrationapi
node_migrationapi -.->|"migrates bars"| node_otherbars

click node_actionbarpaging "https://github.com/esuvii/actionbarpaging/blob/main/ActionBarPaging.lua"
click node_pagingui "https://github.com/esuvii/actionbarpaging/blob/main/UI/PagingConfigUI.lua"
click node_conditionalsui "https://github.com/esuvii/actionbarpaging/blob/main/UI/ConditionalsConfigUI.lua"
click node_compiler "https://github.com/esuvii/actionbarpaging/blob/main/Compiler.lua"
click node_engine "https://github.com/esuvii/actionbarpaging/blob/main/Engine.lua"
click node_profilesui "https://github.com/esuvii/actionbarpaging/blob/main/UI/ProfilesUI.lua"
click node_profilesapi "https://github.com/esuvii/actionbarpaging/blob/main/ProfilesAPI.lua"
click node_importexport "https://github.com/esuvii/actionbarpaging/blob/main/UI/ImportExportUI.lua"
click node_migrationui "https://github.com/esuvii/actionbarpaging/blob/main/UI/MigrationUI.lua"
click node_migrationapi "https://github.com/esuvii/actionbarpaging/blob/main/MigrationAPI.lua"
click node_enums "https://github.com/esuvii/actionbarpaging/blob/main/Enums.lua"
click node_serial "https://github.com/esuvii/actionbarpaging/blob/main/Serial.lua"
click node_utils "https://github.com/esuvii/actionbarpaging/blob/main/Utils.lua"

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_pagingui,node_conditionalsui toneBlue
class node_actionbarpaging,node_compiler,node_engine,node_enums,node_serial,node_utils toneAmber
class node_profilesui,node_profilesapi,node_importexport,node_migrationui,node_migrationapi toneMint
class node_user,node_blizzardbars,node_otherbars toneIndigo
```

## Components

### Paging configuration

- [Paging settings](https://github.com/esuvii/actionbarpaging/blob/main/UI/PagingConfigUI.lua): `UI/PagingConfigUI.lua`
- [Custom conditionals](https://github.com/esuvii/actionbarpaging/blob/main/UI/ConditionalsConfigUI.lua): `UI/ConditionalsConfigUI.lua`

### Addon runtime

- [Addon entry](https://github.com/esuvii/actionbarpaging/blob/main/ActionBarPaging.lua): `ActionBarPaging.lua`
- [Conditional compiler](https://github.com/esuvii/actionbarpaging/blob/main/Compiler.lua): `Compiler.lua`
- [Paging engine](https://github.com/esuvii/actionbarpaging/blob/main/Engine.lua): `Engine.lua`
- [Paging enums](https://github.com/esuvii/actionbarpaging/blob/main/Enums.lua): `Enums.lua`
- [Serialization](https://github.com/esuvii/actionbarpaging/blob/main/Serial.lua): `Serial.lua`
- [Utilities](https://github.com/esuvii/actionbarpaging/blob/main/Utils.lua): `Utils.lua`

### Profiles and migration

- [Profile manager](https://github.com/esuvii/actionbarpaging/blob/main/UI/ProfilesUI.lua): `UI/ProfilesUI.lua`
- [Profiles API](https://github.com/esuvii/actionbarpaging/blob/main/ProfilesAPI.lua): `ProfilesAPI.lua`
- [Import/export](https://github.com/esuvii/actionbarpaging/blob/main/UI/ImportExportUI.lua): `UI/ImportExportUI.lua`
- [Migration interface](https://github.com/esuvii/actionbarpaging/blob/main/UI/MigrationUI.lua): `UI/MigrationUI.lua`
- [Migration API](https://github.com/esuvii/actionbarpaging/blob/main/MigrationAPI.lua): `MigrationAPI.lua`

### Other components

- **Player**
- **Blizzard action bars**
- **Dominos / Bartender**

## Connections

- Player → Paging settings: configures paging
- Paging settings → Paging engine: sets paging rules
- Paging engine → Blizzard action bars: pages bars
- Player → Custom conditionals: defines conditionals
- Player → Profile manager: manages profiles
- Profile manager → Profiles API: manages profiles
- Player → Import/export: imports or exports
- Player → Migration interface: starts migration
- Migration interface → Migration API: requests migration
- Migration API → Dominos / Bartender: migrates bars
