ratatui_ruby 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. checksums.yaml +4 -4
  2. data/.builds/ruby-3.2.yml +1 -1
  3. data/.builds/ruby-3.3.yml +1 -1
  4. data/.builds/ruby-3.4.yml +1 -1
  5. data/.builds/ruby-4.0.0.yml +1 -1
  6. data/AGENTS.md +10 -4
  7. data/CHANGELOG.md +79 -7
  8. data/README.md +37 -5
  9. data/REUSE.toml +2 -7
  10. data/doc/application_architecture.md +96 -22
  11. data/doc/application_testing.md +76 -30
  12. data/doc/contributors/architectural_overhaul/chat_conversations.md +4952 -0
  13. data/doc/contributors/architectural_overhaul/implementation_plan.md +60 -0
  14. data/doc/contributors/architectural_overhaul/task.md +37 -0
  15. data/doc/contributors/design/ruby_frontend.md +288 -56
  16. data/doc/contributors/design/rust_backend.md +349 -54
  17. data/doc/contributors/developing_examples.md +134 -49
  18. data/doc/contributors/index.md +7 -5
  19. data/doc/contributors/v1.0.0_blockers.md +1729 -0
  20. data/doc/event_handling.md +11 -3
  21. data/doc/images/app_all_events.png +0 -0
  22. data/doc/images/app_color_picker.png +0 -0
  23. data/doc/images/app_login_form.png +0 -0
  24. data/doc/images/app_stateful_interaction.png +0 -0
  25. data/doc/images/verify_quickstart_dsl.png +0 -0
  26. data/doc/images/verify_quickstart_layout.png +0 -0
  27. data/doc/images/verify_quickstart_lifecycle.png +0 -0
  28. data/doc/images/verify_readme_usage.png +0 -0
  29. data/doc/images/widget_barchart_demo.png +0 -0
  30. data/doc/images/widget_block_demo.png +0 -0
  31. data/doc/images/widget_canvas_demo.png +0 -0
  32. data/doc/images/widget_cell_demo.png +0 -0
  33. data/doc/images/widget_center_demo.png +0 -0
  34. data/doc/images/widget_chart_demo.png +0 -0
  35. data/doc/images/widget_list_demo.png +0 -0
  36. data/doc/images/widget_overlay_demo.png +0 -0
  37. data/doc/images/widget_render.png +0 -0
  38. data/doc/images/widget_rich_text.png +0 -0
  39. data/doc/images/widget_scroll_text.png +0 -0
  40. data/doc/images/widget_sparkline_demo.png +0 -0
  41. data/doc/images/widget_table_demo.png +0 -0
  42. data/doc/images/widget_tabs_demo.png +0 -0
  43. data/doc/images/widget_text_width.png +0 -0
  44. data/doc/index.md +11 -6
  45. data/doc/interactive_design.md +2 -2
  46. data/doc/quickstart.md +127 -165
  47. data/doc/terminal_limitations.md +92 -0
  48. data/doc/v0.7.0_migration.md +236 -0
  49. data/doc/why.md +93 -0
  50. data/examples/app_all_events/README.md +47 -27
  51. data/examples/app_all_events/app.rb +38 -35
  52. data/examples/app_all_events/model/app_model.rb +157 -0
  53. data/examples/app_all_events/model/event_entry.rb +17 -0
  54. data/examples/app_all_events/model/msg.rb +37 -0
  55. data/examples/app_all_events/update.rb +73 -0
  56. data/examples/app_all_events/view/app_view.rb +9 -9
  57. data/examples/app_all_events/view/controls_view.rb +9 -7
  58. data/examples/app_all_events/view/counts_view.rb +13 -9
  59. data/examples/app_all_events/view/live_view.rb +9 -8
  60. data/examples/app_all_events/view/log_view.rb +11 -16
  61. data/examples/app_color_picker/README.md +84 -42
  62. data/examples/app_color_picker/app.rb +24 -62
  63. data/examples/app_color_picker/controls.rb +90 -0
  64. data/examples/app_color_picker/copy_dialog.rb +45 -49
  65. data/examples/app_color_picker/export_pane.rb +126 -0
  66. data/examples/app_color_picker/input.rb +99 -67
  67. data/examples/app_color_picker/main_container.rb +178 -0
  68. data/examples/app_color_picker/palette.rb +55 -26
  69. data/examples/app_login_form/README.md +49 -0
  70. data/examples/app_login_form/app.rb +2 -3
  71. data/examples/app_stateful_interaction/README.md +33 -0
  72. data/examples/app_stateful_interaction/app.rb +272 -0
  73. data/examples/timeout_demo.rb +43 -0
  74. data/examples/verify_quickstart_dsl/README.md +49 -0
  75. data/examples/verify_quickstart_dsl/app.rb +2 -0
  76. data/examples/verify_quickstart_layout/README.md +71 -0
  77. data/examples/verify_quickstart_layout/app.rb +2 -0
  78. data/examples/verify_quickstart_lifecycle/README.md +56 -0
  79. data/examples/verify_quickstart_lifecycle/app.rb +10 -4
  80. data/examples/verify_readme_usage/README.md +43 -0
  81. data/examples/verify_readme_usage/app.rb +8 -2
  82. data/examples/widget_barchart_demo/README.md +50 -0
  83. data/examples/widget_barchart_demo/app.rb +5 -5
  84. data/examples/widget_block_demo/README.md +36 -0
  85. data/examples/widget_block_demo/app.rb +256 -0
  86. data/examples/widget_box_demo/README.md +45 -0
  87. data/examples/widget_calendar_demo/README.md +39 -0
  88. data/examples/widget_calendar_demo/app.rb +5 -1
  89. data/examples/widget_canvas_demo/README.md +27 -0
  90. data/examples/widget_canvas_demo/app.rb +123 -0
  91. data/examples/widget_cell_demo/README.md +36 -0
  92. data/examples/widget_cell_demo/app.rb +31 -24
  93. data/examples/widget_center_demo/README.md +29 -0
  94. data/examples/widget_center_demo/app.rb +116 -0
  95. data/examples/widget_chart_demo/README.md +41 -0
  96. data/examples/widget_chart_demo/app.rb +7 -2
  97. data/examples/widget_gauge_demo/README.md +41 -0
  98. data/examples/widget_layout_split/README.md +44 -0
  99. data/examples/widget_line_gauge_demo/README.md +41 -0
  100. data/examples/widget_list_demo/README.md +49 -0
  101. data/examples/widget_list_demo/app.rb +91 -107
  102. data/examples/widget_map_demo/README.md +39 -0
  103. data/examples/{app_map_demo → widget_map_demo}/app.rb +4 -4
  104. data/examples/widget_overlay_demo/README.md +36 -0
  105. data/examples/widget_overlay_demo/app.rb +248 -0
  106. data/examples/widget_popup_demo/README.md +36 -0
  107. data/examples/widget_ratatui_logo_demo/README.md +34 -0
  108. data/examples/widget_ratatui_logo_demo/app.rb +1 -1
  109. data/examples/widget_ratatui_mascot_demo/README.md +34 -0
  110. data/examples/widget_rect/README.md +38 -0
  111. data/examples/widget_render/README.md +37 -0
  112. data/examples/widget_render/app.rb +3 -3
  113. data/examples/widget_rich_text/README.md +35 -0
  114. data/examples/widget_rich_text/app.rb +62 -33
  115. data/examples/widget_scroll_text/README.md +37 -0
  116. data/examples/widget_scroll_text/app.rb +0 -1
  117. data/examples/widget_scrollbar_demo/README.md +37 -0
  118. data/examples/widget_sparkline_demo/README.md +42 -0
  119. data/examples/widget_sparkline_demo/app.rb +4 -3
  120. data/examples/widget_style_colors/README.md +34 -0
  121. data/examples/widget_table_demo/README.md +48 -0
  122. data/examples/{app_table_select → widget_table_demo}/app.rb +65 -12
  123. data/examples/widget_tabs_demo/README.md +41 -0
  124. data/examples/widget_tabs_demo/app.rb +15 -1
  125. data/examples/widget_text_width/README.md +35 -0
  126. data/examples/widget_text_width/app.rb +113 -0
  127. data/exe/.gitkeep +0 -0
  128. data/ext/ratatui_ruby/Cargo.lock +11 -4
  129. data/ext/ratatui_ruby/Cargo.toml +2 -1
  130. data/ext/ratatui_ruby/src/events.rs +238 -26
  131. data/ext/ratatui_ruby/src/frame.rs +116 -3
  132. data/ext/ratatui_ruby/src/lib.rs +37 -6
  133. data/ext/ratatui_ruby/src/rendering.rs +22 -21
  134. data/ext/ratatui_ruby/src/string_width.rs +101 -0
  135. data/ext/ratatui_ruby/src/terminal.rs +39 -15
  136. data/ext/ratatui_ruby/src/text.rs +13 -4
  137. data/ext/ratatui_ruby/src/widgets/barchart.rs +24 -6
  138. data/ext/ratatui_ruby/src/widgets/canvas.rs +5 -5
  139. data/ext/ratatui_ruby/src/widgets/gauge.rs +9 -2
  140. data/ext/ratatui_ruby/src/widgets/line_gauge.rs +9 -2
  141. data/ext/ratatui_ruby/src/widgets/list.rs +179 -3
  142. data/ext/ratatui_ruby/src/widgets/list_state.rs +137 -0
  143. data/ext/ratatui_ruby/src/widgets/mod.rs +3 -0
  144. data/ext/ratatui_ruby/src/widgets/scrollbar.rs +93 -1
  145. data/ext/ratatui_ruby/src/widgets/scrollbar_state.rs +169 -0
  146. data/ext/ratatui_ruby/src/widgets/table.rs +191 -34
  147. data/ext/ratatui_ruby/src/widgets/table_state.rs +121 -0
  148. data/lib/ratatui_ruby/buffer/cell.rb +168 -0
  149. data/lib/ratatui_ruby/buffer.rb +15 -0
  150. data/lib/ratatui_ruby/cell.rb +4 -4
  151. data/lib/ratatui_ruby/event/key/character.rb +35 -0
  152. data/lib/ratatui_ruby/event/key/media.rb +44 -0
  153. data/lib/ratatui_ruby/event/key/modifier.rb +95 -0
  154. data/lib/ratatui_ruby/event/key/navigation.rb +55 -0
  155. data/lib/ratatui_ruby/event/key/system.rb +45 -0
  156. data/lib/ratatui_ruby/event/key.rb +111 -51
  157. data/lib/ratatui_ruby/event/mouse.rb +3 -3
  158. data/lib/ratatui_ruby/event/paste.rb +1 -1
  159. data/lib/ratatui_ruby/frame.rb +100 -4
  160. data/lib/ratatui_ruby/layout/constraint.rb +95 -0
  161. data/lib/ratatui_ruby/layout/layout.rb +106 -0
  162. data/lib/ratatui_ruby/layout/rect.rb +118 -0
  163. data/lib/ratatui_ruby/layout.rb +19 -0
  164. data/lib/ratatui_ruby/list_state.rb +88 -0
  165. data/lib/ratatui_ruby/schema/bar_chart/bar.rb +2 -2
  166. data/lib/ratatui_ruby/schema/cursor.rb +5 -0
  167. data/lib/ratatui_ruby/schema/gauge.rb +3 -1
  168. data/lib/ratatui_ruby/schema/layout.rb +1 -1
  169. data/lib/ratatui_ruby/schema/line_gauge.rb +2 -2
  170. data/lib/ratatui_ruby/schema/list.rb +25 -4
  171. data/lib/ratatui_ruby/schema/list_item.rb +41 -0
  172. data/lib/ratatui_ruby/schema/rect.rb +43 -0
  173. data/lib/ratatui_ruby/schema/row.rb +66 -0
  174. data/lib/ratatui_ruby/schema/style.rb +24 -4
  175. data/lib/ratatui_ruby/schema/table.rb +29 -11
  176. data/lib/ratatui_ruby/schema/text.rb +96 -3
  177. data/lib/ratatui_ruby/scrollbar_state.rb +112 -0
  178. data/lib/ratatui_ruby/style/style.rb +81 -0
  179. data/lib/ratatui_ruby/style.rb +15 -0
  180. data/lib/ratatui_ruby/table_state.rb +90 -0
  181. data/lib/ratatui_ruby/test_helper/event_injection.rb +169 -0
  182. data/lib/ratatui_ruby/test_helper/snapshot.rb +414 -0
  183. data/lib/ratatui_ruby/test_helper/style_assertions.rb +351 -0
  184. data/lib/ratatui_ruby/test_helper/terminal.rb +127 -0
  185. data/lib/ratatui_ruby/test_helper/test_doubles.rb +68 -0
  186. data/lib/ratatui_ruby/test_helper.rb +65 -358
  187. data/lib/ratatui_ruby/tui/buffer_factories.rb +20 -0
  188. data/lib/ratatui_ruby/tui/canvas_factories.rb +44 -0
  189. data/lib/ratatui_ruby/tui/core.rb +38 -0
  190. data/lib/ratatui_ruby/tui/layout_factories.rb +74 -0
  191. data/lib/ratatui_ruby/tui/state_factories.rb +33 -0
  192. data/lib/ratatui_ruby/tui/style_factories.rb +20 -0
  193. data/lib/ratatui_ruby/tui/text_factories.rb +44 -0
  194. data/lib/ratatui_ruby/tui/widget_factories.rb +195 -0
  195. data/lib/ratatui_ruby/tui.rb +75 -0
  196. data/lib/ratatui_ruby/version.rb +1 -1
  197. data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +47 -0
  198. data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +25 -0
  199. data/lib/ratatui_ruby/widgets/bar_chart.rb +239 -0
  200. data/lib/ratatui_ruby/widgets/block.rb +192 -0
  201. data/lib/ratatui_ruby/widgets/calendar.rb +84 -0
  202. data/lib/ratatui_ruby/widgets/canvas.rb +231 -0
  203. data/lib/ratatui_ruby/widgets/cell.rb +47 -0
  204. data/lib/ratatui_ruby/widgets/center.rb +59 -0
  205. data/lib/ratatui_ruby/widgets/chart.rb +185 -0
  206. data/lib/ratatui_ruby/widgets/clear.rb +54 -0
  207. data/lib/ratatui_ruby/widgets/cursor.rb +42 -0
  208. data/lib/ratatui_ruby/widgets/gauge.rb +72 -0
  209. data/lib/ratatui_ruby/widgets/line_gauge.rb +80 -0
  210. data/lib/ratatui_ruby/widgets/list.rb +127 -0
  211. data/lib/ratatui_ruby/widgets/list_item.rb +43 -0
  212. data/lib/ratatui_ruby/widgets/overlay.rb +43 -0
  213. data/lib/ratatui_ruby/widgets/paragraph.rb +99 -0
  214. data/lib/ratatui_ruby/widgets/ratatui_logo.rb +31 -0
  215. data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +36 -0
  216. data/lib/ratatui_ruby/widgets/row.rb +68 -0
  217. data/lib/ratatui_ruby/widgets/scrollbar.rb +143 -0
  218. data/lib/ratatui_ruby/widgets/shape/label.rb +68 -0
  219. data/lib/ratatui_ruby/widgets/sparkline.rb +134 -0
  220. data/lib/ratatui_ruby/widgets/table.rb +141 -0
  221. data/lib/ratatui_ruby/widgets/tabs.rb +85 -0
  222. data/lib/ratatui_ruby/widgets.rb +40 -0
  223. data/lib/ratatui_ruby.rb +64 -57
  224. data/sig/examples/app_all_events/view.rbs +1 -1
  225. data/sig/examples/app_all_events/view_state.rbs +1 -1
  226. data/sig/examples/app_stateful_interaction/app.rbs +33 -0
  227. data/sig/examples/widget_block_demo/app.rbs +32 -0
  228. data/sig/examples/{app_map_demo → widget_map_demo}/app.rbs +2 -2
  229. data/sig/examples/{app_table_select → widget_table_demo}/app.rbs +2 -2
  230. data/sig/examples/{widget_table_flex → widget_text_width}/app.rbs +2 -3
  231. data/sig/ratatui_ruby/event.rbs +11 -1
  232. data/sig/ratatui_ruby/frame.rbs +2 -0
  233. data/sig/ratatui_ruby/list_state.rbs +13 -0
  234. data/sig/ratatui_ruby/ratatui_ruby.rbs +2 -2
  235. data/sig/ratatui_ruby/schema/bar_chart/bar.rbs +3 -3
  236. data/sig/ratatui_ruby/schema/gauge.rbs +2 -2
  237. data/sig/ratatui_ruby/schema/line_gauge.rbs +2 -2
  238. data/sig/ratatui_ruby/schema/list.rbs +4 -2
  239. data/sig/ratatui_ruby/schema/list_item.rbs +10 -0
  240. data/sig/ratatui_ruby/schema/rect.rbs +3 -0
  241. data/sig/ratatui_ruby/schema/row.rbs +22 -0
  242. data/sig/ratatui_ruby/schema/style.rbs +3 -3
  243. data/sig/ratatui_ruby/schema/table.rbs +3 -1
  244. data/sig/ratatui_ruby/schema/text.rbs +9 -6
  245. data/sig/ratatui_ruby/scrollbar_state.rbs +18 -0
  246. data/sig/ratatui_ruby/session.rbs +41 -48
  247. data/sig/ratatui_ruby/table_state.rbs +15 -0
  248. data/sig/ratatui_ruby/test_helper/event_injection.rbs +16 -0
  249. data/sig/ratatui_ruby/test_helper/snapshot.rbs +12 -0
  250. data/sig/ratatui_ruby/test_helper/style_assertions.rbs +64 -0
  251. data/sig/ratatui_ruby/test_helper/terminal.rbs +14 -0
  252. data/sig/ratatui_ruby/test_helper/test_doubles.rbs +22 -0
  253. data/sig/ratatui_ruby/test_helper.rbs +5 -4
  254. data/sig/ratatui_ruby/tui/buffer_factories.rbs +10 -0
  255. data/sig/ratatui_ruby/tui/canvas_factories.rbs +14 -0
  256. data/sig/ratatui_ruby/tui/core.rbs +14 -0
  257. data/sig/ratatui_ruby/tui/layout_factories.rbs +19 -0
  258. data/sig/ratatui_ruby/tui/state_factories.rbs +12 -0
  259. data/sig/ratatui_ruby/tui/style_factories.rbs +10 -0
  260. data/sig/ratatui_ruby/tui/text_factories.rbs +14 -0
  261. data/sig/ratatui_ruby/tui/widget_factories.rbs +39 -0
  262. data/sig/ratatui_ruby/tui.rbs +19 -0
  263. data/tasks/autodoc/examples.rb +79 -0
  264. data/tasks/autodoc.rake +7 -35
  265. data/tasks/bump/changelog.rb +3 -3
  266. data/tasks/bump/links.rb +67 -0
  267. data/tasks/sourcehut.rake +64 -21
  268. data/tasks/terminal_preview/app_screenshot.rb +13 -3
  269. data/tasks/terminal_preview/saved_screenshot.rb +4 -3
  270. metadata +169 -48
  271. data/doc/contributors/dwim_dx.md +0 -366
  272. data/doc/images/app_analytics.png +0 -0
  273. data/doc/images/app_custom_widget.png +0 -0
  274. data/doc/images/app_mouse_events.png +0 -0
  275. data/doc/images/app_table_select.png +0 -0
  276. data/doc/images/widget_block_padding.png +0 -0
  277. data/doc/images/widget_block_titles.png +0 -0
  278. data/doc/images/widget_list_styles.png +0 -0
  279. data/doc/images/widget_table_flex.png +0 -0
  280. data/examples/app_all_events/model/events.rb +0 -180
  281. data/examples/app_all_events/model/highlight.rb +0 -57
  282. data/examples/app_all_events/test/snapshots/after_focus_lost.txt +0 -24
  283. data/examples/app_all_events/test/snapshots/after_focus_regained.txt +0 -24
  284. data/examples/app_all_events/test/snapshots/after_horizontal_resize.txt +0 -24
  285. data/examples/app_all_events/test/snapshots/after_key_a.txt +0 -24
  286. data/examples/app_all_events/test/snapshots/after_key_ctrl_x.txt +0 -24
  287. data/examples/app_all_events/test/snapshots/after_mouse_click.txt +0 -24
  288. data/examples/app_all_events/test/snapshots/after_mouse_drag.txt +0 -24
  289. data/examples/app_all_events/test/snapshots/after_multiple_events.txt +0 -24
  290. data/examples/app_all_events/test/snapshots/after_paste.txt +0 -24
  291. data/examples/app_all_events/test/snapshots/after_resize.txt +0 -24
  292. data/examples/app_all_events/test/snapshots/after_right_click.txt +0 -24
  293. data/examples/app_all_events/test/snapshots/after_vertical_resize.txt +0 -24
  294. data/examples/app_all_events/test/snapshots/initial_state.txt +0 -24
  295. data/examples/app_all_events/view_state.rb +0 -42
  296. data/examples/app_color_picker/scene.rb +0 -201
  297. data/examples/widget_block_padding/app.rb +0 -67
  298. data/examples/widget_block_titles/app.rb +0 -69
  299. data/examples/widget_list_styles/app.rb +0 -141
  300. data/examples/widget_table_flex/app.rb +0 -95
  301. data/lib/ratatui_ruby/session/autodoc.rb +0 -417
  302. data/lib/ratatui_ruby/session.rb +0 -163
  303. data/sig/examples/widget_block_padding/app.rbs +0 -11
  304. data/sig/examples/widget_block_titles/app.rbs +0 -11
  305. data/sig/examples/widget_list_styles/app.rbs +0 -11
  306. data/tasks/autodoc/inventory.rb +0 -61
  307. data/tasks/autodoc/notice.rb +0 -26
  308. data/tasks/autodoc/rbs.rb +0 -38
  309. data/tasks/autodoc/rdoc.rb +0 -45
  310. data/tasks/bump/comparison_links.rb +0 -41
  311. /data/doc/images/{app_map_demo.png → widget_map_demo.png} +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratatui_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerrick Long
