idlerpg.sh 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/README.md +171 -0
  2. package/dist/affix/AffixRegistry.d.ts +68 -0
  3. package/dist/affix/AffixRegistry.d.ts.map +1 -0
  4. package/dist/affix/AffixRegistry.js +245 -0
  5. package/dist/affix/AffixRegistry.js.map +1 -0
  6. package/dist/affix/PluginLoader.d.ts +66 -0
  7. package/dist/affix/PluginLoader.d.ts.map +1 -0
  8. package/dist/affix/PluginLoader.js +321 -0
  9. package/dist/affix/PluginLoader.js.map +1 -0
  10. package/dist/affix/builtin.d.ts +6 -0
  11. package/dist/affix/builtin.d.ts.map +1 -0
  12. package/dist/affix/builtin.js +311 -0
  13. package/dist/affix/builtin.js.map +1 -0
  14. package/dist/affix/index.d.ts +8 -0
  15. package/dist/affix/index.d.ts.map +1 -0
  16. package/dist/affix/index.js +11 -0
  17. package/dist/affix/index.js.map +1 -0
  18. package/dist/affix/types.d.ts +152 -0
  19. package/dist/affix/types.d.ts.map +1 -0
  20. package/dist/affix/types.js +8 -0
  21. package/dist/affix/types.js.map +1 -0
  22. package/dist/ai/PlayKitClient.d.ts +208 -0
  23. package/dist/ai/PlayKitClient.d.ts.map +1 -0
  24. package/dist/ai/PlayKitClient.js +721 -0
  25. package/dist/ai/PlayKitClient.js.map +1 -0
  26. package/dist/ai/index.d.ts +5 -0
  27. package/dist/ai/index.d.ts.map +1 -0
  28. package/dist/ai/index.js +8 -0
  29. package/dist/ai/index.js.map +1 -0
  30. package/dist/app/App.d.ts +85 -0
  31. package/dist/app/App.d.ts.map +1 -0
  32. package/dist/app/App.js +296 -0
  33. package/dist/app/App.js.map +1 -0
  34. package/dist/app/EventBus.d.ts +222 -0
  35. package/dist/app/EventBus.d.ts.map +1 -0
  36. package/dist/app/EventBus.js +88 -0
  37. package/dist/app/EventBus.js.map +1 -0
  38. package/dist/app/Keybind.d.ts +83 -0
  39. package/dist/app/Keybind.d.ts.map +1 -0
  40. package/dist/app/Keybind.js +184 -0
  41. package/dist/app/Keybind.js.map +1 -0
  42. package/dist/app/Router.d.ts +123 -0
  43. package/dist/app/Router.d.ts.map +1 -0
  44. package/dist/app/Router.js +142 -0
  45. package/dist/app/Router.js.map +1 -0
  46. package/dist/app/ScreenManager.d.ts +97 -0
  47. package/dist/app/ScreenManager.d.ts.map +1 -0
  48. package/dist/app/ScreenManager.js +216 -0
  49. package/dist/app/ScreenManager.js.map +1 -0
  50. package/dist/app/index.d.ts +14 -0
  51. package/dist/app/index.d.ts.map +1 -0
  52. package/dist/app/index.js +19 -0
  53. package/dist/app/index.js.map +1 -0
  54. package/dist/app/screens/BaseScreen.d.ts +101 -0
  55. package/dist/app/screens/BaseScreen.d.ts.map +1 -0
  56. package/dist/app/screens/BaseScreen.js +132 -0
  57. package/dist/app/screens/BaseScreen.js.map +1 -0
  58. package/dist/app/screens/CharacterCreationScreen.d.ts +42 -0
  59. package/dist/app/screens/CharacterCreationScreen.d.ts.map +1 -0
  60. package/dist/app/screens/CharacterCreationScreen.js +467 -0
  61. package/dist/app/screens/CharacterCreationScreen.js.map +1 -0
  62. package/dist/app/screens/CombatScreen.d.ts +30 -0
  63. package/dist/app/screens/CombatScreen.d.ts.map +1 -0
  64. package/dist/app/screens/CombatScreen.js +309 -0
  65. package/dist/app/screens/CombatScreen.js.map +1 -0
  66. package/dist/app/screens/DialogScreen.d.ts +29 -0
  67. package/dist/app/screens/DialogScreen.d.ts.map +1 -0
  68. package/dist/app/screens/DialogScreen.js +295 -0
  69. package/dist/app/screens/DialogScreen.js.map +1 -0
  70. package/dist/app/screens/ExploreScreen.d.ts +50 -0
  71. package/dist/app/screens/ExploreScreen.d.ts.map +1 -0
  72. package/dist/app/screens/ExploreScreen.js +308 -0
  73. package/dist/app/screens/ExploreScreen.js.map +1 -0
  74. package/dist/app/screens/HelpScreen.d.ts +12 -0
  75. package/dist/app/screens/HelpScreen.d.ts.map +1 -0
  76. package/dist/app/screens/HelpScreen.js +155 -0
  77. package/dist/app/screens/HelpScreen.js.map +1 -0
  78. package/dist/app/screens/InventoryScreen.d.ts +27 -0
  79. package/dist/app/screens/InventoryScreen.d.ts.map +1 -0
  80. package/dist/app/screens/InventoryScreen.js +326 -0
  81. package/dist/app/screens/InventoryScreen.js.map +1 -0
  82. package/dist/app/screens/PrologueScreen.d.ts +24 -0
  83. package/dist/app/screens/PrologueScreen.d.ts.map +1 -0
  84. package/dist/app/screens/PrologueScreen.js +176 -0
  85. package/dist/app/screens/PrologueScreen.js.map +1 -0
  86. package/dist/app/screens/TitleScreen.d.ts +42 -0
  87. package/dist/app/screens/TitleScreen.d.ts.map +1 -0
  88. package/dist/app/screens/TitleScreen.js +380 -0
  89. package/dist/app/screens/TitleScreen.js.map +1 -0
  90. package/dist/app/screens/TravelScreen.d.ts +22 -0
  91. package/dist/app/screens/TravelScreen.d.ts.map +1 -0
  92. package/dist/app/screens/TravelScreen.js +122 -0
  93. package/dist/app/screens/TravelScreen.js.map +1 -0
  94. package/dist/app/screens/index.d.ts +14 -0
  95. package/dist/app/screens/index.d.ts.map +1 -0
  96. package/dist/app/screens/index.js +17 -0
  97. package/dist/app/screens/index.js.map +1 -0
  98. package/dist/commands/CommandRegistry.d.ts +91 -0
  99. package/dist/commands/CommandRegistry.d.ts.map +1 -0
  100. package/dist/commands/CommandRegistry.js +159 -0
  101. package/dist/commands/CommandRegistry.js.map +1 -0
  102. package/dist/commands/index.d.ts +7 -0
  103. package/dist/commands/index.d.ts.map +1 -0
  104. package/dist/commands/index.js +10 -0
  105. package/dist/commands/index.js.map +1 -0
  106. package/dist/core/Actor.d.ts +103 -0
  107. package/dist/core/Actor.d.ts.map +1 -0
  108. package/dist/core/Actor.js +409 -0
  109. package/dist/core/Actor.js.map +1 -0
  110. package/dist/core/Combat.d.ts +37 -0
  111. package/dist/core/Combat.d.ts.map +1 -0
  112. package/dist/core/Combat.js +294 -0
  113. package/dist/core/Combat.js.map +1 -0
  114. package/dist/core/DungeonRunner.d.ts +169 -0
  115. package/dist/core/DungeonRunner.d.ts.map +1 -0
  116. package/dist/core/DungeonRunner.js +627 -0
  117. package/dist/core/DungeonRunner.js.map +1 -0
  118. package/dist/core/Game.d.ts +133 -0
  119. package/dist/core/Game.d.ts.map +1 -0
  120. package/dist/core/Game.js +644 -0
  121. package/dist/core/Game.js.map +1 -0
  122. package/dist/core/IdleCombat.d.ts +61 -0
  123. package/dist/core/IdleCombat.d.ts.map +1 -0
  124. package/dist/core/IdleCombat.js +461 -0
  125. package/dist/core/IdleCombat.js.map +1 -0
  126. package/dist/core/IdleGameManager.d.ts +198 -0
  127. package/dist/core/IdleGameManager.d.ts.map +1 -0
  128. package/dist/core/IdleGameManager.js +688 -0
  129. package/dist/core/IdleGameManager.js.map +1 -0
  130. package/dist/core/IdleSaveManager.d.ts +109 -0
  131. package/dist/core/IdleSaveManager.d.ts.map +1 -0
  132. package/dist/core/IdleSaveManager.js +296 -0
  133. package/dist/core/IdleSaveManager.js.map +1 -0
  134. package/dist/core/NewGameFlowManager.d.ts +64 -0
  135. package/dist/core/NewGameFlowManager.d.ts.map +1 -0
  136. package/dist/core/NewGameFlowManager.js +153 -0
  137. package/dist/core/NewGameFlowManager.js.map +1 -0
  138. package/dist/core/Player.d.ts +65 -0
  139. package/dist/core/Player.d.ts.map +1 -0
  140. package/dist/core/Player.js +261 -0
  141. package/dist/core/Player.js.map +1 -0
  142. package/dist/core/RoomHandlers.d.ts +75 -0
  143. package/dist/core/RoomHandlers.d.ts.map +1 -0
  144. package/dist/core/RoomHandlers.js +383 -0
  145. package/dist/core/RoomHandlers.js.map +1 -0
  146. package/dist/core/SaveManager.d.ts +84 -0
  147. package/dist/core/SaveManager.d.ts.map +1 -0
  148. package/dist/core/SaveManager.js +281 -0
  149. package/dist/core/SaveManager.js.map +1 -0
  150. package/dist/core/SaveMigration.d.ts +69 -0
  151. package/dist/core/SaveMigration.d.ts.map +1 -0
  152. package/dist/core/SaveMigration.js +408 -0
  153. package/dist/core/SaveMigration.js.map +1 -0
  154. package/dist/core/StateAdapter.d.ts +79 -0
  155. package/dist/core/StateAdapter.d.ts.map +1 -0
  156. package/dist/core/StateAdapter.js +397 -0
  157. package/dist/core/StateAdapter.js.map +1 -0
  158. package/dist/core/Team.d.ts +145 -0
  159. package/dist/core/Team.d.ts.map +1 -0
  160. package/dist/core/Team.js +371 -0
  161. package/dist/core/Team.js.map +1 -0
  162. package/dist/core/TeamCombat.d.ts +88 -0
  163. package/dist/core/TeamCombat.d.ts.map +1 -0
  164. package/dist/core/TeamCombat.js +405 -0
  165. package/dist/core/TeamCombat.js.map +1 -0
  166. package/dist/core/TeamDungeonRunner.d.ts +186 -0
  167. package/dist/core/TeamDungeonRunner.d.ts.map +1 -0
  168. package/dist/core/TeamDungeonRunner.js +758 -0
  169. package/dist/core/TeamDungeonRunner.js.map +1 -0
  170. package/dist/core/TimeManager.d.ts +114 -0
  171. package/dist/core/TimeManager.d.ts.map +1 -0
  172. package/dist/core/TimeManager.js +318 -0
  173. package/dist/core/TimeManager.js.map +1 -0
  174. package/dist/core/index.d.ts +9 -0
  175. package/dist/core/index.d.ts.map +1 -0
  176. package/dist/core/index.js +12 -0
  177. package/dist/core/index.js.map +1 -0
  178. package/dist/core/timeConstants.d.ts +135 -0
  179. package/dist/core/timeConstants.d.ts.map +1 -0
  180. package/dist/core/timeConstants.js +157 -0
  181. package/dist/core/timeConstants.js.map +1 -0
  182. package/dist/core/types.d.ts +780 -0
  183. package/dist/core/types.d.ts.map +1 -0
  184. package/dist/core/types.js +16 -0
  185. package/dist/core/types.js.map +1 -0
  186. package/dist/data/continents/index.d.ts +163 -0
  187. package/dist/data/continents/index.d.ts.map +1 -0
  188. package/dist/data/continents/index.js +31 -0
  189. package/dist/data/continents/index.js.map +1 -0
  190. package/dist/data/continents/verdantia.d.ts +294 -0
  191. package/dist/data/continents/verdantia.d.ts.map +1 -0
  192. package/dist/data/continents/verdantia.js +327 -0
  193. package/dist/data/continents/verdantia.js.map +1 -0
  194. package/dist/handlers/DialogHandler.d.ts +95 -0
  195. package/dist/handlers/DialogHandler.d.ts.map +1 -0
  196. package/dist/handlers/DialogHandler.js +450 -0
  197. package/dist/handlers/DialogHandler.js.map +1 -0
  198. package/dist/handlers/SaveLoadHandler.d.ts +60 -0
  199. package/dist/handlers/SaveLoadHandler.d.ts.map +1 -0
  200. package/dist/handlers/SaveLoadHandler.js +187 -0
  201. package/dist/handlers/SaveLoadHandler.js.map +1 -0
  202. package/dist/handlers/TitleScreenHandler.d.ts +43 -0
  203. package/dist/handlers/TitleScreenHandler.d.ts.map +1 -0
  204. package/dist/handlers/TitleScreenHandler.js +508 -0
  205. package/dist/handlers/TitleScreenHandler.js.map +1 -0
  206. package/dist/handlers/WorkshopHandler.d.ts +75 -0
  207. package/dist/handlers/WorkshopHandler.d.ts.map +1 -0
  208. package/dist/handlers/WorkshopHandler.js +401 -0
  209. package/dist/handlers/WorkshopHandler.js.map +1 -0
  210. package/dist/handlers/index.d.ts +12 -0
  211. package/dist/handlers/index.d.ts.map +1 -0
  212. package/dist/handlers/index.js +14 -0
  213. package/dist/handlers/index.js.map +1 -0
  214. package/dist/handlers/types.d.ts +34 -0
  215. package/dist/handlers/types.d.ts.map +1 -0
  216. package/dist/handlers/types.js +8 -0
  217. package/dist/handlers/types.js.map +1 -0
  218. package/dist/i18n/en.d.ts +3 -0
  219. package/dist/i18n/en.d.ts.map +1 -0
  220. package/dist/i18n/en.js +130 -0
  221. package/dist/i18n/en.js.map +1 -0
  222. package/dist/i18n/index.d.ts +40 -0
  223. package/dist/i18n/index.d.ts.map +1 -0
  224. package/dist/i18n/index.js +105 -0
  225. package/dist/i18n/index.js.map +1 -0
  226. package/dist/i18n/types.d.ts +133 -0
  227. package/dist/i18n/types.d.ts.map +1 -0
  228. package/dist/i18n/types.js +8 -0
  229. package/dist/i18n/types.js.map +1 -0
  230. package/dist/i18n/zh.d.ts +3 -0
  231. package/dist/i18n/zh.d.ts.map +1 -0
  232. package/dist/i18n/zh.js +130 -0
  233. package/dist/i18n/zh.js.map +1 -0
  234. package/dist/instrument.d.ts +8 -0
  235. package/dist/instrument.d.ts.map +1 -0
  236. package/dist/instrument.js +33 -0
  237. package/dist/instrument.js.map +1 -0
  238. package/dist/main-new.d.ts +12 -0
  239. package/dist/main-new.d.ts.map +1 -0
  240. package/dist/main-new.js +32 -0
  241. package/dist/main-new.js.map +1 -0
  242. package/dist/main.d.ts +7 -0
  243. package/dist/main.d.ts.map +1 -0
  244. package/dist/main.js +2816 -0
  245. package/dist/main.js.map +1 -0
  246. package/dist/map/ContinentManager.d.ts +88 -0
  247. package/dist/map/ContinentManager.d.ts.map +1 -0
  248. package/dist/map/ContinentManager.js +241 -0
  249. package/dist/map/ContinentManager.js.map +1 -0
  250. package/dist/map/DungeonGenerator.d.ts +32 -0
  251. package/dist/map/DungeonGenerator.d.ts.map +1 -0
  252. package/dist/map/DungeonGenerator.js +615 -0
  253. package/dist/map/DungeonGenerator.js.map +1 -0
  254. package/dist/map/MapGenerator.d.ts +27 -0
  255. package/dist/map/MapGenerator.d.ts.map +1 -0
  256. package/dist/map/MapGenerator.js +485 -0
  257. package/dist/map/MapGenerator.js.map +1 -0
  258. package/dist/map/index.d.ts +5 -0
  259. package/dist/map/index.d.ts.map +1 -0
  260. package/dist/map/index.js +8 -0
  261. package/dist/map/index.js.map +1 -0
  262. package/dist/npc/NPCGenerator.d.ts +68 -0
  263. package/dist/npc/NPCGenerator.d.ts.map +1 -0
  264. package/dist/npc/NPCGenerator.js +468 -0
  265. package/dist/npc/NPCGenerator.js.map +1 -0
  266. package/dist/npc/NPCManager.d.ts +86 -0
  267. package/dist/npc/NPCManager.d.ts.map +1 -0
  268. package/dist/npc/NPCManager.js +217 -0
  269. package/dist/npc/NPCManager.js.map +1 -0
  270. package/dist/npc/fixedNPCs.d.ts +7 -0
  271. package/dist/npc/fixedNPCs.d.ts.map +1 -0
  272. package/dist/npc/fixedNPCs.js +196 -0
  273. package/dist/npc/fixedNPCs.js.map +1 -0
  274. package/dist/npc/index.d.ts +9 -0
  275. package/dist/npc/index.d.ts.map +1 -0
  276. package/dist/npc/index.js +12 -0
  277. package/dist/npc/index.js.map +1 -0
  278. package/dist/npc/traits.d.ts +33 -0
  279. package/dist/npc/traits.d.ts.map +1 -0
  280. package/dist/npc/traits.js +795 -0
  281. package/dist/npc/traits.js.map +1 -0
  282. package/dist/npc/types.d.ts +193 -0
  283. package/dist/npc/types.d.ts.map +1 -0
  284. package/dist/npc/types.js +9 -0
  285. package/dist/npc/types.js.map +1 -0
  286. package/dist/quest/QuestManager.d.ts +79 -0
  287. package/dist/quest/QuestManager.d.ts.map +1 -0
  288. package/dist/quest/QuestManager.js +273 -0
  289. package/dist/quest/QuestManager.js.map +1 -0
  290. package/dist/quest/index.d.ts +6 -0
  291. package/dist/quest/index.d.ts.map +1 -0
  292. package/dist/quest/index.js +9 -0
  293. package/dist/quest/index.js.map +1 -0
  294. package/dist/quest/types.d.ts +81 -0
  295. package/dist/quest/types.d.ts.map +1 -0
  296. package/dist/quest/types.js +8 -0
  297. package/dist/quest/types.js.map +1 -0
  298. package/dist/strategy/StrategyExecutor.d.ts +159 -0
  299. package/dist/strategy/StrategyExecutor.d.ts.map +1 -0
  300. package/dist/strategy/StrategyExecutor.js +479 -0
  301. package/dist/strategy/StrategyExecutor.js.map +1 -0
  302. package/dist/strategy/StrategyParser.d.ts +48 -0
  303. package/dist/strategy/StrategyParser.d.ts.map +1 -0
  304. package/dist/strategy/StrategyParser.js +321 -0
  305. package/dist/strategy/StrategyParser.js.map +1 -0
  306. package/dist/strategy/defaultStrategy.d.ts +40 -0
  307. package/dist/strategy/defaultStrategy.d.ts.map +1 -0
  308. package/dist/strategy/defaultStrategy.js +254 -0
  309. package/dist/strategy/defaultStrategy.js.map +1 -0
  310. package/dist/strategy/index.d.ts +8 -0
  311. package/dist/strategy/index.d.ts.map +1 -0
  312. package/dist/strategy/index.js +14 -0
  313. package/dist/strategy/index.js.map +1 -0
  314. package/dist/tui/ExploreMenu.d.ts +106 -0
  315. package/dist/tui/ExploreMenu.d.ts.map +1 -0
  316. package/dist/tui/ExploreMenu.js +282 -0
  317. package/dist/tui/ExploreMenu.js.map +1 -0
  318. package/dist/tui/GameUI.d.ts +313 -0
  319. package/dist/tui/GameUI.d.ts.map +1 -0
  320. package/dist/tui/GameUI.js +2116 -0
  321. package/dist/tui/GameUI.js.map +1 -0
  322. package/dist/tui/GameUIAdapter.d.ts +207 -0
  323. package/dist/tui/GameUIAdapter.d.ts.map +1 -0
  324. package/dist/tui/GameUIAdapter.js +1342 -0
  325. package/dist/tui/GameUIAdapter.js.map +1 -0
  326. package/dist/tui/Input.d.ts +139 -0
  327. package/dist/tui/Input.d.ts.map +1 -0
  328. package/dist/tui/Input.js +278 -0
  329. package/dist/tui/Input.js.map +1 -0
  330. package/dist/tui/Menu.d.ts +110 -0
  331. package/dist/tui/Menu.d.ts.map +1 -0
  332. package/dist/tui/Menu.js +365 -0
  333. package/dist/tui/Menu.js.map +1 -0
  334. package/dist/tui/Screen.d.ts +228 -0
  335. package/dist/tui/Screen.d.ts.map +1 -0
  336. package/dist/tui/Screen.js +502 -0
  337. package/dist/tui/Screen.js.map +1 -0
  338. package/dist/tui/components/Box.d.ts +36 -0
  339. package/dist/tui/components/Box.d.ts.map +1 -0
  340. package/dist/tui/components/Box.js +43 -0
  341. package/dist/tui/components/Box.js.map +1 -0
  342. package/dist/tui/components/List.d.ts +69 -0
  343. package/dist/tui/components/List.d.ts.map +1 -0
  344. package/dist/tui/components/List.js +136 -0
  345. package/dist/tui/components/List.js.map +1 -0
  346. package/dist/tui/components/ProgressBar.d.ts +42 -0
  347. package/dist/tui/components/ProgressBar.d.ts.map +1 -0
  348. package/dist/tui/components/ProgressBar.js +75 -0
  349. package/dist/tui/components/ProgressBar.js.map +1 -0
  350. package/dist/tui/components/index.d.ts +8 -0
  351. package/dist/tui/components/index.d.ts.map +1 -0
  352. package/dist/tui/components/index.js +11 -0
  353. package/dist/tui/components/index.js.map +1 -0
  354. package/dist/tui/core/BaseSection.d.ts +98 -0
  355. package/dist/tui/core/BaseSection.d.ts.map +1 -0
  356. package/dist/tui/core/BaseSection.js +174 -0
  357. package/dist/tui/core/BaseSection.js.map +1 -0
  358. package/dist/tui/core/Component.d.ts +61 -0
  359. package/dist/tui/core/Component.d.ts.map +1 -0
  360. package/dist/tui/core/Component.js +32 -0
  361. package/dist/tui/core/Component.js.map +1 -0
  362. package/dist/tui/core/Section.d.ts +101 -0
  363. package/dist/tui/core/Section.d.ts.map +1 -0
  364. package/dist/tui/core/Section.js +24 -0
  365. package/dist/tui/core/Section.js.map +1 -0
  366. package/dist/tui/core/SectionManager.d.ts +108 -0
  367. package/dist/tui/core/SectionManager.d.ts.map +1 -0
  368. package/dist/tui/core/SectionManager.js +258 -0
  369. package/dist/tui/core/SectionManager.js.map +1 -0
  370. package/dist/tui/core/index.d.ts +9 -0
  371. package/dist/tui/core/index.d.ts.map +1 -0
  372. package/dist/tui/core/index.js +12 -0
  373. package/dist/tui/core/index.js.map +1 -0
  374. package/dist/tui/index.d.ts +15 -0
  375. package/dist/tui/index.d.ts.map +1 -0
  376. package/dist/tui/index.js +23 -0
  377. package/dist/tui/index.js.map +1 -0
  378. package/dist/tui/screens/BaseScreen.d.ts +62 -0
  379. package/dist/tui/screens/BaseScreen.d.ts.map +1 -0
  380. package/dist/tui/screens/BaseScreen.js +55 -0
  381. package/dist/tui/screens/BaseScreen.js.map +1 -0
  382. package/dist/tui/screens/CombatScreen.d.ts +43 -0
  383. package/dist/tui/screens/CombatScreen.d.ts.map +1 -0
  384. package/dist/tui/screens/CombatScreen.js +125 -0
  385. package/dist/tui/screens/CombatScreen.js.map +1 -0
  386. package/dist/tui/screens/DialogScreen.d.ts +53 -0
  387. package/dist/tui/screens/DialogScreen.d.ts.map +1 -0
  388. package/dist/tui/screens/DialogScreen.js +90 -0
  389. package/dist/tui/screens/DialogScreen.js.map +1 -0
  390. package/dist/tui/screens/DungeonScreen.d.ts +80 -0
  391. package/dist/tui/screens/DungeonScreen.d.ts.map +1 -0
  392. package/dist/tui/screens/DungeonScreen.js +317 -0
  393. package/dist/tui/screens/DungeonScreen.js.map +1 -0
  394. package/dist/tui/screens/ExploreScreen.d.ts +69 -0
  395. package/dist/tui/screens/ExploreScreen.d.ts.map +1 -0
  396. package/dist/tui/screens/ExploreScreen.js +224 -0
  397. package/dist/tui/screens/ExploreScreen.js.map +1 -0
  398. package/dist/tui/screens/SectionScreen.d.ts +84 -0
  399. package/dist/tui/screens/SectionScreen.d.ts.map +1 -0
  400. package/dist/tui/screens/SectionScreen.js +156 -0
  401. package/dist/tui/screens/SectionScreen.js.map +1 -0
  402. package/dist/tui/screens/TitleScreen.d.ts +40 -0
  403. package/dist/tui/screens/TitleScreen.d.ts.map +1 -0
  404. package/dist/tui/screens/TitleScreen.js +253 -0
  405. package/dist/tui/screens/TitleScreen.js.map +1 -0
  406. package/dist/tui/screens/TownScreen.d.ts +98 -0
  407. package/dist/tui/screens/TownScreen.d.ts.map +1 -0
  408. package/dist/tui/screens/TownScreen.js +370 -0
  409. package/dist/tui/screens/TownScreen.js.map +1 -0
  410. package/dist/tui/screens/TravelScreen.d.ts +67 -0
  411. package/dist/tui/screens/TravelScreen.d.ts.map +1 -0
  412. package/dist/tui/screens/TravelScreen.js +286 -0
  413. package/dist/tui/screens/TravelScreen.js.map +1 -0
  414. package/dist/tui/screens/index.d.ts +8 -0
  415. package/dist/tui/screens/index.d.ts.map +1 -0
  416. package/dist/tui/screens/index.js +17 -0
  417. package/dist/tui/screens/index.js.map +1 -0
  418. package/dist/tui/sections/ActionsSection.d.ts +71 -0
  419. package/dist/tui/sections/ActionsSection.d.ts.map +1 -0
  420. package/dist/tui/sections/ActionsSection.js +184 -0
  421. package/dist/tui/sections/ActionsSection.js.map +1 -0
  422. package/dist/tui/sections/DungeonSection.d.ts +65 -0
  423. package/dist/tui/sections/DungeonSection.d.ts.map +1 -0
  424. package/dist/tui/sections/DungeonSection.js +144 -0
  425. package/dist/tui/sections/DungeonSection.js.map +1 -0
  426. package/dist/tui/sections/EventsSection.d.ts +50 -0
  427. package/dist/tui/sections/EventsSection.d.ts.map +1 -0
  428. package/dist/tui/sections/EventsSection.js +134 -0
  429. package/dist/tui/sections/EventsSection.js.map +1 -0
  430. package/dist/tui/sections/MapSection.d.ts +66 -0
  431. package/dist/tui/sections/MapSection.d.ts.map +1 -0
  432. package/dist/tui/sections/MapSection.js +669 -0
  433. package/dist/tui/sections/MapSection.js.map +1 -0
  434. package/dist/tui/sections/StatusSection.d.ts +47 -0
  435. package/dist/tui/sections/StatusSection.d.ts.map +1 -0
  436. package/dist/tui/sections/StatusSection.js +133 -0
  437. package/dist/tui/sections/StatusSection.js.map +1 -0
  438. package/dist/tui/sections/TeamSection.d.ts +71 -0
  439. package/dist/tui/sections/TeamSection.d.ts.map +1 -0
  440. package/dist/tui/sections/TeamSection.js +224 -0
  441. package/dist/tui/sections/TeamSection.js.map +1 -0
  442. package/dist/tui/sections/TravelingSection.d.ts +51 -0
  443. package/dist/tui/sections/TravelingSection.d.ts.map +1 -0
  444. package/dist/tui/sections/TravelingSection.js +106 -0
  445. package/dist/tui/sections/TravelingSection.js.map +1 -0
  446. package/dist/tui/sections/index.d.ts +9 -0
  447. package/dist/tui/sections/index.d.ts.map +1 -0
  448. package/dist/tui/sections/index.js +12 -0
  449. package/dist/tui/sections/index.js.map +1 -0
  450. package/dist/ui/Terminal.d.ts +68 -0
  451. package/dist/ui/Terminal.d.ts.map +1 -0
  452. package/dist/ui/Terminal.js +297 -0
  453. package/dist/ui/Terminal.js.map +1 -0
  454. package/dist/ui/index.d.ts +5 -0
  455. package/dist/ui/index.d.ts.map +1 -0
  456. package/dist/ui/index.js +8 -0
  457. package/dist/ui/index.js.map +1 -0
  458. package/dist/utils/configMigration.d.ts +14 -0
  459. package/dist/utils/configMigration.d.ts.map +1 -0
  460. package/dist/utils/configMigration.js +92 -0
  461. package/dist/utils/configMigration.js.map +1 -0
  462. package/dist/utils/errorHandler.d.ts +86 -0
  463. package/dist/utils/errorHandler.d.ts.map +1 -0
  464. package/dist/utils/errorHandler.js +224 -0
  465. package/dist/utils/errorHandler.js.map +1 -0
  466. package/dist/utils/logger.d.ts +14 -0
  467. package/dist/utils/logger.d.ts.map +1 -0
  468. package/dist/utils/logger.js +43 -0
  469. package/dist/utils/logger.js.map +1 -0
  470. package/dist/weapon/WeaponFactory.d.ts +32 -0
  471. package/dist/weapon/WeaponFactory.d.ts.map +1 -0
  472. package/dist/weapon/WeaponFactory.js +216 -0
  473. package/dist/weapon/WeaponFactory.js.map +1 -0
  474. package/dist/weapon/index.d.ts +5 -0
  475. package/dist/weapon/index.d.ts.map +1 -0
  476. package/dist/weapon/index.js +8 -0
  477. package/dist/weapon/index.js.map +1 -0
  478. package/package.json +46 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * List Component - Renders a scrollable list of items
