@inhuman.tools/quickdraw 0.0.0-bootstrap.0 → 0.2.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 +102 -1
  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 +27 -0
  281. package/dist/runtime/agents_preview.d.ts.map +1 -0
  282. package/dist/runtime/agents_preview.js +122 -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 +147 -4
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Experiment model: scrollable log + side panel + clock + optional CPU burn.
3
+ * Shared types for worker and main (view runs on main).
4
+ */
5
+ const MAX_LINES = 5000;
6
+ export function init(cols, rows) {
7
+ const lines = [];
8
+ for (let i = 0; i < 200; i++) {
9
+ lines.push(seedLine(i));
10
+ }
11
+ return {
12
+ cols,
13
+ rows,
14
+ lines,
15
+ scroll: 0,
16
+ now: Date.now(),
17
+ tick: 0,
18
+ burnMs: 0,
19
+ paused: false,
20
+ };
21
+ }
22
+ function seedLine(i) {
23
+ return `[${String(i).padStart(4, "0")}] event payload ${"·".repeat((i % 40) + 1)} id=${(i * 2_654_435_761) >>> 0}`;
24
+ }
25
+ function busy(ms) {
26
+ if (ms <= 0)
27
+ return;
28
+ const end = performance.now() + ms;
29
+ while (performance.now() < end) {
30
+ /* spin — intentional load on logic thread only */
31
+ }
32
+ }
33
+ export function update(msg, model) {
34
+ if (model.burnMs > 0 && msg.type !== "set_burn") {
35
+ busy(model.burnMs);
36
+ }
37
+ switch (msg.type) {
38
+ case "resize":
39
+ return { ...model, cols: msg.cols, rows: msg.rows };
40
+ case "tick": {
41
+ if (model.paused)
42
+ return { ...model, now: msg.now };
43
+ const nextTick = model.tick + 1;
44
+ const line = seedLine(model.lines.length);
45
+ const lines = model.lines.length >= MAX_LINES ? model.lines.slice(1).concat(line) : model.lines.concat(line);
46
+ // auto-follow if near bottom
47
+ const visible = Math.max(1, model.rows - 4);
48
+ const atBottom = model.scroll >= lines.length - visible - 1;
49
+ const scroll = atBottom ? Math.max(0, lines.length - visible) : model.scroll;
50
+ return {
51
+ ...model,
52
+ now: msg.now,
53
+ tick: nextTick,
54
+ lines,
55
+ scroll,
56
+ };
57
+ }
58
+ case "key":
59
+ return handleKey(msg.key, model);
60
+ case "append_burst": {
61
+ const extra = [];
62
+ for (let i = 0; i < msg.count; i++) {
63
+ extra.push(seedLine(model.lines.length + i));
64
+ }
65
+ let lines = model.lines.concat(extra);
66
+ if (lines.length > MAX_LINES)
67
+ lines = lines.slice(-MAX_LINES);
68
+ const visible = Math.max(1, model.rows - 4);
69
+ return {
70
+ ...model,
71
+ lines,
72
+ scroll: Math.max(0, lines.length - visible),
73
+ };
74
+ }
75
+ case "set_burn":
76
+ return { ...model, burnMs: Math.max(0, msg.ms) };
77
+ default:
78
+ return model;
79
+ }
80
+ }
81
+ function handleKey(key, model) {
82
+ const visible = Math.max(1, model.rows - 4);
83
+ const maxScroll = Math.max(0, model.lines.length - visible);
84
+ switch (key) {
85
+ case "q":
86
+ case "\u0003": // ctrl-c
87
+ // main handles exit; model unchanged
88
+ return model;
89
+ case " ":
90
+ return { ...model, paused: !model.paused };
91
+ case "j":
92
+ case "\u001B[B": // down
93
+ return { ...model, scroll: Math.min(maxScroll, model.scroll + 1) };
94
+ case "k":
95
+ case "\u001B[A": // up
96
+ return { ...model, scroll: Math.max(0, model.scroll - 1) };
97
+ case "g":
98
+ return { ...model, scroll: 0 };
99
+ case "G":
100
+ return { ...model, scroll: maxScroll };
101
+ case "b":
102
+ // toggle 5ms burn on logic thread
103
+ return { ...model, burnMs: model.burnMs > 0 ? 0 : 5 };
104
+ case "B":
105
+ return { ...model, burnMs: model.burnMs >= 20 ? 0 : 20 };
106
+ case "a":
107
+ return update({ type: "append_burst", count: 100 }, model);
108
+ default:
109
+ return model;
110
+ }
111
+ }
112
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/bench/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Minimal TEA (The Elm Architecture) types for @quickdraw.
3
+ * Pure functions only — no I/O, no workers.
4
+ */
5
+ export type Update<Model, Msg> = (msg: Msg, model: Model) => Model;
6
+ /** Monotonic generation counter for snapshots (render drops stale gens). */
7
+ export type Generation = number;
8
+ export interface Snapshot<Model> {
9
+ gen: Generation;
10
+ model: Model;
11
+ /** wall-clock ms when snapshot was produced (worker) */
12
+ at: number;
13
+ }
14
+ //# sourceMappingURL=tea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tea.d.ts","sourceRoot":"","sources":["../../src/bench/tea.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC;AAEnE,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,QAAQ,CAAC,KAAK;IAC7B,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;CACZ"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Minimal TEA (The Elm Architecture) types for @quickdraw.
3
+ * Pure functions only — no I/O, no workers.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=tea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tea.js","sourceRoot":"","sources":["../../src/bench/tea.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Pure view: Model → buffer paint.
3
+ * Runs on the **render (main)** thread only.
4
+ */
5
+ import type { FpsStats } from "./host.js";
6
+ import type { Model } from "./model.js";
7
+ import { type Buffer } from "../buffer/index.js";
8
+ export declare function paint(model: Model, stats: FpsStats, into?: Buffer): Buffer;
9
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/bench/view.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,MAAM,EAAwC,MAAM,oBAAoB,CAAC;AAGvF,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CA4F1E"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Pure view: Model → buffer paint.
3
+ * Runs on the **render (main)** thread only.
4
+ */
5
+ import { clear, createBuffer, put } from "../buffer/index.js";
6
+ import { FgP } from "../lexicon/index.js";
7
+ export function paint(model, stats, into) {
8
+ const w = Math.max(40, model.cols);
9
+ const h = Math.max(10, model.rows);
10
+ const buf = into && into.width === w && into.height === h ? into : createBuffer(w, h);
11
+ clear(buf);
12
+ // header
13
+ const header = ` quickdraw bench │ tick=${model.tick} │ burn=${model.burnMs}ms │ ${model.paused ? "PAUSED" : "live"} `;
14
+ put(buf, 0, 0, pad(header, w), { role: "accent", prominence: FgP.primary, bold: true });
15
+ // stats line
16
+ const statsLine = ` fps=${stats.fps.toFixed(1)} frame=${stats.frameMs.toFixed(1)}ms gen=${stats.lastGen} drop≈${stats.snapshotsDropped} │ keys: j/k scroll space pause b/B burn a burst q quit `;
17
+ put(buf, 0, 1, pad(statsLine, w), { role: "foreground", prominence: FgP.secondary });
18
+ // split: log (left) + panel (right)
19
+ const panelW = Math.min(28, Math.floor(w * 0.3));
20
+ const logW = w - panelW - 1;
21
+ const bodyTop = 2;
22
+ const bodyH = h - 3;
23
+ const visible = bodyH;
24
+ // log region
25
+ for (let row = 0; row < visible; row++) {
26
+ const li = model.scroll + row;
27
+ const y = bodyTop + row;
28
+ if (li < 0 || li >= model.lines.length) {
29
+ put(buf, 0, y, pad("", logW), {});
30
+ continue;
31
+ }
32
+ const style = li % 17 === 0 ? { role: "warning", prominence: FgP.primary } : { role: "foreground", prominence: FgP.primary };
33
+ put(buf, 0, y, pad(model.lines[li].slice(0, logW), logW), style);
34
+ }
35
+ // divider
36
+ for (let row = 0; row < visible; row++) {
37
+ put(buf, logW, bodyTop + row, "│", { role: "border", prominence: FgP.ghost });
38
+ }
39
+ // side panel
40
+ const px = logW + 1;
41
+ put(buf, px, bodyTop, pad(" PANEL", panelW), {
42
+ role: "accent",
43
+ prominence: FgP.primary,
44
+ bold: true,
45
+ });
46
+ put(buf, px, bodyTop + 1, pad(` lines ${model.lines.length}`, panelW), {
47
+ role: "foreground",
48
+ prominence: FgP.primary,
49
+ });
50
+ put(buf, px, bodyTop + 2, pad(` scroll ${model.scroll}`, panelW), {
51
+ role: "foreground",
52
+ prominence: FgP.primary,
53
+ });
54
+ put(buf, px, bodyTop + 3, pad(` size ${w}x${h}`, panelW), {
55
+ role: "foreground",
56
+ prominence: FgP.primary,
57
+ });
58
+ const t = new Date(model.now).toISOString().slice(11, 23);
59
+ put(buf, px, bodyTop + 5, pad(` time ${t}`, panelW), {
60
+ role: "muted",
61
+ prominence: FgP.ghost,
62
+ });
63
+ // fake sparkline from tick
64
+ let spark = " ";
65
+ for (let i = 0; i < Math.max(0, panelW - 2); i++) {
66
+ const v = (Math.sin((model.tick + i) * 0.15) + 1) * 0.5;
67
+ spark += " ▁▂▃▄▅▆▇█"[Math.min(8, Math.floor(v * 9))];
68
+ }
69
+ // `accent` for now — no dedicated `data` role until a second data surface
70
+ // exists to justify one (plan: explicit non-commitment).
71
+ put(buf, px, bodyTop + 7, pad(spark.slice(0, panelW), panelW), {
72
+ role: "accent",
73
+ prominence: FgP.primary,
74
+ });
75
+ const configLabel = { role: "muted", prominence: FgP.ghost };
76
+ put(buf, px, bodyTop + 9, pad(" logic=worker", panelW), configLabel);
77
+ put(buf, px, bodyTop + 10, pad(" paint=main", panelW), configLabel);
78
+ put(buf, px, bodyTop + 11, pad(" target=30fps", panelW), configLabel);
79
+ // footer
80
+ put(buf, 0, h - 1, pad(` ${model.scroll + 1}-${Math.min(model.lines.length, model.scroll + visible)}/${model.lines.length} `, w), { role: "foreground", prominence: FgP.secondary });
81
+ return buf;
82
+ }
83
+ function pad(s, w) {
84
+ if (s.length >= w)
85
+ return s.slice(0, w);
86
+ return s + " ".repeat(w - s.length);
87
+ }
88
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/bench/view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Logic thread (worker_threads).
3
+ * Owns TEA model. Never touches stdout.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/bench/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Logic thread (worker_threads).
3
+ * Owns TEA model. Never touches stdout.
4
+ */
5
+ import { parentPort } from "node:worker_threads";
6
+ import { init, update } from "./model.js";
7
+ if (!parentPort) {
8
+ throw new Error("worker must run as worker_thread");
9
+ }
10
+ const port = parentPort;
11
+ let model = init(80, 24);
12
+ let gen = 0;
13
+ function publish() {
14
+ gen += 1;
15
+ const snap = {
16
+ gen,
17
+ model,
18
+ at: performance.now(),
19
+ };
20
+ const msg = { type: "snapshot", snap };
21
+ port.postMessage(msg);
22
+ }
23
+ function apply(msg) {
24
+ model = update(msg, model);
25
+ publish();
26
+ }
27
+ port.on("message", (raw) => {
28
+ switch (raw.type) {
29
+ case "init":
30
+ model = init(raw.cols, raw.rows);
31
+ gen = 0;
32
+ publish();
33
+ break;
34
+ case "resize":
35
+ apply({ type: "resize", cols: raw.cols, rows: raw.rows });
36
+ break;
37
+ case "key":
38
+ apply({ type: "key", key: raw.key });
39
+ break;
40
+ case "tick":
41
+ // coalesce: only one tick worth of work per message
42
+ apply({ type: "tick", now: raw.now });
43
+ break;
44
+ }
45
+ });
46
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/bench/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAwB,MAAM,YAAY,CAAC;AAGhE,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,IAAI,KAAK,GAAU,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,IAAI,GAAG,GAAG,CAAC,CAAC;AAEZ,SAAS,OAAO;IACd,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,IAAI,GAAoB;QAC5B,GAAG;QACH,KAAK;QACL,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE;KACtB,CAAC;IACF,MAAM,GAAG,GAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,KAAK,CAAC,GAAQ;IACrB,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAiB,EAAE,EAAE;IACvC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACjC,GAAG,GAAG,CAAC,CAAC;YACR,OAAO,EAAE,CAAC;YACV,MAAM;QACR,KAAK,QAAQ;YACX,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM;QACR,KAAK,KAAK;YACR,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,MAAM;YACT,oDAAoD;YACpD,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACtC,MAAM;IACV,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * UV-stamp a bgFx shader id onto a cell rect. Paint-time only — no GL.
3
+ * Lives next to the cell fields so layout never imports internals/bgfx.
4
+ */
5
+ export type BgFxMarkBuffer = {
6
+ width: number;
7
+ height: number;
8
+ cells: Array<{
9
+ ch: string;
10
+ placeholder?: boolean;
11
+ style: {
12
+ bgFx?: string;
13
+ bgFxU?: number;
14
+ bgFxV?: number;
15
+ bg?: number;
16
+ bgRgb?: unknown;
17
+ [key: string]: unknown;
18
+ };
19
+ }>;
20
+ };
21
+ export declare function fillBgFx(buf: BgFxMarkBuffer, rect: {
22
+ x: number;
23
+ y: number;
24
+ w: number;
25
+ h: number;
26
+ }, id: string, scissor?: {
27
+ x: number;
28
+ y: number;
29
+ w: number;
30
+ h: number;
31
+ }): void;
32
+ //# sourceMappingURL=bgfx-mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bgfx-mark.d.ts","sourceRoot":"","sources":["../../src/buffer/bgfx-mark.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,KAAK,EAAE;YACL,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,EAAE,CAAC,EAAE,MAAM,CAAC;YACZ,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;KACH,CAAC,CAAC;CACJ,CAAC;AAEF,wBAAgB,QAAQ,CACtB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACpD,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD,IAAI,CAmCN"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * UV-stamp a bgFx shader id onto a cell rect. Paint-time only — no GL.
3
+ * Lives next to the cell fields so layout never imports internals/bgfx.
4
+ */
5
+ export function fillBgFx(buf, rect, id, scissor) {
6
+ const { x: rx, y: ry, w: rw, h: rh } = rect;
7
+ if (rw <= 0 || rh <= 0)
8
+ return;
9
+ const { width: bw, height: bh, cells } = buf;
10
+ for (let dy = 0; dy < rh; dy++) {
11
+ const y = ry + dy;
12
+ if (y < 0 || y >= bh)
13
+ continue;
14
+ if (scissor && (y < scissor.y || y >= scissor.y + scissor.h)) {
15
+ continue;
16
+ }
17
+ const v = (dy + 0.5) / rh;
18
+ for (let dx = 0; dx < rw; dx++) {
19
+ const x = rx + dx;
20
+ if (x < 0 || x >= bw)
21
+ continue;
22
+ if (scissor && (x < scissor.x || x >= scissor.x + scissor.w)) {
23
+ continue;
24
+ }
25
+ const u = (dx + 0.5) / rw;
26
+ const i = y * bw + x;
27
+ const prev = cells[i];
28
+ cells[i] = {
29
+ ch: prev.ch && prev.ch !== " " ? prev.ch : " ",
30
+ placeholder: prev.placeholder,
31
+ style: {
32
+ ...prev.style,
33
+ bgFx: id,
34
+ bgFxU: u,
35
+ bgFxV: v,
36
+ bg: undefined,
37
+ bgRgb: undefined,
38
+ },
39
+ };
40
+ }
41
+ }
42
+ }
43
+ //# sourceMappingURL=bgfx-mark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bgfx-mark.js","sourceRoot":"","sources":["../../src/buffer/bgfx-mark.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,MAAM,UAAU,QAAQ,CACtB,GAAmB,EACnB,IAAoD,EACpD,EAAU,EACV,OAAwD;IAExD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO;IAC/B,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAE7C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC/B,IAAI,OAAO,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC/B,IAAI,OAAO,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,SAAS;YACX,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,KAAK,CAAC,CAAC,CAAC,GAAG;gBACT,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;gBAC9C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE;oBACL,GAAG,IAAI,CAAC,KAAK;oBACb,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,EAAE,EAAE,SAAS;oBACb,KAAK,EAAE,SAAS;iBACjB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Dual-frame cell buffer + row damage + ANSI emit + content guard.
3
+ * No layout. No TEA. Pure grid → bytes.
4
+ *
5
+ * Wide glyphs: display width 2+ → glyph cell + trailing placeholder cells.
6
+ * Emit **skips** placeholders (TERMINAL P3) so terminals don't advance 3 cols.
7
+ */
8
+ import type { Rgb } from "../lexicon/index.js";
9
+ /**
10
+ * Sanitize text that will be painted as content cells (not our emit path).
11
+ * Removes ESC/CSI/OSC/DCS entirely for v1 (safest).
12
+ */
13
+ export declare function guardContent(text: string): string;
14
+ export type Style = {
15
+ bold?: boolean;
16
+ /**
17
+ * ANSI SGR 2 faint. **Not authorable** — widgets state `prominence`, not
18
+ * `dim`. Prominence is the authoring concept; the resolver may *emit*
19
+ * `dim` as the ansi16 degradation of `ghost`/`whisper`, where truecolor
20
+ * fades don't exist. This field stays for that emit path only.
21
+ */
22
+ dim?: boolean;
23
+ /** ANSI SGR 9 crossed-out. Markdown ~~strike~~ etc. */
24
+ strike?: boolean;
25
+ /** ANSI SGR 3 italic. Voice inflection — never expressed via `dim`. */
26
+ italic?: boolean;
27
+ /** ANSI SGR 4 underline. Link affordance: a link is accent + underline. */
28
+ underline?: boolean;
29
+ /** OSC 8 hyperlink target. Painted with accent + underline. */
30
+ href?: string;
31
+ /** 0–255 ANSI / xterm-256 index. Prefer fgRgb when truecolor available. */
32
+ fg?: number;
33
+ /**
34
+ * Truecolor foreground (0–255 per channel). Wins over `fg` when set.
35
+ * From ../theme/index.js role resolve — not hand-picked hex in widgets.
36
+ */
37
+ fgRgb?: Rgb;
38
+ /**
39
+ * Background. **Undefined means transparent** (inherit terminal ground).
40
+ * Never paint default black for unpainted cells (TERMINAL O1).
41
+ */
42
+ bg?: number;
43
+ /** Truecolor background; wins over `bg` when set. Still omit when transparent. */
44
+ bgRgb?: Rgb;
45
+ /**
46
+ * Occupy the background without painting a color (TERMINAL O1).
47
+ * Omitted bg fuses with the cell underneath (panel fill under text).
48
+ * `cast: "transparent"` claims absence so lower layers cannot show through.
49
+ */
50
+ cast?: "transparent";
51
+ /**
52
+ * Procedural background **shader id** (open string).
53
+ * Product: GLSL catalog ids (`gradient`, `aurora`, `doom`, or load path).
54
+ * Present expands to truecolor `bgRgb` only (no sub-cell glyphs).
55
+ * Typed as `string` here to keep buffer decoupled from `../internals/bgfx/index.js`;
56
+ * the branded `BgFxId` lives in that package.
57
+ */
58
+ bgFx?: string;
59
+ /** Region-local U ∈ [0,1] baked by `fillBgFx` (optional; else buffer coords). */
60
+ bgFxU?: number;
61
+ /** Region-local V ∈ [0,1] baked by `fillBgFx`. */
62
+ bgFxV?: number;
63
+ /**
64
+ * Multiplies global bgFx opacity (0–1). Quiet wash over ground.
65
+ * @see setBgFxOpacity
66
+ */
67
+ bgFxOpacity?: number;
68
+ /**
69
+ * Semantic role intent (ColorResolver dual-dirty). Not emitted to SGR;
70
+ * paint-time resolve re-solves against current theme/depth.
71
+ */
72
+ role?: string;
73
+ /** Own prominence request 0–1 (composed with regionProminence). */
74
+ prominence?: number;
75
+ /**
76
+ * Background role intent (ColorResolver dual-dirty), mirroring `role` for
77
+ * the BG ladder (panels, washes, surface). Not emitted to SGR directly —
78
+ * paint-time resolve turns it into `bg`/`bgRgb` against theme/depth.
79
+ */
80
+ bgRole?: string;
81
+ /** Own background prominence request 0–1, mirroring `prominence`. */
82
+ bgProminence?: number;
83
+ /**
84
+ * Local surface for FG opacity (prominence dissolve target). When text
85
+ * sits on painted furniture that is not this cell's bg, pass the parent
86
+ * surface role so low prominence fades into *that* color, not theme ground.
87
+ */
88
+ surfaceRole?: string;
89
+ /** Already-painted background, used as a fallback FG dissolve target. */
90
+ surfaceRgb?: Rgb;
91
+ /** Solidity of surfaceRole (BgP); default solid when surfaceRole set. */
92
+ surfaceProminence?: number;
93
+ /**
94
+ * FG dissolve target (another text role, not a BG surface). Low
95
+ * prominence fades toward that role's ink so a chromatic run can fuse
96
+ * into a contour. Distinct from {@link surfaceRole} (panel furniture).
97
+ */
98
+ fuseRole?: string;
99
+ /** Prominence of {@link fuseRole} (default ghost — box contour). */
100
+ fuseProminence?: number;
101
+ /**
102
+ * Mix this role's ink into {@link role} by {@link tint}. 0 = role only,
103
+ * 1 = full tint. Applied before prominence fade so a remaining-fill can
104
+ * warm toward warning while still dissolving into the contour.
105
+ */
106
+ tintRole?: string;
107
+ /** 0..1 mix of {@link tintRole} into {@link role}. */
108
+ tint?: number;
109
+ /** Region de-emphasis 0–1 (modal/backdrop). Resolver composition only. */
110
+ regionProminence?: number;
111
+ /**
112
+ * Cell is part of an active text selection. The ColorResolver applies the
113
+ * HK-aware perception-preserving recolor (see quickdraw-theme/selection.ts)
114
+ * to fg AND bg — shifting apparent lightness without touching hue. This
115
+ * solves the Zed #17313 blend problem by construction (no alpha-blend, no
116
+ * reverse-video). Dual-dirty: must participate in cellEq or toggling
117
+ * selection won't dirty the row (silent stale frame).
118
+ */
119
+ selected?: boolean;
120
+ };
121
+ export type Cell = {
122
+ /**
123
+ * Grapheme for this column. Empty when `placeholder` (wide-glyph mate).
124
+ * Emit skips placeholders so wide chars consume 2 columns, not 3.
125
+ */
126
+ ch: string;
127
+ style: Style;
128
+ /**
129
+ * Trailing mate of a wide (or multi-column) glyph to the left.
130
+ * Not written to the terminal; occupies a grid column only.
131
+ */
132
+ placeholder?: boolean;
133
+ };
134
+ export type Buffer = {
135
+ width: number;
136
+ height: number;
137
+ /** row-major, length = width * height */
138
+ cells: Cell[];
139
+ };
140
+ /** Sentinel ch for placeholder mates — never emitted. */
141
+ export declare const PLACEHOLDER_CH = "";
142
+ export declare function createBuffer(width: number, height: number): Buffer;
143
+ export declare function clear(buf: Buffer): void;
144
+ /**
145
+ * Transparent bg inherits the cell under paint (panel fill under border/text).
146
+ * Explicit `bg` / `bgRgb` / `bgFx` on the incoming style wins. Matches TERMINAL O1:
147
+ * undefined bg means transparent, not "clear to black."
148
+ * `cast: "transparent"` claims that absence — occupy the cell, do not fuse.
149
+ * Procedural `bgFx` (+ baked UV) also inherits so text/border over fx keeps the field.
150
+ */
151
+ export declare function mergeStyle(under: Style, over: Style): Style;
152
+ /**
153
+ * Put text at (x,y) walking **grapheme clusters** by display width.
154
+ * - **ContentGuard first** — strip ESC/CSI so measure (string-width strips ANSI)
155
+ * and put agree. Bare ESC is width 0; leaving `[2J…` after skipping ESC desyncs
156
+ * layout width and can still break a live terminal if re-emitted.
157
+ * - width 0 (combining/ZW alone): refused — do not advance
158
+ * - width 1: one cell
159
+ * - width ≥ 2: glyph + (w-1) mates; clips if no room for full wide span.
160
+ * CJK/emoji mates are placeholders (emit skips). {@link isTwoColumnSymbol}
161
+ * mates are a real space so a wcwidth-1 TTY still advances past the ink.
162
+ */
163
+ export declare function put(buf: Buffer, x: number, y: number, text: string, style?: Style): void;
164
+ /** Rows that differ (or all rows if size changed / no prev). */
165
+ export declare function dirtyRows(prev: Buffer | null, next: Buffer): number[];
166
+ export type EmitAnsiOpts = {
167
+ sync2026?: boolean;
168
+ forceFull?: boolean;
169
+ };
170
+ export type EmitAnsiStats = {
171
+ ansi: string;
172
+ dirtyRows: number;
173
+ bytes: number;
174
+ };
175
+ /**
176
+ * Emit ANSI for dirty rows with wire metrics.
177
+ * Absolute CUP, clear line, write row.
178
+ * **Skips placeholder cells** so wide glyphs advance 2 columns, not 3.
179
+ * Optional Mode 2026 wrap.
180
+ */
181
+ export declare function emitAnsiDetailed(prev: Buffer | null, next: Buffer, opts?: EmitAnsiOpts): EmitAnsiStats;
182
+ /**
183
+ * Emit ANSI for dirty rows. Absolute CUP, clear line, write row.
184
+ * **Skips placeholder cells** so wide glyphs advance 2 columns, not 3.
185
+ * Optional Mode 2026 wrap.
186
+ */
187
+ export declare function emitAnsi(prev: Buffer | null, next: Buffer, opts?: EmitAnsiOpts): string;
188
+ /** Shallow copy of buffer cells (for storing previous frame). */
189
+ export declare function cloneBuffer(buf: Buffer): Buffer;
190
+ export { fillBgFx } from "./bgfx-mark.js";
191
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/buffer/index.ts"],"names":[],"mappings":"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"}