@@ -65,11 +65,26 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '7.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: faker
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 3.5.3
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 3.5.3
68
82
  description: ratatui_ruby is a wrapper for the Ratatui Rust crate <https://ratatui.rs>.
69
83
  It allows you to cook up Terminal User Interfaces in Ruby.
70
84
  email:
71
85
  - me@kerricklong.com
72
- executables: []
86
+ executables:
87
+ - ".gitkeep"
73
88
  extensions:
74
89
  - ext/ratatui_ruby/extconf.rb
75
90
  extra_rdoc_files: []
@@ -92,39 +107,40 @@ files:
92
107
  - Rakefile
93
108
  - doc/application_architecture.md
94
109
  - doc/application_testing.md
110
+ - doc/contributors/architectural_overhaul/chat_conversations.md
111
+ - doc/contributors/architectural_overhaul/implementation_plan.md
112
+ - doc/contributors/architectural_overhaul/task.md
95
113
  - doc/contributors/design.md
96
114
  - doc/contributors/design/ruby_frontend.md
97
115
  - doc/contributors/design/rust_backend.md
98
116
  - doc/contributors/developing_examples.md
99
117
  - doc/contributors/documentation_style.md
100
- - doc/contributors/dwim_dx.md
101
118
  - doc/contributors/index.md
