claude-doom-statusbar 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/LICENSE +21 -0
- package/README.md +116 -0
- package/assets/images/hud.png +0 -0
- package/assets/images/mugshot/STFST01-blockart-08.png +0 -0
- package/assets/images/mugshot/STFST01-orig-08.png +0 -0
- package/assets/images/mugshot/alpha/STFDEAD0.png +0 -0
- package/assets/images/mugshot/alpha/STFEVL0.png +0 -0
- package/assets/images/mugshot/alpha/STFEVL1.png +0 -0
- package/assets/images/mugshot/alpha/STFEVL2.png +0 -0
- package/assets/images/mugshot/alpha/STFEVL3.png +0 -0
- package/assets/images/mugshot/alpha/STFEVL4.png +0 -0
- package/assets/images/mugshot/alpha/STFGOD0.png +0 -0
- package/assets/images/mugshot/alpha/STFKILL0.png +0 -0
- package/assets/images/mugshot/alpha/STFKILL1.png +0 -0
- package/assets/images/mugshot/alpha/STFKILL2.png +0 -0
- package/assets/images/mugshot/alpha/STFKILL3.png +0 -0
- package/assets/images/mugshot/alpha/STFKILL4.png +0 -0
- package/assets/images/mugshot/alpha/STFOUCH0.png +0 -0
- package/assets/images/mugshot/alpha/STFOUCH1.png +0 -0
- package/assets/images/mugshot/alpha/STFOUCH2.png +0 -0
- package/assets/images/mugshot/alpha/STFOUCH3.png +0 -0
- package/assets/images/mugshot/alpha/STFOUCH4.png +0 -0
- package/assets/images/mugshot/alpha/STFST00.png +0 -0
- package/assets/images/mugshot/alpha/STFST01.png +0 -0
- package/assets/images/mugshot/alpha/STFST02.png +0 -0
- package/assets/images/mugshot/alpha/STFST10.png +0 -0
- package/assets/images/mugshot/alpha/STFST11.png +0 -0
- package/assets/images/mugshot/alpha/STFST12.png +0 -0
- package/assets/images/mugshot/alpha/STFST20.png +0 -0
- package/assets/images/mugshot/alpha/STFST21.png +0 -0
- package/assets/images/mugshot/alpha/STFST22.png +0 -0
- package/assets/images/mugshot/alpha/STFST30.png +0 -0
- package/assets/images/mugshot/alpha/STFST31.png +0 -0
- package/assets/images/mugshot/alpha/STFST32.png +0 -0
- package/assets/images/mugshot/alpha/STFST40.png +0 -0
- package/assets/images/mugshot/alpha/STFST41.png +0 -0
- package/assets/images/mugshot/alpha/STFST42.png +0 -0
- package/assets/images/mugshot/alpha/STFTL00.png +0 -0
- package/assets/images/mugshot/alpha/STFTL10.png +0 -0
- package/assets/images/mugshot/alpha/STFTL20.png +0 -0
- package/assets/images/mugshot/alpha/STFTL30.png +0 -0
- package/assets/images/mugshot/alpha/STFTL40.png +0 -0
- package/assets/images/mugshot/alpha/STFTR00.png +0 -0
- package/assets/images/mugshot/alpha/STFTR10.png +0 -0
- package/assets/images/mugshot/alpha/STFTR20.png +0 -0
- package/assets/images/mugshot/alpha/STFTR30.png +0 -0
- package/assets/images/mugshot/alpha/STFTR40.png +0 -0
- package/assets/images/mugshot/ans/10/STFDEAD0.ans +10 -0
- package/assets/images/mugshot/ans/10/STFEVL0.ans +10 -0
- package/assets/images/mugshot/ans/10/STFEVL1.ans +10 -0
- package/assets/images/mugshot/ans/10/STFEVL2.ans +10 -0
- package/assets/images/mugshot/ans/10/STFEVL3.ans +10 -0
- package/assets/images/mugshot/ans/10/STFEVL4.ans +10 -0
- package/assets/images/mugshot/ans/10/STFGOD0.ans +10 -0
- package/assets/images/mugshot/ans/10/STFKILL0.ans +10 -0
- package/assets/images/mugshot/ans/10/STFKILL1.ans +10 -0
- package/assets/images/mugshot/ans/10/STFKILL2.ans +10 -0
- package/assets/images/mugshot/ans/10/STFKILL3.ans +10 -0
- package/assets/images/mugshot/ans/10/STFKILL4.ans +10 -0
- package/assets/images/mugshot/ans/10/STFOUCH0.ans +10 -0
- package/assets/images/mugshot/ans/10/STFOUCH1.ans +10 -0
- package/assets/images/mugshot/ans/10/STFOUCH2.ans +10 -0
- package/assets/images/mugshot/ans/10/STFOUCH3.ans +10 -0
- package/assets/images/mugshot/ans/10/STFOUCH4.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST00.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST01.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST02.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST10.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST11.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST12.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST20.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST21.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST22.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST30.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST31.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST32.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST40.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST41.ans +10 -0
- package/assets/images/mugshot/ans/10/STFST42.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTL00.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTL10.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTL20.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTL30.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTL40.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTR00.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTR10.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTR20.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTR30.ans +10 -0
- package/assets/images/mugshot/ans/10/STFTR40.ans +10 -0
- package/assets/images/mugshot/ans/11/STFDEAD0.ans +11 -0
- package/assets/images/mugshot/ans/11/STFEVL0.ans +11 -0
- package/assets/images/mugshot/ans/11/STFEVL1.ans +11 -0
- package/assets/images/mugshot/ans/11/STFEVL2.ans +11 -0
- package/assets/images/mugshot/ans/11/STFEVL3.ans +11 -0
- package/assets/images/mugshot/ans/11/STFEVL4.ans +11 -0
- package/assets/images/mugshot/ans/11/STFGOD0.ans +11 -0
- package/assets/images/mugshot/ans/11/STFKILL0.ans +11 -0
- package/assets/images/mugshot/ans/11/STFKILL1.ans +11 -0
- package/assets/images/mugshot/ans/11/STFKILL2.ans +11 -0
- package/assets/images/mugshot/ans/11/STFKILL3.ans +11 -0
- package/assets/images/mugshot/ans/11/STFKILL4.ans +11 -0
- package/assets/images/mugshot/ans/11/STFOUCH0.ans +11 -0
- package/assets/images/mugshot/ans/11/STFOUCH1.ans +11 -0
- package/assets/images/mugshot/ans/11/STFOUCH2.ans +11 -0
- package/assets/images/mugshot/ans/11/STFOUCH3.ans +11 -0
- package/assets/images/mugshot/ans/11/STFOUCH4.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST00.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST01.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST02.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST10.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST11.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST12.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST20.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST21.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST22.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST30.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST31.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST32.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST40.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST41.ans +11 -0
- package/assets/images/mugshot/ans/11/STFST42.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTL00.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTL10.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTL20.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTL30.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTL40.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTR00.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTR10.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTR20.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTR30.ans +11 -0
- package/assets/images/mugshot/ans/11/STFTR40.ans +11 -0
- package/assets/images/mugshot/ans/12/STFDEAD0.ans +12 -0
- package/assets/images/mugshot/ans/12/STFEVL0.ans +12 -0
- package/assets/images/mugshot/ans/12/STFEVL1.ans +12 -0
- package/assets/images/mugshot/ans/12/STFEVL2.ans +12 -0
- package/assets/images/mugshot/ans/12/STFEVL3.ans +12 -0
- package/assets/images/mugshot/ans/12/STFEVL4.ans +12 -0
- package/assets/images/mugshot/ans/12/STFGOD0.ans +12 -0
- package/assets/images/mugshot/ans/12/STFKILL0.ans +12 -0
- package/assets/images/mugshot/ans/12/STFKILL1.ans +12 -0
- package/assets/images/mugshot/ans/12/STFKILL2.ans +12 -0
- package/assets/images/mugshot/ans/12/STFKILL3.ans +12 -0
- package/assets/images/mugshot/ans/12/STFKILL4.ans +12 -0
- package/assets/images/mugshot/ans/12/STFOUCH0.ans +12 -0
- package/assets/images/mugshot/ans/12/STFOUCH1.ans +12 -0
- package/assets/images/mugshot/ans/12/STFOUCH2.ans +12 -0
- package/assets/images/mugshot/ans/12/STFOUCH3.ans +12 -0
- package/assets/images/mugshot/ans/12/STFOUCH4.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST00.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST01.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST02.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST10.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST11.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST12.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST20.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST21.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST22.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST30.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST31.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST32.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST40.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST41.ans +12 -0
- package/assets/images/mugshot/ans/12/STFST42.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTL00.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTL10.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTL20.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTL30.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTL40.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTR00.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTR10.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTR20.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTR30.ans +12 -0
- package/assets/images/mugshot/ans/12/STFTR40.ans +12 -0
- package/assets/images/mugshot/ans/13/STFDEAD0.ans +13 -0
- package/assets/images/mugshot/ans/13/STFEVL0.ans +13 -0
- package/assets/images/mugshot/ans/13/STFEVL1.ans +13 -0
- package/assets/images/mugshot/ans/13/STFEVL2.ans +13 -0
- package/assets/images/mugshot/ans/13/STFEVL3.ans +13 -0
- package/assets/images/mugshot/ans/13/STFEVL4.ans +13 -0
- package/assets/images/mugshot/ans/13/STFGOD0.ans +13 -0
- package/assets/images/mugshot/ans/13/STFKILL0.ans +13 -0
- package/assets/images/mugshot/ans/13/STFKILL1.ans +13 -0
- package/assets/images/mugshot/ans/13/STFKILL2.ans +13 -0
- package/assets/images/mugshot/ans/13/STFKILL3.ans +13 -0
- package/assets/images/mugshot/ans/13/STFKILL4.ans +13 -0
- package/assets/images/mugshot/ans/13/STFOUCH0.ans +13 -0
- package/assets/images/mugshot/ans/13/STFOUCH1.ans +13 -0
- package/assets/images/mugshot/ans/13/STFOUCH2.ans +13 -0
- package/assets/images/mugshot/ans/13/STFOUCH3.ans +13 -0
- package/assets/images/mugshot/ans/13/STFOUCH4.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST00.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST01.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST02.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST10.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST11.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST12.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST20.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST21.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST22.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST30.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST31.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST32.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST40.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST41.ans +13 -0
- package/assets/images/mugshot/ans/13/STFST42.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTL00.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTL10.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTL20.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTL30.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTL40.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTR00.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTR10.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTR20.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTR30.ans +13 -0
- package/assets/images/mugshot/ans/13/STFTR40.ans +13 -0
- package/assets/images/mugshot/ans/14/STFDEAD0.ans +14 -0
- package/assets/images/mugshot/ans/14/STFEVL0.ans +14 -0
- package/assets/images/mugshot/ans/14/STFEVL1.ans +14 -0
- package/assets/images/mugshot/ans/14/STFEVL2.ans +14 -0
- package/assets/images/mugshot/ans/14/STFEVL3.ans +14 -0
- package/assets/images/mugshot/ans/14/STFEVL4.ans +14 -0
- package/assets/images/mugshot/ans/14/STFGOD0.ans +14 -0
- package/assets/images/mugshot/ans/14/STFKILL0.ans +14 -0
- package/assets/images/mugshot/ans/14/STFKILL1.ans +14 -0
- package/assets/images/mugshot/ans/14/STFKILL2.ans +14 -0
- package/assets/images/mugshot/ans/14/STFKILL3.ans +14 -0
- package/assets/images/mugshot/ans/14/STFKILL4.ans +14 -0
- package/assets/images/mugshot/ans/14/STFOUCH0.ans +14 -0
- package/assets/images/mugshot/ans/14/STFOUCH1.ans +14 -0
- package/assets/images/mugshot/ans/14/STFOUCH2.ans +14 -0
- package/assets/images/mugshot/ans/14/STFOUCH3.ans +14 -0
- package/assets/images/mugshot/ans/14/STFOUCH4.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST00.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST01.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST02.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST10.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST11.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST12.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST20.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST21.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST22.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST30.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST31.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST32.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST40.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST41.ans +14 -0
- package/assets/images/mugshot/ans/14/STFST42.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTL00.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTL10.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTL20.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTL30.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTL40.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTR00.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTR10.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTR20.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTR30.ans +14 -0
- package/assets/images/mugshot/ans/14/STFTR40.ans +14 -0
- package/assets/images/mugshot/ans/15/STFDEAD0.ans +15 -0
- package/assets/images/mugshot/ans/15/STFEVL0.ans +15 -0
- package/assets/images/mugshot/ans/15/STFEVL1.ans +15 -0
- package/assets/images/mugshot/ans/15/STFEVL2.ans +15 -0
- package/assets/images/mugshot/ans/15/STFEVL3.ans +15 -0
- package/assets/images/mugshot/ans/15/STFEVL4.ans +15 -0
- package/assets/images/mugshot/ans/15/STFGOD0.ans +15 -0
- package/assets/images/mugshot/ans/15/STFKILL0.ans +15 -0
- package/assets/images/mugshot/ans/15/STFKILL1.ans +15 -0
- package/assets/images/mugshot/ans/15/STFKILL2.ans +15 -0
- package/assets/images/mugshot/ans/15/STFKILL3.ans +15 -0
- package/assets/images/mugshot/ans/15/STFKILL4.ans +15 -0
- package/assets/images/mugshot/ans/15/STFOUCH0.ans +15 -0
- package/assets/images/mugshot/ans/15/STFOUCH1.ans +15 -0
- package/assets/images/mugshot/ans/15/STFOUCH2.ans +15 -0
- package/assets/images/mugshot/ans/15/STFOUCH3.ans +15 -0
- package/assets/images/mugshot/ans/15/STFOUCH4.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST00.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST01.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST02.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST10.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST11.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST12.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST20.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST21.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST22.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST30.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST31.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST32.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST40.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST41.ans +15 -0
- package/assets/images/mugshot/ans/15/STFST42.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTL00.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTL10.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTL20.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTL30.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTL40.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTR00.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTR10.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTR20.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTR30.ans +15 -0
- package/assets/images/mugshot/ans/15/STFTR40.ans +15 -0
- package/assets/images/mugshot/ans/16/STFDEAD0.ans +16 -0
- package/assets/images/mugshot/ans/16/STFEVL0.ans +15 -0
- package/assets/images/mugshot/ans/16/STFEVL1.ans +15 -0
- package/assets/images/mugshot/ans/16/STFEVL2.ans +15 -0
- package/assets/images/mugshot/ans/16/STFEVL3.ans +15 -0
- package/assets/images/mugshot/ans/16/STFEVL4.ans +15 -0
- package/assets/images/mugshot/ans/16/STFGOD0.ans +15 -0
- package/assets/images/mugshot/ans/16/STFKILL0.ans +15 -0
- package/assets/images/mugshot/ans/16/STFKILL1.ans +15 -0
- package/assets/images/mugshot/ans/16/STFKILL2.ans +15 -0
- package/assets/images/mugshot/ans/16/STFKILL3.ans +15 -0
- package/assets/images/mugshot/ans/16/STFKILL4.ans +15 -0
- package/assets/images/mugshot/ans/16/STFOUCH0.ans +16 -0
- package/assets/images/mugshot/ans/16/STFOUCH1.ans +16 -0
- package/assets/images/mugshot/ans/16/STFOUCH2.ans +16 -0
- package/assets/images/mugshot/ans/16/STFOUCH3.ans +16 -0
- package/assets/images/mugshot/ans/16/STFOUCH4.ans +16 -0
- package/assets/images/mugshot/ans/16/STFST00.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST01.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST02.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST10.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST11.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST12.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST20.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST21.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST22.ans +15 -0
- package/assets/images/mugshot/ans/16/STFST30.ans +16 -0
- package/assets/images/mugshot/ans/16/STFST31.ans +16 -0
- package/assets/images/mugshot/ans/16/STFST32.ans +16 -0
- package/assets/images/mugshot/ans/16/STFST40.ans +16 -0
- package/assets/images/mugshot/ans/16/STFST41.ans +16 -0
- package/assets/images/mugshot/ans/16/STFST42.ans +16 -0
- package/assets/images/mugshot/ans/16/STFTL00.ans +15 -0
- package/assets/images/mugshot/ans/16/STFTL10.ans +15 -0
- package/assets/images/mugshot/ans/16/STFTL20.ans +15 -0
- package/assets/images/mugshot/ans/16/STFTL30.ans +16 -0
- package/assets/images/mugshot/ans/16/STFTL40.ans +16 -0
- package/assets/images/mugshot/ans/16/STFTR00.ans +15 -0
- package/assets/images/mugshot/ans/16/STFTR10.ans +15 -0
- package/assets/images/mugshot/ans/16/STFTR20.ans +15 -0
- package/assets/images/mugshot/ans/16/STFTR30.ans +15 -0
- package/assets/images/mugshot/ans/16/STFTR40.ans +15 -0
- package/assets/images/mugshot/ans/4/STFDEAD0.ans +4 -0
- package/assets/images/mugshot/ans/4/STFEVL0.ans +4 -0
- package/assets/images/mugshot/ans/4/STFEVL1.ans +4 -0
- package/assets/images/mugshot/ans/4/STFEVL2.ans +4 -0
- package/assets/images/mugshot/ans/4/STFEVL3.ans +4 -0
- package/assets/images/mugshot/ans/4/STFEVL4.ans +4 -0
- package/assets/images/mugshot/ans/4/STFGOD0.ans +4 -0
- package/assets/images/mugshot/ans/4/STFKILL0.ans +4 -0
- package/assets/images/mugshot/ans/4/STFKILL1.ans +4 -0
- package/assets/images/mugshot/ans/4/STFKILL2.ans +4 -0
- package/assets/images/mugshot/ans/4/STFKILL3.ans +4 -0
- package/assets/images/mugshot/ans/4/STFKILL4.ans +4 -0
- package/assets/images/mugshot/ans/4/STFOUCH0.ans +4 -0
- package/assets/images/mugshot/ans/4/STFOUCH1.ans +4 -0
- package/assets/images/mugshot/ans/4/STFOUCH2.ans +4 -0
- package/assets/images/mugshot/ans/4/STFOUCH3.ans +4 -0
- package/assets/images/mugshot/ans/4/STFOUCH4.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST00.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST01.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST02.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST10.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST11.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST12.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST20.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST21.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST22.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST30.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST31.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST32.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST40.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST41.ans +4 -0
- package/assets/images/mugshot/ans/4/STFST42.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTL00.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTL10.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTL20.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTL30.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTL40.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTR00.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTR10.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTR20.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTR30.ans +4 -0
- package/assets/images/mugshot/ans/4/STFTR40.ans +4 -0
- package/assets/images/mugshot/ans/5/STFDEAD0.ans +5 -0
- package/assets/images/mugshot/ans/5/STFEVL0.ans +5 -0
- package/assets/images/mugshot/ans/5/STFEVL1.ans +5 -0
- package/assets/images/mugshot/ans/5/STFEVL2.ans +5 -0
- package/assets/images/mugshot/ans/5/STFEVL3.ans +5 -0
- package/assets/images/mugshot/ans/5/STFEVL4.ans +5 -0
- package/assets/images/mugshot/ans/5/STFGOD0.ans +5 -0
- package/assets/images/mugshot/ans/5/STFKILL0.ans +5 -0
- package/assets/images/mugshot/ans/5/STFKILL1.ans +5 -0
- package/assets/images/mugshot/ans/5/STFKILL2.ans +5 -0
- package/assets/images/mugshot/ans/5/STFKILL3.ans +5 -0
- package/assets/images/mugshot/ans/5/STFKILL4.ans +5 -0
- package/assets/images/mugshot/ans/5/STFOUCH0.ans +5 -0
- package/assets/images/mugshot/ans/5/STFOUCH1.ans +5 -0
- package/assets/images/mugshot/ans/5/STFOUCH2.ans +5 -0
- package/assets/images/mugshot/ans/5/STFOUCH3.ans +5 -0
- package/assets/images/mugshot/ans/5/STFOUCH4.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST00.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST01.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST02.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST10.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST11.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST12.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST20.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST21.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST22.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST30.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST31.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST32.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST40.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST41.ans +5 -0
- package/assets/images/mugshot/ans/5/STFST42.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTL00.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTL10.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTL20.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTL30.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTL40.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTR00.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTR10.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTR20.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTR30.ans +5 -0
- package/assets/images/mugshot/ans/5/STFTR40.ans +5 -0
- package/assets/images/mugshot/ans/6/STFDEAD0.ans +6 -0
- package/assets/images/mugshot/ans/6/STFEVL0.ans +6 -0
- package/assets/images/mugshot/ans/6/STFEVL1.ans +6 -0
- package/assets/images/mugshot/ans/6/STFEVL2.ans +6 -0
- package/assets/images/mugshot/ans/6/STFEVL3.ans +6 -0
- package/assets/images/mugshot/ans/6/STFEVL4.ans +6 -0
- package/assets/images/mugshot/ans/6/STFGOD0.ans +6 -0
- package/assets/images/mugshot/ans/6/STFKILL0.ans +6 -0
- package/assets/images/mugshot/ans/6/STFKILL1.ans +6 -0
- package/assets/images/mugshot/ans/6/STFKILL2.ans +6 -0
- package/assets/images/mugshot/ans/6/STFKILL3.ans +6 -0
- package/assets/images/mugshot/ans/6/STFKILL4.ans +6 -0
- package/assets/images/mugshot/ans/6/STFOUCH0.ans +6 -0
- package/assets/images/mugshot/ans/6/STFOUCH1.ans +6 -0
- package/assets/images/mugshot/ans/6/STFOUCH2.ans +6 -0
- package/assets/images/mugshot/ans/6/STFOUCH3.ans +6 -0
- package/assets/images/mugshot/ans/6/STFOUCH4.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST00.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST01.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST02.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST10.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST11.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST12.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST20.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST21.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST22.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST30.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST31.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST32.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST40.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST41.ans +6 -0
- package/assets/images/mugshot/ans/6/STFST42.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTL00.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTL10.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTL20.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTL30.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTL40.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTR00.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTR10.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTR20.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTR30.ans +6 -0
- package/assets/images/mugshot/ans/6/STFTR40.ans +6 -0
- package/assets/images/mugshot/ans/7/STFDEAD0.ans +7 -0
- package/assets/images/mugshot/ans/7/STFEVL0.ans +7 -0
- package/assets/images/mugshot/ans/7/STFEVL1.ans +7 -0
- package/assets/images/mugshot/ans/7/STFEVL2.ans +7 -0
- package/assets/images/mugshot/ans/7/STFEVL3.ans +7 -0
- package/assets/images/mugshot/ans/7/STFEVL4.ans +7 -0
- package/assets/images/mugshot/ans/7/STFGOD0.ans +7 -0
- package/assets/images/mugshot/ans/7/STFKILL0.ans +7 -0
- package/assets/images/mugshot/ans/7/STFKILL1.ans +7 -0
- package/assets/images/mugshot/ans/7/STFKILL2.ans +7 -0
- package/assets/images/mugshot/ans/7/STFKILL3.ans +7 -0
- package/assets/images/mugshot/ans/7/STFKILL4.ans +7 -0
- package/assets/images/mugshot/ans/7/STFOUCH0.ans +7 -0
- package/assets/images/mugshot/ans/7/STFOUCH1.ans +7 -0
- package/assets/images/mugshot/ans/7/STFOUCH2.ans +7 -0
- package/assets/images/mugshot/ans/7/STFOUCH3.ans +7 -0
- package/assets/images/mugshot/ans/7/STFOUCH4.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST00.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST01.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST02.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST10.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST11.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST12.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST20.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST21.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST22.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST30.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST31.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST32.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST40.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST41.ans +7 -0
- package/assets/images/mugshot/ans/7/STFST42.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTL00.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTL10.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTL20.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTL30.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTL40.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTR00.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTR10.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTR20.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTR30.ans +7 -0
- package/assets/images/mugshot/ans/7/STFTR40.ans +7 -0
- package/assets/images/mugshot/ans/8/STFDEAD0.ans +8 -0
- package/assets/images/mugshot/ans/8/STFEVL0.ans +8 -0
- package/assets/images/mugshot/ans/8/STFEVL1.ans +8 -0
- package/assets/images/mugshot/ans/8/STFEVL2.ans +8 -0
- package/assets/images/mugshot/ans/8/STFEVL3.ans +8 -0
- package/assets/images/mugshot/ans/8/STFEVL4.ans +8 -0
- package/assets/images/mugshot/ans/8/STFGOD0.ans +8 -0
- package/assets/images/mugshot/ans/8/STFKILL0.ans +8 -0
- package/assets/images/mugshot/ans/8/STFKILL1.ans +8 -0
- package/assets/images/mugshot/ans/8/STFKILL2.ans +8 -0
- package/assets/images/mugshot/ans/8/STFKILL3.ans +8 -0
- package/assets/images/mugshot/ans/8/STFKILL4.ans +8 -0
- package/assets/images/mugshot/ans/8/STFOUCH0.ans +8 -0
- package/assets/images/mugshot/ans/8/STFOUCH1.ans +8 -0
- package/assets/images/mugshot/ans/8/STFOUCH2.ans +8 -0
- package/assets/images/mugshot/ans/8/STFOUCH3.ans +8 -0
- package/assets/images/mugshot/ans/8/STFOUCH4.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST00.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST01.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST02.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST10.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST11.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST12.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST20.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST21.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST22.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST30.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST31.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST32.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST40.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST41.ans +8 -0
- package/assets/images/mugshot/ans/8/STFST42.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTL00.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTL10.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTL20.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTL30.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTL40.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTR00.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTR10.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTR20.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTR30.ans +8 -0
- package/assets/images/mugshot/ans/8/STFTR40.ans +8 -0
- package/assets/images/mugshot/ans/9/STFDEAD0.ans +9 -0
- package/assets/images/mugshot/ans/9/STFEVL0.ans +9 -0
- package/assets/images/mugshot/ans/9/STFEVL1.ans +9 -0
- package/assets/images/mugshot/ans/9/STFEVL2.ans +9 -0
- package/assets/images/mugshot/ans/9/STFEVL3.ans +9 -0
- package/assets/images/mugshot/ans/9/STFEVL4.ans +9 -0
- package/assets/images/mugshot/ans/9/STFGOD0.ans +9 -0
- package/assets/images/mugshot/ans/9/STFKILL0.ans +9 -0
- package/assets/images/mugshot/ans/9/STFKILL1.ans +9 -0
- package/assets/images/mugshot/ans/9/STFKILL2.ans +9 -0
- package/assets/images/mugshot/ans/9/STFKILL3.ans +9 -0
- package/assets/images/mugshot/ans/9/STFKILL4.ans +9 -0
- package/assets/images/mugshot/ans/9/STFOUCH0.ans +9 -0
- package/assets/images/mugshot/ans/9/STFOUCH1.ans +9 -0
- package/assets/images/mugshot/ans/9/STFOUCH2.ans +9 -0
- package/assets/images/mugshot/ans/9/STFOUCH3.ans +9 -0
- package/assets/images/mugshot/ans/9/STFOUCH4.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST00.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST01.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST02.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST10.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST11.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST12.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST20.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST21.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST22.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST30.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST31.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST32.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST40.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST41.ans +9 -0
- package/assets/images/mugshot/ans/9/STFST42.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTL00.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTL10.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTL20.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTL30.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTL40.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTR00.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTR10.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTR20.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTR30.ans +9 -0
- package/assets/images/mugshot/ans/9/STFTR40.ans +9 -0
- package/assets/images/mugshot/wad/STFDEAD0.png +0 -0
- package/assets/images/mugshot/wad/STFEVL0.png +0 -0
- package/assets/images/mugshot/wad/STFEVL1.png +0 -0
- package/assets/images/mugshot/wad/STFEVL2.png +0 -0
- package/assets/images/mugshot/wad/STFEVL3.png +0 -0
- package/assets/images/mugshot/wad/STFEVL4.png +0 -0
- package/assets/images/mugshot/wad/STFGOD0.png +0 -0
- package/assets/images/mugshot/wad/STFKILL0.png +0 -0
- package/assets/images/mugshot/wad/STFKILL1.png +0 -0
- package/assets/images/mugshot/wad/STFKILL2.png +0 -0
- package/assets/images/mugshot/wad/STFKILL3.png +0 -0
- package/assets/images/mugshot/wad/STFKILL4.png +0 -0
- package/assets/images/mugshot/wad/STFOUCH0.png +0 -0
- package/assets/images/mugshot/wad/STFOUCH1.png +0 -0
- package/assets/images/mugshot/wad/STFOUCH2.png +0 -0
- package/assets/images/mugshot/wad/STFOUCH3.png +0 -0
- package/assets/images/mugshot/wad/STFOUCH4.png +0 -0
- package/assets/images/mugshot/wad/STFST00.png +0 -0
- package/assets/images/mugshot/wad/STFST01.png +0 -0
- package/assets/images/mugshot/wad/STFST02.png +0 -0
- package/assets/images/mugshot/wad/STFST10.png +0 -0
- package/assets/images/mugshot/wad/STFST11.png +0 -0
- package/assets/images/mugshot/wad/STFST12.png +0 -0
- package/assets/images/mugshot/wad/STFST20.png +0 -0
- package/assets/images/mugshot/wad/STFST21.png +0 -0
- package/assets/images/mugshot/wad/STFST22.png +0 -0
- package/assets/images/mugshot/wad/STFST30.png +0 -0
- package/assets/images/mugshot/wad/STFST31.png +0 -0
- package/assets/images/mugshot/wad/STFST32.png +0 -0
- package/assets/images/mugshot/wad/STFST40.png +0 -0
- package/assets/images/mugshot/wad/STFST41.png +0 -0
- package/assets/images/mugshot/wad/STFST42.png +0 -0
- package/assets/images/mugshot/wad/STFTL00.png +0 -0
- package/assets/images/mugshot/wad/STFTL10.png +0 -0
- package/assets/images/mugshot/wad/STFTL20.png +0 -0
- package/assets/images/mugshot/wad/STFTL30.png +0 -0
- package/assets/images/mugshot/wad/STFTL40.png +0 -0
- package/assets/images/mugshot/wad/STFTR00.png +0 -0
- package/assets/images/mugshot/wad/STFTR10.png +0 -0
- package/assets/images/mugshot/wad/STFTR20.png +0 -0
- package/assets/images/mugshot/wad/STFTR30.png +0 -0
- package/assets/images/mugshot/wad/STFTR40.png +0 -0
- package/bin/cli.js +163 -0
- package/package.json +39 -0
- package/presets/default.toml +30 -0
- package/presets/full.toml +80 -0
- package/presets/minimal.toml +19 -0
- package/src/ansi.js +20 -0
- package/src/face.js +126 -0
- package/src/hook.js +136 -0
- package/src/render.js +463 -0
- package/src/statusline.js +318 -0
package/src/render.js
ADDED
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
// Render a status-bar preset to the terminal — the engine.
|
|
2
|
+
// Faithful port of tools/render_preset.py. Reads metric values from VALUES
|
|
3
|
+
// (statusline.js swaps in real data via setValues); renders bars, sparks, lists,
|
|
4
|
+
// the mugshot column, threshold colours, responsive widths, and centering.
|
|
5
|
+
|
|
6
|
+
import { readFileSync } from "node:fs";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { parse as parseToml } from "smol-toml";
|
|
10
|
+
import { RESET, BOLD, TERM_RGB, sgrFg, sgrBg, pyround } from "./ansi.js";
|
|
11
|
+
import { loadFace, faceCell } from "./face.js";
|
|
12
|
+
|
|
13
|
+
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const REPO = path.dirname(HERE);
|
|
15
|
+
|
|
16
|
+
// SGR + OSC 8 hyperlinks — stripped for width measurement.
|
|
17
|
+
const ANSI_RE = /\x1b\[[0-9;]*m|\x1b\]8;[^\x07\x1b]*(?:\x1b\\|\x07)/g;
|
|
18
|
+
|
|
19
|
+
const TITLE = [222, 202, 128];
|
|
20
|
+
export const TEXT = [182, 186, 200];
|
|
21
|
+
export const OK = [96, 200, 104];
|
|
22
|
+
const WARN = [224, 184, 64];
|
|
23
|
+
export const CRIT = [224, 84, 64];
|
|
24
|
+
const SPARK = [120, 184, 232];
|
|
25
|
+
|
|
26
|
+
const EIGHTHS = [..." ▏▎▍▌▋▊▉"];
|
|
27
|
+
const HP_THRESHOLDS = [20, 40, 60, 80];
|
|
28
|
+
|
|
29
|
+
// Simulated metric values + availability (no live Claude Code data here).
|
|
30
|
+
export const SAMPLE = {
|
|
31
|
+
"model.name": "Opus 4.8", "model.effort": "🌔", "advisor.model": "Opus 4.8",
|
|
32
|
+
"model.window": "1M", "model.mode": "💭 on 🚀 off", "model.permission": "⏩ auto", "model.style": "default",
|
|
33
|
+
"usage.reset5h": "2h13m", "usage.reset7d": "3d4h", "sys.session": "5h55m", "loc.churn": "+185 / -62",
|
|
34
|
+
"context.hp": 78, "ratelimit.5h": 64, "ratelimit.7d": 31, "cost.total": "$1.83",
|
|
35
|
+
"git.branch": "main", "git.behind": "↓2", "git.ahead": "↑3", "git.status": "3",
|
|
36
|
+
"pr.state": "#1234",
|
|
37
|
+
"act.subagents": [["hook events", "2m13s"], ["find configs", "12s"]], "act.agents": "2",
|
|
38
|
+
"act.tasklist": [
|
|
39
|
+
{ mark:"✓", markRgb: OK, text:"scaffold project" },
|
|
40
|
+
{ mark:"✓", markRgb: OK, text:"render engine" },
|
|
41
|
+
{ mark:"✗", markRgb: CRIT, text:"port PIL alpha" },
|
|
42
|
+
{ mark:"▶", markRgb: null, text:"statusline values" },
|
|
43
|
+
{ mark:"🎯", markRgb: null, text:"hook bus" },
|
|
44
|
+
{ mark:"🎯", markRgb: null, text:"installer" },
|
|
45
|
+
],
|
|
46
|
+
"act.geiger": [0, .25, .5, 1, .75, 1, .5, .6, .3, .1, .4, 1, .8, .4],
|
|
47
|
+
"act.tasks": "2/5", "act.errors": "0", "sys.ram": 47, "sys.cpu": "12%",
|
|
48
|
+
"sys.disk": 63, "sys.clock": "14:23",
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
let VALUES = SAMPLE;
|
|
52
|
+
export function setValues(v) { VALUES = v; }
|
|
53
|
+
|
|
54
|
+
const has = (k) => Object.prototype.hasOwnProperty.call(VALUES, k);
|
|
55
|
+
const f = sgrFg;
|
|
56
|
+
|
|
57
|
+
export function vlen(s) {
|
|
58
|
+
let n = 0;
|
|
59
|
+
for (const ch of String(s).replace(ANSI_RE, "")) {
|
|
60
|
+
const cp = ch.codePointAt(0);
|
|
61
|
+
n += (cp >= 0x1f300 && cp <= 0x1faff) || (cp >= 0x23e9 && cp <= 0x23ec) ? 2 : 1;
|
|
62
|
+
}
|
|
63
|
+
return n;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function threshold(pct) {
|
|
67
|
+
return pct < 60 ? OK : pct < 85 ? WARN : CRIT;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function rgbOf(spec) {
|
|
71
|
+
if (typeof spec === "string" && spec.startsWith("#")) {
|
|
72
|
+
return [1, 3, 5].map((i) => parseInt(spec.slice(i, i + 2), 16));
|
|
73
|
+
}
|
|
74
|
+
return TERM_RGB; // term-bg / term-fg approximated for blends
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const isTerm = (rgb) => rgb[0] === 0 && rgb[1] === 0 && rgb[2] === 0;
|
|
78
|
+
|
|
79
|
+
function bgsgrBox(boxRgb) {
|
|
80
|
+
return isTerm(boxRgb) ? "\x1b[49m" : sgrBg(boxRgb);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function borderFg(spec) {
|
|
84
|
+
if (typeof spec === "string" && spec.startsWith("#")) return f(rgbOf(spec));
|
|
85
|
+
if (spec === "term-fg") return "\x1b[39m";
|
|
86
|
+
return "\x1b[38;2;0;0;0m"; // term-bg -> black-ish line
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// --- render styles ----------------------------------------------------------
|
|
90
|
+
|
|
91
|
+
function rBar(pct, cells, boxRgb, colorSpec, showPct = true) {
|
|
92
|
+
const empty = [0, 1, 2].map((i) => Math.floor((boxRgb[i] + TERM_RGB[i]) / 2));
|
|
93
|
+
const eighths = pyround((pct / 100) * cells * 8);
|
|
94
|
+
const full = Math.min(cells, Math.floor(eighths / 8));
|
|
95
|
+
const rem = full < cells ? eighths % 8 : 0;
|
|
96
|
+
const c = colorSpec === "threshold" ? threshold(pct) : colorSpec ? rgbOf(colorSpec) : TEXT;
|
|
97
|
+
let s = sgrBg(empty) + f(c) + "█".repeat(full);
|
|
98
|
+
if (rem) s += EIGHTHS[rem];
|
|
99
|
+
s += " ".repeat(Math.max(0, cells - full - (rem ? 1 : 0)));
|
|
100
|
+
s += bgsgrBox(boxRgb);
|
|
101
|
+
if (showPct) s += f(c) + " " + String(pct).padStart(3) + "%";
|
|
102
|
+
return s;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function rAmmo(pct, colorSpec, segs = 5) {
|
|
106
|
+
const c = colorSpec === "threshold" ? threshold(pct) : WARN;
|
|
107
|
+
const filled = pyround((pct / 100) * segs);
|
|
108
|
+
return f(c) + "▮".repeat(filled) + f([90, 95, 120]) + "▯".repeat(segs - filled) +
|
|
109
|
+
f(c) + " " + String(pct).padStart(3) + "%";
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Sparkline glyph tables: rows = left sub-bar height 0..4, cols = right height 0..4.
|
|
113
|
+
// Stored as arrays of code points (octants are astral — string[i] would split them).
|
|
114
|
+
const SPARK_OCTANT = [
|
|
115
|
+
" ▗▗\u{1cd96}▐",
|
|
116
|
+
"▖▂\u{1cdcb}\u{1cdd3}\u{1cdd5}",
|
|
117
|
+
"▖\u{1cdbb}▄\u{1cde1}▟",
|
|
118
|
+
"\u{1cd48}\u{1cdbf}\u{1cdde}▆\u{1cde5}",
|
|
119
|
+
"▌\u{1cdc0}▙\u{1cde4}█",
|
|
120
|
+
].map((r) => [...r]);
|
|
121
|
+
const SPARK_BRAILLE = [
|
|
122
|
+
"⠀⢀⢠⢰⢸", "⡀⣀⣠⣰⣸", "⡄⣄⣤⣴⣼", "⡆⣆⣦⣶⣾", "⡇⣇⣧⣷⣿",
|
|
123
|
+
].map((r) => [...r]);
|
|
124
|
+
const BLOCK_RAMP = [..."▁▂▃▄▅▆▇"];
|
|
125
|
+
|
|
126
|
+
function rSpark(values, style = "block", boxRgb = TERM_RGB, vmax = null) {
|
|
127
|
+
const empty = [0, 1, 2].map((i) => Math.floor((boxRgb[i] + TERM_RGB[i]) / 2));
|
|
128
|
+
const bg = sgrBg(empty);
|
|
129
|
+
if (!values || values.length === 0) return f(SPARK);
|
|
130
|
+
let nrm;
|
|
131
|
+
if (vmax) {
|
|
132
|
+
nrm = (v) => Math.max(0, Math.min(1, v / vmax));
|
|
133
|
+
} else {
|
|
134
|
+
const lo = Math.min(...values);
|
|
135
|
+
const span = Math.max(...values) - lo;
|
|
136
|
+
nrm = (v) => (span === 0 ? 0 : (v - lo) / span);
|
|
137
|
+
}
|
|
138
|
+
let body = "";
|
|
139
|
+
if (style === "octant" || style === "braille") {
|
|
140
|
+
const tbl = style === "octant" ? SPARK_OCTANT : SPARK_BRAILLE;
|
|
141
|
+
const h = (v) => pyround(nrm(v) * 4);
|
|
142
|
+
for (let i = 0; i < values.length; i += 2) {
|
|
143
|
+
const r = h(values[i]);
|
|
144
|
+
const c = i + 1 < values.length ? h(values[i + 1]) : 0;
|
|
145
|
+
body += tbl[r][c];
|
|
146
|
+
}
|
|
147
|
+
} else {
|
|
148
|
+
for (let i = 0; i < values.length; i += 2) {
|
|
149
|
+
const v = Math.max(...values.slice(i, i + 2));
|
|
150
|
+
body += BLOCK_RAMP[pyround(nrm(v) * 6)];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return bg + f(SPARK) + body + bgsgrBox(boxRgb);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export function renderValue(entry, cells, boxRgb) {
|
|
157
|
+
const icon = entry.icon || "";
|
|
158
|
+
const label = icon ? icon + " " : "";
|
|
159
|
+
const render = entry.render || "text";
|
|
160
|
+
const color = entry.color;
|
|
161
|
+
|
|
162
|
+
if ("group" in entry) {
|
|
163
|
+
const sep = entry.sep ?? " ";
|
|
164
|
+
const parts = entry.group.filter((i) => i in VALUES).map((i) => String(VALUES[i]));
|
|
165
|
+
return label + f(TEXT) + parts.join(sep);
|
|
166
|
+
}
|
|
167
|
+
const val = entry.id in VALUES ? VALUES[entry.id] : "?";
|
|
168
|
+
if (render === "bar") {
|
|
169
|
+
let s = label + rBar(val, cells, boxRgb, color || "threshold", entry.show_pct !== false);
|
|
170
|
+
const sid = entry.suffix;
|
|
171
|
+
if (sid && sid in VALUES) s += f(TEXT) + " " + String(VALUES[sid]);
|
|
172
|
+
return s;
|
|
173
|
+
}
|
|
174
|
+
if (render === "ammo") return label + rAmmo(val, color || "threshold");
|
|
175
|
+
if (render === "spark") return label + rSpark(val, entry.spark_style || "block", boxRgb, entry.spark_max);
|
|
176
|
+
if (render === "list") {
|
|
177
|
+
const items = VALUES[entry.id] || [];
|
|
178
|
+
return label + f(TEXT) + items.map((x) => (Array.isArray(x) ? `${x[0]} ${x[1]}` : String(x))).join(" ");
|
|
179
|
+
}
|
|
180
|
+
// number / text
|
|
181
|
+
let col;
|
|
182
|
+
if (color === "threshold") {
|
|
183
|
+
col = threshold(parseInt(String(val).replace(/\D/g, "") || "0", 10));
|
|
184
|
+
} else {
|
|
185
|
+
col = color ? rgbOf(color) : TEXT;
|
|
186
|
+
}
|
|
187
|
+
return label + f(col) + String(val);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function barMeta(entry) {
|
|
191
|
+
const icon = entry.icon || "";
|
|
192
|
+
const lw = vlen(icon ? icon + " " : "");
|
|
193
|
+
const r = entry.render;
|
|
194
|
+
if (r === "bar" || r === "ammo") {
|
|
195
|
+
let sw = entry.show_pct === false ? 0 : 5;
|
|
196
|
+
const sid = entry.suffix;
|
|
197
|
+
if (sid && sid in VALUES) sw += 1 + vlen(String(VALUES[sid]));
|
|
198
|
+
return [lw, sw, r];
|
|
199
|
+
}
|
|
200
|
+
return [lw, 0, entry.render || "text"];
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export function metricFixedWidth(entry) {
|
|
204
|
+
const icon = entry.icon || "";
|
|
205
|
+
const lw = vlen(icon ? icon + " " : "");
|
|
206
|
+
const r = entry.render || "text";
|
|
207
|
+
const rid = entry.right;
|
|
208
|
+
const rextra = rid && rid in VALUES ? 1 + vlen(String(VALUES[rid])) : 0;
|
|
209
|
+
if ("group" in entry) {
|
|
210
|
+
const sep = entry.sep ?? " ";
|
|
211
|
+
return lw + vlen(entry.group.filter((i) => i in VALUES).map((i) => String(VALUES[i])).join(sep)) + rextra;
|
|
212
|
+
}
|
|
213
|
+
if (r === "spark") return lw + Math.floor(((VALUES[entry.id] || []).length + 1) / 2);
|
|
214
|
+
if (r === "ammo") return lw + 5 + vlen(" " + (entry.id in VALUES ? VALUES[entry.id] : 0) + "%");
|
|
215
|
+
if (r === "list") {
|
|
216
|
+
const items = VALUES[entry.id] || [];
|
|
217
|
+
if (items.length === 0) return lw;
|
|
218
|
+
return Math.max(...items.map((it) =>
|
|
219
|
+
Array.isArray(it) && it.length === 2
|
|
220
|
+
? lw + vlen(String(it[0])) + 1 + vlen(String(it[1]))
|
|
221
|
+
: lw + vlen(String(it))));
|
|
222
|
+
}
|
|
223
|
+
if (r === "scroll") {
|
|
224
|
+
const items = VALUES[entry.id] || [];
|
|
225
|
+
if (items.length === 0) return lw;
|
|
226
|
+
return Math.max(...items.map((it) => {
|
|
227
|
+
if (Array.isArray(it) && it.length === 2)
|
|
228
|
+
return lw + vlen(String(it[0])) + 1 + vlen(String(it[1]));
|
|
229
|
+
// object {mark, text}
|
|
230
|
+
return lw + vlen(String(it.mark || "")) + 1 + vlen(String(it.text || ""));
|
|
231
|
+
}));
|
|
232
|
+
}
|
|
233
|
+
if (r === "bar") return null;
|
|
234
|
+
return lw + vlen(String(entry.id in VALUES ? VALUES[entry.id] : "?")) + rextra;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export function scrollWindow(n, h, anchor, boundary) {
|
|
238
|
+
if (n <= h) return { start: 0, up: 0, down: 0 }; // all fit: top-aligned
|
|
239
|
+
let start;
|
|
240
|
+
if (anchor === "boundary") start = boundary - Math.floor(h / 2);
|
|
241
|
+
else start = 0; // top anchor
|
|
242
|
+
start = Math.max(0, Math.min(start, n - h)); // clamp: never blank rows
|
|
243
|
+
return { start, up: start, down: n - start - h };
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function available(entry) {
|
|
247
|
+
if ("group" in entry) return entry.group.some((i) => i in VALUES);
|
|
248
|
+
if (entry.render === "list") return true;
|
|
249
|
+
return entry.id in VALUES;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function boxWidth(box, cells) {
|
|
253
|
+
const widths = [vlen(box.title || "")];
|
|
254
|
+
for (const m of box.metric) {
|
|
255
|
+
let fw = metricFixedWidth(m);
|
|
256
|
+
if (fw === null) {
|
|
257
|
+
const [lw, sw] = barMeta(m);
|
|
258
|
+
fw = lw + cells + sw;
|
|
259
|
+
}
|
|
260
|
+
widths.push(fw);
|
|
261
|
+
}
|
|
262
|
+
let w = Math.max(...widths);
|
|
263
|
+
if ("min_width" in box) w = Math.max(w, box.min_width);
|
|
264
|
+
if ("max_width" in box) w = Math.min(w, box.max_width);
|
|
265
|
+
return w;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function hpRow(thresholds = HP_THRESHOLDS) {
|
|
269
|
+
let headroom;
|
|
270
|
+
if ("ratelimit.5h" in VALUES || "ratelimit.7d" in VALUES) {
|
|
271
|
+
const rem5 = 100 - (VALUES["ratelimit.5h"] ?? 0);
|
|
272
|
+
const rem7 = "ratelimit.7d" in VALUES ? 100 - VALUES["ratelimit.7d"] : 100;
|
|
273
|
+
headroom = Math.min(rem5, rem7);
|
|
274
|
+
} else {
|
|
275
|
+
headroom = 100 - (VALUES["context.hp"] ?? 0);
|
|
276
|
+
}
|
|
277
|
+
return thresholds.filter((t) => headroom < t).length;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export function buildBar(cfg, target, spriteFor) {
|
|
281
|
+
if (!spriteFor) spriteFor = (hp) => `STFST${hp}1`;
|
|
282
|
+
|
|
283
|
+
const bar = cfg.bar || {};
|
|
284
|
+
const style = bar.border_style ?? "vertical";
|
|
285
|
+
const headers = (bar.headers ?? true) && style !== "frame";
|
|
286
|
+
const boxRgb = rgbOf(bar.box_background ?? "term-bg");
|
|
287
|
+
const bcol = bar.border_color ?? "term-fg";
|
|
288
|
+
const mugRgb = rgbOf((cfg.mugshot || {}).background ?? "#000000");
|
|
289
|
+
|
|
290
|
+
// availability: drop metrics whose value is absent; collapse empty boxes.
|
|
291
|
+
const segs = [];
|
|
292
|
+
for (const s of cfg.segment) {
|
|
293
|
+
if (s.type === "mugshot") { segs.push(s); continue; }
|
|
294
|
+
const mets = s.metric.filter(available);
|
|
295
|
+
if (mets.length) segs.push({ ...s, metric: mets });
|
|
296
|
+
}
|
|
297
|
+
const boxes = segs.filter((s) => s.type === "box");
|
|
298
|
+
const rowcount = (b) => b.metric.reduce((n, m) =>
|
|
299
|
+
n + (m.render === "list" ? (VALUES[m.id] || []).length : (m.render === "scroll" ? 0 : 1)), 0);
|
|
300
|
+
const dataRows = boxes.length ? Math.max(...boxes.map(rowcount)) : 0;
|
|
301
|
+
const headersExtra = headers ? 1 : 0;
|
|
302
|
+
const totalRows = Math.max(dataRows + headersExtra, 4); // 4 = mugshot floor
|
|
303
|
+
|
|
304
|
+
const hp = hpRow();
|
|
305
|
+
const face = loadFace(spriteFor(hp), totalRows);
|
|
306
|
+
const faceW = Math.max(...face.map((r) => r.length));
|
|
307
|
+
|
|
308
|
+
const colWidths = (cells) => {
|
|
309
|
+
const ws = [];
|
|
310
|
+
let mug = null;
|
|
311
|
+
segs.forEach((s, i) => {
|
|
312
|
+
if (s.type === "mugshot") { ws.push(faceW + 2); mug = i; }
|
|
313
|
+
else ws.push(boxWidth(s, cells) + 2);
|
|
314
|
+
});
|
|
315
|
+
return [ws, mug];
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
const balancedWidth = (cells) => {
|
|
319
|
+
const [ws, mug] = colWidths(cells);
|
|
320
|
+
if (mug === null) return ws.reduce((a, b) => a + b, 0) + (ws.length - 1);
|
|
321
|
+
const left = ws.slice(0, mug).reduce((a, b) => a + b, 0) + mug;
|
|
322
|
+
const right = ws.slice(mug + 1).reduce((a, b) => a + b, 0) + (ws.length - 1 - mug);
|
|
323
|
+
return 2 * Math.max(left, right) + ws[mug];
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
let cells = 4;
|
|
327
|
+
for (let c = 14; c >= 4; c--) {
|
|
328
|
+
if (balancedWidth(c) <= target) { cells = c; break; }
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
const columns = [];
|
|
332
|
+
let mugIdx = null;
|
|
333
|
+
for (const s of segs) {
|
|
334
|
+
if (s.type === "mugshot") {
|
|
335
|
+
mugIdx = columns.length;
|
|
336
|
+
columns.push(Array.from({ length: totalRows }, (_, r) => faceCell(face[r], faceW, mugRgb)));
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
const w = boxWidth(s, cells);
|
|
340
|
+
const col = [];
|
|
341
|
+
if (headers) {
|
|
342
|
+
const t = s.title || "";
|
|
343
|
+
const pad = w - vlen(t);
|
|
344
|
+
const left = Math.floor(pad / 2);
|
|
345
|
+
col.push(bgsgrBox(boxRgb) + BOLD + f(TITLE) + " " + " ".repeat(left) + t + " ".repeat(pad - left) + " " + RESET);
|
|
346
|
+
}
|
|
347
|
+
for (const m of s.metric) {
|
|
348
|
+
if (m.render === "list") {
|
|
349
|
+
const icon = m.icon || "";
|
|
350
|
+
const lbl = icon ? icon + " " : "";
|
|
351
|
+
for (const item of VALUES[m.id] || []) {
|
|
352
|
+
let body;
|
|
353
|
+
if (Array.isArray(item) && item.length === 2) {
|
|
354
|
+
const left = lbl + f(TEXT) + String(item[0]);
|
|
355
|
+
const right = f(TEXT) + String(item[1]);
|
|
356
|
+
body = left + " ".repeat(Math.max(0, w - vlen(left) - vlen(right))) + right;
|
|
357
|
+
} else {
|
|
358
|
+
body = lbl + f(TEXT) + String(item);
|
|
359
|
+
body += " ".repeat(Math.max(0, w - vlen(body)));
|
|
360
|
+
}
|
|
361
|
+
col.push(bgsgrBox(boxRgb) + " " + body + " " + RESET);
|
|
362
|
+
}
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
if (m.render === "scroll") {
|
|
366
|
+
const icon = m.icon || "";
|
|
367
|
+
const lbl = icon ? icon + " " : "";
|
|
368
|
+
const items = VALUES[m.id] || [];
|
|
369
|
+
const H = totalRows - (headers ? 1 : 0);
|
|
370
|
+
const boundary = items.filter((it) => !Array.isArray(it) &&
|
|
371
|
+
(it.mark === "✓" || it.mark === "✗")).length; // settled count (ignored for top anchor)
|
|
372
|
+
const win = scrollWindow(items.length, H, m.anchor || "top", boundary);
|
|
373
|
+
const shown = items.slice(win.start, win.start + H);
|
|
374
|
+
shown.forEach((item, k) => {
|
|
375
|
+
const first = k === 0, last = k === shown.length - 1;
|
|
376
|
+
const over = first && win.up > 0 ? `↑${win.up} ` : last && win.down > 0 ? `↓${win.down} ` : "";
|
|
377
|
+
let body;
|
|
378
|
+
if (Array.isArray(item)) { // [left, right] (agents)
|
|
379
|
+
const right = f(TEXT) + String(item[1]);
|
|
380
|
+
const prefix = over + lbl; // ↑k/↓k marker + icon
|
|
381
|
+
const labelMax = Math.max(0, w - vlen(prefix) - vlen(String(item[1])) - 1); // 1 = min gap
|
|
382
|
+
let label = String(item[0]);
|
|
383
|
+
if (vlen(label) > labelMax) label = [...label].slice(0, Math.max(0, labelMax - 1)).join("") + "…";
|
|
384
|
+
const left = prefix + f(TEXT) + label;
|
|
385
|
+
const room = Math.max(0, w - vlen(left) - vlen(right));
|
|
386
|
+
body = left + " ".repeat(room) + right;
|
|
387
|
+
} else { // {mark, markRgb, text} (tasks)
|
|
388
|
+
const markCol = item.markRgb ? f(item.markRgb) : f(TEXT);
|
|
389
|
+
let text = String(item.text);
|
|
390
|
+
const head = over + markCol + String(item.mark) + " " + f(TEXT);
|
|
391
|
+
const max = w - vlen(over) - vlen(String(item.mark)) - 1;
|
|
392
|
+
if (vlen(text) > max) text = [...text].slice(0, Math.max(0, max - 1)).join("") + "…";
|
|
393
|
+
body = head + text;
|
|
394
|
+
body += " ".repeat(Math.max(0, w - vlen(body)));
|
|
395
|
+
}
|
|
396
|
+
col.push(bgsgrBox(boxRgb) + " " + body + " " + RESET);
|
|
397
|
+
});
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
let body = renderValue(m, m.render === "bar" ? cells : 0, boxRgb);
|
|
401
|
+
const rid = m.right;
|
|
402
|
+
const rhs = rid && rid in VALUES ? f(TEXT) + String(VALUES[rid]) : "";
|
|
403
|
+
body += " ".repeat(Math.max(0, w - vlen(body) - vlen(rhs))) + rhs;
|
|
404
|
+
col.push(bgsgrBox(boxRgb) + " " + body + " " + RESET);
|
|
405
|
+
}
|
|
406
|
+
while (col.length < totalRows) col.push(bgsgrBox(boxRgb) + " ".repeat(w + 2) + RESET);
|
|
407
|
+
columns.push(col);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
let sepstr;
|
|
411
|
+
if (style === "none") sepstr = isTerm(boxRgb) ? RESET + " " : bgsgrBox(boxRgb) + " ";
|
|
412
|
+
else if (bcol === "term-bg") sepstr = RESET + " ";
|
|
413
|
+
else sepstr = bgsgrBox(boxRgb) + borderFg(bcol) + "│";
|
|
414
|
+
|
|
415
|
+
const lines = [];
|
|
416
|
+
for (let r = 0; r < totalRows; r++) {
|
|
417
|
+
if (mugIdx === null) {
|
|
418
|
+
const body = columns.map((c) => c[r]).join(sepstr);
|
|
419
|
+
const outer = Math.max(0, Math.floor((target - columns.reduce((a, c) => a + vlen(c[r]), 0) - (columns.length - 1)) / 2));
|
|
420
|
+
lines.push(RESET + " ".repeat(outer) + body + RESET);
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
let leftSeg = "";
|
|
424
|
+
for (let i = 0; i < mugIdx; i++) leftSeg += (i ? sepstr : "") + columns[i][r];
|
|
425
|
+
if (mugIdx) leftSeg += sepstr;
|
|
426
|
+
let rightSeg = "";
|
|
427
|
+
for (let j = mugIdx + 1; j < columns.length; j++) rightSeg += sepstr + columns[j][r];
|
|
428
|
+
const lw = vlen(leftSeg), rw = vlen(rightSeg), mw = vlen(columns[mugIdx][r]);
|
|
429
|
+
const side = Math.max(lw, rw);
|
|
430
|
+
let outer;
|
|
431
|
+
if (2 * side + mw <= target) {
|
|
432
|
+
leftSeg = " ".repeat(side - lw) + leftSeg;
|
|
433
|
+
rightSeg = rightSeg + " ".repeat(side - rw);
|
|
434
|
+
outer = Math.floor((target - (2 * side + mw)) / 2);
|
|
435
|
+
} else {
|
|
436
|
+
outer = Math.max(0, Math.floor((target - (lw + mw + rw)) / 2));
|
|
437
|
+
}
|
|
438
|
+
lines.push(RESET + " ".repeat(outer) + leftSeg + columns[mugIdx][r] + rightSeg + RESET);
|
|
439
|
+
}
|
|
440
|
+
return { lines, style, headers, cells, hp };
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// Preview CLI: node src/render.js [PRESET.toml] [width]
|
|
444
|
+
function main() {
|
|
445
|
+
const arg = process.argv[2];
|
|
446
|
+
let p;
|
|
447
|
+
if (arg) {
|
|
448
|
+
p = path.isAbsolute(arg) ? arg : path.join(process.cwd(), arg);
|
|
449
|
+
try { readFileSync(p); } catch { p = path.join(REPO, "presets", path.basename(arg)); }
|
|
450
|
+
} else {
|
|
451
|
+
p = path.join(REPO, "presets", "default.toml");
|
|
452
|
+
}
|
|
453
|
+
const target = process.argv[3] ? parseInt(process.argv[3], 10) : 100;
|
|
454
|
+
const cfg = parseToml(readFileSync(p, "utf8"));
|
|
455
|
+
const res = buildBar(cfg, target);
|
|
456
|
+
const out = ["", ` preset: ${path.basename(p)} style=${res.style} headers=${res.headers} bar=${res.cells}`, ""];
|
|
457
|
+
out.push(...res.lines, "");
|
|
458
|
+
process.stdout.write(out.join("\n") + "\n");
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
if (process.argv[1] && fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) {
|
|
462
|
+
main();
|
|
463
|
+
}
|