@rezi-ui/ink-compat 0.1.0-alpha.6 → 0.1.0-alpha.60

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 (418) hide show
  1. package/README.md +182 -0
  2. package/dist/_bench_layout_profile.d.ts +16 -0
  3. package/dist/_bench_layout_profile.d.ts.map +1 -0
  4. package/dist/_bench_layout_profile.js +44 -0
  5. package/dist/_bench_layout_profile.js.map +1 -0
  6. package/dist/components/Box.d.ts +56 -56
  7. package/dist/components/Box.d.ts.map +1 -1
  8. package/dist/components/Box.js +3 -12
  9. package/dist/components/Box.js.map +1 -1
  10. package/dist/components/Newline.d.ts +3 -13
  11. package/dist/components/Newline.d.ts.map +1 -1
  12. package/dist/components/Newline.js +4 -8
  13. package/dist/components/Newline.js.map +1 -1
  14. package/dist/components/Spacer.d.ts +1 -7
  15. package/dist/components/Spacer.d.ts.map +1 -1
  16. package/dist/components/Spacer.js +4 -9
  17. package/dist/components/Spacer.js.map +1 -1
  18. package/dist/components/Static.d.ts +12 -26
  19. package/dist/components/Static.d.ts.map +1 -1
  20. package/dist/components/Static.js +12 -13
  21. package/dist/components/Static.js.map +1 -1
  22. package/dist/components/Text.d.ts +28 -7
  23. package/dist/components/Text.d.ts.map +1 -1
  24. package/dist/components/Text.js +4 -11
  25. package/dist/components/Text.js.map +1 -1
  26. package/dist/components/Transform.d.ts +9 -16
  27. package/dist/components/Transform.d.ts.map +1 -1
  28. package/dist/components/Transform.js +11 -11
  29. package/dist/components/Transform.js.map +1 -1
  30. package/dist/hooks/useApp.d.ts +4 -2
  31. package/dist/hooks/useApp.d.ts.map +1 -1
  32. package/dist/hooks/useApp.js +4 -4
  33. package/dist/hooks/useApp.js.map +1 -1
  34. package/dist/hooks/useCursor.d.ts +5 -0
  35. package/dist/hooks/useCursor.d.ts.map +1 -0
  36. package/dist/hooks/useCursor.js +15 -0
  37. package/dist/hooks/useCursor.js.map +1 -0
  38. package/dist/hooks/useFocus.d.ts +5 -25
  39. package/dist/hooks/useFocus.d.ts.map +1 -1
  40. package/dist/hooks/useFocus.js +47 -31
  41. package/dist/hooks/useFocus.js.map +1 -1
  42. package/dist/hooks/useFocusManager.d.ts +2 -4
  43. package/dist/hooks/useFocusManager.d.ts.map +1 -1
  44. package/dist/hooks/useFocusManager.js +9 -12
  45. package/dist/hooks/useFocusManager.js.map +1 -1
  46. package/dist/hooks/useInput.d.ts +4 -9
  47. package/dist/hooks/useInput.d.ts.map +1 -1
  48. package/dist/hooks/useInput.js +15 -118
  49. package/dist/hooks/useInput.js.map +1 -1
  50. package/dist/hooks/useIsScreenReaderEnabled.d.ts +1 -1
  51. package/dist/hooks/useIsScreenReaderEnabled.d.ts.map +1 -1
  52. package/dist/hooks/useIsScreenReaderEnabled.js +4 -4
  53. package/dist/hooks/useIsScreenReaderEnabled.js.map +1 -1
  54. package/dist/hooks/useStderr.d.ts +2 -7
  55. package/dist/hooks/useStderr.d.ts.map +1 -1
  56. package/dist/hooks/useStderr.js +4 -9
  57. package/dist/hooks/useStderr.js.map +1 -1
  58. package/dist/hooks/useStdin.d.ts +4 -14
  59. package/dist/hooks/useStdin.d.ts.map +1 -1
  60. package/dist/hooks/useStdin.js +6 -11
  61. package/dist/hooks/useStdin.js.map +1 -1
  62. package/dist/hooks/useStdout.d.ts +2 -7
  63. package/dist/hooks/useStdout.d.ts.map +1 -1
  64. package/dist/hooks/useStdout.js +4 -9
  65. package/dist/hooks/useStdout.js.map +1 -1
  66. package/dist/index.d.ts +34 -25
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +24 -25
  69. package/dist/index.js.map +1 -1
  70. package/dist/kitty-keyboard.d.ts +20 -0
  71. package/dist/kitty-keyboard.d.ts.map +1 -0
  72. package/dist/kitty-keyboard.js +25 -0
  73. package/dist/kitty-keyboard.js.map +1 -0
  74. package/dist/reconciler/hostConfig.d.ts +63 -4
  75. package/dist/reconciler/hostConfig.d.ts.map +1 -1
  76. package/dist/reconciler/hostConfig.js +160 -140
  77. package/dist/reconciler/hostConfig.js.map +1 -1
  78. package/dist/reconciler/reconciler.d.ts +9 -0
  79. package/dist/reconciler/reconciler.d.ts.map +1 -0
  80. package/dist/reconciler/reconciler.js +4 -0
  81. package/dist/reconciler/reconciler.js.map +1 -0
  82. package/dist/reconciler/types.d.ts +48 -62
  83. package/dist/reconciler/types.d.ts.map +1 -1
  84. package/dist/reconciler/types.js +294 -27
  85. package/dist/reconciler/types.js.map +1 -1
  86. package/dist/runtime/ResizeObserver.d.ts +33 -0
  87. package/dist/runtime/ResizeObserver.d.ts.map +1 -0
  88. package/dist/runtime/ResizeObserver.js +69 -0
  89. package/dist/runtime/ResizeObserver.js.map +1 -0
  90. package/dist/runtime/bridge.d.ts +34 -0
  91. package/dist/runtime/bridge.d.ts.map +1 -0
  92. package/dist/runtime/bridge.js +478 -0
  93. package/dist/runtime/bridge.js.map +1 -0
  94. package/dist/runtime/context.d.ts +55 -0
  95. package/dist/runtime/context.d.ts.map +1 -0
  96. package/dist/runtime/context.js +10 -0
  97. package/dist/runtime/context.js.map +1 -0
  98. package/dist/runtime/createInkRenderer.d.ts +110 -0
  99. package/dist/runtime/createInkRenderer.d.ts.map +1 -0
  100. package/dist/runtime/createInkRenderer.js +469 -0
  101. package/dist/runtime/createInkRenderer.js.map +1 -0
  102. package/dist/runtime/domHelpers.d.ts +21 -0
  103. package/dist/runtime/domHelpers.d.ts.map +1 -0
  104. package/dist/runtime/domHelpers.js +40 -0
  105. package/dist/runtime/domHelpers.js.map +1 -0
  106. package/dist/runtime/getBoundingBox.d.ts +18 -0
  107. package/dist/runtime/getBoundingBox.d.ts.map +1 -0
  108. package/dist/runtime/getBoundingBox.js +23 -0
  109. package/dist/runtime/getBoundingBox.js.map +1 -0
  110. package/dist/runtime/layoutState.d.ts +11 -0
  111. package/dist/runtime/layoutState.d.ts.map +1 -0
  112. package/dist/runtime/layoutState.js +29 -0
  113. package/dist/runtime/layoutState.js.map +1 -0
  114. package/dist/runtime/measureElement.d.ts +6 -0
  115. package/dist/runtime/measureElement.d.ts.map +1 -0
  116. package/dist/runtime/measureElement.js +11 -0
  117. package/dist/runtime/measureElement.js.map +1 -0
  118. package/dist/runtime/reactBridge.d.ts +7 -0
  119. package/dist/runtime/reactBridge.d.ts.map +1 -0
  120. package/dist/runtime/reactBridge.js +85 -0
  121. package/dist/runtime/reactBridge.js.map +1 -0
  122. package/dist/runtime/reactHelpers.d.ts +5 -0
  123. package/dist/runtime/reactHelpers.d.ts.map +1 -0
  124. package/dist/runtime/reactHelpers.js +22 -0
  125. package/dist/runtime/reactHelpers.js.map +1 -0
  126. package/dist/runtime/render.d.ts +40 -0
  127. package/dist/runtime/render.d.ts.map +1 -0
  128. package/dist/runtime/render.js +3032 -0
  129. package/dist/runtime/render.js.map +1 -0
  130. package/dist/runtime/renderToString.d.ts +6 -0
  131. package/dist/runtime/renderToString.d.ts.map +1 -0
  132. package/dist/runtime/renderToString.js +45 -0
  133. package/dist/runtime/renderToString.js.map +1 -0
  134. package/dist/shims/ink-gradient.d.ts +12 -0
  135. package/dist/shims/ink-gradient.d.ts.map +1 -0
  136. package/dist/shims/ink-gradient.js +137 -0
  137. package/dist/shims/ink-gradient.js.map +1 -0
  138. package/dist/shims/ink-spinner.d.ts +16 -0
  139. package/dist/shims/ink-spinner.d.ts.map +1 -0
  140. package/dist/shims/ink-spinner.js +39 -0
  141. package/dist/shims/ink-spinner.js.map +1 -0
  142. package/dist/styledChars.d.ts +45 -0
  143. package/dist/styledChars.d.ts.map +1 -0
  144. package/dist/styledChars.js +283 -0
  145. package/dist/styledChars.js.map +1 -0
  146. package/dist/testing/index.d.ts +12 -0
  147. package/dist/testing/index.d.ts.map +1 -0
  148. package/dist/testing/index.js +75 -0
  149. package/dist/testing/index.js.map +1 -0
  150. package/dist/translation/borderMap.d.ts +3 -0
  151. package/dist/translation/borderMap.d.ts.map +1 -0
  152. package/dist/translation/borderMap.js +21 -0
  153. package/dist/translation/borderMap.js.map +1 -0
  154. package/dist/translation/colorMap.d.ts +8 -0
  155. package/dist/translation/colorMap.d.ts.map +1 -0
  156. package/dist/translation/colorMap.js +136 -0
  157. package/dist/translation/colorMap.js.map +1 -0
  158. package/dist/translation/layoutMap.d.ts +6 -0
  159. package/dist/translation/layoutMap.d.ts.map +1 -0
  160. package/dist/translation/layoutMap.js +28 -0
  161. package/dist/translation/layoutMap.js.map +1 -0
  162. package/dist/translation/propsToVNode.d.ts +49 -0
  163. package/dist/translation/propsToVNode.d.ts.map +1 -0
  164. package/dist/translation/propsToVNode.js +1319 -0
  165. package/dist/translation/propsToVNode.js.map +1 -0
  166. package/dist/translation/traceCollector.d.ts +16 -0
  167. package/dist/translation/traceCollector.d.ts.map +1 -0
  168. package/dist/translation/traceCollector.js +28 -0
  169. package/dist/translation/traceCollector.js.map +1 -0
  170. package/package.json +30 -22
  171. package/dist/__tests__/Newline.test.d.ts +0 -2
  172. package/dist/__tests__/Newline.test.d.ts.map +0 -1
  173. package/dist/__tests__/Newline.test.js +0 -42
  174. package/dist/__tests__/Newline.test.js.map +0 -1
  175. package/dist/__tests__/Static.test.d.ts +0 -2
  176. package/dist/__tests__/Static.test.d.ts.map +0 -1
  177. package/dist/__tests__/Static.test.js +0 -53
  178. package/dist/__tests__/Static.test.js.map +0 -1
  179. package/dist/__tests__/Transform.test.d.ts +0 -2
  180. package/dist/__tests__/Transform.test.d.ts.map +0 -1
  181. package/dist/__tests__/Transform.test.js +0 -36
  182. package/dist/__tests__/Transform.test.js.map +0 -1
  183. package/dist/__tests__/api.surface.test.d.ts +0 -2
  184. package/dist/__tests__/api.surface.test.d.ts.map +0 -1
  185. package/dist/__tests__/api.surface.test.js +0 -32
  186. package/dist/__tests__/api.surface.test.js.map +0 -1
  187. package/dist/__tests__/color.test.d.ts +0 -2
  188. package/dist/__tests__/color.test.d.ts.map +0 -1
  189. package/dist/__tests__/color.test.js +0 -37
  190. package/dist/__tests__/color.test.js.map +0 -1
  191. package/dist/__tests__/compat.thirdparty.test.d.ts +0 -2
  192. package/dist/__tests__/compat.thirdparty.test.d.ts.map +0 -1
  193. package/dist/__tests__/compat.thirdparty.test.js +0 -70
  194. package/dist/__tests__/compat.thirdparty.test.js.map +0 -1
  195. package/dist/__tests__/emitter.test.d.ts +0 -2
  196. package/dist/__tests__/emitter.test.d.ts.map +0 -1
  197. package/dist/__tests__/emitter.test.js +0 -34
  198. package/dist/__tests__/emitter.test.js.map +0 -1
  199. package/dist/__tests__/golden/border-styles.golden.test.d.ts +0 -2
  200. package/dist/__tests__/golden/border-styles.golden.test.d.ts.map +0 -1
  201. package/dist/__tests__/golden/border-styles.golden.test.js +0 -15
  202. package/dist/__tests__/golden/border-styles.golden.test.js.map +0 -1
  203. package/dist/__tests__/golden/box-layout.golden.test.d.ts +0 -2
  204. package/dist/__tests__/golden/box-layout.golden.test.d.ts.map +0 -1
  205. package/dist/__tests__/golden/box-layout.golden.test.js +0 -15
  206. package/dist/__tests__/golden/box-layout.golden.test.js.map +0 -1
  207. package/dist/__tests__/golden/flex-layout.golden.test.d.ts +0 -2
  208. package/dist/__tests__/golden/flex-layout.golden.test.d.ts.map +0 -1
  209. package/dist/__tests__/golden/flex-layout.golden.test.js +0 -15
  210. package/dist/__tests__/golden/flex-layout.golden.test.js.map +0 -1
  211. package/dist/__tests__/golden/harness.d.ts +0 -6
  212. package/dist/__tests__/golden/harness.d.ts.map +0 -1
  213. package/dist/__tests__/golden/harness.js +0 -31
  214. package/dist/__tests__/golden/harness.js.map +0 -1
  215. package/dist/__tests__/golden/simple-text.golden.test.d.ts +0 -2
  216. package/dist/__tests__/golden/simple-text.golden.test.d.ts.map +0 -1
  217. package/dist/__tests__/golden/simple-text.golden.test.js +0 -15
  218. package/dist/__tests__/golden/simple-text.golden.test.js.map +0 -1
  219. package/dist/__tests__/integration/counter.test.d.ts +0 -2
  220. package/dist/__tests__/integration/counter.test.d.ts.map +0 -1
  221. package/dist/__tests__/integration/counter.test.js +0 -41
  222. package/dist/__tests__/integration/counter.test.js.map +0 -1
  223. package/dist/__tests__/integration/focus-cycle.test.d.ts +0 -2
  224. package/dist/__tests__/integration/focus-cycle.test.d.ts.map +0 -1
  225. package/dist/__tests__/integration/focus-cycle.test.js +0 -37
  226. package/dist/__tests__/integration/focus-cycle.test.js.map +0 -1
  227. package/dist/__tests__/integration/harness.d.ts +0 -17
  228. package/dist/__tests__/integration/harness.d.ts.map +0 -1
  229. package/dist/__tests__/integration/harness.js +0 -57
  230. package/dist/__tests__/integration/harness.js.map +0 -1
  231. package/dist/__tests__/integration/list-nav.test.d.ts +0 -2
  232. package/dist/__tests__/integration/list-nav.test.d.ts.map +0 -1
  233. package/dist/__tests__/integration/list-nav.test.js +0 -40
  234. package/dist/__tests__/integration/list-nav.test.js.map +0 -1
  235. package/dist/__tests__/integration/nested-layout.test.d.ts +0 -2
  236. package/dist/__tests__/integration/nested-layout.test.d.ts.map +0 -1
  237. package/dist/__tests__/integration/nested-layout.test.js +0 -47
  238. package/dist/__tests__/integration/nested-layout.test.js.map +0 -1
  239. package/dist/__tests__/integration/static-log.test.d.ts +0 -2
  240. package/dist/__tests__/integration/static-log.test.d.ts.map +0 -1
  241. package/dist/__tests__/integration/static-log.test.js +0 -48
  242. package/dist/__tests__/integration/static-log.test.js.map +0 -1
  243. package/dist/__tests__/measurement.test.d.ts +0 -2
  244. package/dist/__tests__/measurement.test.d.ts.map +0 -1
  245. package/dist/__tests__/measurement.test.js +0 -115
  246. package/dist/__tests__/measurement.test.js.map +0 -1
  247. package/dist/__tests__/props.test.d.ts +0 -2
  248. package/dist/__tests__/props.test.d.ts.map +0 -1
  249. package/dist/__tests__/props.test.js +0 -131
  250. package/dist/__tests__/props.test.js.map +0 -1
  251. package/dist/__tests__/reconciler.test.d.ts +0 -2
  252. package/dist/__tests__/reconciler.test.d.ts.map +0 -1
  253. package/dist/__tests__/reconciler.test.js +0 -72
  254. package/dist/__tests__/reconciler.test.js.map +0 -1
  255. package/dist/__tests__/render.consoleCapture.test.d.ts +0 -2
  256. package/dist/__tests__/render.consoleCapture.test.d.ts.map +0 -1
  257. package/dist/__tests__/render.consoleCapture.test.js +0 -46
  258. package/dist/__tests__/render.consoleCapture.test.js.map +0 -1
  259. package/dist/__tests__/render.deferred.test.d.ts +0 -2
  260. package/dist/__tests__/render.deferred.test.d.ts.map +0 -1
  261. package/dist/__tests__/render.deferred.test.js +0 -16
  262. package/dist/__tests__/render.deferred.test.js.map +0 -1
  263. package/dist/__tests__/render.options.test.d.ts +0 -2
  264. package/dist/__tests__/render.options.test.d.ts.map +0 -1
  265. package/dist/__tests__/render.options.test.js +0 -17
  266. package/dist/__tests__/render.options.test.js.map +0 -1
  267. package/dist/__tests__/render.parity.test.d.ts +0 -2
  268. package/dist/__tests__/render.parity.test.d.ts.map +0 -1
  269. package/dist/__tests__/render.parity.test.js +0 -124
  270. package/dist/__tests__/render.parity.test.js.map +0 -1
  271. package/dist/__tests__/render.test.d.ts +0 -2
  272. package/dist/__tests__/render.test.d.ts.map +0 -1
  273. package/dist/__tests__/render.test.js +0 -46
  274. package/dist/__tests__/render.test.js.map +0 -1
  275. package/dist/__tests__/resizeObserver.test.d.ts +0 -2
  276. package/dist/__tests__/resizeObserver.test.d.ts.map +0 -1
  277. package/dist/__tests__/resizeObserver.test.js +0 -50
  278. package/dist/__tests__/resizeObserver.test.js.map +0 -1
  279. package/dist/__tests__/testBackend.d.ts +0 -48
  280. package/dist/__tests__/testBackend.d.ts.map +0 -1
  281. package/dist/__tests__/testBackend.js +0 -109
  282. package/dist/__tests__/testBackend.js.map +0 -1
  283. package/dist/__tests__/useApp.test.d.ts +0 -2
  284. package/dist/__tests__/useApp.test.d.ts.map +0 -1
  285. package/dist/__tests__/useApp.test.js +0 -62
  286. package/dist/__tests__/useApp.test.js.map +0 -1
  287. package/dist/__tests__/useFocus.test.d.ts +0 -2
  288. package/dist/__tests__/useFocus.test.d.ts.map +0 -1
  289. package/dist/__tests__/useFocus.test.js +0 -60
  290. package/dist/__tests__/useFocus.test.js.map +0 -1
  291. package/dist/__tests__/useFocusManager.test.d.ts +0 -2
  292. package/dist/__tests__/useFocusManager.test.d.ts.map +0 -1
  293. package/dist/__tests__/useFocusManager.test.js +0 -57
  294. package/dist/__tests__/useFocusManager.test.js.map +0 -1
  295. package/dist/__tests__/useInput.test.d.ts +0 -2
  296. package/dist/__tests__/useInput.test.d.ts.map +0 -1
  297. package/dist/__tests__/useInput.test.js +0 -182
  298. package/dist/__tests__/useInput.test.js.map +0 -1
  299. package/dist/__tests__/useStderr.test.d.ts +0 -2
  300. package/dist/__tests__/useStderr.test.d.ts.map +0 -1
  301. package/dist/__tests__/useStderr.test.js +0 -59
  302. package/dist/__tests__/useStderr.test.js.map +0 -1
  303. package/dist/__tests__/useStdin.test.d.ts +0 -2
  304. package/dist/__tests__/useStdin.test.d.ts.map +0 -1
  305. package/dist/__tests__/useStdin.test.js +0 -45
  306. package/dist/__tests__/useStdin.test.js.map +0 -1
  307. package/dist/__tests__/useStdout.test.d.ts +0 -2
  308. package/dist/__tests__/useStdout.test.d.ts.map +0 -1
  309. package/dist/__tests__/useStdout.test.js +0 -59
  310. package/dist/__tests__/useStdout.test.js.map +0 -1
  311. package/dist/color.d.ts +0 -19
  312. package/dist/color.d.ts.map +0 -1
  313. package/dist/color.js +0 -121
  314. package/dist/color.js.map +0 -1
  315. package/dist/context/AccessibilityContext.d.ts +0 -4
  316. package/dist/context/AccessibilityContext.d.ts.map +0 -1
  317. package/dist/context/AccessibilityContext.js +0 -4
  318. package/dist/context/AccessibilityContext.js.map +0 -1
  319. package/dist/context/AppContext.d.ts +0 -13
  320. package/dist/context/AppContext.d.ts.map +0 -1
  321. package/dist/context/AppContext.js +0 -14
  322. package/dist/context/AppContext.js.map +0 -1
  323. package/dist/context/FocusContext.d.ts +0 -31
  324. package/dist/context/FocusContext.d.ts.map +0 -1
  325. package/dist/context/FocusContext.js +0 -16
  326. package/dist/context/FocusContext.js.map +0 -1
  327. package/dist/context/FocusProvider.d.ts +0 -5
  328. package/dist/context/FocusProvider.d.ts.map +0 -1
  329. package/dist/context/FocusProvider.js +0 -160
  330. package/dist/context/FocusProvider.js.map +0 -1
  331. package/dist/context/StdioContext.d.ts +0 -24
  332. package/dist/context/StdioContext.d.ts.map +0 -1
  333. package/dist/context/StdioContext.js +0 -15
  334. package/dist/context/StdioContext.js.map +0 -1
  335. package/dist/errors.d.ts +0 -8
  336. package/dist/errors.d.ts.map +0 -1
  337. package/dist/errors.js +0 -9
  338. package/dist/errors.js.map +0 -1
  339. package/dist/internal/emitter.d.ts +0 -8
  340. package/dist/internal/emitter.d.ts.map +0 -1
  341. package/dist/internal/emitter.js +0 -29
  342. package/dist/internal/emitter.js.map +0 -1
  343. package/dist/internal/warn.d.ts +0 -3
  344. package/dist/internal/warn.d.ts.map +0 -1
  345. package/dist/internal/warn.js +0 -17
  346. package/dist/internal/warn.js.map +0 -1
  347. package/dist/measureElement.d.ts +0 -12
  348. package/dist/measureElement.d.ts.map +0 -1
  349. package/dist/measureElement.js +0 -11
  350. package/dist/measureElement.js.map +0 -1
  351. package/dist/measurement.d.ts +0 -25
  352. package/dist/measurement.d.ts.map +0 -1
  353. package/dist/measurement.js +0 -281
  354. package/dist/measurement.js.map +0 -1
  355. package/dist/props/boxProps.d.ts +0 -17
  356. package/dist/props/boxProps.d.ts.map +0 -1
  357. package/dist/props/boxProps.js +0 -242
  358. package/dist/props/boxProps.js.map +0 -1
  359. package/dist/props/textProps.d.ts +0 -8
  360. package/dist/props/textProps.d.ts.map +0 -1
  361. package/dist/props/textProps.js +0 -35
  362. package/dist/props/textProps.js.map +0 -1
  363. package/dist/props.d.ts +0 -5
  364. package/dist/props.d.ts.map +0 -1
  365. package/dist/props.js +0 -3
  366. package/dist/props.js.map +0 -1
  367. package/dist/reconciler/convert.d.ts +0 -4
  368. package/dist/reconciler/convert.d.ts.map +0 -1
  369. package/dist/reconciler/convert.js +0 -157
  370. package/dist/reconciler/convert.js.map +0 -1
  371. package/dist/reconciler/textUtils.d.ts +0 -6
  372. package/dist/reconciler/textUtils.d.ts.map +0 -1
  373. package/dist/reconciler/textUtils.js +0 -395
  374. package/dist/reconciler/textUtils.js.map +0 -1
  375. package/dist/reconciler.d.ts +0 -11
  376. package/dist/reconciler.d.ts.map +0 -1
  377. package/dist/reconciler.js +0 -58
  378. package/dist/reconciler.js.map +0 -1
  379. package/dist/render/consoleCapture.d.ts +0 -14
  380. package/dist/render/consoleCapture.d.ts.map +0 -1
  381. package/dist/render/consoleCapture.js +0 -89
  382. package/dist/render/consoleCapture.js.map +0 -1
  383. package/dist/render/deferred.d.ts +0 -7
  384. package/dist/render/deferred.d.ts.map +0 -1
  385. package/dist/render/deferred.js +0 -10
  386. package/dist/render/deferred.js.map +0 -1
  387. package/dist/render/options.d.ts +0 -3
  388. package/dist/render/options.d.ts.map +0 -1
  389. package/dist/render/options.js +0 -12
  390. package/dist/render/options.js.map +0 -1
  391. package/dist/render.d.ts +0 -4
  392. package/dist/render.d.ts.map +0 -1
  393. package/dist/render.js +0 -282
  394. package/dist/render.js.map +0 -1
  395. package/dist/resizeObserver.d.ts +0 -24
  396. package/dist/resizeObserver.d.ts.map +0 -1
  397. package/dist/resizeObserver.js +0 -54
  398. package/dist/resizeObserver.js.map +0 -1
  399. package/dist/styledTextCompat.d.ts +0 -22
  400. package/dist/styledTextCompat.d.ts.map +0 -1
  401. package/dist/styledTextCompat.js +0 -264
  402. package/dist/styledTextCompat.js.map +0 -1
  403. package/dist/testing/findText.d.ts +0 -4
  404. package/dist/testing/findText.d.ts.map +0 -1
  405. package/dist/testing/findText.js +0 -27
  406. package/dist/testing/findText.js.map +0 -1
  407. package/dist/testing/renderToVNode.d.ts +0 -9
  408. package/dist/testing/renderToVNode.d.ts.map +0 -1
  409. package/dist/testing/renderToVNode.js +0 -22
  410. package/dist/testing/renderToVNode.js.map +0 -1
  411. package/dist/testing/simulateKeyEvent.d.ts +0 -18
  412. package/dist/testing/simulateKeyEvent.d.ts.map +0 -1
  413. package/dist/testing/simulateKeyEvent.js +0 -25
  414. package/dist/testing/simulateKeyEvent.js.map +0 -1
  415. package/dist/types.d.ts +0 -233
  416. package/dist/types.d.ts.map +0 -1
  417. package/dist/types.js +0 -2
  418. package/dist/types.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,182 @@
