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.
- package/README.md +171 -0
- package/dist/affix/AffixRegistry.d.ts +68 -0
- package/dist/affix/AffixRegistry.d.ts.map +1 -0
- package/dist/affix/AffixRegistry.js +245 -0
- package/dist/affix/AffixRegistry.js.map +1 -0
- package/dist/affix/PluginLoader.d.ts +66 -0
- package/dist/affix/PluginLoader.d.ts.map +1 -0
- package/dist/affix/PluginLoader.js +321 -0
- package/dist/affix/PluginLoader.js.map +1 -0
- package/dist/affix/builtin.d.ts +6 -0
- package/dist/affix/builtin.d.ts.map +1 -0
- package/dist/affix/builtin.js +311 -0
- package/dist/affix/builtin.js.map +1 -0
- package/dist/affix/index.d.ts +8 -0
- package/dist/affix/index.d.ts.map +1 -0
- package/dist/affix/index.js +11 -0
- package/dist/affix/index.js.map +1 -0
- package/dist/affix/types.d.ts +152 -0
- package/dist/affix/types.d.ts.map +1 -0
- package/dist/affix/types.js +8 -0
- package/dist/affix/types.js.map +1 -0
- package/dist/ai/PlayKitClient.d.ts +208 -0
- package/dist/ai/PlayKitClient.d.ts.map +1 -0
- package/dist/ai/PlayKitClient.js +721 -0
- package/dist/ai/PlayKitClient.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/app/App.d.ts +85 -0
- package/dist/app/App.d.ts.map +1 -0
- package/dist/app/App.js +296 -0
- package/dist/app/App.js.map +1 -0
- package/dist/app/EventBus.d.ts +222 -0
- package/dist/app/EventBus.d.ts.map +1 -0
- package/dist/app/EventBus.js +88 -0
- package/dist/app/EventBus.js.map +1 -0
- package/dist/app/Keybind.d.ts +83 -0
- package/dist/app/Keybind.d.ts.map +1 -0
- package/dist/app/Keybind.js +184 -0
- package/dist/app/Keybind.js.map +1 -0
- package/dist/app/Router.d.ts +123 -0
- package/dist/app/Router.d.ts.map +1 -0
- package/dist/app/Router.js +142 -0
- package/dist/app/Router.js.map +1 -0
- package/dist/app/ScreenManager.d.ts +97 -0
- package/dist/app/ScreenManager.d.ts.map +1 -0
- package/dist/app/ScreenManager.js +216 -0
- package/dist/app/ScreenManager.js.map +1 -0
- package/dist/app/index.d.ts +14 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +19 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/screens/BaseScreen.d.ts +101 -0
- package/dist/app/screens/BaseScreen.d.ts.map +1 -0
- package/dist/app/screens/BaseScreen.js +132 -0
- package/dist/app/screens/BaseScreen.js.map +1 -0
- package/dist/app/screens/CharacterCreationScreen.d.ts +42 -0
- package/dist/app/screens/CharacterCreationScreen.d.ts.map +1 -0
- package/dist/app/screens/CharacterCreationScreen.js +467 -0
- package/dist/app/screens/CharacterCreationScreen.js.map +1 -0
- package/dist/app/screens/CombatScreen.d.ts +30 -0
- package/dist/app/screens/CombatScreen.d.ts.map +1 -0
- package/dist/app/screens/CombatScreen.js +309 -0
- package/dist/app/screens/CombatScreen.js.map +1 -0
- package/dist/app/screens/DialogScreen.d.ts +29 -0
- package/dist/app/screens/DialogScreen.d.ts.map +1 -0
- package/dist/app/screens/DialogScreen.js +295 -0
- package/dist/app/screens/DialogScreen.js.map +1 -0
- package/dist/app/screens/ExploreScreen.d.ts +50 -0
- package/dist/app/screens/ExploreScreen.d.ts.map +1 -0
- package/dist/app/screens/ExploreScreen.js +308 -0
- package/dist/app/screens/ExploreScreen.js.map +1 -0
- package/dist/app/screens/HelpScreen.d.ts +12 -0
- package/dist/app/screens/HelpScreen.d.ts.map +1 -0
- package/dist/app/screens/HelpScreen.js +155 -0
- package/dist/app/screens/HelpScreen.js.map +1 -0
- package/dist/app/screens/InventoryScreen.d.ts +27 -0
- package/dist/app/screens/InventoryScreen.d.ts.map +1 -0
- package/dist/app/screens/InventoryScreen.js +326 -0
- package/dist/app/screens/InventoryScreen.js.map +1 -0
- package/dist/app/screens/PrologueScreen.d.ts +24 -0
- package/dist/app/screens/PrologueScreen.d.ts.map +1 -0
- package/dist/app/screens/PrologueScreen.js +176 -0
- package/dist/app/screens/PrologueScreen.js.map +1 -0
- package/dist/app/screens/TitleScreen.d.ts +42 -0
- package/dist/app/screens/TitleScreen.d.ts.map +1 -0
- package/dist/app/screens/TitleScreen.js +380 -0
- package/dist/app/screens/TitleScreen.js.map +1 -0
- package/dist/app/screens/TravelScreen.d.ts +22 -0
- package/dist/app/screens/TravelScreen.d.ts.map +1 -0
- package/dist/app/screens/TravelScreen.js +122 -0
- package/dist/app/screens/TravelScreen.js.map +1 -0
- package/dist/app/screens/index.d.ts +14 -0
- package/dist/app/screens/index.d.ts.map +1 -0
- package/dist/app/screens/index.js +17 -0
- package/dist/app/screens/index.js.map +1 -0
- package/dist/commands/CommandRegistry.d.ts +91 -0
- package/dist/commands/CommandRegistry.d.ts.map +1 -0
- package/dist/commands/CommandRegistry.js +159 -0
- package/dist/commands/CommandRegistry.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +10 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/core/Actor.d.ts +103 -0
- package/dist/core/Actor.d.ts.map +1 -0
- package/dist/core/Actor.js +409 -0
- package/dist/core/Actor.js.map +1 -0
- package/dist/core/Combat.d.ts +37 -0
- package/dist/core/Combat.d.ts.map +1 -0
- package/dist/core/Combat.js +294 -0
- package/dist/core/Combat.js.map +1 -0
- package/dist/core/DungeonRunner.d.ts +169 -0
- package/dist/core/DungeonRunner.d.ts.map +1 -0
- package/dist/core/DungeonRunner.js +627 -0
- package/dist/core/DungeonRunner.js.map +1 -0
- package/dist/core/Game.d.ts +133 -0
- package/dist/core/Game.d.ts.map +1 -0
- package/dist/core/Game.js +644 -0
- package/dist/core/Game.js.map +1 -0
- package/dist/core/IdleCombat.d.ts +61 -0
- package/dist/core/IdleCombat.d.ts.map +1 -0
- package/dist/core/IdleCombat.js +461 -0
- package/dist/core/IdleCombat.js.map +1 -0
- package/dist/core/IdleGameManager.d.ts +198 -0
- package/dist/core/IdleGameManager.d.ts.map +1 -0
- package/dist/core/IdleGameManager.js +688 -0
- package/dist/core/IdleGameManager.js.map +1 -0
- package/dist/core/IdleSaveManager.d.ts +109 -0
- package/dist/core/IdleSaveManager.d.ts.map +1 -0
- package/dist/core/IdleSaveManager.js +296 -0
- package/dist/core/IdleSaveManager.js.map +1 -0
- package/dist/core/NewGameFlowManager.d.ts +64 -0
- package/dist/core/NewGameFlowManager.d.ts.map +1 -0
- package/dist/core/NewGameFlowManager.js +153 -0
- package/dist/core/NewGameFlowManager.js.map +1 -0
- package/dist/core/Player.d.ts +65 -0
- package/dist/core/Player.d.ts.map +1 -0
- package/dist/core/Player.js +261 -0
- package/dist/core/Player.js.map +1 -0
- package/dist/core/RoomHandlers.d.ts +75 -0
- package/dist/core/RoomHandlers.d.ts.map +1 -0
- package/dist/core/RoomHandlers.js +383 -0
- package/dist/core/RoomHandlers.js.map +1 -0
- package/dist/core/SaveManager.d.ts +84 -0
- package/dist/core/SaveManager.d.ts.map +1 -0
- package/dist/core/SaveManager.js +281 -0
- package/dist/core/SaveManager.js.map +1 -0
- package/dist/core/SaveMigration.d.ts +69 -0
- package/dist/core/SaveMigration.d.ts.map +1 -0
- package/dist/core/SaveMigration.js +408 -0
- package/dist/core/SaveMigration.js.map +1 -0
- package/dist/core/StateAdapter.d.ts +79 -0
- package/dist/core/StateAdapter.d.ts.map +1 -0
- package/dist/core/StateAdapter.js +397 -0
- package/dist/core/StateAdapter.js.map +1 -0
- package/dist/core/Team.d.ts +145 -0
- package/dist/core/Team.d.ts.map +1 -0
- package/dist/core/Team.js +371 -0
- package/dist/core/Team.js.map +1 -0
- package/dist/core/TeamCombat.d.ts +88 -0
- package/dist/core/TeamCombat.d.ts.map +1 -0
- package/dist/core/TeamCombat.js +405 -0
- package/dist/core/TeamCombat.js.map +1 -0
- package/dist/core/TeamDungeonRunner.d.ts +186 -0
- package/dist/core/TeamDungeonRunner.d.ts.map +1 -0
- package/dist/core/TeamDungeonRunner.js +758 -0
- package/dist/core/TeamDungeonRunner.js.map +1 -0
- package/dist/core/TimeManager.d.ts +114 -0
- package/dist/core/TimeManager.d.ts.map +1 -0
- package/dist/core/TimeManager.js +318 -0
- package/dist/core/TimeManager.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/timeConstants.d.ts +135 -0
- package/dist/core/timeConstants.d.ts.map +1 -0
- package/dist/core/timeConstants.js +157 -0
- package/dist/core/timeConstants.js.map +1 -0
- package/dist/core/types.d.ts +780 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +16 -0
- package/dist/core/types.js.map +1 -0
- package/dist/data/continents/index.d.ts +163 -0
- package/dist/data/continents/index.d.ts.map +1 -0
- package/dist/data/continents/index.js +31 -0
- package/dist/data/continents/index.js.map +1 -0
- package/dist/data/continents/verdantia.d.ts +294 -0
- package/dist/data/continents/verdantia.d.ts.map +1 -0
- package/dist/data/continents/verdantia.js +327 -0
- package/dist/data/continents/verdantia.js.map +1 -0
- package/dist/handlers/DialogHandler.d.ts +95 -0
- package/dist/handlers/DialogHandler.d.ts.map +1 -0
- package/dist/handlers/DialogHandler.js +450 -0
- package/dist/handlers/DialogHandler.js.map +1 -0
- package/dist/handlers/SaveLoadHandler.d.ts +60 -0
- package/dist/handlers/SaveLoadHandler.d.ts.map +1 -0
- package/dist/handlers/SaveLoadHandler.js +187 -0
- package/dist/handlers/SaveLoadHandler.js.map +1 -0
- package/dist/handlers/TitleScreenHandler.d.ts +43 -0
- package/dist/handlers/TitleScreenHandler.d.ts.map +1 -0
- package/dist/handlers/TitleScreenHandler.js +508 -0
- package/dist/handlers/TitleScreenHandler.js.map +1 -0
- package/dist/handlers/WorkshopHandler.d.ts +75 -0
- package/dist/handlers/WorkshopHandler.d.ts.map +1 -0
- package/dist/handlers/WorkshopHandler.js +401 -0
- package/dist/handlers/WorkshopHandler.js.map +1 -0
- package/dist/handlers/index.d.ts +12 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +14 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/types.d.ts +34 -0
- package/dist/handlers/types.d.ts.map +1 -0
- package/dist/handlers/types.js +8 -0
- package/dist/handlers/types.js.map +1 -0
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +130 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +40 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +105 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/types.d.ts +133 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +8 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/i18n/zh.d.ts +3 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +130 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/instrument.d.ts +8 -0
- package/dist/instrument.d.ts.map +1 -0
- package/dist/instrument.js +33 -0
- package/dist/instrument.js.map +1 -0
- package/dist/main-new.d.ts +12 -0
- package/dist/main-new.d.ts.map +1 -0
- package/dist/main-new.js +32 -0
- package/dist/main-new.js.map +1 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +2816 -0
- package/dist/main.js.map +1 -0
- package/dist/map/ContinentManager.d.ts +88 -0
- package/dist/map/ContinentManager.d.ts.map +1 -0
- package/dist/map/ContinentManager.js +241 -0
- package/dist/map/ContinentManager.js.map +1 -0
- package/dist/map/DungeonGenerator.d.ts +32 -0
- package/dist/map/DungeonGenerator.d.ts.map +1 -0
- package/dist/map/DungeonGenerator.js +615 -0
- package/dist/map/DungeonGenerator.js.map +1 -0
- package/dist/map/MapGenerator.d.ts +27 -0
- package/dist/map/MapGenerator.d.ts.map +1 -0
- package/dist/map/MapGenerator.js +485 -0
- package/dist/map/MapGenerator.js.map +1 -0
- package/dist/map/index.d.ts +5 -0
- package/dist/map/index.d.ts.map +1 -0
- package/dist/map/index.js +8 -0
- package/dist/map/index.js.map +1 -0
- package/dist/npc/NPCGenerator.d.ts +68 -0
- package/dist/npc/NPCGenerator.d.ts.map +1 -0
- package/dist/npc/NPCGenerator.js +468 -0
- package/dist/npc/NPCGenerator.js.map +1 -0
- package/dist/npc/NPCManager.d.ts +86 -0
- package/dist/npc/NPCManager.d.ts.map +1 -0
- package/dist/npc/NPCManager.js +217 -0
- package/dist/npc/NPCManager.js.map +1 -0
- package/dist/npc/fixedNPCs.d.ts +7 -0
- package/dist/npc/fixedNPCs.d.ts.map +1 -0
- package/dist/npc/fixedNPCs.js +196 -0
- package/dist/npc/fixedNPCs.js.map +1 -0
- package/dist/npc/index.d.ts +9 -0
- package/dist/npc/index.d.ts.map +1 -0
- package/dist/npc/index.js +12 -0
- package/dist/npc/index.js.map +1 -0
- package/dist/npc/traits.d.ts +33 -0
- package/dist/npc/traits.d.ts.map +1 -0
- package/dist/npc/traits.js +795 -0
- package/dist/npc/traits.js.map +1 -0
- package/dist/npc/types.d.ts +193 -0
- package/dist/npc/types.d.ts.map +1 -0
- package/dist/npc/types.js +9 -0
- package/dist/npc/types.js.map +1 -0
- package/dist/quest/QuestManager.d.ts +79 -0
- package/dist/quest/QuestManager.d.ts.map +1 -0
- package/dist/quest/QuestManager.js +273 -0
- package/dist/quest/QuestManager.js.map +1 -0
- package/dist/quest/index.d.ts +6 -0
- package/dist/quest/index.d.ts.map +1 -0
- package/dist/quest/index.js +9 -0
- package/dist/quest/index.js.map +1 -0
- package/dist/quest/types.d.ts +81 -0
- package/dist/quest/types.d.ts.map +1 -0
- package/dist/quest/types.js +8 -0
- package/dist/quest/types.js.map +1 -0
- package/dist/strategy/StrategyExecutor.d.ts +159 -0
- package/dist/strategy/StrategyExecutor.d.ts.map +1 -0
- package/dist/strategy/StrategyExecutor.js +479 -0
- package/dist/strategy/StrategyExecutor.js.map +1 -0
- package/dist/strategy/StrategyParser.d.ts +48 -0
- package/dist/strategy/StrategyParser.d.ts.map +1 -0
- package/dist/strategy/StrategyParser.js +321 -0
- package/dist/strategy/StrategyParser.js.map +1 -0
- package/dist/strategy/defaultStrategy.d.ts +40 -0
- package/dist/strategy/defaultStrategy.d.ts.map +1 -0
- package/dist/strategy/defaultStrategy.js +254 -0
- package/dist/strategy/defaultStrategy.js.map +1 -0
- package/dist/strategy/index.d.ts +8 -0
- package/dist/strategy/index.d.ts.map +1 -0
- package/dist/strategy/index.js +14 -0
- package/dist/strategy/index.js.map +1 -0
- package/dist/tui/ExploreMenu.d.ts +106 -0
- package/dist/tui/ExploreMenu.d.ts.map +1 -0
- package/dist/tui/ExploreMenu.js +282 -0
- package/dist/tui/ExploreMenu.js.map +1 -0
- package/dist/tui/GameUI.d.ts +313 -0
- package/dist/tui/GameUI.d.ts.map +1 -0
- package/dist/tui/GameUI.js +2116 -0
- package/dist/tui/GameUI.js.map +1 -0
- package/dist/tui/GameUIAdapter.d.ts +207 -0
- package/dist/tui/GameUIAdapter.d.ts.map +1 -0
- package/dist/tui/GameUIAdapter.js +1342 -0
- package/dist/tui/GameUIAdapter.js.map +1 -0
- package/dist/tui/Input.d.ts +139 -0
- package/dist/tui/Input.d.ts.map +1 -0
- package/dist/tui/Input.js +278 -0
- package/dist/tui/Input.js.map +1 -0
- package/dist/tui/Menu.d.ts +110 -0
- package/dist/tui/Menu.d.ts.map +1 -0
- package/dist/tui/Menu.js +365 -0
- package/dist/tui/Menu.js.map +1 -0
- package/dist/tui/Screen.d.ts +228 -0
- package/dist/tui/Screen.d.ts.map +1 -0
- package/dist/tui/Screen.js +502 -0
- package/dist/tui/Screen.js.map +1 -0
- package/dist/tui/components/Box.d.ts +36 -0
- package/dist/tui/components/Box.d.ts.map +1 -0
- package/dist/tui/components/Box.js +43 -0
- package/dist/tui/components/Box.js.map +1 -0
- package/dist/tui/components/List.d.ts +69 -0
- package/dist/tui/components/List.d.ts.map +1 -0
- package/dist/tui/components/List.js +136 -0
- package/dist/tui/components/List.js.map +1 -0
- package/dist/tui/components/ProgressBar.d.ts +42 -0
- package/dist/tui/components/ProgressBar.d.ts.map +1 -0
- package/dist/tui/components/ProgressBar.js +75 -0
- package/dist/tui/components/ProgressBar.js.map +1 -0
- package/dist/tui/components/index.d.ts +8 -0
- package/dist/tui/components/index.d.ts.map +1 -0
- package/dist/tui/components/index.js +11 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/core/BaseSection.d.ts +98 -0
- package/dist/tui/core/BaseSection.d.ts.map +1 -0
- package/dist/tui/core/BaseSection.js +174 -0
- package/dist/tui/core/BaseSection.js.map +1 -0
- package/dist/tui/core/Component.d.ts +61 -0
- package/dist/tui/core/Component.d.ts.map +1 -0
- package/dist/tui/core/Component.js +32 -0
- package/dist/tui/core/Component.js.map +1 -0
- package/dist/tui/core/Section.d.ts +101 -0
- package/dist/tui/core/Section.d.ts.map +1 -0
- package/dist/tui/core/Section.js +24 -0
- package/dist/tui/core/Section.js.map +1 -0
- package/dist/tui/core/SectionManager.d.ts +108 -0
- package/dist/tui/core/SectionManager.d.ts.map +1 -0
- package/dist/tui/core/SectionManager.js +258 -0
- package/dist/tui/core/SectionManager.js.map +1 -0
- package/dist/tui/core/index.d.ts +9 -0
- package/dist/tui/core/index.d.ts.map +1 -0
- package/dist/tui/core/index.js +12 -0
- package/dist/tui/core/index.js.map +1 -0
- package/dist/tui/index.d.ts +15 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +23 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/screens/BaseScreen.d.ts +62 -0
- package/dist/tui/screens/BaseScreen.d.ts.map +1 -0
- package/dist/tui/screens/BaseScreen.js +55 -0
- package/dist/tui/screens/BaseScreen.js.map +1 -0
- package/dist/tui/screens/CombatScreen.d.ts +43 -0
- package/dist/tui/screens/CombatScreen.d.ts.map +1 -0
- package/dist/tui/screens/CombatScreen.js +125 -0
- package/dist/tui/screens/CombatScreen.js.map +1 -0
- package/dist/tui/screens/DialogScreen.d.ts +53 -0
- package/dist/tui/screens/DialogScreen.d.ts.map +1 -0
- package/dist/tui/screens/DialogScreen.js +90 -0
- package/dist/tui/screens/DialogScreen.js.map +1 -0
- package/dist/tui/screens/DungeonScreen.d.ts +80 -0
- package/dist/tui/screens/DungeonScreen.d.ts.map +1 -0
- package/dist/tui/screens/DungeonScreen.js +317 -0
- package/dist/tui/screens/DungeonScreen.js.map +1 -0
- package/dist/tui/screens/ExploreScreen.d.ts +69 -0
- package/dist/tui/screens/ExploreScreen.d.ts.map +1 -0
- package/dist/tui/screens/ExploreScreen.js +224 -0
- package/dist/tui/screens/ExploreScreen.js.map +1 -0
- package/dist/tui/screens/SectionScreen.d.ts +84 -0
- package/dist/tui/screens/SectionScreen.d.ts.map +1 -0
- package/dist/tui/screens/SectionScreen.js +156 -0
- package/dist/tui/screens/SectionScreen.js.map +1 -0
- package/dist/tui/screens/TitleScreen.d.ts +40 -0
- package/dist/tui/screens/TitleScreen.d.ts.map +1 -0
- package/dist/tui/screens/TitleScreen.js +253 -0
- package/dist/tui/screens/TitleScreen.js.map +1 -0
- package/dist/tui/screens/TownScreen.d.ts +98 -0
- package/dist/tui/screens/TownScreen.d.ts.map +1 -0
- package/dist/tui/screens/TownScreen.js +370 -0
- package/dist/tui/screens/TownScreen.js.map +1 -0
- package/dist/tui/screens/TravelScreen.d.ts +67 -0
- package/dist/tui/screens/TravelScreen.d.ts.map +1 -0
- package/dist/tui/screens/TravelScreen.js +286 -0
- package/dist/tui/screens/TravelScreen.js.map +1 -0
- package/dist/tui/screens/index.d.ts +8 -0
- package/dist/tui/screens/index.d.ts.map +1 -0
- package/dist/tui/screens/index.js +17 -0
- package/dist/tui/screens/index.js.map +1 -0
- package/dist/tui/sections/ActionsSection.d.ts +71 -0
- package/dist/tui/sections/ActionsSection.d.ts.map +1 -0
- package/dist/tui/sections/ActionsSection.js +184 -0
- package/dist/tui/sections/ActionsSection.js.map +1 -0
- package/dist/tui/sections/DungeonSection.d.ts +65 -0
- package/dist/tui/sections/DungeonSection.d.ts.map +1 -0
- package/dist/tui/sections/DungeonSection.js +144 -0
- package/dist/tui/sections/DungeonSection.js.map +1 -0
- package/dist/tui/sections/EventsSection.d.ts +50 -0
- package/dist/tui/sections/EventsSection.d.ts.map +1 -0
- package/dist/tui/sections/EventsSection.js +134 -0
- package/dist/tui/sections/EventsSection.js.map +1 -0
- package/dist/tui/sections/MapSection.d.ts +66 -0
- package/dist/tui/sections/MapSection.d.ts.map +1 -0
- package/dist/tui/sections/MapSection.js +669 -0
- package/dist/tui/sections/MapSection.js.map +1 -0
- package/dist/tui/sections/StatusSection.d.ts +47 -0
- package/dist/tui/sections/StatusSection.d.ts.map +1 -0
- package/dist/tui/sections/StatusSection.js +133 -0
- package/dist/tui/sections/StatusSection.js.map +1 -0
- package/dist/tui/sections/TeamSection.d.ts +71 -0
- package/dist/tui/sections/TeamSection.d.ts.map +1 -0
- package/dist/tui/sections/TeamSection.js +224 -0
- package/dist/tui/sections/TeamSection.js.map +1 -0
- package/dist/tui/sections/TravelingSection.d.ts +51 -0
- package/dist/tui/sections/TravelingSection.d.ts.map +1 -0
- package/dist/tui/sections/TravelingSection.js +106 -0
- package/dist/tui/sections/TravelingSection.js.map +1 -0
- package/dist/tui/sections/index.d.ts +9 -0
- package/dist/tui/sections/index.d.ts.map +1 -0
- package/dist/tui/sections/index.js +12 -0
- package/dist/tui/sections/index.js.map +1 -0
- package/dist/ui/Terminal.d.ts +68 -0
- package/dist/ui/Terminal.d.ts.map +1 -0
- package/dist/ui/Terminal.js +297 -0
- package/dist/ui/Terminal.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +8 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/configMigration.d.ts +14 -0
- package/dist/utils/configMigration.d.ts.map +1 -0
- package/dist/utils/configMigration.js +92 -0
- package/dist/utils/configMigration.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +86 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +224 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/weapon/WeaponFactory.d.ts +32 -0
- package/dist/weapon/WeaponFactory.d.ts.map +1 -0
- package/dist/weapon/WeaponFactory.js +216 -0
- package/dist/weapon/WeaponFactory.js.map +1 -0
- package/dist/weapon/index.d.ts +5 -0
- package/dist/weapon/index.d.ts.map +1 -0
- package/dist/weapon/index.js +8 -0
- package/dist/weapon/index.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Input Handler - Keyboard input management
|
|
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]="c4381082-ee03-5821-9eba-f576600de88b")}catch(e){}}();
|
|
6
|
+
import * as readline from 'readline';
|
|
7
|
+
/**
|
|
8
|
+
* Special key names
|
|
9
|
+
*/
|
|
10
|
+
export const KEYS = {
|
|
11
|
+
UP: 'up',
|
|
12
|
+
DOWN: 'down',
|
|
13
|
+
LEFT: 'left',
|
|
14
|
+
RIGHT: 'right',
|
|
15
|
+
ENTER: 'return',
|
|
16
|
+
SPACE: 'space',
|
|
17
|
+
ESCAPE: 'escape',
|
|
18
|
+
TAB: 'tab',
|
|
19
|
+
BACKSPACE: 'backspace',
|
|
20
|
+
DELETE: 'delete',
|
|
21
|
+
HOME: 'home',
|
|
22
|
+
END: 'end',
|
|
23
|
+
PAGEUP: 'pageup',
|
|
24
|
+
PAGEDOWN: 'pagedown',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Input manager class
|
|
28
|
+
*
|
|
29
|
+
* Uses a focus stack pattern for input routing:
|
|
30
|
+
* - Only the top handler on the stack receives key events
|
|
31
|
+
* - Handlers push themselves onto the stack when they need exclusive input
|
|
32
|
+
* - Handlers pop themselves when they're done
|
|
33
|
+
*/
|
|
34
|
+
export class InputManager {
|
|
35
|
+
rl = null;
|
|
36
|
+
focusStack = [];
|
|
37
|
+
lineHandlers = new Set();
|
|
38
|
+
mode = 'raw';
|
|
39
|
+
inputBuffer = '';
|
|
40
|
+
isActive = false;
|
|
41
|
+
/**
|
|
42
|
+
* Start listening for input
|
|
43
|
+
*/
|
|
44
|
+
start() {
|
|
45
|
+
if (this.isActive)
|
|
46
|
+
return;
|
|
47
|
+
// Enable raw mode for keypress detection
|
|
48
|
+
if (process.stdin.isTTY) {
|
|
49
|
+
process.stdin.setRawMode(true);
|
|
50
|
+
}
|
|
51
|
+
process.stdin.resume();
|
|
52
|
+
process.stdin.setEncoding('utf8');
|
|
53
|
+
// Handle keypress events
|
|
54
|
+
readline.emitKeypressEvents(process.stdin);
|
|
55
|
+
process.stdin.on('keypress', (str, key) => {
|
|
56
|
+
if (!key) {
|
|
57
|
+
key = { name: str, ctrl: false, meta: false, shift: false, sequence: str };
|
|
58
|
+
}
|
|
59
|
+
const event = {
|
|
60
|
+
name: key.name || str || '',
|
|
61
|
+
ctrl: key.ctrl || false,
|
|
62
|
+
meta: key.meta || false,
|
|
63
|
+
shift: key.shift || false,
|
|
64
|
+
sequence: key.sequence || str || '',
|
|
65
|
+
raw: str || '',
|
|
66
|
+
};
|
|
67
|
+
// Handle Ctrl+C to exit
|
|
68
|
+
if (event.ctrl && event.name === 'c') {
|
|
69
|
+
this.emit('exit');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// In line mode, buffer input
|
|
73
|
+
if (this.mode === 'line') {
|
|
74
|
+
this.handleLineInput(event);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
// Raw mode - emit keypress immediately
|
|
78
|
+
this.emitKey(event);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
this.isActive = true;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Stop listening for input
|
|
85
|
+
*/
|
|
86
|
+
stop() {
|
|
87
|
+
if (!this.isActive)
|
|
88
|
+
return;
|
|
89
|
+
if (process.stdin.isTTY) {
|
|
90
|
+
process.stdin.setRawMode(false);
|
|
91
|
+
}
|
|
92
|
+
process.stdin.pause();
|
|
93
|
+
process.stdin.removeAllListeners('keypress');
|
|
94
|
+
if (this.rl) {
|
|
95
|
+
this.rl.close();
|
|
96
|
+
this.rl = null;
|
|
97
|
+
}
|
|
98
|
+
this.isActive = false;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Set input mode
|
|
102
|
+
*/
|
|
103
|
+
setMode(mode) {
|
|
104
|
+
this.mode = mode;
|
|
105
|
+
this.inputBuffer = '';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get current input buffer (for line mode)
|
|
109
|
+
*/
|
|
110
|
+
getInputBuffer() {
|
|
111
|
+
return this.inputBuffer;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Clear input buffer
|
|
115
|
+
*/
|
|
116
|
+
clearInputBuffer() {
|
|
117
|
+
this.inputBuffer = '';
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Handle input in line mode
|
|
121
|
+
*/
|
|
122
|
+
handleLineInput(key) {
|
|
123
|
+
switch (key.name) {
|
|
124
|
+
case 'return':
|
|
125
|
+
const line = this.inputBuffer;
|
|
126
|
+
this.inputBuffer = '';
|
|
127
|
+
this.emitLine(line);
|
|
128
|
+
break;
|
|
129
|
+
case 'backspace':
|
|
130
|
+
this.inputBuffer = this.inputBuffer.slice(0, -1);
|
|
131
|
+
this.emitKey(key);
|
|
132
|
+
break;
|
|
133
|
+
case 'escape':
|
|
134
|
+
this.inputBuffer = '';
|
|
135
|
+
this.emitKey(key);
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
// Add printable characters to buffer (including Unicode)
|
|
139
|
+
if (key.raw && !key.ctrl && !key.meta) {
|
|
140
|
+
// Accept all printable characters including Unicode
|
|
141
|
+
// Filter out control characters (< 32) except allow space (32)
|
|
142
|
+
const firstCharCode = key.raw.charCodeAt(0);
|
|
143
|
+
if (firstCharCode >= 32) {
|
|
144
|
+
this.inputBuffer += key.raw;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
this.emitKey(key);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Push a handler onto the focus stack
|
|
152
|
+
* The new handler will receive exclusive input until popped
|
|
153
|
+
*/
|
|
154
|
+
pushFocus(handler) {
|
|
155
|
+
this.focusStack.push(handler);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Pop the top handler from the focus stack
|
|
159
|
+
* Returns the popped handler, or undefined if stack is empty
|
|
160
|
+
*/
|
|
161
|
+
popFocus() {
|
|
162
|
+
return this.focusStack.pop();
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get the current focused handler (top of stack)
|
|
166
|
+
*/
|
|
167
|
+
getCurrentFocus() {
|
|
168
|
+
return this.focusStack[this.focusStack.length - 1];
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Check if there are any handlers on the focus stack
|
|
172
|
+
*/
|
|
173
|
+
hasFocus() {
|
|
174
|
+
return this.focusStack.length > 0;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated Use pushFocus/popFocus instead
|
|
178
|
+
* Kept for backward compatibility during migration
|
|
179
|
+
*/
|
|
180
|
+
onKey(handler) {
|
|
181
|
+
this.pushFocus(handler);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* @deprecated Use pushFocus/popFocus instead
|
|
185
|
+
* Removes a specific handler from anywhere in the stack
|
|
186
|
+
*/
|
|
187
|
+
offKey(handler) {
|
|
188
|
+
const index = this.focusStack.indexOf(handler);
|
|
189
|
+
if (index !== -1) {
|
|
190
|
+
this.focusStack.splice(index, 1);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Register line handler
|
|
195
|
+
*/
|
|
196
|
+
onLine(handler) {
|
|
197
|
+
this.lineHandlers.add(handler);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Unregister line handler
|
|
201
|
+
*/
|
|
202
|
+
offLine(handler) {
|
|
203
|
+
this.lineHandlers.delete(handler);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Emit key event to the top handler on the focus stack
|
|
207
|
+
* Only the handler at the top of the stack receives the event
|
|
208
|
+
*/
|
|
209
|
+
emitKey(key) {
|
|
210
|
+
const topHandler = this.focusStack[this.focusStack.length - 1];
|
|
211
|
+
if (topHandler) {
|
|
212
|
+
topHandler(key);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Emit line event
|
|
217
|
+
*/
|
|
218
|
+
emitLine(line) {
|
|
219
|
+
for (const handler of this.lineHandlers) {
|
|
220
|
+
handler(line);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Emit custom event
|
|
225
|
+
*/
|
|
226
|
+
emit(event) {
|
|
227
|
+
if (event === 'exit') {
|
|
228
|
+
// Will be handled by main game
|
|
229
|
+
process.emit('SIGINT');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Wait for a specific key
|
|
234
|
+
*/
|
|
235
|
+
waitForKey(keyName) {
|
|
236
|
+
return new Promise((resolve) => {
|
|
237
|
+
const handler = (key) => {
|
|
238
|
+
if (!keyName || key.name === keyName) {
|
|
239
|
+
this.offKey(handler);
|
|
240
|
+
resolve(key);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
this.onKey(handler);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Wait for line input
|
|
248
|
+
*/
|
|
249
|
+
waitForLine() {
|
|
250
|
+
return new Promise((resolve) => {
|
|
251
|
+
const prevMode = this.mode;
|
|
252
|
+
this.setMode('line');
|
|
253
|
+
const handler = (line) => {
|
|
254
|
+
this.offLine(handler);
|
|
255
|
+
this.setMode(prevMode);
|
|
256
|
+
resolve(line);
|
|
257
|
+
};
|
|
258
|
+
this.onLine(handler);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Prompt for input with echo
|
|
263
|
+
*/
|
|
264
|
+
async prompt(prefix = '> ') {
|
|
265
|
+
// This will be used with the screen to show input
|
|
266
|
+
return this.waitForLine();
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Singleton
|
|
270
|
+
let inputInstance = null;
|
|
271
|
+
export function getInput() {
|
|
272
|
+
if (!inputInstance) {
|
|
273
|
+
inputInstance = new InputManager();
|
|
274
|
+
}
|
|
275
|
+
return inputInstance;
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=Input.js.map
|
|
278
|
+
//# debugId=c4381082-ee03-5821-9eba-f576600de88b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["tui/Input.ts"],"sourceRoot":"/","sourcesContent":["/**\r\n * TUI Input Handler - Keyboard input management\r\n */\r\n\r\nimport * as readline from 'readline';\r\n\r\n/**\r\n * Key event types\r\n */\r\nexport interface KeyEvent {\r\n name: string;\r\n ctrl: boolean;\r\n meta: boolean;\r\n shift: boolean;\r\n sequence: string;\r\n raw: string;\r\n}\r\n\r\n/**\r\n * Special key names\r\n */\r\nexport const KEYS = {\r\n UP: 'up',\r\n DOWN: 'down',\r\n LEFT: 'left',\r\n RIGHT: 'right',\r\n ENTER: 'return',\r\n SPACE: 'space',\r\n ESCAPE: 'escape',\r\n TAB: 'tab',\r\n BACKSPACE: 'backspace',\r\n DELETE: 'delete',\r\n HOME: 'home',\r\n END: 'end',\r\n PAGEUP: 'pageup',\r\n PAGEDOWN: 'pagedown',\r\n};\r\n\r\nexport type KeyHandler = (key: KeyEvent) => void;\r\ntype LineHandler = (line: string) => void;\r\n\r\n/**\r\n * Input manager class\r\n *\r\n * Uses a focus stack pattern for input routing:\r\n * - Only the top handler on the stack receives key events\r\n * - Handlers push themselves onto the stack when they need exclusive input\r\n * - Handlers pop themselves when they're done\r\n */\r\nexport class InputManager {\r\n private rl: readline.Interface | null = null;\r\n private focusStack: KeyHandler[] = [];\r\n private lineHandlers: Set<LineHandler> = new Set();\r\n private mode: 'raw' | 'line' = 'raw';\r\n private inputBuffer: string = '';\r\n private isActive: boolean = false;\r\n\r\n /**\r\n * Start listening for input\r\n */\r\n start(): void {\r\n if (this.isActive) return;\r\n\r\n // Enable raw mode for keypress detection\r\n if (process.stdin.isTTY) {\r\n process.stdin.setRawMode(true);\r\n }\r\n process.stdin.resume();\r\n process.stdin.setEncoding('utf8');\r\n\r\n // Handle keypress events\r\n readline.emitKeypressEvents(process.stdin);\r\n\r\n process.stdin.on('keypress', (str, key) => {\r\n if (!key) {\r\n key = { name: str, ctrl: false, meta: false, shift: false, sequence: str };\r\n }\r\n\r\n const event: KeyEvent = {\r\n name: key.name || str || '',\r\n ctrl: key.ctrl || false,\r\n meta: key.meta || false,\r\n shift: key.shift || false,\r\n sequence: key.sequence || str || '',\r\n raw: str || '',\r\n };\r\n\r\n // Handle Ctrl+C to exit\r\n if (event.ctrl && event.name === 'c') {\r\n this.emit('exit');\r\n return;\r\n }\r\n\r\n // In line mode, buffer input\r\n if (this.mode === 'line') {\r\n this.handleLineInput(event);\r\n } else {\r\n // Raw mode - emit keypress immediately\r\n this.emitKey(event);\r\n }\r\n });\r\n\r\n this.isActive = true;\r\n }\r\n\r\n /**\r\n * Stop listening for input\r\n */\r\n stop(): void {\r\n if (!this.isActive) return;\r\n\r\n if (process.stdin.isTTY) {\r\n process.stdin.setRawMode(false);\r\n }\r\n process.stdin.pause();\r\n process.stdin.removeAllListeners('keypress');\r\n\r\n if (this.rl) {\r\n this.rl.close();\r\n this.rl = null;\r\n }\r\n\r\n this.isActive = false;\r\n }\r\n\r\n /**\r\n * Set input mode\r\n */\r\n setMode(mode: 'raw' | 'line'): void {\r\n this.mode = mode;\r\n this.inputBuffer = '';\r\n }\r\n\r\n /**\r\n * Get current input buffer (for line mode)\r\n */\r\n getInputBuffer(): string {\r\n return this.inputBuffer;\r\n }\r\n\r\n /**\r\n * Clear input buffer\r\n */\r\n clearInputBuffer(): void {\r\n this.inputBuffer = '';\r\n }\r\n\r\n /**\r\n * Handle input in line mode\r\n */\r\n private handleLineInput(key: KeyEvent): void {\r\n switch (key.name) {\r\n case 'return':\r\n const line = this.inputBuffer;\r\n this.inputBuffer = '';\r\n this.emitLine(line);\r\n break;\r\n\r\n case 'backspace':\r\n this.inputBuffer = this.inputBuffer.slice(0, -1);\r\n this.emitKey(key);\r\n break;\r\n\r\n case 'escape':\r\n this.inputBuffer = '';\r\n this.emitKey(key);\r\n break;\r\n\r\n default:\r\n // Add printable characters to buffer (including Unicode)\r\n if (key.raw && !key.ctrl && !key.meta) {\r\n // Accept all printable characters including Unicode\r\n // Filter out control characters (< 32) except allow space (32)\r\n const firstCharCode = key.raw.charCodeAt(0);\r\n if (firstCharCode >= 32) {\r\n this.inputBuffer += key.raw;\r\n }\r\n }\r\n this.emitKey(key);\r\n }\r\n }\r\n\r\n /**\r\n * Push a handler onto the focus stack\r\n * The new handler will receive exclusive input until popped\r\n */\r\n pushFocus(handler: KeyHandler): void {\r\n this.focusStack.push(handler);\r\n }\r\n\r\n /**\r\n * Pop the top handler from the focus stack\r\n * Returns the popped handler, or undefined if stack is empty\r\n */\r\n popFocus(): KeyHandler | undefined {\r\n return this.focusStack.pop();\r\n }\r\n\r\n /**\r\n * Get the current focused handler (top of stack)\r\n */\r\n getCurrentFocus(): KeyHandler | undefined {\r\n return this.focusStack[this.focusStack.length - 1];\r\n }\r\n\r\n /**\r\n * Check if there are any handlers on the focus stack\r\n */\r\n hasFocus(): boolean {\r\n return this.focusStack.length > 0;\r\n }\r\n\r\n /**\r\n * @deprecated Use pushFocus/popFocus instead\r\n * Kept for backward compatibility during migration\r\n */\r\n onKey(handler: KeyHandler): void {\r\n this.pushFocus(handler);\r\n }\r\n\r\n /**\r\n * @deprecated Use pushFocus/popFocus instead\r\n * Removes a specific handler from anywhere in the stack\r\n */\r\n offKey(handler: KeyHandler): void {\r\n const index = this.focusStack.indexOf(handler);\r\n if (index !== -1) {\r\n this.focusStack.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Register line handler\r\n */\r\n onLine(handler: LineHandler): void {\r\n this.lineHandlers.add(handler);\r\n }\r\n\r\n /**\r\n * Unregister line handler\r\n */\r\n offLine(handler: LineHandler): void {\r\n this.lineHandlers.delete(handler);\r\n }\r\n\r\n /**\r\n * Emit key event to the top handler on the focus stack\r\n * Only the handler at the top of the stack receives the event\r\n */\r\n private emitKey(key: KeyEvent): void {\r\n const topHandler = this.focusStack[this.focusStack.length - 1];\r\n if (topHandler) {\r\n topHandler(key);\r\n }\r\n }\r\n\r\n /**\r\n * Emit line event\r\n */\r\n private emitLine(line: string): void {\r\n for (const handler of this.lineHandlers) {\r\n handler(line);\r\n }\r\n }\r\n\r\n /**\r\n * Emit custom event\r\n */\r\n private emit(event: string): void {\r\n if (event === 'exit') {\r\n // Will be handled by main game\r\n process.emit('SIGINT');\r\n }\r\n }\r\n\r\n /**\r\n * Wait for a specific key\r\n */\r\n waitForKey(keyName?: string): Promise<KeyEvent> {\r\n return new Promise((resolve) => {\r\n const handler: KeyHandler = (key) => {\r\n if (!keyName || key.name === keyName) {\r\n this.offKey(handler);\r\n resolve(key);\r\n }\r\n };\r\n this.onKey(handler);\r\n });\r\n }\r\n\r\n /**\r\n * Wait for line input\r\n */\r\n waitForLine(): Promise<string> {\r\n return new Promise((resolve) => {\r\n const prevMode = this.mode;\r\n this.setMode('line');\r\n \r\n const handler: LineHandler = (line) => {\r\n this.offLine(handler);\r\n this.setMode(prevMode);\r\n resolve(line);\r\n };\r\n this.onLine(handler);\r\n });\r\n }\r\n\r\n /**\r\n * Prompt for input with echo\r\n */\r\n async prompt(prefix: string = '> '): Promise<string> {\r\n // This will be used with the screen to show input\r\n return this.waitForLine();\r\n }\r\n}\r\n\r\n// Singleton\r\nlet inputInstance: InputManager | null = null;\r\n\r\nexport function getInput(): InputManager {\r\n if (!inputInstance) {\r\n inputInstance = new InputManager();\r\n }\r\n return inputInstance;\r\n}\r\n"],"names":[],"mappings":"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","debug_id":"c4381082-ee03-5821-9eba-f576600de88b"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Menu System - Option-based navigation
|
|
3
|
+
* Inspired by opencode's DialogSelect pattern
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Menu option
|
|
7
|
+
*/
|
|
8
|
+
export interface MenuOption {
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
shortcut?: string;
|
|
13
|
+
category?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
action?: () => void | Promise<void>;
|
|
16
|
+
subMenu?: MenuOption[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Menu configuration
|
|
20
|
+
*/
|
|
21
|
+
export interface MenuConfig {
|
|
22
|
+
title: string;
|
|
23
|
+
options: MenuOption[];
|
|
24
|
+
selectedIndex?: number;
|
|
25
|
+
showSearch?: boolean;
|
|
26
|
+
showCategories?: boolean;
|
|
27
|
+
onSelect?: (option: MenuOption) => void | Promise<void>;
|
|
28
|
+
onCancel?: () => void;
|
|
29
|
+
x?: number;
|
|
30
|
+
y?: number;
|
|
31
|
+
width?: number;
|
|
32
|
+
maxHeight?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Menu renderer and controller
|
|
36
|
+
*/
|
|
37
|
+
export declare class Menu {
|
|
38
|
+
private screen;
|
|
39
|
+
private config;
|
|
40
|
+
private state;
|
|
41
|
+
private isActive;
|
|
42
|
+
private keyHandler;
|
|
43
|
+
private resolvePromise;
|
|
44
|
+
constructor(config: MenuConfig);
|
|
45
|
+
/**
|
|
46
|
+
* Show menu and wait for selection
|
|
47
|
+
*/
|
|
48
|
+
show(): Promise<MenuOption | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Close menu
|
|
51
|
+
*/
|
|
52
|
+
close(selected?: MenuOption | null): void;
|
|
53
|
+
/**
|
|
54
|
+
* Setup keyboard handler
|
|
55
|
+
*/
|
|
56
|
+
private setupKeyHandler;
|
|
57
|
+
/**
|
|
58
|
+
* Remove keyboard handler
|
|
59
|
+
*/
|
|
60
|
+
private removeKeyHandler;
|
|
61
|
+
/**
|
|
62
|
+
* Move selection
|
|
63
|
+
*/
|
|
64
|
+
private moveSelection;
|
|
65
|
+
/**
|
|
66
|
+
* Move to start
|
|
67
|
+
*/
|
|
68
|
+
private moveToStart;
|
|
69
|
+
/**
|
|
70
|
+
* Move to end
|
|
71
|
+
*/
|
|
72
|
+
private moveToEnd;
|
|
73
|
+
/**
|
|
74
|
+
* Ensure selected item is visible
|
|
75
|
+
*/
|
|
76
|
+
private ensureVisible;
|
|
77
|
+
/**
|
|
78
|
+
* Filter options based on search query
|
|
79
|
+
*/
|
|
80
|
+
private filterOptions;
|
|
81
|
+
/**
|
|
82
|
+
* Select current option
|
|
83
|
+
*/
|
|
84
|
+
private selectCurrent;
|
|
85
|
+
/**
|
|
86
|
+
* Select specific option
|
|
87
|
+
*/
|
|
88
|
+
private selectOption;
|
|
89
|
+
/**
|
|
90
|
+
* Cancel menu
|
|
91
|
+
*/
|
|
92
|
+
private cancel;
|
|
93
|
+
/**
|
|
94
|
+
* Render menu
|
|
95
|
+
*/
|
|
96
|
+
render(): void;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Quick menu helper - show a menu and return the selected option
|
|
100
|
+
*/
|
|
101
|
+
export declare function showMenu(config: MenuConfig): Promise<MenuOption | null>;
|
|
102
|
+
/**
|
|
103
|
+
* Confirm dialog
|
|
104
|
+
*/
|
|
105
|
+
export declare function showConfirm(title: string, message: string): Promise<boolean>;
|
|
106
|
+
/**
|
|
107
|
+
* Alert dialog
|
|
108
|
+
*/
|
|
109
|
+
export declare function showAlert(title: string, message: string): Promise<void>;
|
|
110
|
+
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"/","sources":["tui/Menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD;;GAEG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,cAAc,CAAsD;gBAEhE,MAAM,EAAE,UAAU;IAW9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUxC;;OAEG;IACH,KAAK,CAAC,QAAQ,GAAE,UAAU,GAAG,IAAW,GAAG,IAAI;IAS/C;;OAEG;IACH,OAAO,CAAC,eAAe;IAwDvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;YACW,YAAY;IA+B1B;;OAEG;IACH,OAAO,CAAC,MAAM;IAOd;;OAEG;IACH,MAAM,IAAI,IAAI;CA6Gf;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAG7E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASlF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7E"}
|