termcast 1.3.50 → 1.3.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/apis/environment.d.ts +1 -0
  2. package/dist/apis/environment.d.ts.map +1 -1
  3. package/dist/apis/environment.js +5 -0
  4. package/dist/apis/environment.js.map +1 -1
  5. package/dist/app.d.ts +33 -0
  6. package/dist/app.d.ts.map +1 -0
  7. package/dist/app.js +1130 -0
  8. package/dist/app.js.map +1 -0
  9. package/dist/cli.js +80 -0
  10. package/dist/cli.js.map +1 -1
  11. package/dist/compile.d.ts.map +1 -1
  12. package/dist/compile.js +5 -2
  13. package/dist/compile.js.map +1 -1
  14. package/dist/components/actions.d.ts +4 -1
  15. package/dist/components/actions.d.ts.map +1 -1
  16. package/dist/components/actions.js +8 -5
  17. package/dist/components/actions.js.map +1 -1
  18. package/dist/components/detail.d.ts.map +1 -1
  19. package/dist/components/detail.js +21 -18
  20. package/dist/components/detail.js.map +1 -1
  21. package/dist/components/dropdown.d.ts.map +1 -1
  22. package/dist/components/dropdown.js +3 -2
  23. package/dist/components/dropdown.js.map +1 -1
  24. package/dist/components/footer.d.ts +6 -0
  25. package/dist/components/footer.d.ts.map +1 -1
  26. package/dist/components/footer.js +15 -6
  27. package/dist/components/footer.js.map +1 -1
  28. package/dist/components/form/checkbox.d.ts.map +1 -1
  29. package/dist/components/form/checkbox.js +1 -13
  30. package/dist/components/form/checkbox.js.map +1 -1
  31. package/dist/components/form/date-picker.js +2 -2
  32. package/dist/components/form/date-picker.js.map +1 -1
  33. package/dist/components/form/description.js +1 -1
  34. package/dist/components/form/description.js.map +1 -1
  35. package/dist/components/form/dropdown.d.ts.map +1 -1
  36. package/dist/components/form/dropdown.js +19 -3
  37. package/dist/components/form/dropdown.js.map +1 -1
  38. package/dist/components/form/file-picker.d.ts.map +1 -1
  39. package/dist/components/form/file-picker.js +22 -4
  40. package/dist/components/form/file-picker.js.map +1 -1
  41. package/dist/components/form/index.d.ts +3 -1
  42. package/dist/components/form/index.d.ts.map +1 -1
  43. package/dist/components/form/index.js +7 -5
  44. package/dist/components/form/index.js.map +1 -1
  45. package/dist/components/form/password-field.js +3 -3
  46. package/dist/components/form/password-field.js.map +1 -1
  47. package/dist/components/form/text-area.d.ts.map +1 -1
  48. package/dist/components/form/text-area.js +29 -6
  49. package/dist/components/form/text-area.js.map +1 -1
  50. package/dist/components/form/text-field.js +3 -3
  51. package/dist/components/form/text-field.js.map +1 -1
  52. package/dist/components/graph.d.ts.map +1 -1
  53. package/dist/components/graph.js +21 -25
  54. package/dist/components/graph.js.map +1 -1
  55. package/dist/components/heatmap.d.ts +80 -0
  56. package/dist/components/heatmap.d.ts.map +1 -0
  57. package/dist/components/heatmap.js +424 -0
  58. package/dist/components/heatmap.js.map +1 -0
  59. package/dist/components/list.d.ts +2 -0
  60. package/dist/components/list.d.ts.map +1 -1
  61. package/dist/components/list.js +91 -58
  62. package/dist/components/list.js.map +1 -1
  63. package/dist/components/markdown.d.ts +7 -0
  64. package/dist/components/markdown.d.ts.map +1 -0
  65. package/dist/components/markdown.js +19 -0
  66. package/dist/components/markdown.js.map +1 -0
  67. package/dist/components/metadata.d.ts.map +1 -1
  68. package/dist/components/metadata.js +4 -1
  69. package/dist/components/metadata.js.map +1 -1
  70. package/dist/components/progress-bar.d.ts +37 -0
  71. package/dist/components/progress-bar.d.ts.map +1 -0
  72. package/dist/components/progress-bar.js +34 -0
  73. package/dist/components/progress-bar.js.map +1 -0
  74. package/dist/components/table.d.ts +3 -2
  75. package/dist/components/table.d.ts.map +1 -1
  76. package/dist/components/table.js +78 -63
  77. package/dist/components/table.js.map +1 -1
  78. package/dist/diagram-parser.d.ts +17 -3
  79. package/dist/diagram-parser.d.ts.map +1 -1
  80. package/dist/diagram-parser.js +17 -3
  81. package/dist/diagram-parser.js.map +1 -1
  82. package/dist/examples/list-slot.d.ts +2 -0
  83. package/dist/examples/list-slot.d.ts.map +1 -0
  84. package/dist/examples/list-slot.js +14 -0
  85. package/dist/examples/list-slot.js.map +1 -0
  86. package/dist/examples/list-with-dropdown.js +2 -4
  87. package/dist/examples/list-with-dropdown.js.map +1 -1
  88. package/dist/examples/simple-heatmap.d.ts +2 -0
  89. package/dist/examples/simple-heatmap.d.ts.map +1 -0
  90. package/dist/examples/simple-heatmap.js +37 -0
  91. package/dist/examples/simple-heatmap.js.map +1 -0
  92. package/dist/examples/simple-progress-bar.d.ts +2 -0
  93. package/dist/examples/simple-progress-bar.d.ts.map +1 -0
  94. package/dist/examples/simple-progress-bar.js +36 -0
  95. package/dist/examples/simple-progress-bar.js.map +1 -0
  96. package/dist/index.d.ts +6 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +6 -0
  99. package/dist/index.js.map +1 -1
  100. package/dist/internal/date-picker-widget.d.ts.map +1 -1
  101. package/dist/internal/date-picker-widget.js +5 -4
  102. package/dist/internal/date-picker-widget.js.map +1 -1
  103. package/dist/internal/navigation.d.ts.map +1 -1
  104. package/dist/internal/navigation.js +7 -2
  105. package/dist/internal/navigation.js.map +1 -1
  106. package/dist/internal/providers.d.ts.map +1 -1
  107. package/dist/internal/providers.js +42 -4
  108. package/dist/internal/providers.js.map +1 -1
  109. package/dist/logger.js +6 -1
  110. package/dist/logger.js.map +1 -1
  111. package/dist/state.d.ts +2 -0
  112. package/dist/state.d.ts.map +1 -1
  113. package/dist/state.js +31 -2
  114. package/dist/state.js.map +1 -1
  115. package/dist/theme.d.ts +1 -0
  116. package/dist/theme.d.ts.map +1 -1
  117. package/dist/theme.js +23 -1
  118. package/dist/theme.js.map +1 -1
  119. package/dist/utils.d.ts.map +1 -1
  120. package/dist/utils.js +6 -1
  121. package/dist/utils.js.map +1 -1
  122. package/package.json +3 -3
  123. package/src/apis/environment.tsx +6 -0
  124. package/src/app.tsx +1492 -0
  125. package/src/assets/default-app-icon.png +0 -0
  126. package/src/cli.tsx +105 -0
  127. package/src/compile.tsx +5 -2
  128. package/src/components/actions.tsx +9 -6
  129. package/src/components/detail.tsx +33 -23
  130. package/src/components/dropdown.tsx +3 -2
  131. package/src/components/footer.tsx +40 -7
  132. package/src/components/form/checkbox.tsx +2 -17
  133. package/src/components/form/date-picker.tsx +2 -2
  134. package/src/components/form/description.tsx +1 -1
  135. package/src/components/form/dropdown.tsx +22 -3
  136. package/src/components/form/file-picker.tsx +33 -10
  137. package/src/components/form/index.tsx +11 -7
  138. package/src/components/form/password-field.tsx +3 -3
  139. package/src/components/form/text-area.tsx +31 -6
  140. package/src/components/form/text-field.tsx +3 -3
  141. package/src/components/graph.tsx +21 -24
  142. package/src/components/heatmap.tsx +602 -0
  143. package/src/components/list.tsx +147 -78
  144. package/src/components/markdown.tsx +30 -0
  145. package/src/components/metadata.tsx +9 -2
  146. package/src/components/progress-bar.tsx +112 -0
  147. package/src/components/table.tsx +88 -71
  148. package/src/diagram-parser.tsx +17 -3
  149. package/src/examples/bar-graph-weekly.vitest.tsx +4 -4
  150. package/src/examples/detail-metadata-showcase.vitest.tsx +12 -12
  151. package/src/examples/form-basic.vitest.tsx +117 -16
  152. package/src/examples/graph-bar-chart.vitest.tsx +7 -7
  153. package/src/examples/graph-row.vitest.tsx +45 -45
  154. package/src/examples/graph-styles.vitest.tsx +19 -19
  155. package/src/examples/internal/descendants-rerender.vitest.tsx +94 -46
  156. package/src/examples/internal/simple-scrollbox.vitest.tsx +38 -14
  157. package/src/examples/list-dropdown-default.vitest.tsx +78 -58
  158. package/src/examples/list-slot.tsx +38 -0
  159. package/src/examples/list-with-detail.vitest.tsx +8 -8
  160. package/src/examples/list-with-dropdown.tsx +2 -2
  161. package/src/examples/list-with-dropdown.vitest.tsx +16 -16
  162. package/src/examples/list-with-sections.vitest.tsx +45 -32
  163. package/src/examples/simple-detail-table.vitest.tsx +2 -2
  164. package/src/examples/simple-file-picker.vitest.tsx +1 -1
  165. package/src/examples/simple-grid.vitest.tsx +27 -53
  166. package/src/examples/simple-heatmap.tsx +63 -0
  167. package/src/examples/simple-heatmap.vitest.tsx +88 -0
  168. package/src/examples/simple-progress-bar.tsx +82 -0
  169. package/src/examples/simple-progress-bar.vitest.tsx +72 -0
  170. package/src/examples/table-edge-cases.vitest.tsx +1 -1
  171. package/src/index.tsx +19 -0
  172. package/src/internal/date-picker-widget.tsx +23 -12
  173. package/src/internal/navigation.tsx +7 -2
  174. package/src/internal/providers.tsx +48 -3
  175. package/src/logger.tsx +6 -1
  176. package/src/state.tsx +38 -2
  177. package/src/theme.tsx +26 -2
  178. package/src/utils.tsx +6 -1