119
+ - doc/contributors/v1.0.0_blockers.md
102
120
  - doc/custom.css
103
121
  - doc/event_handling.md
104
122
  - doc/images/app_all_events.png
105
- - doc/images/app_analytics.png
106
123
  - doc/images/app_color_picker.png
107
- - doc/images/app_custom_widget.png
108
124
  - doc/images/app_login_form.png
109
- - doc/images/app_map_demo.png
110
- - doc/images/app_mouse_events.png
111
- - doc/images/app_table_select.png
125
+ - doc/images/app_stateful_interaction.png
112
126
  - doc/images/verify_quickstart_dsl.png
113
127
  - doc/images/verify_quickstart_layout.png
114
128
  - doc/images/verify_quickstart_lifecycle.png
115
129
  - doc/images/verify_readme_usage.png
116
130
  - doc/images/widget_barchart_demo.png
117
- - doc/images/widget_block_padding.png
118
- - doc/images/widget_block_titles.png
131
+ - doc/images/widget_block_demo.png
119
132
  - doc/images/widget_box_demo.png
120
133
  - doc/images/widget_calendar_demo.png
134
+ - doc/images/widget_canvas_demo.png
121
135
  - doc/images/widget_cell_demo.png
136
+ - doc/images/widget_center_demo.png
122
137
  - doc/images/widget_chart_demo.png