1
+ # @rezi-ui/ink-compat
2
+
3
+ `@rezi-ui/ink-compat` is an Ink API compatibility layer powered by Rezi.
4
+
5
+ It keeps the Ink component/hook model, but replaces Ink's renderer backend with
6
+ Rezi's deterministic layout + draw pipeline.
7
+
8
+ ## Why use it
9
+
10
+ - Keep existing Ink app code and mental model.
11
+ - Migrate incrementally (explicit import swap or package aliasing).
12
+ - Get deterministic, env-gated diagnostics for parity and performance triage.
13
+
14
+ ## Install
15
+
16
+ ```bash
17
+ npm install @rezi-ui/ink-compat
18
+ ```
19
+
20
+ If your app uses `ink-gradient` or `ink-spinner`, install matching shims:
21
+
22
+ ```bash
23
+ npm install ink-gradient-shim ink-spinner-shim
24
+ ```
25
+
26
+ ## Migration options
27
+
28
+ ### Option A: explicit import swap
29
+
30
+ ```ts
31
+ // Before
32
+ import { render, Box, Text } from "ink";
33
+
34
+ // After
35
+ import { render, Box, Text } from "@rezi-ui/ink-compat";
36
+ ```
37
+
38
+ ### Option B: no-source-change package aliasing
39
+
40
+ Keep `import "ink"` in app code and alias dependencies:
41
+
42
+ ```bash
43
+ npm install \
44
+ ink@npm:@rezi-ui/ink-compat@latest \
45
+ ink-gradient@npm:ink-gradient-shim@latest \
46
+ ink-spinner@npm:ink-spinner-shim@latest
47
+ ```
48
+
49
+ Equivalent with `pnpm`:
50
+
51
+ ```bash
52
+ pnpm add \
53
+ ink@npm:@rezi-ui/ink-compat@latest \
54
+ ink-gradient@npm:ink-gradient-shim@latest \
55
+ ink-spinner@npm:ink-spinner-shim@latest
56
+ ```
57
+
58
+ Equivalent with `yarn`:
59
+
60
+ ```bash
61
+ yarn add \
62
+ ink@npm:@rezi-ui/ink-compat@latest \
63
+ ink-gradient@npm:ink-gradient-shim@latest \
64
+ ink-spinner@npm:ink-spinner-shim@latest
65
+ ```
66
+
67
+ ## Verify wiring (avoid silent fallback to real Ink)
68
+
69
+ Run this in the app root:
70
+
71
+ ```bash
72
+ node -e "const p=require('ink/package.json'); if(p.name!=='@rezi-ui/ink-compat') throw new Error('ink resolves to '+p.name); console.log('ink-compat active:', p.version);"
73
+ ```
74
+
75
+ And confirm resolved path:
76
+
77
+ ```bash
78
+ node -e "const fs=require('node:fs'); const path=require('node:path'); const pkg=require.resolve('ink/package.json'); console.log(fs.realpathSync(path.dirname(pkg)));"
79
+ ```
80
+
81
+ ## How it works
82
+
83
+ At runtime, ink-compat runs this pipeline:
84
+
85
+ 1. React reconciles to an `InkHostNode` tree (compat host config).
86
+ 2. Translation maps Ink props/components to Rezi VNodes.
87
+ 3. Rezi layout + render generate draw ops, then ANSI output is serialized to terminal streams.
88
+
89
+ Key behavior:
90
+
91
+ - `<Static>` is handled as a dedicated scrollback-oriented channel.
92
+ - Input/focus/cursor are bridged through compat context/hooks.
93
+ - Diagnostics and heavy instrumentation are env-gated.
94
+
95
+ For full architecture details, see `https://rezitui.dev/docs/architecture/ink-compat/`.
96
+ For a practical migration workflow, see `https://rezitui.dev/docs/migration/ink-to-ink-compat/`.
97
+
98
+ ## Supported API surface
99
+
100
+ ### Components
101
+
102
+ - `Box`
103
+ - `Text`
104
+ - `Newline`
105
+ - `Spacer`
106
+ - `Static`
107
+ - `Transform`
108
+
109
+ ### Hooks
110
+
111
+ - `useApp`
112
+ - `useInput`
113
+ - `useFocus`
114
+ - `useFocusManager`
115
+ - `useStdin`
116
+ - `useStdout`
117
+ - `useStderr`
118
+ - `useIsScreenReaderEnabled`
119
+ - `useCursor`
120
+
121
+ ### Runtime APIs
122
+
123
+ - `render`
124
+ - `renderToString`
125
+ - `measureElement`
126
+ - `ResizeObserver`
127
+ - `getBoundingBox`
128
+ - `getInnerHeight`
129
+ - `getScrollHeight`
130
+
131
+ ### Keyboard helpers
132
+
133
+ - `kittyFlags`
134
+ - `kittyModifiers`
135
+
136
+ ### Testing entrypoint
137
+
138
+ - `@rezi-ui/ink-compat/testing`
139
+
140
+ ## `render(element, options)` options
141
+
142
+ - `stdout`, `stdin`, `stderr`
143
+ - `exitOnCtrlC`
144
+ - `patchConsole`
145
+ - `debug`
146
+ - `maxFps`
147
+ - `concurrent` (compatibility flag; not an upstream-concurrency semantic toggle)
148
+ - `kittyKeyboard`
149
+ - `isScreenReaderEnabled`
150
+ - `onRender`
151
+ - `alternateBuffer`
152
+ - `incrementalRendering`
153
+
154
+ ## Diagnostics
155
+
156
+ Trace output is env-gated:
157
+
158
+ - `INK_COMPAT_TRACE=1`
159
+ - `INK_COMPAT_TRACE_FILE=/path/log`
160
+ - `INK_COMPAT_TRACE_STDERR=1`
161
+ - `INK_COMPAT_TRACE_DETAIL=1`
162
+ - `INK_COMPAT_TRACE_DETAIL_FULL=1`
163
+ - `INK_COMPAT_TRACE_ALL_FRAMES=1`
164
+ - `INK_COMPAT_TRACE_IO=1`
165
+ - `INK_COMPAT_TRACE_RESIZE_VERBOSE=1`
166
+ - `INK_GRADIENT_TRACE=1`
167
+
168
+ Debugging runbook:
169
+
170
+ - `https://rezitui.dev/docs/dev/ink-compat-debugging/`
171
+
172
+ ## Known boundaries
173
+
174
+ - Minor visual differences can occur across terminal emulators / OS TTY behavior.
175
+ - App/version-specific messaging differences are expected and are not renderer bugs.
176
+ - Gradient interpolation can differ slightly while preserving overall behavior.
177
+
178
+ ## Documentation
179
+
180
+ - Porting guide: `https://rezitui.dev/docs/migration/ink-to-ink-compat/`
181
+ - Architecture and internals: `https://rezitui.dev/docs/architecture/ink-compat/`
182
+ - Debugging and parity runbook: `https://rezitui.dev/docs/dev/ink-compat-debugging/`
@@ -0,0 +1,16 @@
1
+ export declare const layoutCounters: {
2
+ layoutNodeCalls: number;
3
+ measureNodeCalls: number;
4
+ measureCacheHits: number;
5
+ layoutCacheHits: number;
6
+ constraintPassCount: number;
7
+ textMeasureCalls: number;
8
+ textMeasureTotalChars: number;
9
+ textMeasureTotalMs: number;
10
+ stackLayoutCalls: number;
11
+ leafLayoutCalls: number;
12
+ frameCount: number;
13
+ };
14
+ export declare function resetLayoutCounters(): void;
15
+ export declare function dumpLayoutCounters(label: string): string;
16
+ //# sourceMappingURL=_bench_layout_profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_bench_layout_profile.d.ts","sourceRoot":"","sources":["../src/_bench_layout_profile.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc;;;;;;;;;;;;CAY1B,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,IAAI,CAY1C;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAexD"}
@@ -0,0 +1,44 @@
1
+ // Counters for profiling the layout pass
2
+ export const layoutCounters = {
3
+ layoutNodeCalls: 0,
4
+ measureNodeCalls: 0,
5
+ measureCacheHits: 0,
6
+ layoutCacheHits: 0,
7
+ constraintPassCount: 0,
8
+ textMeasureCalls: 0,
9
+ textMeasureTotalChars: 0,
10
+ textMeasureTotalMs: 0,
11
+ stackLayoutCalls: 0,
12
+ leafLayoutCalls: 0,
13
+ frameCount: 0,
14
+ };
15
+ export function resetLayoutCounters() {
16
+ layoutCounters.layoutNodeCalls = 0;
17
+ layoutCounters.measureNodeCalls = 0;
18
+ layoutCounters.measureCacheHits = 0;
19
+ layoutCounters.layoutCacheHits = 0;
20
+ layoutCounters.constraintPassCount = 0;
21
+ layoutCounters.textMeasureCalls = 0;
22
+ layoutCounters.textMeasureTotalChars = 0;
23
+ layoutCounters.textMeasureTotalMs = 0;
24
+ layoutCounters.stackLayoutCalls = 0;
25
+ layoutCounters.leafLayoutCalls = 0;
26
+ layoutCounters.frameCount += 1;
27
+ }
28
+ export function dumpLayoutCounters(label) {
29
+ const c = layoutCounters;
30
+ return [
31
+ `=== Layout Profile: ${label} ===`,
32
+ ` layoutNode calls: ${c.layoutNodeCalls}`,
33
+ ` measureNode calls: ${c.measureNodeCalls}`,
34
+ ` measure cache hits: ${c.measureCacheHits}`,
35
+ ` layout cache hits: ${c.layoutCacheHits}`,
36
+ ` constraint pass count: ${c.constraintPassCount}`,
37
+ ` stack layout calls: ${c.stackLayoutCalls}`,
38
+ ` leaf layout calls: ${c.leafLayoutCalls}`,
39
+ ` text measure calls: ${c.textMeasureCalls}`,
40
+ ` text measure total chars: ${c.textMeasureTotalChars}`,
41
+ ` text measure total ms: ${c.textMeasureTotalMs.toFixed(3)}`,
42
+ ].join("\n");
43
+ }
44
+ //# sourceMappingURL=_bench_layout_profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_bench_layout_profile.js","sourceRoot":"","sources":["../src/_bench_layout_profile.ts"],"names":[],"mappings":"AAWA,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,eAAe,EAAE,CAAC;IAClB,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,CAAC;IACtB,gBAAgB,EAAE,CAAC;IACnB,qBAAqB,EAAE,CAAC;IACxB,kBAAkB,EAAE,CAAC;IACrB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC;IAClB,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,cAAc,CAAC,eAAe,GAAG,CAAC,CAAC;IACnC,cAAc,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACpC,cAAc,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACpC,cAAc,CAAC,eAAe,GAAG,CAAC,CAAC;IACnC,cAAc,CAAC,mBAAmB,GAAG,CAAC,CAAC;IACvC,cAAc,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACpC,cAAc,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACzC,cAAc,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACtC,cAAc,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACpC,cAAc,CAAC,eAAe,GAAG,CAAC,CAAC;IACnC,cAAc,CAAC,UAAU,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,CAAC,GAAG,cAAc,CAAC;IACzB,OAAO;QACL,uBAAuB,KAAK,MAAM;QAClC,uBAAuB,CAAC,CAAC,eAAe,EAAE;QAC1C,wBAAwB,CAAC,CAAC,gBAAgB,EAAE;QAC5C,yBAAyB,CAAC,CAAC,gBAAgB,EAAE;QAC7C,wBAAwB,CAAC,CAAC,eAAe,EAAE;QAC3C,4BAA4B,CAAC,CAAC,mBAAmB,EAAE;QACnD,yBAAyB,CAAC,CAAC,gBAAgB,EAAE;QAC7C,wBAAwB,CAAC,CAAC,eAAe,EAAE;QAC3C,yBAAyB,CAAC,CAAC,gBAAgB,EAAE;QAC7C,+BAA+B,CAAC,CAAC,qBAAqB,EAAE;QACxD,4BAA4B,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;KAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,86 +1,86 @@
1
1
  import React from "react";
