@inhuman.tools/quickdraw 0.0.0-stage → 0.3.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 (522) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +101 -2
  3. package/aurora.vert +168 -0
  4. package/dist/bench/host.d.ts +62 -0
  5. package/dist/bench/host.d.ts.map +1 -0
  6. package/dist/bench/host.js +77 -0
  7. package/dist/bench/host.js.map +1 -0
  8. package/dist/bench/main.d.ts +6 -0
  9. package/dist/bench/main.d.ts.map +1 -0
  10. package/dist/bench/main.js +118 -0
  11. package/dist/bench/main.js.map +1 -0
  12. package/dist/bench/model.d.ts +36 -0
  13. package/dist/bench/model.d.ts.map +1 -0
  14. package/dist/bench/model.js +112 -0
  15. package/dist/bench/model.js.map +1 -0
  16. package/dist/bench/tea.d.ts +14 -0
  17. package/dist/bench/tea.d.ts.map +1 -0
  18. package/dist/bench/tea.js +6 -0
  19. package/dist/bench/tea.js.map +1 -0
  20. package/dist/bench/view.d.ts +9 -0
  21. package/dist/bench/view.d.ts.map +1 -0
  22. package/dist/bench/view.js +88 -0
  23. package/dist/bench/view.js.map +1 -0
  24. package/dist/bench/worker.d.ts +6 -0
  25. package/dist/bench/worker.d.ts.map +1 -0
  26. package/dist/bench/worker.js +46 -0
  27. package/dist/bench/worker.js.map +1 -0
  28. package/dist/buffer/bgfx-mark.d.ts +32 -0
  29. package/dist/buffer/bgfx-mark.d.ts.map +1 -0
  30. package/dist/buffer/bgfx-mark.js +43 -0
  31. package/dist/buffer/bgfx-mark.js.map +1 -0
  32. package/dist/buffer/index.d.ts +191 -0
  33. package/dist/buffer/index.d.ts.map +1 -0
  34. package/dist/buffer/index.js +353 -0
  35. package/dist/buffer/index.js.map +1 -0
  36. package/dist/capabilities/env.d.ts +23 -0
  37. package/dist/capabilities/env.d.ts.map +1 -0
  38. package/dist/capabilities/env.js +35 -0
  39. package/dist/capabilities/env.js.map +1 -0
  40. package/dist/capabilities/index.d.ts +13 -0
  41. package/dist/capabilities/index.d.ts.map +1 -0
  42. package/dist/capabilities/index.js +13 -0
  43. package/dist/capabilities/index.js.map +1 -0
  44. package/dist/capabilities/parse.d.ts +41 -0
  45. package/dist/capabilities/parse.d.ts.map +1 -0
  46. package/dist/capabilities/parse.js +86 -0
  47. package/dist/capabilities/parse.js.map +1 -0
  48. package/dist/capabilities/probe.d.ts +37 -0
  49. package/dist/capabilities/probe.d.ts.map +1 -0
  50. package/dist/capabilities/probe.js +75 -0
  51. package/dist/capabilities/probe.js.map +1 -0
  52. package/dist/capabilities/sequences.d.ts +33 -0
  53. package/dist/capabilities/sequences.d.ts.map +1 -0
  54. package/dist/capabilities/sequences.js +36 -0
  55. package/dist/capabilities/sequences.js.map +1 -0
  56. package/dist/capabilities/types.d.ts +25 -0
  57. package/dist/capabilities/types.d.ts.map +1 -0
  58. package/dist/capabilities/types.js +5 -0
  59. package/dist/capabilities/types.js.map +1 -0
  60. package/dist/index.d.ts +11 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +11 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/input/decode.d.ts +167 -0
  65. package/dist/input/decode.d.ts.map +1 -0
  66. package/dist/input/decode.js +825 -0
  67. package/dist/input/decode.js.map +1 -0
  68. package/dist/input/draft.d.ts +85 -0
  69. package/dist/input/draft.d.ts.map +1 -0
  70. package/dist/input/draft.js +276 -0
  71. package/dist/input/draft.js.map +1 -0
  72. package/dist/input/index.d.ts +3 -0
  73. package/dist/input/index.d.ts.map +1 -0
  74. package/dist/input/index.js +3 -0
  75. package/dist/input/index.js.map +1 -0
  76. package/dist/input/prompt-blocks.d.ts +58 -0
  77. package/dist/input/prompt-blocks.d.ts.map +1 -0
  78. package/dist/input/prompt-blocks.js +48 -0
  79. package/dist/input/prompt-blocks.js.map +1 -0
  80. package/dist/input/rich-draft.d.ts +46 -0
  81. package/dist/input/rich-draft.d.ts.map +1 -0
  82. package/dist/input/rich-draft.js +391 -0
  83. package/dist/input/rich-draft.js.map +1 -0
  84. package/dist/input/rich-hit.d.ts +17 -0
  85. package/dist/input/rich-hit.d.ts.map +1 -0
  86. package/dist/input/rich-hit.js +89 -0
  87. package/dist/input/rich-hit.js.map +1 -0
  88. package/dist/input/rich-intake.d.ts +16 -0
  89. package/dist/input/rich-intake.d.ts.map +1 -0
  90. package/dist/input/rich-intake.js +22 -0
  91. package/dist/input/rich-intake.js.map +1 -0
  92. package/dist/input/rich-paint.d.ts +13 -0
  93. package/dist/input/rich-paint.d.ts.map +1 -0
  94. package/dist/input/rich-paint.js +18 -0
  95. package/dist/input/rich-paint.js.map +1 -0
  96. package/dist/internals/bgfx/index.d.ts +17 -0
  97. package/dist/internals/bgfx/index.d.ts.map +1 -0
  98. package/dist/internals/bgfx/index.js +17 -0
  99. package/dist/internals/bgfx/index.js.map +1 -0
  100. package/dist/internals/bgfx/materialize.d.ts +31 -0
  101. package/dist/internals/bgfx/materialize.d.ts.map +1 -0
  102. package/dist/internals/bgfx/materialize.js +117 -0
  103. package/dist/internals/bgfx/materialize.js.map +1 -0
  104. package/dist/internals/bgfx/opacity.d.ts +37 -0
  105. package/dist/internals/bgfx/opacity.d.ts.map +1 -0
  106. package/dist/internals/bgfx/opacity.js +76 -0
  107. package/dist/internals/bgfx/opacity.js.map +1 -0
  108. package/dist/internals/bgfx/registry.d.ts +13 -0
  109. package/dist/internals/bgfx/registry.d.ts.map +1 -0
  110. package/dist/internals/bgfx/registry.js +24 -0
  111. package/dist/internals/bgfx/registry.js.map +1 -0
  112. package/dist/internals/bgfx/sab-layout.d.ts +61 -0
  113. package/dist/internals/bgfx/sab-layout.d.ts.map +1 -0
  114. package/dist/internals/bgfx/sab-layout.js +107 -0
  115. package/dist/internals/bgfx/sab-layout.js.map +1 -0
  116. package/dist/internals/bgfx/shader-frame-host.d.ts +22 -0
  117. package/dist/internals/bgfx/shader-frame-host.d.ts.map +1 -0
  118. package/dist/internals/bgfx/shader-frame-host.js +165 -0
  119. package/dist/internals/bgfx/shader-frame-host.js.map +1 -0
  120. package/dist/internals/bgfx/shadertoy-catalog.d.ts +41 -0
  121. package/dist/internals/bgfx/shadertoy-catalog.d.ts.map +1 -0
  122. package/dist/internals/bgfx/shadertoy-catalog.js +200 -0
  123. package/dist/internals/bgfx/shadertoy-catalog.js.map +1 -0
  124. package/dist/internals/bgfx/shadertoy-gl.d.ts +38 -0
  125. package/dist/internals/bgfx/shadertoy-gl.d.ts.map +1 -0
  126. package/dist/internals/bgfx/shadertoy-gl.js +283 -0
  127. package/dist/internals/bgfx/shadertoy-gl.js.map +1 -0
  128. package/dist/internals/bgfx/types.d.ts +51 -0
  129. package/dist/internals/bgfx/types.d.ts.map +1 -0
  130. package/dist/internals/bgfx/types.js +14 -0
  131. package/dist/internals/bgfx/types.js.map +1 -0
  132. package/dist/internals/bgfx-worker.d.ts +6 -0
  133. package/dist/internals/bgfx-worker.d.ts.map +1 -0
  134. package/dist/internals/bgfx-worker.js +131 -0
  135. package/dist/internals/bgfx-worker.js.map +1 -0
  136. package/dist/layout/birth.d.ts +77 -0
  137. package/dist/layout/birth.d.ts.map +1 -0
  138. package/dist/layout/birth.js +148 -0
  139. package/dist/layout/birth.js.map +1 -0
  140. package/dist/layout/children.d.ts +5 -0
  141. package/dist/layout/children.d.ts.map +1 -0
  142. package/dist/layout/children.js +19 -0
  143. package/dist/layout/children.js.map +1 -0
  144. package/dist/layout/chrome_frame.d.ts +254 -0
  145. package/dist/layout/chrome_frame.d.ts.map +1 -0
  146. package/dist/layout/chrome_frame.js +1080 -0
  147. package/dist/layout/chrome_frame.js.map +1 -0
  148. package/dist/layout/chrome_mask.d.ts +40 -0
  149. package/dist/layout/chrome_mask.d.ts.map +1 -0
  150. package/dist/layout/chrome_mask.js +150 -0
  151. package/dist/layout/chrome_mask.js.map +1 -0
  152. package/dist/layout/engine.d.ts +49 -0
  153. package/dist/layout/engine.d.ts.map +1 -0
  154. package/dist/layout/engine.js +1269 -0
  155. package/dist/layout/engine.js.map +1 -0
  156. package/dist/layout/flex.d.ts +36 -0
  157. package/dist/layout/flex.d.ts.map +1 -0
  158. package/dist/layout/flex.js +111 -0
  159. package/dist/layout/flex.js.map +1 -0
  160. package/dist/layout/grid.d.ts +36 -0
  161. package/dist/layout/grid.d.ts.map +1 -0
  162. package/dist/layout/grid.js +126 -0
  163. package/dist/layout/grid.js.map +1 -0
  164. package/dist/layout/index.d.ts +30 -0
  165. package/dist/layout/index.d.ts.map +1 -0
  166. package/dist/layout/index.js +30 -0
  167. package/dist/layout/index.js.map +1 -0
  168. package/dist/layout/indication.d.ts +34 -0
  169. package/dist/layout/indication.d.ts.map +1 -0
  170. package/dist/layout/indication.js +68 -0
  171. package/dist/layout/indication.js.map +1 -0
  172. package/dist/layout/length.d.ts +18 -0
  173. package/dist/layout/length.d.ts.map +1 -0
  174. package/dist/layout/length.js +24 -0
  175. package/dist/layout/length.js.map +1 -0
  176. package/dist/layout/live_paint.d.ts +145 -0
  177. package/dist/layout/live_paint.d.ts.map +1 -0
  178. package/dist/layout/live_paint.js +255 -0
  179. package/dist/layout/live_paint.js.map +1 -0
  180. package/dist/layout/markdown.d.ts +22 -0
  181. package/dist/layout/markdown.d.ts.map +1 -0
  182. package/dist/layout/markdown.js +167 -0
  183. package/dist/layout/markdown.js.map +1 -0
  184. package/dist/layout/measure.d.ts +46 -0
  185. package/dist/layout/measure.d.ts.map +1 -0
  186. package/dist/layout/measure.js +307 -0
  187. package/dist/layout/measure.js.map +1 -0
  188. package/dist/layout/paint-hotkey.d.ts +45 -0
  189. package/dist/layout/paint-hotkey.d.ts.map +1 -0
  190. package/dist/layout/paint-hotkey.js +152 -0
  191. package/dist/layout/paint-hotkey.js.map +1 -0
  192. package/dist/layout/paint.d.ts +25 -0
  193. package/dist/layout/paint.d.ts.map +1 -0
  194. package/dist/layout/paint.js +189 -0
  195. package/dist/layout/paint.js.map +1 -0
  196. package/dist/layout/paint_theme.d.ts +85 -0
  197. package/dist/layout/paint_theme.d.ts.map +1 -0
  198. package/dist/layout/paint_theme.js +76 -0
  199. package/dist/layout/paint_theme.js.map +1 -0
  200. package/dist/layout/progress.d.ts +31 -0
  201. package/dist/layout/progress.d.ts.map +1 -0
  202. package/dist/layout/progress.js +83 -0
  203. package/dist/layout/progress.js.map +1 -0
  204. package/dist/layout/selection.d.ts +136 -0
  205. package/dist/layout/selection.d.ts.map +1 -0
  206. package/dist/layout/selection.js +312 -0
  207. package/dist/layout/selection.js.map +1 -0
  208. package/dist/layout/selection_gesture.d.ts +88 -0
  209. package/dist/layout/selection_gesture.d.ts.map +1 -0
  210. package/dist/layout/selection_gesture.js +239 -0
  211. package/dist/layout/selection_gesture.js.map +1 -0
  212. package/dist/layout/selection_paint.d.ts +47 -0
  213. package/dist/layout/selection_paint.d.ts.map +1 -0
  214. package/dist/layout/selection_paint.js +320 -0
  215. package/dist/layout/selection_paint.js.map +1 -0
  216. package/dist/layout/serialize.d.ts +49 -0
  217. package/dist/layout/serialize.d.ts.map +1 -0
  218. package/dist/layout/serialize.js +437 -0
  219. package/dist/layout/serialize.js.map +1 -0
  220. package/dist/layout/squeeze.d.ts +58 -0
  221. package/dist/layout/squeeze.d.ts.map +1 -0
  222. package/dist/layout/squeeze.js +239 -0
  223. package/dist/layout/squeeze.js.map +1 -0
  224. package/dist/layout/text.d.ts +44 -0
  225. package/dist/layout/text.d.ts.map +1 -0
  226. package/dist/layout/text.js +230 -0
  227. package/dist/layout/text.js.map +1 -0
  228. package/dist/layout/theme_store.d.ts +21 -0
  229. package/dist/layout/theme_store.d.ts.map +1 -0
  230. package/dist/layout/theme_store.js +133 -0
  231. package/dist/layout/theme_store.js.map +1 -0
  232. package/dist/layout/types.d.ts +564 -0
  233. package/dist/layout/types.d.ts.map +1 -0
  234. package/dist/layout/types.js +2 -0
  235. package/dist/layout/types.js.map +1 -0
  236. package/dist/layout/visual_draft.d.ts +60 -0
  237. package/dist/layout/visual_draft.d.ts.map +1 -0
  238. package/dist/layout/visual_draft.js +199 -0
  239. package/dist/layout/visual_draft.js.map +1 -0
  240. package/dist/lexicon/color.d.ts +22 -0
  241. package/dist/lexicon/color.d.ts.map +1 -0
  242. package/dist/lexicon/color.js +6 -0
  243. package/dist/lexicon/color.js.map +1 -0
  244. package/dist/lexicon/index.d.ts +15 -0
  245. package/dist/lexicon/index.d.ts.map +1 -0
  246. package/dist/lexicon/index.js +15 -0
  247. package/dist/lexicon/index.js.map +1 -0
  248. package/dist/lexicon/prominence.d.ts +46 -0
  249. package/dist/lexicon/prominence.d.ts.map +1 -0
  250. package/dist/lexicon/prominence.js +73 -0
  251. package/dist/lexicon/prominence.js.map +1 -0
  252. package/dist/lexicon/quarantine.d.ts +21 -0
  253. package/dist/lexicon/quarantine.d.ts.map +1 -0
  254. package/dist/lexicon/quarantine.js +15 -0
  255. package/dist/lexicon/quarantine.js.map +1 -0
  256. package/dist/lexicon/roles.d.ts +37 -0
  257. package/dist/lexicon/roles.d.ts.map +1 -0
  258. package/dist/lexicon/roles.js +52 -0
  259. package/dist/lexicon/roles.js.map +1 -0
  260. package/dist/lexicon/tiers.d.ts +18 -0
  261. package/dist/lexicon/tiers.d.ts.map +1 -0
  262. package/dist/lexicon/tiers.js +17 -0
  263. package/dist/lexicon/tiers.js.map +1 -0
  264. package/dist/measure/index.d.ts +43 -0
  265. package/dist/measure/index.d.ts.map +1 -0
  266. package/dist/measure/index.js +120 -0
  267. package/dist/measure/index.js.map +1 -0
  268. package/dist/render.d.ts +72 -0
  269. package/dist/render.d.ts.map +1 -0
  270. package/dist/render.js +164 -0
  271. package/dist/render.js.map +1 -0
  272. package/dist/runtime/agents_keys.d.ts +8 -0
  273. package/dist/runtime/agents_keys.d.ts.map +1 -0
  274. package/dist/runtime/agents_keys.js +24 -0
  275. package/dist/runtime/agents_keys.js.map +1 -0
  276. package/dist/runtime/agents_peek.d.ts +44 -0
  277. package/dist/runtime/agents_peek.d.ts.map +1 -0
  278. package/dist/runtime/agents_peek.js +96 -0
  279. package/dist/runtime/agents_peek.js.map +1 -0
  280. package/dist/runtime/agents_preview.d.ts +25 -0
  281. package/dist/runtime/agents_preview.d.ts.map +1 -0
  282. package/dist/runtime/agents_preview.js +118 -0
  283. package/dist/runtime/agents_preview.js.map +1 -0
  284. package/dist/runtime/box_bus.d.ts +144 -0
  285. package/dist/runtime/box_bus.d.ts.map +1 -0
  286. package/dist/runtime/box_bus.js +74 -0
  287. package/dist/runtime/box_bus.js.map +1 -0
  288. package/dist/runtime/clipboard-image.d.ts +20 -0
  289. package/dist/runtime/clipboard-image.d.ts.map +1 -0
  290. package/dist/runtime/clipboard-image.js +62 -0
  291. package/dist/runtime/clipboard-image.js.map +1 -0
  292. package/dist/runtime/copy_toast.d.ts +46 -0
  293. package/dist/runtime/copy_toast.d.ts.map +1 -0
  294. package/dist/runtime/copy_toast.js +117 -0
  295. package/dist/runtime/copy_toast.js.map +1 -0
  296. package/dist/runtime/echo.d.ts +41 -0
  297. package/dist/runtime/echo.d.ts.map +1 -0
  298. package/dist/runtime/echo.js +112 -0
  299. package/dist/runtime/echo.js.map +1 -0
  300. package/dist/runtime/frame.d.ts +79 -0
  301. package/dist/runtime/frame.d.ts.map +1 -0
  302. package/dist/runtime/frame.js +258 -0
  303. package/dist/runtime/frame.js.map +1 -0
  304. package/dist/runtime/index.d.ts +16 -0
  305. package/dist/runtime/index.d.ts.map +1 -0
  306. package/dist/runtime/index.js +16 -0
  307. package/dist/runtime/index.js.map +1 -0
  308. package/dist/runtime/key_buffer.d.ts +19 -0
  309. package/dist/runtime/key_buffer.d.ts.map +1 -0
  310. package/dist/runtime/key_buffer.js +24 -0
  311. package/dist/runtime/key_buffer.js.map +1 -0
  312. package/dist/runtime/keys.d.ts +66 -0
  313. package/dist/runtime/keys.d.ts.map +1 -0
  314. package/dist/runtime/keys.js +220 -0
  315. package/dist/runtime/keys.js.map +1 -0
  316. package/dist/runtime/paint_snapshot.d.ts +9 -0
  317. package/dist/runtime/paint_snapshot.d.ts.map +1 -0
  318. package/dist/runtime/paint_snapshot.js +8 -0
  319. package/dist/runtime/paint_snapshot.js.map +1 -0
  320. package/dist/runtime/paint_source.d.ts +266 -0
  321. package/dist/runtime/paint_source.d.ts.map +1 -0
  322. package/dist/runtime/paint_source.js +532 -0
  323. package/dist/runtime/paint_source.js.map +1 -0
  324. package/dist/runtime/present_loop.d.ts +11 -0
  325. package/dist/runtime/present_loop.d.ts.map +1 -0
  326. package/dist/runtime/present_loop.js +46 -0
  327. package/dist/runtime/present_loop.js.map +1 -0
  328. package/dist/runtime/present_profile.d.ts +58 -0
  329. package/dist/runtime/present_profile.d.ts.map +1 -0
  330. package/dist/runtime/present_profile.js +130 -0
  331. package/dist/runtime/present_profile.js.map +1 -0
  332. package/dist/runtime/raster.d.ts +24 -0
  333. package/dist/runtime/raster.d.ts.map +1 -0
  334. package/dist/runtime/raster.js +43 -0
  335. package/dist/runtime/raster.js.map +1 -0
  336. package/dist/runtime/renderer.d.ts +151 -0
  337. package/dist/runtime/renderer.d.ts.map +1 -0
  338. package/dist/runtime/renderer.js +1607 -0
  339. package/dist/runtime/renderer.js.map +1 -0
  340. package/dist/runtime/screenshot.d.ts +9 -0
  341. package/dist/runtime/screenshot.d.ts.map +1 -0
  342. package/dist/runtime/screenshot.js +111 -0
  343. package/dist/runtime/screenshot.js.map +1 -0
  344. package/dist/runtime/selection_host.d.ts +41 -0
  345. package/dist/runtime/selection_host.d.ts.map +1 -0
  346. package/dist/runtime/selection_host.js +190 -0
  347. package/dist/runtime/selection_host.js.map +1 -0
  348. package/dist/runtime/stderr_hold.d.ts +16 -0
  349. package/dist/runtime/stderr_hold.d.ts.map +1 -0
  350. package/dist/runtime/stderr_hold.js +23 -0
  351. package/dist/runtime/stderr_hold.js.map +1 -0
  352. package/dist/runtime/thought_birth.d.ts +25 -0
  353. package/dist/runtime/thought_birth.d.ts.map +1 -0
  354. package/dist/runtime/thought_birth.js +122 -0
  355. package/dist/runtime/thought_birth.js.map +1 -0
  356. package/dist/runtime/thought_collapsed.d.ts +35 -0
  357. package/dist/runtime/thought_collapsed.d.ts.map +1 -0
  358. package/dist/runtime/thought_collapsed.js +94 -0
  359. package/dist/runtime/thought_collapsed.js.map +1 -0
  360. package/dist/runtime/tty.d.ts +58 -0
  361. package/dist/runtime/tty.d.ts.map +1 -0
  362. package/dist/runtime/tty.js +130 -0
  363. package/dist/runtime/tty.js.map +1 -0
  364. package/dist/theme/ansi16.d.ts +34 -0
  365. package/dist/theme/ansi16.d.ts.map +1 -0
  366. package/dist/theme/ansi16.js +181 -0
  367. package/dist/theme/ansi16.js.map +1 -0
  368. package/dist/theme/ansi256.d.ts +15 -0
  369. package/dist/theme/ansi256.d.ts.map +1 -0
  370. package/dist/theme/ansi256.js +94 -0
  371. package/dist/theme/ansi256.js.map +1 -0
  372. package/dist/theme/ground.d.ts +8 -0
  373. package/dist/theme/ground.d.ts.map +1 -0
  374. package/dist/theme/ground.js +11 -0
  375. package/dist/theme/ground.js.map +1 -0
  376. package/dist/theme/index.d.ts +10 -0
  377. package/dist/theme/index.d.ts.map +1 -0
  378. package/dist/theme/index.js +10 -0
  379. package/dist/theme/index.js.map +1 -0
  380. package/dist/theme/region.d.ts +42 -0
  381. package/dist/theme/region.d.ts.map +1 -0
  382. package/dist/theme/region.js +105 -0
  383. package/dist/theme/region.js.map +1 -0
  384. package/dist/theme/resolver.d.ts +126 -0
  385. package/dist/theme/resolver.d.ts.map +1 -0
  386. package/dist/theme/resolver.js +366 -0
  387. package/dist/theme/resolver.js.map +1 -0
  388. package/dist/theme/salience.d.ts +90 -0
  389. package/dist/theme/salience.d.ts.map +1 -0
  390. package/dist/theme/salience.js +208 -0
  391. package/dist/theme/salience.js.map +1 -0
  392. package/dist/theme/seeds.d.ts +113 -0
  393. package/dist/theme/seeds.d.ts.map +1 -0
  394. package/dist/theme/seeds.js +52 -0
  395. package/dist/theme/seeds.js.map +1 -0
  396. package/dist/theme/selection.d.ts +94 -0
  397. package/dist/theme/selection.d.ts.map +1 -0
  398. package/dist/theme/selection.js +135 -0
  399. package/dist/theme/selection.js.map +1 -0
  400. package/dist/theme/theme.d.ts +41 -0
  401. package/dist/theme/theme.d.ts.map +1 -0
  402. package/dist/theme/theme.js +34 -0
  403. package/dist/theme/theme.js.map +1 -0
  404. package/dist/widgets/composer-caret.d.ts +47 -0
  405. package/dist/widgets/composer-caret.d.ts.map +1 -0
  406. package/dist/widgets/composer-caret.js +90 -0
  407. package/dist/widgets/composer-caret.js.map +1 -0
  408. package/dist/widgets/composer-click.d.ts +30 -0
  409. package/dist/widgets/composer-click.d.ts.map +1 -0
  410. package/dist/widgets/composer-click.js +89 -0
  411. package/dist/widgets/composer-click.js.map +1 -0
  412. package/dist/widgets/composer-command.d.ts +64 -0
  413. package/dist/widgets/composer-command.d.ts.map +1 -0
  414. package/dist/widgets/composer-command.js +127 -0
  415. package/dist/widgets/composer-command.js.map +1 -0
  416. package/dist/widgets/composer-frame.d.ts +74 -0
  417. package/dist/widgets/composer-frame.d.ts.map +1 -0
  418. package/dist/widgets/composer-frame.js +284 -0
  419. package/dist/widgets/composer-frame.js.map +1 -0
  420. package/dist/widgets/composer-picker.d.ts +89 -0
  421. package/dist/widgets/composer-picker.d.ts.map +1 -0
  422. package/dist/widgets/composer-picker.js +240 -0
  423. package/dist/widgets/composer-picker.js.map +1 -0
  424. package/dist/widgets/diff.d.ts +11 -0
  425. package/dist/widgets/diff.d.ts.map +1 -0
  426. package/dist/widgets/diff.js +19 -0
  427. package/dist/widgets/diff.js.map +1 -0
  428. package/dist/widgets/expand.d.ts +28 -0
  429. package/dist/widgets/expand.d.ts.map +1 -0
  430. package/dist/widgets/expand.js +94 -0
  431. package/dist/widgets/expand.js.map +1 -0
  432. package/dist/widgets/index.d.ts +126 -0
  433. package/dist/widgets/index.d.ts.map +1 -0
  434. package/dist/widgets/index.js +455 -0
  435. package/dist/widgets/index.js.map +1 -0
  436. package/dist/widgets/internals/arrival-lang.d.ts +88 -0
  437. package/dist/widgets/internals/arrival-lang.d.ts.map +1 -0
  438. package/dist/widgets/internals/arrival-lang.js +211 -0
  439. package/dist/widgets/internals/arrival-lang.js.map +1 -0
  440. package/dist/widgets/internals/diff-expand.d.ts +93 -0
  441. package/dist/widgets/internals/diff-expand.d.ts.map +1 -0
  442. package/dist/widgets/internals/diff-expand.js +1106 -0
  443. package/dist/widgets/internals/diff-expand.js.map +1 -0
  444. package/dist/widgets/internals/embedded-syntax.d.ts +62 -0
  445. package/dist/widgets/internals/embedded-syntax.d.ts.map +1 -0
  446. package/dist/widgets/internals/embedded-syntax.js +465 -0
  447. package/dist/widgets/internals/embedded-syntax.js.map +1 -0
  448. package/dist/widgets/internals/markdown-expand.d.ts +57 -0
  449. package/dist/widgets/internals/markdown-expand.d.ts.map +1 -0
  450. package/dist/widgets/internals/markdown-expand.js +980 -0
  451. package/dist/widgets/internals/markdown-expand.js.map +1 -0
  452. package/dist/widgets/internals/overlay-syntax.d.ts +24 -0
  453. package/dist/widgets/internals/overlay-syntax.d.ts.map +1 -0
  454. package/dist/widgets/internals/overlay-syntax.js +90 -0
  455. package/dist/widgets/internals/overlay-syntax.js.map +1 -0
  456. package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts +6 -0
  457. package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts.map +1 -0
  458. package/dist/widgets/internals/pierre-parse/cleanLastNewline.js +8 -0
  459. package/dist/widgets/internals/pierre-parse/cleanLastNewline.js.map +1 -0
  460. package/dist/widgets/internals/pierre-parse/constants.d.ts +13 -0
  461. package/dist/widgets/internals/pierre-parse/constants.d.ts.map +1 -0
  462. package/dist/widgets/internals/pierre-parse/constants.js +13 -0
  463. package/dist/widgets/internals/pierre-parse/constants.js.map +1 -0
  464. package/dist/widgets/internals/pierre-parse/detachString.d.ts +3 -0
  465. package/dist/widgets/internals/pierre-parse/detachString.d.ts.map +1 -0
  466. package/dist/widgets/internals/pierre-parse/detachString.js +24 -0
  467. package/dist/widgets/internals/pierre-parse/detachString.js.map +1 -0
  468. package/dist/widgets/internals/pierre-parse/index.d.ts +8 -0
  469. package/dist/widgets/internals/pierre-parse/index.d.ts.map +1 -0
  470. package/dist/widgets/internals/pierre-parse/index.js +8 -0
  471. package/dist/widgets/internals/pierre-parse/index.js.map +1 -0
  472. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts +15 -0
  473. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts.map +1 -0
  474. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js +39 -0
  475. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js.map +1 -0
  476. package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts +11 -0
  477. package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts.map +1 -0
  478. package/dist/widgets/internals/pierre-parse/parsePatchFiles.js +621 -0
  479. package/dist/widgets/internals/pierre-parse/parsePatchFiles.js.map +1 -0
  480. package/dist/widgets/internals/pierre-parse/types.d.ts +73 -0
  481. package/dist/widgets/internals/pierre-parse/types.d.ts.map +1 -0
  482. package/dist/widgets/internals/pierre-parse/types.js +7 -0
  483. package/dist/widgets/internals/pierre-parse/types.js.map +1 -0
  484. package/dist/widgets/internals/syntax.d.ts +55 -0
  485. package/dist/widgets/internals/syntax.d.ts.map +1 -0
  486. package/dist/widgets/internals/syntax.js +261 -0
  487. package/dist/widgets/internals/syntax.js.map +1 -0
  488. package/dist/widgets/markdown.d.ts +14 -0
  489. package/dist/widgets/markdown.d.ts.map +1 -0
  490. package/dist/widgets/markdown.js +9 -0
  491. package/dist/widgets/markdown.js.map +1 -0
  492. package/dist/widgets/shadow-stream.d.ts +88 -0
  493. package/dist/widgets/shadow-stream.d.ts.map +1 -0
  494. package/dist/widgets/shadow-stream.js +359 -0
  495. package/dist/widgets/shadow-stream.js.map +1 -0
  496. package/dist/widgets/speech.d.ts +36 -0
  497. package/dist/widgets/speech.d.ts.map +1 -0
  498. package/dist/widgets/speech.js +238 -0
  499. package/dist/widgets/speech.js.map +1 -0
  500. package/dist/widgets/stream-birth.d.ts +13 -0
  501. package/dist/widgets/stream-birth.d.ts.map +1 -0
  502. package/dist/widgets/stream-birth.js +70 -0
  503. package/dist/widgets/stream-birth.js.map +1 -0
  504. package/dist/widgets/syntax-boot.d.ts +25 -0
  505. package/dist/widgets/syntax-boot.d.ts.map +1 -0
  506. package/dist/widgets/syntax-boot.js +181 -0
  507. package/dist/widgets/syntax-boot.js.map +1 -0
  508. package/dist/widgets/text.d.ts +16 -0
  509. package/dist/widgets/text.d.ts.map +1 -0
  510. package/dist/widgets/text.js +14 -0
  511. package/dist/widgets/text.js.map +1 -0
  512. package/dist/widgets/transcript.d.ts +44 -0
  513. package/dist/widgets/transcript.d.ts.map +1 -0
  514. package/dist/widgets/transcript.js +106 -0
  515. package/dist/widgets/transcript.js.map +1 -0
  516. package/doom.vert +1840 -0
  517. package/fonts/DejaVuSans.ttf +0 -0
  518. package/fonts/DejaVuSansMono.ttf +0 -0
  519. package/fonts/LICENSE-DejaVu.txt +187 -0
  520. package/fonts/README.md +6 -0
  521. package/gradient.vert +75 -0
  522. package/package.json +146 -3