123
138
  - doc/images/widget_gauge_demo.png
124
139
  - doc/images/widget_layout_split.png
125
140
  - doc/images/widget_line_gauge_demo.png
126
141
  - doc/images/widget_list_demo.png
127
- - doc/images/widget_list_styles.png
142
+ - doc/images/widget_map_demo.png
143
+ - doc/images/widget_overlay_demo.png
128
144
  - doc/images/widget_popup_demo.png
129
145
  - doc/images/widget_ratatui_logo_demo.png
130
146
  - doc/images/widget_ratatui_mascot_demo.png
@@ -135,78 +151,108 @@ files:
135
151
  - doc/images/widget_scrollbar_demo.png
136
152
  - doc/images/widget_sparkline_demo.png
137
153
  - doc/images/widget_style_colors.png
138
- - doc/images/widget_table_flex.png
154
+ - doc/images/widget_table_demo.png
139
155
  - doc/images/widget_tabs_demo.png
156
+ - doc/images/widget_text_width.png
140
157
  - doc/index.md
141
158
  - doc/interactive_design.md
142
159
  - doc/quickstart.md
160
+ - doc/terminal_limitations.md
161
+ - doc/v0.7.0_migration.md
162
+ - doc/why.md
143
163
  - examples/app_all_events/README.md