@@ -39,17 +39,17 @@ test('side detail shows two graphs in a row', async () => {
39
39
  Mixed Variants Area left, Striped right │ Filled chart (right) shows memory steadily
40
40
  Sparse Data (Zeros) Filled vs Striped with zer │ climbing.
41
41
 
42
- │ 100│ ⡀ 100│
43
- │ │ ⣼⣷⡀▄▄▀▀
44
- │ 67│ ⣸⣿⡄ ⣸⣿⣿⣧ 67│ ▄▄▀▀▀▀▀▀▀
45
- │ │ ⣼⣶⣿⣿⣷⡀ ⢰⣿⣿⣿⣿⣧▄▄▀▀▀▀▀▀▀▀▀▀▀▀
46
- │ │ ⢸⣿⣿⣿⣿⣿⣷⣀⣿⣿⣿⣿⣿⣿⣇ │▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
47
- │ 33│⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
48
- │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
49
- │ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
50
- │ 0h 6h 12h 18h24h 0h 6h 12h 18h24h
42
+ │ 100│ ⡀ 100│
43
+ │ │ ⢠⣾⣷⡀▖▖▌▌
44
+ │ 67│ ⣰⣿⣧ ⢀⣿⣿⣿⣇ 67│ ▖▖▌▌▌▌▌▌▌
45
+ │ │ ⢠⣷⣿⣿⣿⣆ ⣾⣿⣿⣿⣿⡄▖▖▌▌▌▌▌▌▌▌▌▌▌▌
46
+ │ │ ⢀⣿⣿⣿⣿⣿⣿⣆⣸⣿⣿⣿⣿⣿⣿⣄ │▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
47
+ │ 33│⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
48
+ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
49
+ │ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
50
+ │ 0h 6h 12h 18h24h 0h 6h 12h 18h24h
51
51
 
52
- ───────────────────────────────────────────
52
+ ────────────────────────────────────────────
53
53
 
54
54
  │ CPU Peak: 90%
55
55
 
@@ -96,17 +96,17 @@ test('enter pushes full detail with two graphs', async () => {
96
96
  Filled chart (right) shows memory steadily climbing.
97
97
 
98
98
  100│ 100│
99
- │ ⢀⣠⣴⡄ │
100
- │ ⣠⣦ ⣠⣿⣿⣿⣿⣦ │ ▄▄▄▄▄▀▀▀▀▀
101
- │ ⢠⣾⣿⣿⣷⡄ ⢀⣼⣿⣿⣿⣿⣿⣿⣷⡀ │ ▄▄▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
102
- 67│ ⢀⡀ ⣰⣿⣿⣿⣿⣿⣿⡄ ⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀ 67│ ▄▄▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
103
- │ ⢠⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⡄ ⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄ │ ▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
104
- │ ⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀ ⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⡀ │ ▄▄▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
105
- 33│ ⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄ 33│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
106
- │⣀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷ │▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
107
- │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
108
- │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
109
- 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
99
+ │ ⢀⣠⣴⡄ │
100
+ │ ⣠⣦ ⣠⣿⣿⣿⣿⣦ │ ▖▖▖▖▖▌▌▌▌▌
101
+ │ ⢠⣾⣿⣿⣷⡄ ⢀⣼⣿⣿⣿⣿⣿⣿⣷⡀ │ ▖▖▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
102
+ 67│ ⢀⡀ ⣰⣿⣿⣿⣿⣿⣿⡄ ⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀ 67│ ▖▖▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
103
+ │ ⢠⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⡄ ⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄ │ ▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
104
+ │ ⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀ ⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⡀ │ ▖▖▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
105
+ 33│ ⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
106
+ │⣀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
107
+ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
108
+ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
109
+ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
110
110
 
111
111
 
112
112
  esc go back ^k actions ↵ Go Back powered by termcast.app
@@ -159,13 +159,13 @@ test('esc returns from detail to list', async () => {
159
159
  Sparse Data (Zeros) Filled vs Striped with zer │ climbing.
160
160
 
161
161
  │ 100│ ⡀ 100│
162
- │ │ ⣠ ⢠⣾⣷⡀ │ ▄▄▀▀
163
- │ 67│ ⣰⣿⣧ ⢀⣿⣿⣿⣇ 67│ ▄▄▀▀▀▀▀▀▀
164
- │ │ ⢠⣷⣿⣿⣿⣆ ⣾⣿⣿⣿⣿⡄ │ ▄▄▀▀▀▀▀▀▀▀▀▀▀▀
165
- │ │ ⢀⣿⣿⣿⣿⣿⣿⣆⣸⣿⣿⣿⣿⣿⣿⣄ │▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
166
- │ 33│⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
167
- │ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
168
- │ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
162
+ │ │ ⣠ ⢠⣾⣷⡀ │ ▖▖▌▌
163
+ │ 67│ ⣰⣿⣧ ⢀⣿⣿⣿⣇ 67│ ▖▖▌▌▌▌▌▌▌
164
+ │ │ ⢠⣷⣿⣿⣿⣆ ⣾⣿⣿⣿⣿⡄ │ ▖▖▌▌▌▌▌▌▌▌▌▌▌▌
165
+ │ │ ⢀⣿⣿⣿⣿⣿⣿⣆⣸⣿⣿⣿⣿⣿⣿⣄ │▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
166
+ │ 33│⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
167
+ │ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
168
+ │ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
169
169
  │ 0h 6h 12h 18h24h 0h 6h 12h 18h24h
170
170
 
171
171
  │ ────────────────────────────────────────────
@@ -215,14 +215,14 @@ test('sparse data with zeros shows baseline', async () => {
215
215
  Mixed Variants Area left, Striped right │ baseline line so bars are visible even at
216
216
  ›Sparse Data (Zeros) Filled vs Striped with zer │ zero.
217
217
 
218
- │ 100│ 100│
219
- │ │ ▄▀ ▄▀
220
- │ 67│ ▀▀ 67│ ▀▀
221
- │ │ ▀▀ ▄▀ ▀▀▀▀ ▄▀ ▀▀
222
- │ │ ▀▀ ▀▀ ▀▀▄▀▀ ▀▀ ▀▀▄
223
- │ 33│ ▀▀▀ ▀▀▄▀▀▀▀ 33│ ▀▀▀ ▀▀▄ ▀▀▀
224
- │ │ ▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀
225
- │ 0│▁▀▀▀▀▀▀▀▁▀▀▀▀▀▀▀▀▁ 0│▁▀▀▀▀▀▀▀▀▀▀▀▁▀▀▀▁
218
+ │ 100│ 100│
219
+ │ │ ▖▌ ▖▌
220
+ │ 67│ ▌▌ 67│ ▌▌
221
+ │ │ ▌▌ ▖▌ ▌▌▌▌ ▖▌ ▌▌
222
+ │ │ ▌▌ ▌▌ ▌▌▖▌▌ ▌▌ ▌▌▖
223
+ │ 33│ ▌▌▌ ▌▌▖▌▌▌▌ 33│ ▌▌▌ ▌▌▖ ▌▌▌
224
+ │ │ ▌▌▌▌▌▌ ▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌ ▌▌▌
225
+ │ 0│▖▌▌▌▌▌▌▌▖▌▌▌▌▌▌▌▌▖ 0│▖▌▌▌▌▌▌▌▌▌▌▌▖▌▌▌▖
226
226
  │ 0h 6h 12h 18h24h 0h 6h 12h 18h24h
227
227
 
228
228
  │ ────────────────────────────────────────────
@@ -273,14 +273,14 @@ test('navigate to striped pair', async () => {
273
273
  │ - Expenses: $8k to $45k
274
274
 
275
275
 
276
- │ 78│ 47│
277
- │ │ ▄▀▀▀▄▄▀▀▀
278
- │ 54│ ▄▀▀▀▀▀ 33│ ▄▄▀▀▀▀▀
279
- │ │ ▄▄▀▀▀▀▀▀▀▄▀▀▀▀▀▀▀▀
280
- │ │ ▀▀▀▀▀▀▀▀▀▀▄▄▀▀▀▀▀▀▀▀▀▀
281
- │ 31│ ▄▀▀▀▀▀▀▀▀▀▀▀▀▀ 20│ ▄▀▀▀▀▀▀▀▀▀▀▀▀▀
282
- │ │ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
283
- │ 7│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ 6│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
276
+ │ 78│ 47│
277
+ │ │ ▖▌▌▌▖▖▌▌▌
278
+ │ 54│ ▖▌▌▌▌▌ 33│ ▖▖▌▌▌▌▌
279
+ │ │ ▖▖▌▌▌▌▌▌▌▖▌▌▌▌▌▌▌▌
280
+ │ │ ▌▌▌▌▌▌▌▌▌▌▖▖▌▌▌▌▌▌▌▌▌▌
281
+ │ 31│ ▖▌▌▌▌▌▌▌▌▌▌▌▌▌ 20│ ▖▌▌▌▌▌▌▌▌▌▌▌▌▌
282
+ │ │ ▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
283
+ │ 7│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌ 6│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
284
284
  │ Jan Apr Jul Oct Jan Apr Jul Oct
285
285
 
286
286
  │ ───────────────────────────────────────────
@@ -291,5 +291,5 @@ test('navigate to striped pair', async () => {
291
291
  `)
292
292
 
293
293
  expect(text).toContain('›Revenue vs Expenses')
294
- expect(text).toMatch(/[▄▀]/)
294
+ expect(text).toMatch(/[▌▘▖]/)
295
295
  }, 30000)
@@ -93,18 +93,18 @@ test('filled style renders block characters', async () => {
93
93
  Filled - Yellow CPU High contrast on │ Q2: $25k → Q3: $50k (+100%)
94
94
  Filled - Magenta Waves Smooth curve │ Q3: $50k → Q4: $75k (+50%)
95
95
  Striped - Purple/Orange Warm alterna │
96
- Striped - Blue/Red High contrast str │ 78│
97
- Striped - Theme Default primary + ac │ │ ▄▀▄▀▀
98
- Striped - Green/Yellow Nature-inspir │ │ ▄▄▄▀▀▀▀▀▀
99
- Striped - Red/Magenta Warm gradient │ 54│ ▄▀▀▀▀▀▀▀▀▀▀
100
- │ │ ▄▄▄▀▀▀▀▀▀▀▀▀▀▀▀
101
- │ │ ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
102
- ↵ open detail ↑↓ navigate ^k act │ 31│ ▄▀▀▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
96
+ Striped - Blue/Red High contrast str │ 78│
97
+ Striped - Theme Default primary + ac │ │ ▖▌▖▌▌
98
+ Striped - Green/Yellow Nature-inspir │ │ ▖▖▖▌▌▌▌▌▌
99
+ Striped - Red/Magenta Warm gradient │ 54│ ▖▌▌▌▌▌▌▌▌▌▌
100
+ │ │ ▖▖▖▌▌▌▌▌▌▌▌▌▌▌▌
101
+ │ │ ▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
102
+ ↵ open detail ↑↓ navigate ^k act │ 31│ ▖▌▌▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
103
103
 
104
104
  "
105
105
  `)
106
106
 
107
- expect(text).toMatch(/[▄▀]/)
107
+ expect(text).toMatch(/[▌▘▖]/)
108
108
  expect(text).toContain('›Filled - Red')
109
109
  }, 30000)
110
110
 
@@ -136,16 +136,16 @@ test('striped style renders alternating columns', async () => {
136
136
 
137
137
  > Search...
138
138
 
139
- Area - Stock Price Orange braille do │ 211│
140
- Area - Multi Series CPU + Memory ove │ │ ▄▄▀▀
141
- Area - Waves Purple + Magenta sine/c │ │ ▄▄▄▀▀▀▀▀
142
- Area - Blue Revenue Single series, a │ 189│ ▄▄▀▄▀▀▀▀▀▀▀▀▀
143
- Filled - Red Revenue Solid block gro │ │ ▄▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀
144
- Filled - Green Temp Daily temperatur │ │ ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
145
- Filled - Yellow CPU High contrast on │ 167│ ▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
146
- Filled - Magenta Waves Smooth curve │ │ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
147
- ›Striped - Purple/Orange Warm alterna │ │▄▀▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
148
- Striped - Blue/Red High contrast str │ 145│▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
139
+ Area - Stock Price Orange braille do │ 211│
140
+ Area - Multi Series CPU + Memory ove │ │ ▖▖▌▌
141
+ Area - Waves Purple + Magenta sine/c │ │ ▖▖▖▌▌▌▌▌
142
+ Area - Blue Revenue Single series, a │ 189│ ▖▖▌▖▌▌▌▌▌▌▌▌▌
143
+ Filled - Red Revenue Solid block gro │ │ ▖▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌
144
+ Filled - Green Temp Daily temperatur │ │ ▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
145
+ Filled - Yellow CPU High contrast on │ 167│ ▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
146
+ Filled - Magenta Waves Smooth curve │ │ ▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
147
+ ›Striped - Purple/Orange Warm alterna │ │▖▌▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
148
+ Striped - Blue/Red High contrast str │ 145│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
149
149
  Striped - Theme Default primary + ac │ 1 5 10 15 20
150
150
  Striped - Green/Yellow Nature-inspir │
151
151
  Striped - Red/Magenta Warm gradient │ ─────────────────────────────────
@@ -156,7 +156,7 @@ test('striped style renders alternating columns', async () => {
156
156
  "
157
157
  `)
158
158
 
159
- expect(text).toMatch(/[▄▀]/)
159
+ expect(text).toMatch(/[▌▘▖]/)
160
160
  expect(text).toContain('›Striped - Purple')
161
161
  }, 30000)
162
162
 
@@ -30,17 +30,29 @@ test(
30
30
  [1] Banana (without hook, renders: 8)
31
31
  [2] Cherry (without hook, renders: 9)
32
32
 
33
- ┌──────────────────────────────────────────────────────────────────────────┐
34
-
35
- │ Render Counts:
36
- │ parent: 1
37
- │ parentWithHook: 0
38
- │ independentChild: 0
39
- │ independentChildWithHook: 0
40
- │ descendantItem: 3
41
- │ descendantItemWithHook: 0
42
-
43
- └──────────────────────────────────────────────────────────────────────────┘
33
+ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
34
+
35
+ │ Render Counts:
36
+ │ parent: 1
37
+ │ parentWithHook: 0
38
+ │ independentChild: 0
39
+ │ independentChildWithHook: 0
40
+ │ descendantItem: 3
41
+ │ descendantItemWithHook: 0
42
+
43
+ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
44
56
 
45
57
 
46
58
  "
@@ -75,17 +87,29 @@ test(
75
87
  [1] Banana (without hook, renders: 8)
76
88
  [2] Cherry (without hook, renders: 9)
77
89
 
78
- ┌──────────────────────────────────────────────────────────────────────────┐
79
-
80
- │ Render Counts:
81
- │ parent: 0
82
- │ parentWithHook: 1
83
- │ independentChild: 0
84
- │ independentChildWithHook: 0
85
- │ descendantItem: 3
86
- │ descendantItemWithHook: 0
87
-
88
- └──────────────────────────────────────────────────────────────────────────┘
90
+ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
91
+
92
+ │ Render Counts:
93
+ │ parent: 0
94
+ │ parentWithHook: 1
95
+ │ independentChild: 0
96
+ │ independentChildWithHook: 0
97
+ │ descendantItem: 3
98
+ │ descendantItemWithHook: 0
99
+
100
+ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
89
113
 
90
114
  "
91
115
  `)
@@ -115,26 +139,38 @@ test(
115
139
  "
116
140
 
117
141
 
118
- Items:i3:|i[a]padde|t[d]ideleteh|h[r] reset counts
119
-
142
+ Scenario: independent-child-with-hook
143
+ Items: 3 | [a] add | [d] delete | [r] reset counts
120
144
 
121
145
  Parent without hook - renders: 2
122
146
  Independent child with hook - renders: 3, items: 3
123
- [0]eApplen(withoutwhook,trenders:r7)ders: 2
147
+ Independent child without hook - renders: 2
148
+ [0] Apple (without hook, renders: 7)
124
149
  [1] Banana (without hook, renders: 8)
125
150
  [2] Cherry (without hook, renders: 9)
126
151
 
152
+ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
153
+ │ │
154
+ │ Render Counts: │
155
+ │ parent: 1 │
156
+ │ parentWithHook: 0 │
157
+ │ independentChild: 1 │
158
+ │ independentChildWithHook: 1 │
159
+ │ descendantItem: 3 │
160
+ │ descendantItemWithHook: 0 │
161
+ │ │
162
+ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
127
173
 
128
- ┌──────────────────────────────────────────────────────────────────────────┐
129
- │ │
130
- │ Reparent:u1ts: │
131
- │ parentWithHook: 0 │
132
- │ independentChild: 1 │
133
- │ independentChildWithHook: 1 │
134
- │ descendantItem: 3 │
135
- │ descendantItemWithHook: 0 │
136
- │ │
137
- └──────────────────────────────────────────────────────────────────────────┘
138
174
 
139
175
  "
140
176
  `)
@@ -172,17 +208,29 @@ test(
172
208
  [1] Banana (with hook, renders: 8, total: 3)
173
209
  [2] Cherry (with hook, renders: 9, total: 3)
174
210
 
175
- ┌──────────────────────────────────────────────────────────────────────────┐
176
-
177
- │ Render Counts:
178
- │ parent: 1
179
- │ parentWithHook: 0
180
- │ independentChild: 0
181
- │ independentChildWithHook: 0
182
- │ descendantItem: 0
183
- │ descendantItemWithHook: 3
184
-
185
- └──────────────────────────────────────────────────────────────────────────┘
211
+ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
212
+
213
+ │ Render Counts:
214
+ │ parent: 1
215
+ │ parentWithHook: 0
216
+ │ independentChild: 0
217
+ │ independentChildWithHook: 0
218
+ │ descendantItem: 0
219
+ │ descendantItemWithHook: 3
220
+
221
+ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+
186
234
 
187
235
 
188
236
  "
@@ -23,20 +23,32 @@ test('simple scrollbox navigation and scrolling', async () => {
23
23
 
24
24
 
25
25
  Simple ScrollBox Demo
26
-
27
- Item 1 - This is content for item number 1. Lorem ipsum dolor sit amet,
28
- consectetur adipiscing elit.
26
+
27
+ Item 1 - This is content for item number 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
29
28
 
30
29
 
31
30
 
32
- Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet,
33
- consectetur adipiscing elit.
31
+ Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
34
32
 
35
33
 
36
34
 
37
- Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet,
38
- consectetur adipiscing elit.
35
+ Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
36
+
37
+
38
+
39
+ Item 4 - This is content for item number 4. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
40
+
41
+
42
+
43
+ Item 5 - This is content for item number 5. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
44
+
45
+
46
+
47
+ Item 6 - This is content for item number 6. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
48
+
49
+
39
50
 
51
+ Item 7 - This is content for item number 7. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
40
52
 
41
53
 
42
54
 
@@ -59,22 +71,34 @@ test('simple scrollbox navigation and scrolling', async () => {
59
71
 
60
72
 
61
73
  Simple ScrollBox Demo
62
- Item 1 - This is content for item number 1. Lorem ipsum dolor sit amet,
63
- consectetur adipiscing elit.
74
+ Item 1 - This is content for item number 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. ▄
64
75
 
65
76
 
66
77
 
67
- Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet,
68
- consectetur adipiscing elit.
78
+ Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
69
79
 
70
80
 
71
81
 
72
- Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet,
73
- consectetur adipiscing elit.
82
+ Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
83
+
84
+
85
+
86
+ Item 4 - This is content for item number 4. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
87
+
88
+
89
+
90
+ Item 5 - This is content for item number 5. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
91
+
92
+
93
+
94
+ Item 6 - This is content for item number 6. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
95
+
96
+
97
+
98
+ Item 7 - This is content for item number 7. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
74
99
 
75
100
 
76
101
 
77
- Item 4 - This is content for item number 4. Lorem ipsum dolor sit amet,
78
102
 
79
103
  Use mouse scroll or arrow keys | Press [q] to quit
80
104