@@ -0,0 +1,564 @@
1
+ import type { Length } from "./length.js";
2
+ import { ChromeQuotaWindow, LiveDemand, LivePaint, SpinnerProfile } from "./live_paint.js";
3
+ import type { ChromeHotkey } from "./paint-hotkey.js";
4
+ import type { Buffer, Style } from "../buffer/index.js";
5
+ export type Rect = {
6
+ x: number;
7
+ y: number;
8
+ w: number;
9
+ h: number;
10
+ };
11
+ export type Intent = "activate" | "dismiss" | "focus" | "none";
12
+ /**
13
+ * CSS `user-select` parity — inline attribute (no rulesets yet). The same node
14
+ * tree must render with identical selectability in terminal and web.
15
+ *
16
+ * - `"auto"` — inherits (default; resolves per-context like the CSS value)
17
+ * - `"text"` — selectable content (transcript body, composer body)
18
+ * - `"none"` — chrome (borders, gutters, status bars, animations);
19
+ * excluded from selection and from clipboard serialization
20
+ * - `"all"` — whole-element selection: a click/selection snaps to the
21
+ * entire node, no partial range (Notion-block / Warp-block)
22
+ * - `"contain"` — selection is confined within this node and may not extend
23
+ * into siblings (the composer `<textarea>`-confinement case)
24
+ *
25
+ * Engine semantics: a node with `userSelect` in {text, all, contain} is
26
+ * eligible for the hitlist even when `intent === "none"` (so a drag can start
27
+ * a selection on it). `"none"` and `"auto"` (defaulting to non-selectable at
28
+ * the root) are NOT hit-eligible on their own. Inheritance follows CSS:
29
+ * children inherit the parent's value unless they override.
30
+ *
31
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/user-select
32
+ */
33
+ export type UserSelect = "auto" | "text" | "none" | "all" | "contain";
34
+ export type Overflow = "visible" | "hidden" | "clip" | "auto" | "scroll";
35
+ export type OverflowAnchor = "auto" | "none";
36
+ export type BoxStyle = {
37
+ width?: Length;
38
+ height?: Length;
39
+ minWidth?: Length;
40
+ minHeight?: Length;
41
+ maxWidth?: Length;
42
+ maxHeight?: Length;
43
+ padding?: number | {
44
+ t?: number;
45
+ r?: number;
46
+ b?: number;
47
+ l?: number;
48
+ };
49
+ border?: boolean;
50
+ background?: Style;
51
+ overflow?: Overflow;
52
+ overflowX?: Overflow;
53
+ overflowY?: Overflow;
54
+ flex?: number | {
55
+ grow?: number;
56
+ shrink?: number;
57
+ basis?: Length;
58
+ };
59
+ flexGrow?: number;
60
+ flexShrink?: number;
61
+ flexBasis?: Length;
62
+ alignSelf?: "flex_start" | "flex_end" | "center" | "stretch";
63
+ margin?: number;
64
+ /**
65
+ * `bottom` — pull into the clip when the box would paint below it.
66
+ * `top` — pin to the clip top once the box's top edge scrolls above it,
67
+ * until the next sticky sibling pushes it out. A pin taller than the room
68
+ * left under that floor squeezes to its first content row instead of
69
+ * blanketing the viewport or scrolling away.
70
+ */
71
+ sticky?: "bottom" | "top";
72
+ /**
73
+ * Clip squeeze: pin first `head` children at the overlay top, last `tail`
74
+ * at the bottom, and elide the rest behind `·· N lines omitted ··`. Natural
75
+ * height stays the sum of children. Ask Diff uses `{ head: 4, tail: 4 }`.
76
+ */
77
+ squeeze?: {
78
+ head: number;
79
+ tail: number;
80
+ };
81
+ };
82
+ export type FlexStyle = {
83
+ direction?: "row" | "column" | "row_reverse" | "column_reverse";
84
+ gap?: number;
85
+ justifyContent?: "flex_start" | "flex_end" | "center" | "space_between" | "space_around" | "space_evenly";
86
+ alignItems?: "flex_start" | "flex_end" | "center" | "stretch";
87
+ padding?: number | {
88
+ t?: number;
89
+ r?: number;
90
+ b?: number;
91
+ l?: number;
92
+ };
93
+ width?: Length;
94
+ height?: Length;
95
+ };
96
+ /**
97
+ * CSS-grid subset (cell tracks). Children are row-major cells.
98
+ * `columns.length` is the column count; rows = ceil(children / cols).
99
+ *
100
+ * `lines: "inner"` paints │ / ─ / ┼ only between tracks — no outer box.
101
+ */
102
+ export type GridStyle = {
103
+ columns: Length[];
104
+ /** Default 1 when `lines: "inner"`, else 0. */
105
+ columnGap?: number;
106
+ /** Default 1 when `lines: "inner"`, else 0. */
107
+ rowGap?: number;
108
+ lines?: "none" | "inner";
109
+ /** Style for inner bars — keep dim / low-fg for subtle chrome. */
110
+ lineStyle?: Style;
111
+ /**
112
+ * Padding inside each cell (cells). Tables use `{ x: 1 }` so text breathes
113
+ * off the bars without inventing outer margins.
114
+ */
115
+ cellPad?: number | {
116
+ x?: number;
117
+ y?: number;
118
+ };
119
+ width?: Length;
120
+ height?: Length;
121
+ };
122
+ /** Layout-local bag. Not ComposerCommandChoice — do not import widgets. */
123
+ export type ChromeFramePickerRow = {
124
+ key?: string;
125
+ name: string;
126
+ status?: string;
127
+ annotation?: string;
128
+ description?: string;
129
+ actionDisplayName?: string;
130
+ actions?: ReadonlyArray<{
131
+ name: string;
132
+ displayName: string;
133
+ hotkey?: string;
134
+ }>;
135
+ href?: string;
136
+ };
137
+ /**
138
+ * Host-only stamps. expandWidgetPriors returns a paint-ready node immediately.
139
+ * `measured` is the width-tagged stamp from the last prepare. `atW` is the
140
+ * `maxW` that produced `w`/`h` — measure honors the stamp only at that width.
141
+ */
142
+ export type PaintReadyMark = {
143
+ regionProminence?: number;
144
+ paintReady?: true;
145
+ measured?: {
146
+ w: number;
147
+ h: number;
148
+ atW?: number;
149
+ };
150
+ };
151
+ /**
152
+ * Composer status-rail chip. A bare string is furniture (contour voice).
153
+ * `{ text, role }` is a signal — hue on the role, default prominence secondary.
154
+ */
155
+ export type ChromeStatusChip = {
156
+ text: string;
157
+ role?: string;
158
+ prominence?: number;
159
+ };
160
+ export type ChromeStatusItem = string | ChromeStatusChip;
161
+ export type LayoutNode = PaintReadyMark & ({
162
+ type: "box";
163
+ style?: BoxStyle;
164
+ children?: LayoutNode[];
165
+ id?: string;
166
+ key?: string;
167
+ intent?: Intent;
168
+ userSelect?: UserSelect;
169
+ inert?: boolean;
170
+ onClick?: unknown;
171
+ /**
172
+ * Diff logical line stamp — scoped onto descendant hits (like grid
173
+ * tableCell). Source of truth for git-format copy; paint may ellipsize.
174
+ */
175
+ diffLine?: DiffLineRef;
176
+ } | {
177
+ type: "flex";
178
+ style?: FlexStyle;
179
+ children?: LayoutNode[];
180
+ key?: string;
181
+ } | {
182
+ type: "grid";
183
+ style: GridStyle;
184
+ children?: LayoutNode[];
185
+ key?: string;
186
+ } | {
187
+ type: "text";
188
+ content: string;
189
+ whiteSpace?: "normal" | "nowrap" | "pre-wrap" | "pre-line";
190
+ ellipsis?: boolean;
191
+ lineClamp?: number;
192
+ style?: Style;
193
+ key?: string;
194
+ userSelect?: UserSelect;
195
+ /**
196
+ * When set, paint resolves label from wall clock (content is measure
197
+ * placeholder only). Present demand via Frame.liveDemand.
198
+ */
199
+ live?: LivePaint;
200
+ } | {
201
+ type: "viewport";
202
+ id: string;
203
+ key?: string;
204
+ children?: LayoutNode[];
205
+ overflowAnchor?: OverflowAnchor;
206
+ overflowX?: Overflow;
207
+ overflowY?: Overflow;
208
+ /**
209
+ * First visible content row when overflow-anchor is `none`.
210
+ * Layout stacks children vertically and offsets by this many rows.
211
+ * Ignored when overflow-anchor is `auto` (pin to bottom).
212
+ */
213
+ scroll?: number;
214
+ style?: BoxStyle;
215
+ } | {
216
+ type: "raw";
217
+ paint: (rect: Rect, buf: Buffer) => void;
218
+ key?: string;
219
+ intent?: Intent;
220
+ w?: number;
221
+ h?: number;
222
+ } | {
223
+ /**
224
+ * Law 6: `[lead][gutter|void][gap][content]` — content at column 3.
225
+ *
226
+ * Gutter:
227
+ * - `{ kind: "top", glyph }` — first row only (collapsed ⁖, user ❯)
228
+ * - `{ kind: "rule", glyph }` — same glyph every row (blockquote │,
229
+ * expanded extra ┃)
230
+ * - `{ kind: "corners", top, bottom?, mid? }` — range (omit bottom
231
+ * while open)
232
+ * - `{ kind: "spinner", profile?, rows? }` — paint-side spinner
233
+ */
234
+ type: "indication";
235
+ key?: string;
236
+ gutter: {
237
+ kind: "top";
238
+ glyph: string;
239
+ } | {
240
+ kind: "rule";
241
+ glyph: string;
242
+ } | {
243
+ kind: "corners";
244
+ top: string;
245
+ /** Last-row glyph; omit while open/live (no closer yet). */
246
+ bottom?: string | null;
247
+ /** Interior rows (default `·`). */
248
+ mid?: string;
249
+ } | {
250
+ kind: "spinner";
251
+ /** Semantic profile (thinking / tool / working). Default working. */
252
+ profile?: SpinnerProfile;
253
+ /** `top` (default) = first row only; `all` = every bar row. */
254
+ rows?: "top" | "all";
255
+ };
256
+ children?: LayoutNode[];
257
+ style?: Style;
258
+ intent?: Intent;
259
+ onClick?: unknown;
260
+ /**
261
+ * Selection eligibility. Thought chrome uses `"none"` so bare click
262
+ * activates collapse instead of starting a text selection.
263
+ */
264
+ userSelect?: UserSelect;
265
+ } | {
266
+ /**
267
+ * Law 6 exception: full-bleed body (must declare kind).
268
+ * Only allowlisted kinds may use this (diff, etc.).
269
+ */
270
+ type: "indentation_exception";
271
+ key?: string;
272
+ kind: "diff" | "code_pad" | "raw_full";
273
+ children?: LayoutNode[];
274
+ } | {
275
+ /**
276
+ * Absolute overlay layer. Placed after base children in paint order.
277
+ * `backdrop: true` with no `backdropStyle` stamps `regionProminence`
278
+ * onto every paint op already in the order (decision 1: the room
279
+ * recedes, identity stays visible — no scrim rect). Overlay children
280
+ * place after the stamp and stay full-prominence. Pass `backdropStyle`
281
+ * only for explicit painted furniture (bgRole + BgP or a literal
282
+ * wash); that path paints a fill and does not stamp.
283
+ */
284
+ type: "overlay";
285
+ key?: string;
286
+ /** center child in viewport when true */
287
+ center?: boolean;
288
+ /**
289
+ * Overlay-local origin for children. Wins over `center` and the
290
+ * default top-left stack. Used to seat a plaque next to an already
291
+ * laid-out anchor (copy-toast grain, in-tree).
292
+ */
293
+ origin?: {
294
+ x: number;
295
+ y: number;
296
+ };
297
+ backdrop?: boolean;
298
+ /** Explicit painted backdrop furniture — must set bg (or bgRole) if used. */
299
+ backdropStyle?: Style;
300
+ children?: LayoutNode[];
301
+ intent?: Intent;
302
+ onClick?: unknown;
303
+ } | {
304
+ /**
305
+ * Host-local `<details>`: TEA/MobX ship both branches; the renderer
306
+ * flips `collapsed`. Layout measures summary XOR children — never both.
307
+ */
308
+ type: "disclosure";
309
+ key?: string;
310
+ /** Default true (summary visible). Host collapse map overrides this flag. */
311
+ collapsed?: boolean;
312
+ summary: LayoutNode;
313
+ children?: LayoutNode[];
314
+ intent?: Intent;
315
+ onClick?: unknown;
316
+ userSelect?: UserSelect;
317
+ } | {
318
+ /** Markdown prior — render expands via widgets/expand (SMD). */
319
+ type: "markdown";
320
+ key?: string;
321
+ content: string;
322
+ style?: Style;
323
+ } | {
324
+ /** Pierre diff prior — render expands via widgets/expand. */
325
+ type: "diff";
326
+ key?: string;
327
+ old: string;
328
+ new: string;
329
+ width: number;
330
+ path?: string;
331
+ language?: string | null;
332
+ mode?: "auto" | "unified" | "split";
333
+ /** Paint-time elision after whole-file parse + highlight. `"all"` keeps every line. */
334
+ context?: number | "all";
335
+ lineDiffType?: "word-alt" | "word" | "char" | "none";
336
+ noHighlight?: boolean;
337
+ hideHeader?: boolean;
338
+ /**
339
+ * Ask Diff: pin this many body rows at each end and squeeze the
340
+ * middle (`·· N lines omitted ··`). In-tape Diff omits this.
341
+ */
342
+ stickyBottomRows?: number;
343
+ /** 1-based file line of the first displayed row. Span diffs default to 1. */
344
+ lineStart?: number;
345
+ } | {
346
+ /**
347
+ * Boxed prompt chrome — special measure/place/paint lineage
348
+ * (see chrome_frame.ts). Not flex assembly.
349
+ *
350
+ * Fixed outer width; multi-role top/bottom edges; body `│ draft │`.
351
+ * `key` hits the **body** rect (caret park); frame paint is under
352
+ * `${key}:frame` when key is set.
353
+ */
354
+ type: "chrome_frame";
355
+ key?: string;
356
+ width: number;
357
+ draft: string;
358
+ cursor?: number;
359
+ mark?: number | null;
360
+ placeholder?: string;
361
+ placeholderMode?: boolean;
362
+ hotkeys?: readonly ChromeHotkey[] | null;
363
+ hotkeysBottom?: boolean;
364
+ modHeld?: boolean;
365
+ topSegs?: Array<{
366
+ text: string;
367
+ role?: string;
368
+ prominence?: number;
369
+ bold?: boolean;
370
+ dim?: boolean;
371
+ underline?: boolean;
372
+ href?: string;
373
+ }>;
374
+ bodySegRows?: Array<Array<{
375
+ text: string;
376
+ role?: string;
377
+ prominence?: number;
378
+ bold?: boolean;
379
+ dim?: boolean;
380
+ italic?: boolean;
381
+ underline?: boolean;
382
+ href?: string;
383
+ fgRgb?: {
384
+ r: number;
385
+ g: number;
386
+ b: number;
387
+ };
388
+ }>>;
389
+ bodyGlyphs?: string[];
390
+ speculativeDraft?: string;
391
+ completion?: string;
392
+ annotation?: string | null;
393
+ annotationRole?: string;
394
+ /** T-join right-rail when stacked. ╭╮ keeps {@link annotation}. */
395
+ joinAnnotation?: string | null;
396
+ joinAnnotationRole?: string;
397
+ statusItems?: ChromeStatusItem[];
398
+ quotaWindows?: ChromeQuotaWindow[];
399
+ contextUsed?: number;
400
+ contextLimit?: number;
401
+ contourRole?: string;
402
+ selected?: boolean;
403
+ progress?: number;
404
+ progressRole?: string;
405
+ progressGlowAt?: number;
406
+ progressAnnotation?: string | null;
407
+ glyph?: string;
408
+ interactive?: boolean;
409
+ readOnly?: boolean;
410
+ joinBottom?: boolean;
411
+ joinTop?: boolean;
412
+ omitTop?: boolean;
413
+ plainBottom?: boolean;
414
+ bodyUserSelect?: UserSelect;
415
+ bodyRightCoverage?: number[];
416
+ picker?: {
417
+ rows: readonly ChromeFramePickerRow[];
418
+ selectedKey: string | null;
419
+ scrollOffset: number;
420
+ viewport: number;
421
+ };
422
+ });
423
+ /**
424
+ * Grid cell identity for semantic copy (minimal markdown tables).
425
+ * Set on hits placed as children of `type: "grid"`.
426
+ */
427
+ export type TableCellRef = {
428
+ gridKey: string;
429
+ row: number;
430
+ col: number;
431
+ nCols: number;
432
+ nRows: number;
433
+ };
434
+ /**
435
+ * Diff logical line for git-format selection copy + split mirror paint.
436
+ *
437
+ * Painted buffer may be a lie (▌, line numbers, soft-wrap).
438
+ * `text` is the full source line — wrong-copy is impossible when serialize
439
+ * rebuilds from this stamp (same class as tableCell).
440
+ *
441
+ * - `lineIndex` — document / git emission order (not split visual row order)
442
+ * - `side` — split half; context L/R share lineIndex so copy dedups and
443
+ * paint can mirror; change lines do not share lineIndex across sides
444
+ */
445
+ export type DiffLineRef = {
446
+ diffKey: string;
447
+ lineIndex: number;
448
+ kind: "ctx" | "del" | "add";
449
+ /** Full raw line (no git prefix). */
450
+ text: string;
451
+ /** Split only: which visual half this hit belongs to. */
452
+ side?: "L" | "R";
453
+ oldNo?: number | null;
454
+ newNo?: number | null;
455
+ };
456
+ export type HitMeta = {
457
+ key: string;
458
+ hitRect: Rect;
459
+ intent: Intent;
460
+ userSelect: UserSelect;
461
+ inert: boolean;
462
+ onClick?: unknown;
463
+ element?: {
464
+ kind: string;
465
+ /** Viewport: first visible content row after clamp. */
466
+ scrollY?: number;
467
+ /** Viewport: max first-visible row (`max(0, contentH - viewportH)`). */
468
+ maxScroll?: number;
469
+ };
470
+ /** true for flex/gap phantom containers */
471
+ phantom?: boolean;
472
+ /**
473
+ * Parent hit key (the enclosing node's key in {@link Frame.byKey}), or
474
+ * undefined for the root. Used by `elementAtPath` to reconstruct the
475
+ * root→leaf chain for structural selection (Phase 4): "expand selection
476
+ * from this cell to its containing block."
477
+ *
478
+ * This is a key reference, not a pointer — resolve via `frame.byKey`.
479
+ * Phantom containers (flex/gap, grid) carry parent too so a chain can
480
+ * pass through them; admission gating in `elementAtPath` decides whether
481
+ * they appear in the returned chain.
482
+ */
483
+ parent?: string;
484
+ /**
485
+ * When set, this hit is a grid cell — copy serializes to compact markdown
486
+ * instead of the full terminal padding/separator run.
487
+ */
488
+ tableCell?: TableCellRef;
489
+ /**
490
+ * When set, this hit is a diff line (or fragment of a soft-wrapped line).
491
+ * Copy rebuilds git-format lines; split context mirrors via shared lineIndex.
492
+ */
493
+ diffLine?: DiffLineRef;
494
+ };
495
+ export type PaintOp = {
496
+ kind: "text";
497
+ rect: Rect;
498
+ lines: string[];
499
+ style: Style;
500
+ } | {
501
+ kind: "border";
502
+ rect: Rect;
503
+ style: Style;
504
+ } | {
505
+ kind: "fill";
506
+ rect: Rect;
507
+ style: Style;
508
+ } | {
509
+ kind: "raw";
510
+ rect: Rect;
511
+ paint: (rect: Rect, buf: Buffer) => void;
512
+ }
513
+ /**
514
+ * Live decoration — resolved at paintFrame(nowMs), not at layout.
515
+ * Geometry is fixed; glyph/label is wall-clock pure. Present uses
516
+ * Frame.liveDemand.maxHz for fps-on-demand.
517
+ */
518
+ | {
519
+ kind: "live";
520
+ rect: Rect;
521
+ style: Style;
522
+ live: LivePaint;
523
+ /** Source text for `live.kind === "birth"` — paint applies the wavefront. */
524
+ content?: string;
525
+ };
526
+ export type Positioned = {
527
+ key?: string;
528
+ /** Allocation (wrap, birth, border, bgFx UV). */
529
+ rect: Rect;
530
+ paint: PaintOp[];
531
+ /** Nested scissor. Paint writes `op.rect ∩ clip ∩ buffer`. Omitted ⇒ no extra scissor. */
532
+ clip?: Rect;
533
+ };
534
+ export type Frame = {
535
+ version: number;
536
+ paintOrder: Positioned[];
537
+ hitList: HitMeta[];
538
+ /** Named geometry for hosts: `byKey.get(k)?.hitRect` (includes non-hittable chrome). */
539
+ byKey: Map<string, HitMeta>;
540
+ viewport: {
541
+ w: number;
542
+ h: number;
543
+ };
544
+ /**
545
+ * Present demand from live paint ops (spinners, elapsed labels).
546
+ * maxHz === 0 → no live present needed for decoration.
547
+ */
548
+ liveDemand?: LiveDemand;
549
+ };
550
+ /**
551
+ * Paint-time theme hook — always carries a ColorResolver.
552
+ * Role/bgRole intent only becomes SGR fields through `resolveStyle`; there is
553
+ * no identity fallback. Pass `attuneTheme(...).paint`, or omit the paintFrame
554
+ * theme arg to use ambient `paintTheme()`. Empty `{}` is not assignable.
555
+ */
556
+ export type Theme = {
557
+ resolveStyle: (style: Style) => Style;
558
+ };
559
+ export type LayoutOpts = {
560
+ /** injected text measure; default display columns via ../measure/index.js */
561
+ measure?: (text: string) => number;
562
+ frameVersion?: number;
563
+ };
564
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ export type VisualDraftLine = {
2
+ /** UTF-16 start offset into draft (inclusive). */
3
+ readonly start: number;
4
+ /** UTF-16 end offset into draft (exclusive); does not include a trailing `\n`. */
5
+ readonly end: number;
6
+ readonly text: string;
7
+ };
8
+ /**
9
+ * Partition `draft` into painted body rows at `textW` content columns.
10
+ * Empty draft → one empty visual line at 0 (caret-only row).
11
+ */
12
+ export declare function visualDraftLines(draft: string, textW: number): readonly VisualDraftLine[];
13
+ /**
14
+ * Index of the visual line containing `cursor`.
15
+ *
16
+ * Soft-wrap / full-row law (browser textarea):
17
+ * - offset at end of row i that continues as row i+1 (shared boundary) → i+1
18
+ * - offset at end of a **full-width last** row (measure ≥ textW, no next) →
19
+ * a **virtual** empty continuation row at index `lines.length` (col 0).
20
+ * Without this, park places the caret on the right border cell (one past
21
+ * the text column) while paint only fills `textW` content cells.
22
+ *
23
+ * Hard newline is two offsets (`line.end` is the `\n`, next row starts at
24
+ * `end+1`). Cursor on `\n` stays on this row (after the last glyph). Cursor
25
+ * after `\n` is col 0 of the next row. Collapsing them onto the next row
26
+ * parks the caret on the empty line while insert still splices before `\n`.
27
+ *
28
+ * Returns `0..lines.length` inclusive (the last value is the virtual row).
29
+ */
30
+ export declare function visualLineIndex(lines: readonly VisualDraftLine[], cursor: number, textW?: number): number;
31
+ /**
32
+ * Display column of the caret within its visual line (0 = start of content).
33
+ */
34
+ export declare function visualColInLine(draft: string, line: VisualDraftLine, cursor: number): number;
35
+ /**
36
+ * Map a preferred display column onto a UTF-16 offset within `line`.
37
+ * Lands before a grapheme when the column falls inside a wide cell.
38
+ */
39
+ export declare function offsetAtVisualCol(draft: string, line: VisualDraftLine, targetCol: number): number;
40
+ export type VisualMotion = "line_up" | "line_down" | "line_home" | "line_end";
41
+ /**
42
+ * Spatial caret park within the content box (0-based line, display col).
43
+ *
44
+ * Soft-wrap boundary law (browser / textarea): when the UTF-16 offset is both
45
+ * the end of visual row i and the start of row i+1, the caret sits on **row
46
+ * i+1 at col 0** — not trailing past the last glyph of row i. Park and ↑/↓
47
+ * must share this, or arrow-up from a wrap-start jumps to "after last" of
48
+ * the previous row (preferred-col = full width) instead of its first char.
49
+ */
50
+ export declare function visualCaretGeometry(draft: string, cursor: number, textW: number): {
51
+ readonly line: number;
52
+ readonly colInContent: number;
53
+ readonly totalLines: number;
54
+ };
55
+ /**
56
+ * Spatial caret motion over painted draft rows.
57
+ * `textW` must be the composer body content width (outer − chrome), same as paint.
58
+ */
59
+ export declare function moveVisualDraft(draft: string, cursor: number, textW: number, motion: VisualMotion): number;
60
+ //# sourceMappingURL=visual_draft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual_draft.d.ts","sourceRoot":"","sources":["../../src/layout/visual_draft.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,eAAe,GAAG;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CA4BzF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBzG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAajG;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAkCA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CA4C1G"}