144
164
  - examples/app_all_events/app.rb
165
+ - examples/app_all_events/model/app_model.rb
145
166
  - examples/app_all_events/model/event_color_cycle.rb
146
167
  - examples/app_all_events/model/event_entry.rb
147
- - examples/app_all_events/model/events.rb
148
- - examples/app_all_events/model/highlight.rb
168
+ - examples/app_all_events/model/msg.rb
149
169
  - examples/app_all_events/model/timestamp.rb
150
- - examples/app_all_events/test/snapshots/after_focus_lost.txt
151
- - examples/app_all_events/test/snapshots/after_focus_regained.txt
152
- - examples/app_all_events/test/snapshots/after_horizontal_resize.txt
153
- - examples/app_all_events/test/snapshots/after_key_a.txt
154
- - examples/app_all_events/test/snapshots/after_key_ctrl_x.txt
155
- - examples/app_all_events/test/snapshots/after_mouse_click.txt
156
- - examples/app_all_events/test/snapshots/after_mouse_drag.txt
157
- - examples/app_all_events/test/snapshots/after_multiple_events.txt
158
- - examples/app_all_events/test/snapshots/after_paste.txt
159
- - examples/app_all_events/test/snapshots/after_resize.txt
160
- - examples/app_all_events/test/snapshots/after_right_click.txt
161
- - examples/app_all_events/test/snapshots/after_vertical_resize.txt
162
- - examples/app_all_events/test/snapshots/initial_state.txt
170
+ - examples/app_all_events/update.rb
163
171
  - examples/app_all_events/view.rb
164
172
  - examples/app_all_events/view/app_view.rb
165
173
  - examples/app_all_events/view/controls_view.rb
166
174
  - examples/app_all_events/view/counts_view.rb
167
175
  - examples/app_all_events/view/live_view.rb
168
176
  - examples/app_all_events/view/log_view.rb
169
- - examples/app_all_events/view_state.rb
170
177
  - examples/app_color_picker/README.md
171
178
  - examples/app_color_picker/app.rb
172
179
  - examples/app_color_picker/clipboard.rb
173
180
  - examples/app_color_picker/color.rb
181
+ - examples/app_color_picker/controls.rb
174
182
  - examples/app_color_picker/copy_dialog.rb
183
+ - examples/app_color_picker/export_pane.rb
175
184
  - examples/app_color_picker/harmony.rb
176
185
  - examples/app_color_picker/input.rb
186
+ - examples/app_color_picker/main_container.rb
177
187
  - examples/app_color_picker/palette.rb
178
- - examples/app_color_picker/scene.rb
188
+ - examples/app_login_form/README.md
179
189
  - examples/app_login_form/app.rb
180
- - examples/app_map_demo/app.rb
181
- - examples/app_table_select/app.rb
190
+ - examples/app_stateful_interaction/README.md
191
+ - examples/app_stateful_interaction/app.rb
192
+ - examples/timeout_demo.rb
193
+ - examples/verify_quickstart_dsl/README.md
182
194
  - examples/verify_quickstart_dsl/app.rb
195
+ - examples/verify_quickstart_layout/README.md
183
196
  - examples/verify_quickstart_layout/app.rb