3
+ */
4
+ import type { IComponent, RenderContext } from '../core/Component.js';
5
+ /**
6
+ * List item
7
+ */
8
+ export interface ListItem {
9
+ id: string;
10
+ label: string;
11
+ description?: string;
12
+ color?: string;
13
+ data?: unknown;
14
+ }
15
+ /**
16
+ * List configuration
17
+ */
18
+ export interface ListConfig {
19
+ items: ListItem[];
20
+ selectedIndex?: number;
21
+ scrollOffset?: number;
22
+ showIndicator?: boolean;
23
+ indicatorChar?: string;
24
+ selectedFg?: string;
25
+ selectedBg?: string;
26
+ emptyMessage?: string;
27
+ }
28
+ /**
29
+ * List Component - Scrollable item list
30
+ */
31
+ export declare class List implements IComponent {
32
+ readonly id: string;
33
+ visible: boolean;
34
+ private config;
35
+ constructor(id: string, config: ListConfig);
36
+ /**
37
+ * Update list configuration
38
+ */
39
+ setConfig(config: Partial<ListConfig>): void;
40
+ /**
41
+ * Set items
42
+ */
43
+ setItems(items: ListItem[]): void;
44
+ /**
45
+ * Set selected index
46
+ */
47
+ setSelectedIndex(index: number): void;
48
+ /**
49
+ * Get selected item
50
+ */
51
+ getSelectedItem(): ListItem | undefined;
52
+ /**
53
+ * Render the list
54
+ */
55
+ render(ctx: RenderContext): void;
56
+ /**
57
+ * Move selection up
58
+ */
59
+ moveUp(): boolean;
60
+ /**
61
+ * Move selection down
62
+ */
63
+ moveDown(): boolean;
64
+ /**
65
+ * Ensure selected item is visible
66
+ */
67
+ private ensureVisible;
68
+ }
69
+ //# sourceMappingURL=List.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"/","sources":["tui/components/List.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,IAAK,YAAW,UAAU;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAQ;IAExB,OAAO,CAAC,MAAM,CAAa;gBAEf,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAc1C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAI5C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAQjC;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,eAAe,IAAI,QAAQ,GAAG,SAAS;IAIvC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IA8DhC;;OAEG;IACH,MAAM,IAAI,OAAO;IASjB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAYnB;;OAEG;IACH,OAAO,CAAC,aAAa;CAWtB"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * List Component - Renders a scrollable list of items
3
+ */
4
+
5
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c0046caa-1a3a-541f-989c-88a1255f3d23")}catch(e){}}();
6
+ import { ANSI } from '../Screen.js';
7
+ /**
8
+ * List Component - Scrollable item list
9
+ */
10
+ export class List {
11
+ id;
12
+ visible = true;
13
+ config;
14
+ constructor(id, config) {
15
+ this.id = id;
16
+ this.config = {
17
+ selectedIndex: 0,
18
+ scrollOffset: 0,
19
+ showIndicator: true,
20
+ indicatorChar: '>',
21
+ selectedFg: ANSI.fg.black,
22
+ selectedBg: ANSI.bg.cyan,
23
+ emptyMessage: '(empty)',
24
+ ...config,
25
+ };
26
+ }
27
+ /**
28
+ * Update list configuration
29
+ */
30
+ setConfig(config) {
31
+ this.config = { ...this.config, ...config };
32
+ }
33
+ /**
34
+ * Set items
35
+ */
36
+ setItems(items) {
37
+ this.config.items = items;
38
+ // Clamp selected index
39
+ if (this.config.selectedIndex !== undefined && this.config.selectedIndex >= items.length) {
40
+ this.config.selectedIndex = Math.max(0, items.length - 1);
41
+ }
42
+ }
43
+ /**
44
+ * Set selected index
45
+ */
46
+ setSelectedIndex(index) {
47
+ this.config.selectedIndex = Math.max(0, Math.min(this.config.items.length - 1, index));
48
+ }
49
+ /**
50
+ * Get selected item
51
+ */
52
+ getSelectedItem() {
53
+ return this.config.items[this.config.selectedIndex ?? 0];
54
+ }
55
+ /**
56
+ * Render the list
57
+ */
58
+ render(ctx) {
59
+ if (!this.visible)
60
+ return;
61
+ const { screen, bounds } = ctx;
62
+ const { x, y, width, height } = bounds;
63
+ const { items, selectedIndex = 0, scrollOffset = 0, showIndicator, indicatorChar, selectedFg, selectedBg, emptyMessage, } = this.config;
64
+ // Empty state
65
+ if (items.length === 0) {
66
+ screen.write(x + 2, y + 1, emptyMessage || '(empty)', ANSI.fg.gray);
67
+ return;
68
+ }
69
+ // Calculate visible items
70
+ const maxVisible = height;
71
+ const visibleItems = items.slice(scrollOffset, scrollOffset + maxVisible);
72
+ // Render each item
73
+ for (let i = 0; i < visibleItems.length; i++) {
74
+ const itemIndex = scrollOffset + i;
75
+ const item = visibleItems[i];
76
+ const isSelected = itemIndex === selectedIndex;
77
+ const fg = isSelected ? selectedFg : (item.color || ANSI.fg.white);
78
+ const bg = isSelected ? selectedBg : undefined;
79
+ const indicator = isSelected && showIndicator ? indicatorChar : ' ';
80
+ // Draw indicator
81
+ if (showIndicator) {
82
+ screen.write(x, y + i, indicator || '>', ANSI.fg.yellow);
83
+ }
84
+ // Draw item label
85
+ const labelX = showIndicator ? x + 2 : x;
86
+ const labelWidth = showIndicator ? width - 2 : width;
87
+ screen.write(labelX, y + i, item.label.slice(0, labelWidth).padEnd(labelWidth), fg, bg);
88
+ }
89
+ // Scroll indicators (if there are more items)
90
+ if (scrollOffset > 0) {
91
+ screen.write(x + width - 1, y, '^', ANSI.fg.yellow);
92
+ }
93
+ if (scrollOffset + maxVisible < items.length) {
94
+ screen.write(x + width - 1, y + height - 1, 'v', ANSI.fg.yellow);
95
+ }
96
+ }
97
+ /**
98
+ * Move selection up
99
+ */
100
+ moveUp() {
101
+ if (this.config.selectedIndex !== undefined && this.config.selectedIndex > 0) {
102
+ this.config.selectedIndex--;
103
+ this.ensureVisible();
104
+ return true;
105
+ }
106
+ return false;
107
+ }
108
+ /**
109
+ * Move selection down
110
+ */
111
+ moveDown() {
112
+ if (this.config.selectedIndex !== undefined &&
113
+ this.config.selectedIndex < this.config.items.length - 1) {
114
+ this.config.selectedIndex++;
115
+ this.ensureVisible();
116
+ return true;
117
+ }
118
+ return false;
119
+ }
120
+ /**
121
+ * Ensure selected item is visible
122
+ */
123
+ ensureVisible() {
124
+ const { selectedIndex = 0, scrollOffset = 0 } = this.config;
125
+ // Note: maxVisible is calculated in render, so we use a default here
126
+ const maxVisible = 10;
127
+ if (selectedIndex < scrollOffset) {
128
+ this.config.scrollOffset = selectedIndex;
129
+ }
130
+ else if (selectedIndex >= scrollOffset + maxVisible) {
131
+ this.config.scrollOffset = selectedIndex - maxVisible + 1;
132
+ }
133
+ }
134
+ }
135
+ //# sourceMappingURL=List.js.map
136
+ //# debugId=c0046caa-1a3a-541f-989c-88a1255f3d23
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.js","sources":["tui/components/List.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * List Component - Renders a scrollable list of items\r\n */\r\n\r\nimport type { IComponent, RenderContext } from '../core/Component.js';\r\nimport { ANSI } from '../Screen.js';\r\n\r\n/**\r\n * List item\r\n */\r\nexport interface ListItem {\r\n id: string;\r\n label: string;\r\n description?: string;\r\n color?: string;\r\n data?: unknown;\r\n}\r\n\r\n/**\r\n * List configuration\r\n */\r\nexport interface ListConfig {\r\n items: ListItem[];\r\n selectedIndex?: number;\r\n scrollOffset?: number;\r\n showIndicator?: boolean;\r\n indicatorChar?: string;\r\n selectedFg?: string;\r\n selectedBg?: string;\r\n emptyMessage?: string;\r\n}\r\n\r\n/**\r\n * List Component - Scrollable item list\r\n */\r\nexport class List implements IComponent {\r\n readonly id: string;\r\n visible: boolean = true;\r\n\r\n private config: ListConfig;\r\n\r\n constructor(id: string, config: ListConfig) {\r\n this.id = id;\r\n this.config = {\r\n selectedIndex: 0,\r\n scrollOffset: 0,\r\n showIndicator: true,\r\n indicatorChar: '>',\r\n selectedFg: ANSI.fg.black,\r\n selectedBg: ANSI.bg.cyan,\r\n emptyMessage: '(empty)',\r\n ...config,\r\n };\r\n }\r\n\r\n /**\r\n * Update list configuration\r\n */\r\n setConfig(config: Partial<ListConfig>): void {\r\n this.config = { ...this.config, ...config };\r\n }\r\n\r\n /**\r\n * Set items\r\n */\r\n setItems(items: ListItem[]): void {\r\n this.config.items = items;\r\n // Clamp selected index\r\n if (this.config.selectedIndex !== undefined && this.config.selectedIndex >= items.length) {\r\n this.config.selectedIndex = Math.max(0, items.length - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Set selected index\r\n */\r\n setSelectedIndex(index: number): void {\r\n this.config.selectedIndex = Math.max(0, Math.min(this.config.items.length - 1, index));\r\n }\r\n\r\n /**\r\n * Get selected item\r\n */\r\n getSelectedItem(): ListItem | undefined {\r\n return this.config.items[this.config.selectedIndex ?? 0];\r\n }\r\n\r\n /**\r\n * Render the list\r\n */\r\n render(ctx: RenderContext): void {\r\n if (!this.visible) return;\r\n\r\n const { screen, bounds } = ctx;\r\n const { x, y, width, height } = bounds;\r\n const {\r\n items,\r\n selectedIndex = 0,\r\n scrollOffset = 0,\r\n showIndicator,\r\n indicatorChar,\r\n selectedFg,\r\n selectedBg,\r\n emptyMessage,\r\n } = this.config;\r\n\r\n // Empty state\r\n if (items.length === 0) {\r\n screen.write(x + 2, y + 1, emptyMessage || '(empty)', ANSI.fg.gray);\r\n return;\r\n }\r\n\r\n // Calculate visible items\r\n const maxVisible = height;\r\n const visibleItems = items.slice(scrollOffset, scrollOffset + maxVisible);\r\n\r\n // Render each item\r\n for (let i = 0; i < visibleItems.length; i++) {\r\n const itemIndex = scrollOffset + i;\r\n const item = visibleItems[i];\r\n const isSelected = itemIndex === selectedIndex;\r\n\r\n const fg = isSelected ? selectedFg : (item.color || ANSI.fg.white);\r\n const bg = isSelected ? selectedBg : undefined;\r\n const indicator = isSelected && showIndicator ? indicatorChar : ' ';\r\n\r\n // Draw indicator\r\n if (showIndicator) {\r\n screen.write(x, y + i, indicator || '>', ANSI.fg.yellow);\r\n }\r\n\r\n // Draw item label\r\n const labelX = showIndicator ? x + 2 : x;\r\n const labelWidth = showIndicator ? width - 2 : width;\r\n screen.write(\r\n labelX,\r\n y + i,\r\n item.label.slice(0, labelWidth).padEnd(labelWidth),\r\n fg,\r\n bg\r\n );\r\n }\r\n\r\n // Scroll indicators (if there are more items)\r\n if (scrollOffset > 0) {\r\n screen.write(x + width - 1, y, '^', ANSI.fg.yellow);\r\n }\r\n if (scrollOffset + maxVisible < items.length) {\r\n screen.write(x + width - 1, y + height - 1, 'v', ANSI.fg.yellow);\r\n }\r\n }\r\n\r\n /**\r\n * Move selection up\r\n */\r\n moveUp(): boolean {\r\n if (this.config.selectedIndex !== undefined && this.config.selectedIndex > 0) {\r\n this.config.selectedIndex--;\r\n this.ensureVisible();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Move selection down\r\n */\r\n moveDown(): boolean {\r\n if (\r\n this.config.selectedIndex !== undefined &&\r\n this.config.selectedIndex < this.config.items.length - 1\r\n ) {\r\n this.config.selectedIndex++;\r\n this.ensureVisible();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Ensure selected item is visible\r\n */\r\n private ensureVisible(): void {\r\n const { selectedIndex = 0, scrollOffset = 0 } = this.config;\r\n // Note: maxVisible is calculated in render, so we use a default here\r\n const maxVisible = 10;\r\n\r\n if (selectedIndex < scrollOffset) {\r\n this.config.scrollOffset = selectedIndex;\r\n } else if (selectedIndex >= scrollOffset + maxVisible) {\r\n this.config.scrollOffset = selectedIndex - maxVisible + 1;\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"c0046caa-1a3a-541f-989c-88a1255f3d23"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Progress Bar Component
3
+ */
4
+ import type { IComponent, RenderContext } from '../core/Component.js';
5
+ /**
6
+ * Progress bar configuration
7
+ */
8
+ export interface ProgressBarConfig {
9
+ value: number;
10
+ max: number;
11
+ width?: number;
12
+ filledColor?: string;
13
+ emptyColor?: string;
14
+ showText?: boolean;
15
+ textFormat?: 'percent' | 'value' | 'both';
16
+ }
17
+ /**
18
+ * Progress Bar Component
19
+ */
20
+ export declare class ProgressBar implements IComponent {
21
+ readonly id: string;
22
+ visible: boolean;
23
+ private config;
24
+ constructor(id: string, config: ProgressBarConfig);
25
+ /**
26
+ * Update progress bar configuration
27
+ */
28
+ setConfig(config: Partial<ProgressBarConfig>): void;
29
+ /**
30
+ * Update value
31
+ */
32
+ setValue(value: number): void;
33
+ /**
34
+ * Render the progress bar
35
+ */
36
+ render(ctx: RenderContext): void;
37
+ }
38
+ /**
39
+ * Draw a progress bar directly to screen
40
+ */
41
+ export declare function drawProgressBar(ctx: RenderContext, config: ProgressBarConfig): void;
42
+ //# sourceMappingURL=ProgressBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"/","sources":["tui/components/ProgressBar.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;CAC3C;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,UAAU;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAQ;IAExB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB;IAKjD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAInD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;CA4CjC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,iBAAiB,GACxB,IAAI,CAGN"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Progress Bar Component
3
+ */
4
+
5
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="43671bec-e1e2-5d8b-bed6-52980c9b9ea5")}catch(e){}}();
6
+ import { ANSI, PROGRESS } from '../Screen.js';
7
+ /**
8
+ * Progress Bar Component
9
+ */
10
+ export class ProgressBar {
11
+ id;
12
+ visible = true;
13
+ config;
14
+ constructor(id, config) {
15
+ this.id = id;
16
+ this.config = config;
17
+ }
18
+ /**
19
+ * Update progress bar configuration
20
+ */
21
+ setConfig(config) {
22
+ this.config = { ...this.config, ...config };
23
+ }
24
+ /**
25
+ * Update value
26
+ */
27
+ setValue(value) {
28
+ this.config.value = value;
29
+ }
30
+ /**
31
+ * Render the progress bar
32
+ */
33
+ render(ctx) {
34
+ if (!this.visible)
35
+ return;
36
+ const { screen, bounds } = ctx;
37
+ const { x, y, width: boundsWidth } = bounds;
38
+ const { value, max, width = boundsWidth, filledColor = ANSI.fg.green, emptyColor = ANSI.fg.gray, showText = false, textFormat = 'value', } = this.config;
39
+ // Calculate filled portion
40
+ const ratio = Math.max(0, Math.min(1, value / max));
41
+ const barWidth = showText ? width - 10 : width;
42
+ const filled = Math.floor(ratio * barWidth);
43
+ // Draw the bar
44
+ for (let i = 0; i < barWidth; i++) {
45
+ const char = i < filled ? PROGRESS.full : PROGRESS.empty;
46
+ const color = i < filled ? filledColor : emptyColor;
47
+ screen.setChar(x + i, y, char, color);
48
+ }
49
+ // Draw text if enabled
50
+ if (showText) {
51
+ let text = '';
52
+ switch (textFormat) {
53
+ case 'percent':
54
+ text = `${Math.floor(ratio * 100)}%`;
55
+ break;
56
+ case 'value':
57
+ text = `${value}/${max}`;
58
+ break;
59
+ case 'both':
60
+ text = `${value}/${max} (${Math.floor(ratio * 100)}%)`;
61
+ break;
62
+ }
63
+ screen.write(x + barWidth + 1, y, text, ANSI.fg.white);
64
+ }
65
+ }
66
+ }
67
+ /**
68
+ * Draw a progress bar directly to screen
69
+ */
70
+ export function drawProgressBar(ctx, config) {
71
+ const bar = new ProgressBar('temp', config);
72
+ bar.render(ctx);
73
+ }
74
+ //# sourceMappingURL=ProgressBar.js.map
75
+ //# debugId=43671bec-e1e2-5d8b-bed6-52980c9b9ea5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressBar.js","sources":["tui/components/ProgressBar.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * Progress Bar Component\r\n */\r\n\r\nimport type { IComponent, RenderContext } from '../core/Component.js';\r\nimport { ANSI, PROGRESS } from '../Screen.js';\r\n\r\n/**\r\n * Progress bar configuration\r\n */\r\nexport interface ProgressBarConfig {\r\n value: number;\r\n max: number;\r\n width?: number;\r\n filledColor?: string;\r\n emptyColor?: string;\r\n showText?: boolean;\r\n textFormat?: 'percent' | 'value' | 'both';\r\n}\r\n\r\n/**\r\n * Progress Bar Component\r\n */\r\nexport class ProgressBar implements IComponent {\r\n readonly id: string;\r\n visible: boolean = true;\r\n\r\n private config: ProgressBarConfig;\r\n\r\n constructor(id: string, config: ProgressBarConfig) {\r\n this.id = id;\r\n this.config = config;\r\n }\r\n\r\n /**\r\n * Update progress bar configuration\r\n */\r\n setConfig(config: Partial<ProgressBarConfig>): void {\r\n this.config = { ...this.config, ...config };\r\n }\r\n\r\n /**\r\n * Update value\r\n */\r\n setValue(value: number): void {\r\n this.config.value = value;\r\n }\r\n\r\n /**\r\n * Render the progress bar\r\n */\r\n render(ctx: RenderContext): void {\r\n if (!this.visible) return;\r\n\r\n const { screen, bounds } = ctx;\r\n const { x, y, width: boundsWidth } = bounds;\r\n const {\r\n value,\r\n max,\r\n width = boundsWidth,\r\n filledColor = ANSI.fg.green,\r\n emptyColor = ANSI.fg.gray,\r\n showText = false,\r\n textFormat = 'value',\r\n } = this.config;\r\n\r\n // Calculate filled portion\r\n const ratio = Math.max(0, Math.min(1, value / max));\r\n const barWidth = showText ? width - 10 : width;\r\n const filled = Math.floor(ratio * barWidth);\r\n\r\n // Draw the bar\r\n for (let i = 0; i < barWidth; i++) {\r\n const char = i < filled ? PROGRESS.full : PROGRESS.empty;\r\n const color = i < filled ? filledColor : emptyColor;\r\n screen.setChar(x + i, y, char, color);\r\n }\r\n\r\n // Draw text if enabled\r\n if (showText) {\r\n let text = '';\r\n switch (textFormat) {\r\n case 'percent':\r\n text = `${Math.floor(ratio * 100)}%`;\r\n break;\r\n case 'value':\r\n text = `${value}/${max}`;\r\n break;\r\n case 'both':\r\n text = `${value}/${max} (${Math.floor(ratio * 100)}%)`;\r\n break;\r\n }\r\n screen.write(x + barWidth + 1, y, text, ANSI.fg.white);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Draw a progress bar directly to screen\r\n */\r\nexport function drawProgressBar(\r\n ctx: RenderContext,\r\n config: ProgressBarConfig\r\n): void {\r\n const bar = new ProgressBar('temp', config);\r\n bar.render(ctx);\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"43671bec-e1e2-5d8b-bed6-52980c9b9ea5"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TUI Components Module
3
+ * Exports all reusable components
4
+ */
5
+ export * from './Box.js';
6
+ export * from './ProgressBar.js';
7
+ export * from './List.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["tui/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * TUI Components Module
3
+ * Exports all reusable components
4
+ */
5
+
6
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7881c45c-89a7-52df-a128-9c7e1185feae")}catch(e){}}();
7
+ export * from './Box.js';
8
+ export * from './ProgressBar.js';
9
+ export * from './List.js';
10
+ //# sourceMappingURL=index.js.map
11
+ //# debugId=7881c45c-89a7-52df-a128-9c7e1185feae
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["tui/components/index.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * TUI Components Module\r\n * Exports all reusable components\r\n */\r\n\r\nexport * from './Box.js';\r\nexport * from './ProgressBar.js';\r\nexport * from './List.js';\r\n"],"names":[],"mappings":"AAAA;;;GAGG;;;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC","debug_id":"7881c45c-89a7-52df-a128-9c7e1185feae"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Base Section - Abstract implementation of ISection
3
+ * Provides common functionality for all sections
4
+ */
5
+ import type { Rect, RenderContext } from './Component.js';
6
+ import type { ISection, SectionState, SectionHints } from './Section.js';
7
+ import type { KeyEvent } from '../Input.js';
8
+ /**
9
+ * Base section configuration
10
+ */
11
+ export interface BaseSectionConfig {
12
+ id: string;
13
+ title: string;
14
+ canEnter?: boolean;
15
+ hints?: Partial<SectionHints>;
16
+ }
17
+ /**
18
+ * Abstract base class for sections
19
+ * Handles common behavior: focus styling, navigation, state management
20
+ */
21
+ export declare abstract class BaseSection implements ISection {
22
+ readonly id: string;
23
+ readonly title: string;
24
+ readonly canEnter: boolean;
25
+ focused: boolean;
26
+ state: SectionState;
27
+ hints: SectionHints;
28
+ bounds: Rect;
29
+ constructor(config: BaseSectionConfig);
30
+ /**
31
+ * Render the section
32
+ * Template method: calls renderBox, then renderContent
33
+ */
34
+ render(ctx: RenderContext): void;
35
+ /**
36
+ * Render the section box with appropriate styling
37
+ */
38
+ protected renderBox(ctx: RenderContext): void;
39
+ /**
40
+ * Render section-specific content
41
+ * Must be implemented by subclasses
42
+ */
43
+ protected abstract renderContent(ctx: RenderContext): void;
44
+ /**
45
+ * Render hint at the bottom of the section
46
+ */
47
+ protected renderHint(ctx: RenderContext): void;
48
+ /**
49
+ * Handle key input
50
+ * Default implementation handles basic up/down/enter/escape
51
+ */
52
+ handleKey(key: KeyEvent): boolean;
53
+ /**
54
+ * Handle section-specific key input
55
+ * Override in subclasses for custom key handling
56
+ */
57
+ protected handleCustomKey(key: KeyEvent): boolean;
58
+ /**
59
+ * Enter the section
60
+ */
61
+ enter(): void;
62
+ /**
63
+ * Exit the section
64
+ */
65
+ exit(): void;
66
+ /**
67
+ * Get the number of selectable items
68
+ * Must be implemented by subclasses
69
+ */
70
+ abstract getItemCount(): number;
71
+ /**
72
+ * Activate the currently selected item
73
+ * Must be implemented by subclasses
74
+ */
75
+ abstract activateItem(): boolean;
76
+ /**
77
+ * Get current hint based on state
78
+ */
79
+ getCurrentHint(): string;
80
+ /**
81
+ * Move selection by delta
82
+ */
83
+ protected moveSelection(delta: number): void;
84
+ /**
85
+ * Ensure the selected item is visible (handle scrolling)
86
+ */
87
+ protected ensureVisible(): void;
88
+ /**
89
+ * Get maximum visible items based on bounds
90
+ * Override in subclasses if needed
91
+ */
92
+ protected getMaxVisibleItems(): number;
93
+ /**
94
+ * Render a list item with selection indicator
95
+ */
96
+ protected renderListItem(ctx: RenderContext, index: number, text: string, y: number, customFg?: string): void;
97
+ }
98
+ //# sourceMappingURL=BaseSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSection.d.ts","sourceRoot":"/","sources":["tui/core/BaseSection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,8BAAsB,WAAY,YAAW,QAAQ;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,OAAO,EAAE,OAAO,CAAS;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,IAAI,CAAuC;gBAEvC,MAAM,EAAE,iBAAiB;IAcrC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAOhC;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAkB7C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAE1D;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAa9C;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IA6BjC;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAIjD;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;;OAGG;IACH,QAAQ,CAAC,YAAY,IAAI,MAAM;IAE/B;;;OAGG;IACH,QAAQ,CAAC,YAAY,IAAI,OAAO;IAEhC;;OAEG;IACH,cAAc,IAAI,MAAM;IAUxB;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW5C;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAS/B;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAKtC;;OAEG;IACH,SAAS,CAAC,cAAc,CACtB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI;CAgBR"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Base Section - Abstract implementation of ISection
3
+ * Provides common functionality for all sections
4
+ */
5
+
6
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9222b139-6e88-557b-bdc4-0f103d007207")}catch(e){}}();
7
+ import { createSectionState, createSectionHints } from './Section.js';
8
+ import { ANSI } from '../Screen.js';
9
+ /**
10
+ * Abstract base class for sections
11
+ * Handles common behavior: focus styling, navigation, state management
12
+ */
13
+ export class BaseSection {
14
+ id;
15
+ title;
16
+ canEnter;
17
+ focused = false;
18
+ state;
19
+ hints;
20
+ bounds = { x: 0, y: 0, width: 0, height: 0 };
21
+ constructor(config) {
22
+ this.id = config.id;
23
+ this.title = config.title;
24
+ this.canEnter = config.canEnter ?? true;
25
+ this.state = createSectionState();
26
+ this.hints = createSectionHints(config.hints?.focused, config.hints?.entered);
27
+ if (config.hints?.unfocused) {
28
+ this.hints.unfocused = config.hints.unfocused;
29
+ }
30
+ }
31
+ /**
32
+ * Render the section
33
+ * Template method: calls renderBox, then renderContent
34
+ */
35
+ render(ctx) {
36
+ this.bounds = ctx.bounds;
37
+ this.renderBox(ctx);
38
+ this.renderContent(ctx);
39
+ this.renderHint(ctx);
40
+ }
41
+ /**
42
+ * Render the section box with appropriate styling
43
+ */
44
+ renderBox(ctx) {
45
+ const { screen, bounds } = ctx;
46
+ const { x, y, width, height } = bounds;
47
+ // Determine title text and styling based on state
48
+ const displayTitle = this.state.entered ? `[ ${this.title} ]` : this.title;
49
+ const titleFg = this.focused ? ANSI.fg.black : ANSI.fg.cyan;
50
+ const titleBg = this.focused ? ANSI.bg.cyan : undefined;
51
+ // Draw the box
52
+ screen.drawBox(x, y, width, height, displayTitle, false, titleFg, titleBg);
53
+ // Draw focus indicator ('+') when focused but not entered
54
+ if (this.focused && !this.state.entered) {
55
+ screen.write(x, y, '+', ANSI.fg.yellow);
56
+ }
57
+ }
58
+ /**
59
+ * Render hint at the bottom of the section
60
+ */
61
+ renderHint(ctx) {
62
+ const hint = this.getCurrentHint();
63
+ if (hint) {
64
+ const { screen, bounds } = ctx;
65
+ screen.write(bounds.x + 2, bounds.y + bounds.height - 1, hint.slice(0, bounds.width - 4), ANSI.fg.gray);
66
+ }
67
+ }
68
+ /**
69
+ * Handle key input
70
+ * Default implementation handles basic up/down/enter/escape
71
+ */
72
+ handleKey(key) {
73
+ if (!this.state.entered) {
74
+ return false;
75
+ }
76
+ switch (key.name) {
77
+ case 'escape':
78
+ this.exit();
79
+ return true;
80
+ case 'up':
81
+ case 'k':
82
+ this.moveSelection(-1);
83
+ return true;
84
+ case 'down':
85
+ case 'j':
86
+ this.moveSelection(1);
87
+ return true;
88
+ case 'return':
89
+ case 'space':
90
+ return this.activateItem();
91
+ default:
92
+ return this.handleCustomKey(key);
93
+ }
94
+ }
95
+ /**
96
+ * Handle section-specific key input
97
+ * Override in subclasses for custom key handling
98
+ */
99
+ handleCustomKey(key) {
100
+ return false;
101
+ }
102
+ /**
103
+ * Enter the section
104
+ */
105
+ enter() {
106
+ if (!this.canEnter)
107
+ return;
108
+ this.state.entered = true;
109
+ this.state.selectedIndex = 0;
110
+ this.state.scrollOffset = 0;
111
+ }
112
+ /**
113
+ * Exit the section
114
+ */
115
+ exit() {
116
+ this.state.entered = false;
117
+ }
118
+ /**
119
+ * Get current hint based on state
120
+ */
121
+ getCurrentHint() {
122
+ if (this.state.entered) {
123
+ return this.hints.entered;
124
+ }
125
+ if (this.focused) {
126
+ return this.hints.focused;
127
+ }
128
+ return this.hints.unfocused || '';
129
+ }
130
+ /**
131
+ * Move selection by delta
132
+ */
133
+ moveSelection(delta) {
134
+ const count = this.getItemCount();
135
+ if (count === 0)
136
+ return;
137
+ this.state.selectedIndex = Math.max(0, Math.min(count - 1, this.state.selectedIndex + delta));
138
+ this.ensureVisible();
139
+ }
140
+ /**
141
+ * Ensure the selected item is visible (handle scrolling)
142
+ */
143
+ ensureVisible() {
144
+ const maxVisible = this.getMaxVisibleItems();
145
+ if (this.state.selectedIndex < this.state.scrollOffset) {
146
+ this.state.scrollOffset = this.state.selectedIndex;
147
+ }
148
+ else if (this.state.selectedIndex >= this.state.scrollOffset + maxVisible) {
149
+ this.state.scrollOffset = this.state.selectedIndex - maxVisible + 1;
150
+ }
151
+ }
152
+ /**
153
+ * Get maximum visible items based on bounds
154
+ * Override in subclasses if needed
155
+ */
156
+ getMaxVisibleItems() {
157
+ // Default: height minus 2 for border, 1 for hint
158
+ return Math.max(1, this.bounds.height - 3);
159
+ }
160
+ /**
161
+ * Render a list item with selection indicator
162
+ */
163
+ renderListItem(ctx, index, text, y, customFg) {
164
+ const { screen, bounds } = ctx;
165
+ const isSelected = this.state.entered && index === this.state.selectedIndex;
166
+ const fg = isSelected ? ANSI.fg.black : (customFg || ANSI.fg.white);
167
+ const bg = isSelected ? ANSI.bg.cyan : undefined;
168
+ const indicator = isSelected ? '>' : ' ';
169
+ screen.write(bounds.x + 1, y, indicator, ANSI.fg.yellow);
170
+ screen.write(bounds.x + 3, y, text.slice(0, bounds.width - 5).padEnd(bounds.width - 5), fg, bg);
171
+ }
172
+ }
173
+ //# sourceMappingURL=BaseSection.js.map
174
+ //# debugId=9222b139-6e88-557b-bdc4-0f103d007207