2
- import type { DOMElement } from "../types.js";
3
- /**
4
- * Ink-compatible `<Box>` component.
5
- *
6
- * We render a host element (`"ink-box"`) that is interpreted by this package's
7
- * custom reconciler and converted into Rezi VNodes.
8
- */
9
- declare const Box: React.ForwardRefExoticComponent<Readonly<{
10
- position?: "absolute" | "relative";
11
- columnGap?: number;
12
- rowGap?: number;
13
- gap?: number;
14
- margin?: number;
15
- marginX?: number;
16
- marginY?: number;
17
- marginTop?: number;
18
- marginBottom?: number;
19
- marginLeft?: number;
20
- marginRight?: number;
21
- padding?: number;
22
- paddingX?: number;
23
- paddingY?: number;
24
- paddingTop?: number;
25
- paddingBottom?: number;
26
- paddingLeft?: number;
27
- paddingRight?: number;
2
+ import type { InkHostNode } from "../reconciler/types.js";
3
+ type InkBorderStyleName = "single" | "double" | "round" | "bold" | "singleDouble" | "doubleSingle" | "classic" | "arrow";
4
+ export interface BoxProps {
5
+ flexDirection?: "row" | "row-reverse" | "column" | "column-reverse";
28
6
  flexGrow?: number;
29
7
  flexShrink?: number;
30
- flexDirection?: "row" | "column" | "row-reverse" | "column-reverse";
31
8
  flexBasis?: number | string;
32
9
  flexWrap?: "nowrap" | "wrap" | "wrap-reverse";
33
10
  alignItems?: "flex-start" | "center" | "flex-end" | "stretch";
34
- alignSelf?: "flex-start" | "center" | "flex-end" | "auto";
35
- justifyContent?: "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly" | "center";
11
+ alignSelf?: "auto" | "flex-start" | "center" | "flex-end";
12
+ justifyContent?: "flex-start" | "center" | "flex-end" | "space-between" | "space-around" | "space-evenly";
13
+ display?: "flex" | "none";
36
14
  width?: number | string;
37
15
  height?: number | string;
38
16
  minWidth?: number | string;
17
+ /** @jrichman/ink fork: non-upstream extension used by Gemini CLI tab headers */
39
18
  maxWidth?: number | string;
40
19
  minHeight?: number | string;
41
20
  maxHeight?: number | string;
42
- display?: "flex" | "none";
43
- borderStyle?: string;
44
- borderTop?: boolean;
45
- borderBottom?: boolean;
46
- borderLeft?: boolean;
47
- borderRight?: boolean;
21
+ position?: "relative" | "absolute";
22
+ top?: number;
23
+ right?: number;
24
+ bottom?: number;
25
+ left?: number;
26
+ padding?: number;
27
+ paddingX?: number;
28
+ paddingY?: number;
29
+ paddingTop?: number;
30
+ paddingRight?: number;
31
+ paddingBottom?: number;
32
+ paddingLeft?: number;
33
+ margin?: number;
34
+ marginX?: number;
35
+ marginY?: number;
36
+ marginTop?: number;
37
+ marginRight?: number;
38
+ marginBottom?: number;
39
+ marginLeft?: number;
40
+ gap?: number;
41
+ columnGap?: number;
42
+ rowGap?: number;
43
+ /** @jrichman/ink fork: supports custom border glyph maps in addition to named styles */
44
+ borderStyle?: InkBorderStyleName | Record<string, string>;
48
45
  borderColor?: string;
49
46
  borderTopColor?: string;
47
+ borderRightColor?: string;
50
48
  borderBottomColor?: string;
51
49
  borderLeftColor?: string;
52
- borderRightColor?: string;
53
50
  borderDimColor?: boolean;
54
51
  borderTopDimColor?: boolean;
52
+ borderRightDimColor?: boolean;
55
53
  borderBottomDimColor?: boolean;
56
54
  borderLeftDimColor?: boolean;
57
- borderRightDimColor?: boolean;
55
+ borderTop?: boolean;
56
+ borderRight?: boolean;
57
+ borderBottom?: boolean;
58
+ borderLeft?: boolean;
59
+ backgroundColor?: string;
60
+ ariaLabel?: string;
61
+ "aria-label"?: string;
62
+ accessibilityLabel?: string;
58
63
  overflow?: "visible" | "hidden" | "scroll";
59
64
  overflowX?: "visible" | "hidden" | "scroll";
60
65
  overflowY?: "visible" | "hidden" | "scroll";
61
- backgroundColor?: string;
62
- scrollTop?: number;
66
+ /** @jrichman/ink fork: horizontal scroll offset */
63
67
  scrollLeft?: number;
68
+ /** @jrichman/ink fork: vertical scroll offset */
69
+ scrollTop?: number;
70
+ /** @jrichman/ink fork: scrollbar thumb color */
64
71
  scrollbarThumbColor?: string;
65
- userSelect?: "auto" | "none" | "text" | "all";
66
- "aria-label"?: string;
67
- "aria-hidden"?: boolean;
68
- "aria-role"?: "button" | "checkbox" | "combobox" | "list" | "listbox" | "listitem" | "menu" | "menuitem" | "option" | "progressbar" | "radio" | "radiogroup" | "tab" | "tablist" | "table" | "textbox" | "timer" | "toolbar";
69
- "aria-state"?: Readonly<{
70
- busy?: boolean;
71
- checked?: boolean;
72
- disabled?: boolean;
73
- expanded?: boolean;
74
- multiline?: boolean;
75
- multiselectable?: boolean;
76
- readonly?: boolean;
77
- required?: boolean;
78
- selected?: boolean;
79
- }>;
72
+ /** @jrichman/ink fork: make this box opaque (paints background over content below) */
80
73
  opaque?: boolean;
74
+ /** @jrichman/ink fork: pin this box to the top of its parent (sticky header) */
81
75
  sticky?: boolean;
76
+ /** @jrichman/ink fork: children rendered inside the sticky area */
82
77
  stickyChildren?: React.ReactNode;
83
78
  children?: React.ReactNode;
84
- }> & React.RefAttributes<DOMElement>>;
85
- export default Box;
79
+ ref?: React.Ref<InkHostNode>;
80
+ }
81
+ export declare const Box: {
82
+ (props: BoxProps): React.ReactElement;
83
+ displayName: string;
84
+ };
85
+ export {};
86
86
  //# sourceMappingURL=Box.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../src/components/Box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;GAKG;AACH,QAAA,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YASuiF,CAAC;eAAsB,CAAC;gBAAuB,CAAC;gBAAuB,CAAC;iBAAwB,CAAC;uBAA8B,CAAC;gBAAuB,CAAC;gBAAuB,CAAC;gBAAuB,CAAC;;;;;;qCALtvF,CAAC;AAIH,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../src/components/Box.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,6 @@