197
+ - examples/verify_quickstart_lifecycle/README.md
184
198
  - examples/verify_quickstart_lifecycle/app.rb
199
+ - examples/verify_readme_usage/README.md
185
200
  - examples/verify_readme_usage/app.rb
201
+ - examples/widget_barchart_demo/README.md
186
202
  - examples/widget_barchart_demo/app.rb
187
- - examples/widget_block_padding/app.rb
188
- - examples/widget_block_titles/app.rb
203
+ - examples/widget_block_demo/README.md
204
+ - examples/widget_block_demo/app.rb
205
+ - examples/widget_box_demo/README.md
189
206
  - examples/widget_box_demo/app.rb
207
+ - examples/widget_calendar_demo/README.md
190
208
  - examples/widget_calendar_demo/app.rb
209
+ - examples/widget_canvas_demo/README.md
210
+ - examples/widget_canvas_demo/app.rb
211
+ - examples/widget_cell_demo/README.md
191
212
  - examples/widget_cell_demo/app.rb
213
+ - examples/widget_center_demo/README.md
214
+ - examples/widget_center_demo/app.rb
215
+ - examples/widget_chart_demo/README.md
192
216
  - examples/widget_chart_demo/app.rb
217
+ - examples/widget_gauge_demo/README.md
193
218
  - examples/widget_gauge_demo/app.rb
219
+ - examples/widget_layout_split/README.md
194
220
  - examples/widget_layout_split/app.rb
221
+ - examples/widget_line_gauge_demo/README.md
195
222
  - examples/widget_line_gauge_demo/app.rb
223
+ - examples/widget_list_demo/README.md
196
224
  - examples/widget_list_demo/app.rb
197
- - examples/widget_list_styles/app.rb
225
+ - examples/widget_map_demo/README.md
226
+ - examples/widget_map_demo/app.rb
227
+ - examples/widget_overlay_demo/README.md
228
+ - examples/widget_overlay_demo/app.rb
229
+ - examples/widget_popup_demo/README.md
198
230
  - examples/widget_popup_demo/app.rb
231
+ - examples/widget_ratatui_logo_demo/README.md
199
232
  - examples/widget_ratatui_logo_demo/app.rb
233
+ - examples/widget_ratatui_mascot_demo/README.md
200
234
  - examples/widget_ratatui_mascot_demo/app.rb
235
+ - examples/widget_rect/README.md
201
236
  - examples/widget_rect/app.rb
237
+ - examples/widget_render/README.md
202
238
  - examples/widget_render/app.rb
239
+ - examples/widget_rich_text/README.md
203
240
  - examples/widget_rich_text/app.rb
241
+ - examples/widget_scroll_text/README.md
204
242
  - examples/widget_scroll_text/app.rb
243
+ - examples/widget_scrollbar_demo/README.md
205
244
  - examples/widget_scrollbar_demo/app.rb
245
+ - examples/widget_sparkline_demo/README.md
206
246
  - examples/widget_sparkline_demo/app.rb
247
+ - examples/widget_style_colors/README.md
207
248
  - examples/widget_style_colors/app.rb
208
- - examples/widget_table_flex/app.rb
249
+ - examples/widget_table_demo/README.md
250
+ - examples/widget_table_demo/app.rb
251
+ - examples/widget_tabs_demo/README.md
209
252
  - examples/widget_tabs_demo/app.rb
253
+ - examples/widget_text_width/README.md
254
+ - examples/widget_text_width/app.rb
255
+ - exe/.gitkeep
210
256
  - ext/ratatui_ruby/.cargo/config.toml
211
257
  - ext/ratatui_ruby/.gitignore
212
258
  - ext/ratatui_ruby/Cargo.lock
@@ -217,6 +263,7 @@ files:
217
263
  - ext/ratatui_ruby/src/frame.rs
218
264
  - ext/ratatui_ruby/src/lib.rs
219
265
  - ext/ratatui_ruby/src/rendering.rs
266
+ - ext/ratatui_ruby/src/string_width.rs
220
267
  - ext/ratatui_ruby/src/style.rs
221
268
  - ext/ratatui_ruby/src/terminal.rs
222
269
  - ext/ratatui_ruby/src/text.rs
@@ -232,26 +279,41 @@ files:
232
279
  - ext/ratatui_ruby/src/widgets/layout.rs
233
280
  - ext/ratatui_ruby/src/widgets/line_gauge.rs
234
281
  - ext/ratatui_ruby/src/widgets/list.rs
282
+ - ext/ratatui_ruby/src/widgets/list_state.rs
235
283
  - ext/ratatui_ruby/src/widgets/mod.rs
236
284
  - ext/ratatui_ruby/src/widgets/overlay.rs
237
285
  - ext/ratatui_ruby/src/widgets/paragraph.rs
238
286
  - ext/ratatui_ruby/src/widgets/ratatui_logo.rs
239
287
  - ext/ratatui_ruby/src/widgets/ratatui_mascot.rs
240
288
  - ext/ratatui_ruby/src/widgets/scrollbar.rs
289
+ - ext/ratatui_ruby/src/widgets/scrollbar_state.rs
241
290
  - ext/ratatui_ruby/src/widgets/sparkline.rs
242
291
  - ext/ratatui_ruby/src/widgets/table.rs
292
+ - ext/ratatui_ruby/src/widgets/table_state.rs
243
293
  - ext/ratatui_ruby/src/widgets/tabs.rs
244
294
  - lib/ratatui_ruby.rb
295
+ - lib/ratatui_ruby/buffer.rb
296
+ - lib/ratatui_ruby/buffer/cell.rb
245
297
  - lib/ratatui_ruby/cell.rb
246
298
  - lib/ratatui_ruby/event.rb
247
299
  - lib/ratatui_ruby/event/focus_gained.rb
248
300
  - lib/ratatui_ruby/event/focus_lost.rb
249
301
  - lib/ratatui_ruby/event/key.rb
302
+ - lib/ratatui_ruby/event/key/character.rb
303
+ - lib/ratatui_ruby/event/key/media.rb
304
+ - lib/ratatui_ruby/event/key/modifier.rb
305
+ - lib/ratatui_ruby/event/key/navigation.rb
306
+ - lib/ratatui_ruby/event/key/system.rb
250
307
  - lib/ratatui_ruby/event/mouse.rb
251
308
  - lib/ratatui_ruby/event/none.rb
252
309
  - lib/ratatui_ruby/event/paste.rb
253
310
  - lib/ratatui_ruby/event/resize.rb
254
311
  - lib/ratatui_ruby/frame.rb
312
+ - lib/ratatui_ruby/layout.rb
313
+ - lib/ratatui_ruby/layout/constraint.rb
314
+ - lib/ratatui_ruby/layout/layout.rb
315
+ - lib/ratatui_ruby/layout/rect.rb
316
+ - lib/ratatui_ruby/list_state.rb
255
317
  - lib/ratatui_ruby/schema/bar_chart.rb
256
318
  - lib/ratatui_ruby/schema/bar_chart/bar.rb
257
319
  - lib/ratatui_ruby/schema/bar_chart/bar_group.rb
@@ -268,11 +330,13 @@ files:
268
330
  - lib/ratatui_ruby/schema/layout.rb
269
331
  - lib/ratatui_ruby/schema/line_gauge.rb
270
332
  - lib/ratatui_ruby/schema/list.rb
333
+ - lib/ratatui_ruby/schema/list_item.rb
271
334
  - lib/ratatui_ruby/schema/overlay.rb
272
335
  - lib/ratatui_ruby/schema/paragraph.rb
273
336
  - lib/ratatui_ruby/schema/ratatui_logo.rb
274
337
  - lib/ratatui_ruby/schema/ratatui_mascot.rb
275
338
  - lib/ratatui_ruby/schema/rect.rb
339
+ - lib/ratatui_ruby/schema/row.rb
276
340
  - lib/ratatui_ruby/schema/scrollbar.rb
277
341
  - lib/ratatui_ruby/schema/shape/label.rb
278
342
  - lib/ratatui_ruby/schema/sparkline.rb
@@ -280,10 +344,52 @@ files:
280
344
  - lib/ratatui_ruby/schema/table.rb
281
345
  - lib/ratatui_ruby/schema/tabs.rb
282
346
  - lib/ratatui_ruby/schema/text.rb
283
- - lib/ratatui_ruby/session.rb
284
- - lib/ratatui_ruby/session/autodoc.rb
347
+ - lib/ratatui_ruby/scrollbar_state.rb
348
+ - lib/ratatui_ruby/style.rb
349
+ - lib/ratatui_ruby/style/style.rb
350
+ - lib/ratatui_ruby/table_state.rb
285
351
  - lib/ratatui_ruby/test_helper.rb
352
+ - lib/ratatui_ruby/test_helper/event_injection.rb
353
+ - lib/ratatui_ruby/test_helper/snapshot.rb
354
+ - lib/ratatui_ruby/test_helper/style_assertions.rb
355
+ - lib/ratatui_ruby/test_helper/terminal.rb
356
+ - lib/ratatui_ruby/test_helper/test_doubles.rb
357
+ - lib/ratatui_ruby/tui.rb
358
+ - lib/ratatui_ruby/tui/buffer_factories.rb
359
+ - lib/ratatui_ruby/tui/canvas_factories.rb
360
+ - lib/ratatui_ruby/tui/core.rb
361
+ - lib/ratatui_ruby/tui/layout_factories.rb
362
+ - lib/ratatui_ruby/tui/state_factories.rb
363
+ - lib/ratatui_ruby/tui/style_factories.rb
364
+ - lib/ratatui_ruby/tui/text_factories.rb
365
+ - lib/ratatui_ruby/tui/widget_factories.rb
286
366
  - lib/ratatui_ruby/version.rb
367
+ - lib/ratatui_ruby/widgets.rb
368
+ - lib/ratatui_ruby/widgets/bar_chart.rb
369
+ - lib/ratatui_ruby/widgets/bar_chart/bar.rb
370
+ - lib/ratatui_ruby/widgets/bar_chart/bar_group.rb
371
+ - lib/ratatui_ruby/widgets/block.rb
372
+ - lib/ratatui_ruby/widgets/calendar.rb
373
+ - lib/ratatui_ruby/widgets/canvas.rb
374
+ - lib/ratatui_ruby/widgets/cell.rb
375
+ - lib/ratatui_ruby/widgets/center.rb
376
+ - lib/ratatui_ruby/widgets/chart.rb
377
+ - lib/ratatui_ruby/widgets/clear.rb
378
+ - lib/ratatui_ruby/widgets/cursor.rb
379
+ - lib/ratatui_ruby/widgets/gauge.rb
380
+ - lib/ratatui_ruby/widgets/line_gauge.rb
381
+ - lib/ratatui_ruby/widgets/list.rb
382
+ - lib/ratatui_ruby/widgets/list_item.rb
383
+ - lib/ratatui_ruby/widgets/overlay.rb
384
+ - lib/ratatui_ruby/widgets/paragraph.rb
385
+ - lib/ratatui_ruby/widgets/ratatui_logo.rb
386
+ - lib/ratatui_ruby/widgets/ratatui_mascot.rb
387
+ - lib/ratatui_ruby/widgets/row.rb
388
+ - lib/ratatui_ruby/widgets/scrollbar.rb
389
+ - lib/ratatui_ruby/widgets/shape/label.rb
390
+ - lib/ratatui_ruby/widgets/sparkline.rb
391
+ - lib/ratatui_ruby/widgets/table.rb
392
+ - lib/ratatui_ruby/widgets/tabs.rb
287
393
  - mise.toml
288
394
  - sig/examples/app_all_events/app.rbs
289
395
  - sig/examples/app_all_events/model/event_entry.rbs