1
1
  import React from "react";
2
- /**
3
- * Ink-compatible `<Box>` component.
4
- *
5
- * We render a host element (`"ink-box"`) that is interpreted by this package's
6
- * custom reconciler and converted into Rezi VNodes.
7
- */
8
- const Box = React.forwardRef((props, ref) => {
9
- const { children, ...rest } = props;
10
- // `ref` is accepted for compatibility but currently unused.
11
- return React.createElement("ink-box", { ...rest, ref }, children);
12
- });
2
+ export const Box = (props) => {
3
+ return React.createElement("ink-box", { ...props });
4
+ };
13
5
  Box.displayName = "Box";
14
- export default Box;
15
6
  //# sourceMappingURL=Box.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/components/Box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACpC,4DAA4D;IAC5D,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;AAExB,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/components/Box.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA4G1B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAe,EAAsB,EAAE;IACzD,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC"}
@@ -1,16 +1,6 @@
1
1
  import React from "react";
2
- export type Props = Readonly<{
3
- /**
4
- * Number of newlines to insert.
5
- *
6
- * @default 1
7
- */
2
+ export interface NewlineProps {
8
3
  count?: number;
9
- }>;
10
- /**
11
- * Ink-compatible `<Newline>` component.
12
- *
13
- * Adds one or more newline (`\n`) characters. Intended to be used within `<Text>`.
14
- */
15
- export default function Newline({ count }: Props): React.JSX.Element;
4
+ }
5
+ export declare const Newline: React.FC<NewlineProps>;
16
6
  //# sourceMappingURL=Newline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Newline.d.ts","sourceRoot":"","sources":["../../src/components/Newline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,KAAS,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEvE"}
1
+ {"version":3,"file":"Newline.d.ts","sourceRoot":"","sources":["../../src/components/Newline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAE1C,CAAC"}
@@ -1,10 +1,6 @@
1
1
  import React from "react";
2
- /**
3
- * Ink-compatible `<Newline>` component.
4
- *
5
- * Adds one or more newline (`\n`) characters. Intended to be used within `<Text>`.
6
- */
7
- export default function Newline({ count = 1 }) {
8
- return React.createElement("ink-text", null, "\n".repeat(count));
9
- }
2
+ export const Newline = ({ count = 1 }) => {
3
+ return React.createElement("ink-virtual", { __inkType: "newline", count });
4
+ };
5
+ Newline.displayName = "Newline";
10
6
  //# sourceMappingURL=Newline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Newline.js","sourceRoot":"","sources":["../../src/components/Newline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,EAAS;IAClD,OAAO,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"Newline.js","sourceRoot":"","sources":["../../src/components/Newline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE;IAC/D,OAAO,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC"}
@@ -1,9 +1,3 @@
1
1
  import React from "react";
2
- /**
3
- * Ink-compatible `<Spacer>` component.
4
- *
5
- * Ink implements this as `<Box flexGrow={1} />`. For Rezi, we map it directly
6
- * to a spacer node to avoid creating unnecessary layout containers.
7
- */
8
- export default function Spacer(): React.JSX.Element;
2
+ export declare const Spacer: React.FC;
9
3
  //# sourceMappingURL=Spacer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Spacer.d.ts","sourceRoot":"","sources":["../../src/components/Spacer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAElD"}
1
+ {"version":3,"file":"Spacer.d.ts","sourceRoot":"","sources":["../../src/components/Spacer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAE1B,CAAC"}
@@ -1,11 +1,6 @@
1
1
  import React from "react";
2
- /**
3
- * Ink-compatible `<Spacer>` component.
4
- *
5
- * Ink implements this as `<Box flexGrow={1} />`. For Rezi, we map it directly
6
- * to a spacer node to avoid creating unnecessary layout containers.
7
- */
8
- export default function Spacer() {
9
- return React.createElement("ink-spacer", null);
10
- }
2
+ export const Spacer = () => {
3
+ return React.createElement("ink-box", { __inkType: "spacer", flexGrow: 1 });
4
+ };
5
+ Spacer.displayName = "Spacer";
11
6
  //# sourceMappingURL=Spacer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Spacer.js","sourceRoot":"","sources":["../../src/components/Spacer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM;IAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"Spacer.js","sourceRoot":"","sources":["../../src/components/Spacer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAa,GAAG,EAAE;IACnC,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
@@ -1,29 +1,15 @@
1
- import React, { type ReactNode } from "react";
2
- import type { BoxProps } from "../types.js";
3
- type BoxStyleProps = Omit<BoxProps, "children">;
4
- export type Props<T> = Readonly<{
5
- /**
6
- * Array of items of any type to render using a function you pass as a component child.
7
- */
8
- items: readonly T[];
9
- /**
10
- * Styles to apply to a container of child elements. See `<Box>` for supported properties.
11
- */
12
- style?: BoxStyleProps;
13
- /**
14
- * Function that is called to render every item in `items` array.
15
- * First argument is an item itself and second argument is index of that item in `items` array.
16
- * Note that `key` must be assigned to the root component.
17
- */
18
- children: (item: T, index: number) => ReactNode;
19
- }>;
1
+ import React from "react";
2
+ export interface StaticProps<T> {
3
+ items: T[];
4
+ children: (item: T, index: number) => React.ReactNode;
5
+ style?: Record<string, unknown>;
6
+ }
20
7
  /**
21
- * Ink-compatible `<Static>` component.
22
- *
23
- * Ink's implementation relies on static output being rendered separately and left on the terminal.
24
- * Rezi re-renders the full framebuffer, so we emulate Ink semantics by accumulating static nodes
25
- * in the renderer layer (see `internal_static` handling in the compat reconciler).
8
+ * <Static> renders items once. This implementation marks the subtree as static
9
+ * so renderers can treat it as scrollback-oriented output.
26
10
  */
27
- export default function Static<T>(props: Props<T>): React.JSX.Element;
28
- export {};
11
+ export declare function Static<T>(props: StaticProps<T>): React.ReactElement;
12
+ export declare namespace Static {
13
+ var displayName: string;
14
+ }
29
15
  //# sourceMappingURL=Static.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Static.d.ts","sourceRoot":"","sources":["../../src/components/Static.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEhD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC9B;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CACjD,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsBpE"}
1
+ {"version":3,"file":"Static.d.ts","sourceRoot":"","sources":["../../src/components/Static.ts"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAElE,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CA6BnE;yBA7Be,MAAM"}
@@ -1,24 +1,23 @@
1
1
  import React, { useLayoutEffect, useMemo, useState } from "react";
2
2
  /**
3
- * Ink-compatible `<Static>` component.
4
- *
5
- * Ink's implementation relies on static output being rendered separately and left on the terminal.
6
- * Rezi re-renders the full framebuffer, so we emulate Ink semantics by accumulating static nodes
7
- * in the renderer layer (see `internal_static` handling in the compat reconciler).
3
+ * <Static> renders items once. This implementation marks the subtree as static
4
+ * so renderers can treat it as scrollback-oriented output.
8
5
  */
9
- export default function Static(props) {
10
- const { items, children: render, style: customStyle } = props;
6
+ export function Static(props) {
7
+ const { items, children: renderItem, style } = props;
11
8
  const [index, setIndex] = useState(0);
12
- const itemsToRender = useMemo(() => items.slice(index), [items, index]);
9
+ const itemsToRender = useMemo(() => {
10
+ return items.slice(index);
11
+ }, [items, index]);
13
12
  useLayoutEffect(() => {
14
13
  setIndex(items.length);
15
14
  }, [items.length]);
16
- const children = itemsToRender.map((item, itemIndex) => render(item, index + itemIndex));
17
- const style = useMemo(() => ({
15
+ const staticStyle = {
16
+ ...(style ?? {}),
18
17
  position: "absolute",
19
18
  flexDirection: "column",
20
- ...(customStyle ?? {}),
21
- }), [customStyle]);
22
- return React.createElement("ink-box", { internal_static: true, ...style }, children);
19
+ };
20
+ return React.createElement("ink-box", { __inkStatic: true, ...staticStyle }, ...itemsToRender.map((item, itemIndex) => React.createElement(React.Fragment, { key: `${index}:${itemIndex}` }, renderItem(item, index + itemIndex))));
23
21
  }
22
+ Static.displayName = "Static";
24
23
  //# sourceMappingURL=Static.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Static.js","sourceRoot":"","sources":["../../src/components/Static.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAsBlF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAI,KAAe;IAC/C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAExE,eAAe,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IAEzF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,UAAmB;QAC7B,aAAa,EAAE,QAAiB;QAChC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;KACvB,CAAC,EACF,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"Static.js","sourceRoot":"","sources":["../../src/components/Static.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQlE;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAI,KAAqB;IAC7C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnB,eAAe,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnB,MAAM,WAAW,GAA4B;QAC3C,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAChB,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,QAAQ;KACxB,CAAC;IAEF,OAAO,KAAK,CAAC,aAAa,CACxB,SAAS,EACT,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,EACrC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CACvC,KAAK,CAAC,aAAa,CACjB,KAAK,CAAC,QAAQ,EACd,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,EAAE,EAChC,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,CACpC,CACF,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}