@@ -298,13 +404,11 @@ files:
298
404
  - sig/examples/app_all_events/view_state.rbs
299
405
  - sig/examples/app_color_picker/app.rbs
300
406
  - sig/examples/app_login_form/app.rbs
301
- - sig/examples/app_map_demo/app.rbs
302
- - sig/examples/app_table_select/app.rbs
407
+ - sig/examples/app_stateful_interaction/app.rbs
303
408
  - sig/examples/verify_quickstart_dsl/app.rbs
304
409
  - sig/examples/verify_quickstart_lifecycle/app.rbs
305
410
  - sig/examples/verify_readme_usage/app.rbs
306
- - sig/examples/widget_block_padding/app.rbs
307
- - sig/examples/widget_block_titles/app.rbs
411
+ - sig/examples/widget_block_demo/app.rbs
308
412
  - sig/examples/widget_box_demo/app.rbs
309
413
  - sig/examples/widget_calendar_demo/app.rbs
310
414
  - sig/examples/widget_cell_demo/app.rbs
@@ -313,7 +417,7 @@ files:
313
417
  - sig/examples/widget_layout_split/app.rbs
314
418
  - sig/examples/widget_line_gauge_demo/app.rbs
315
419
  - sig/examples/widget_list_demo/app.rbs
316
- - sig/examples/widget_list_styles/app.rbs
420
+ - sig/examples/widget_map_demo/app.rbs
317
421
  - sig/examples/widget_popup_demo/app.rbs
318
422
  - sig/examples/widget_ratatui_logo_demo/app.rbs
319
423
  - sig/examples/widget_ratatui_mascot_demo/app.rbs
@@ -324,9 +428,11 @@ files:
324
428
  - sig/examples/widget_scrollbar_demo/app.rbs
325
429
  - sig/examples/widget_sparkline_demo/app.rbs
326
430
  - sig/examples/widget_style_colors/app.rbs
327
- - sig/examples/widget_table_flex/app.rbs
431
+ - sig/examples/widget_table_demo/app.rbs
432
+ - sig/examples/widget_text_width/app.rbs
328
433
  - sig/ratatui_ruby/event.rbs
329
434
  - sig/ratatui_ruby/frame.rbs
435
+ - sig/ratatui_ruby/list_state.rbs
330
436
  - sig/ratatui_ruby/ratatui_ruby.rbs
331
437
  - sig/ratatui_ruby/schema/bar_chart.rbs
332
438
  - sig/ratatui_ruby/schema/bar_chart/bar.rbs
@@ -343,33 +449,48 @@ files:
343
449
  - sig/ratatui_ruby/schema/layout.rbs
344
450
  - sig/ratatui_ruby/schema/line_gauge.rbs
345
451
  - sig/ratatui_ruby/schema/list.rbs
452
+ - sig/ratatui_ruby/schema/list_item.rbs
346
453
  - sig/ratatui_ruby/schema/overlay.rbs
347
454
  - sig/ratatui_ruby/schema/paragraph.rbs
348
455
  - sig/ratatui_ruby/schema/ratatui_logo.rbs
349
456
  - sig/ratatui_ruby/schema/ratatui_mascot.rbs
350
457
  - sig/ratatui_ruby/schema/rect.rbs
458
+ - sig/ratatui_ruby/schema/row.rbs
351
459
  - sig/ratatui_ruby/schema/scrollbar.rbs
352
460
  - sig/ratatui_ruby/schema/sparkline.rbs
353
461
  - sig/ratatui_ruby/schema/style.rbs
354
462
  - sig/ratatui_ruby/schema/table.rbs
355
463
  - sig/ratatui_ruby/schema/tabs.rbs
356
464
  - sig/ratatui_ruby/schema/text.rbs
465
+ - sig/ratatui_ruby/scrollbar_state.rbs
357
466
  - sig/ratatui_ruby/session.rbs
467
+ - sig/ratatui_ruby/table_state.rbs
358
468
  - sig/ratatui_ruby/test_helper.rbs
469
+ - sig/ratatui_ruby/test_helper/event_injection.rbs
470
+ - sig/ratatui_ruby/test_helper/snapshot.rbs
471
+ - sig/ratatui_ruby/test_helper/style_assertions.rbs
472
+ - sig/ratatui_ruby/test_helper/terminal.rbs
473
+ - sig/ratatui_ruby/test_helper/test_doubles.rbs
474
+ - sig/ratatui_ruby/tui.rbs
475
+ - sig/ratatui_ruby/tui/buffer_factories.rbs
476
+ - sig/ratatui_ruby/tui/canvas_factories.rbs
477
+ - sig/ratatui_ruby/tui/core.rbs
478
+ - sig/ratatui_ruby/tui/layout_factories.rbs
479
+ - sig/ratatui_ruby/tui/state_factories.rbs
480
+ - sig/ratatui_ruby/tui/style_factories.rbs
481
+ - sig/ratatui_ruby/tui/text_factories.rbs
482
+ - sig/ratatui_ruby/tui/widget_factories.rbs
359
483
  - sig/ratatui_ruby/version.rbs
360
484
  - tasks/autodoc.rake
361
- - tasks/autodoc/inventory.rb
485
+ - tasks/autodoc/examples.rb
362
486
  - tasks/autodoc/member.rb
363
487
  - tasks/autodoc/name.rb
364
- - tasks/autodoc/notice.rb
365
- - tasks/autodoc/rbs.rb
366
- - tasks/autodoc/rdoc.rb
367
488
  - tasks/bump.rake
368
489
  - tasks/bump/cargo_lockfile.rb
369
490
  - tasks/bump/changelog.rb
370
- - tasks/bump/comparison_links.rb
371
491
  - tasks/bump/header.rb
372
492
  - tasks/bump/history.rb
493
+ - tasks/bump/links.rb
373
494
  - tasks/bump/manifest.rb
374
495
  - tasks/bump/ruby_gem.rb
375
496
  - tasks/bump/sem_ver.rb