@inhuman.tools/quickdraw 0.0.0-stage → 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 +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 +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 -3
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Polarity-preserving ANSI16 degradation for semantic roles.
3
+ *
4
+ * Nearest-RGB quantization collapses hue (error→yellow, etc.). This table
5
+ * pins each role to a hue-preserving slot so category is never lost.
6
+ * Legibility > category preservation > tier separation.
7
+ *
8
+ * Literal RGB (syntax highlight, no role) degrades via nearest-RGB on the
9
+ * classic 0–15 xterm palette — hue-preserving slots stay role-only.
10
+ */
11
+ import invariant from "tiny-invariant";
12
+ import { REFERENCE_GROUND } from "./salience.js";
13
+ /**
14
+ * Named ANSI slot → theme role whose hue/chroma we keep. Bright and dim
15
+ * share a role; SGR 1 is weight. Inverse of {@link ansi16Slot} (role → slot).
16
+ * Black/white land on furniture/voice, not a claimed gray RGB.
17
+ */
18
+ export const ANSI16_ROLE = [
19
+ "muted",
20
+ "error",
21
+ "success",
22
+ "warning",
23
+ "code",
24
+ "running",
25
+ "auto",
26
+ "foreground",
27
+ "muted",
28
+ "error",
29
+ "success",
30
+ "emphasis",
31
+ "code",
32
+ "running",
33
+ "accent",
34
+ "foreground",
35
+ ];
36
+ /** Prominence ≥ this → loud tier; below → soft. */
37
+ export const LOUD_THRESHOLD = 0.8;
38
+ /** Classic + bright xterm defaults for indices 0–15 (same as ansi256 decode). */
39
+ const ANSI16_RGB = [
40
+ { r: 0, g: 0, b: 0 },
41
+ { r: 205, g: 0, b: 0 },
42
+ { r: 0, g: 205, b: 0 },
43
+ { r: 205, g: 205, b: 0 },
44
+ { r: 0, g: 0, b: 238 },
45
+ { r: 205, g: 0, b: 205 },
46
+ { r: 0, g: 205, b: 205 },
47
+ { r: 229, g: 229, b: 229 },
48
+ { r: 127, g: 127, b: 127 },
49
+ { r: 255, g: 0, b: 0 },
50
+ { r: 0, g: 255, b: 0 },
51
+ { r: 255, g: 255, b: 0 },
52
+ { r: 92, g: 92, b: 255 },
53
+ { r: 255, g: 0, b: 255 },
54
+ { r: 0, g: 255, b: 255 },
55
+ { r: 255, g: 255, b: 255 },
56
+ ];
57
+ /** Nearest ANSI16 index for an sRGB triple (0–255). Euclidean in sRGB. */
58
+ export function nearestAnsi16(r, g, b) {
59
+ let best = 0;
60
+ let bestD = Infinity;
61
+ for (let i = 0; i < 16; i++) {
62
+ const p = ANSI16_RGB[i];
63
+ const dr = r - p.r;
64
+ const dg = g - p.g;
65
+ const db = b - p.b;
66
+ const d = dr * dr + dg * dg + db * db;
67
+ if (d < bestD) {
68
+ bestD = d;
69
+ best = i;
70
+ if (d === 0)
71
+ return best;
72
+ }
73
+ }
74
+ return best;
75
+ }
76
+ export function nearestAnsi16FromRgb(rgb) {
77
+ return nearestAnsi16(rgb.r, rgb.g, rgb.b);
78
+ }
79
+ /** Decode ANSI16 index to approximate RGB (xterm defaults). */
80
+ export function ansi16ToRgb(index) {
81
+ invariant(index >= 0, `ansi16 index cannot be negative: ${index}`);
82
+ invariant(index <= 15, `ansi16 index cannot overflow: ${index}`);
83
+ return { ...ANSI16_RGB[index] };
84
+ }
85
+ const SLOT_TABLE = {
86
+ dark: {
87
+ loud: {
88
+ error: 9,
89
+ diff_del: 9,
90
+ success: 10,
91
+ diff_add: 10,
92
+ warning: 11,
93
+ accent: 14,
94
+ running: 13,
95
+ auto: 14,
96
+ attention: 11,
97
+ emphasis: 15,
98
+ code: 12,
99
+ foreground: 7,
100
+ chrome: 7,
101
+ surface: 8,
102
+ muted: 8,
103
+ border: 8,
104
+ },
105
+ soft: {
106
+ error: 1,
107
+ diff_del: 1,
108
+ success: 2,
109
+ diff_add: 2,
110
+ warning: 3,
111
+ accent: 6,
112
+ running: 5,
113
+ auto: 6,
114
+ attention: 3,
115
+ emphasis: 7,
116
+ code: 4,
117
+ foreground: 8,
118
+ chrome: 8,
119
+ surface: 8,
120
+ muted: 8,
121
+ border: 8,
122
+ },
123
+ },
124
+ light: {
125
+ loud: {
126
+ error: 1,
127
+ diff_del: 1,
128
+ success: 2,
129
+ diff_add: 2,
130
+ warning: 3,
131
+ accent: 4,
132
+ running: 5,
133
+ auto: 6,
134
+ attention: 3,
135
+ emphasis: 0,
136
+ code: 4,
137
+ foreground: 8,
138
+ chrome: 8,
139
+ surface: 7,
140
+ muted: 7,
141
+ border: 7,
142
+ },
143
+ soft: {
144
+ error: 9,
145
+ diff_del: 9,
146
+ success: 2,
147
+ diff_add: 2,
148
+ warning: 3,
149
+ accent: 12,
150
+ running: 5,
151
+ auto: 6,
152
+ attention: 3,
153
+ emphasis: 8,
154
+ code: 12,
155
+ foreground: 8,
156
+ chrome: 8,
157
+ surface: 7,
158
+ muted: 7,
159
+ border: 7,
160
+ },
161
+ },
162
+ };
163
+ /**
164
+ * Canvas polarity from ground OKLCH L.
165
+ * `null` / undefined → reference ground polarity (dark).
166
+ */
167
+ export function canvasPolarity(groundLightness) {
168
+ const g = groundLightness ?? REFERENCE_GROUND;
169
+ return g < 0.5 ? "dark" : "light";
170
+ }
171
+ function tierOf(prominence) {
172
+ return prominence >= LOUD_THRESHOLD ? "loud" : "soft";
173
+ }
174
+ /** Resolve role → ANSI16 slot for polarity + prominence. */
175
+ export function ansi16Slot(role, polarity, prominence = 1) {
176
+ const tier = tierOf(prominence);
177
+ const slot = SLOT_TABLE[polarity][tier][role];
178
+ invariant(slot !== undefined, `unknown ANSI16 role: ${role}`);
179
+ return slot;
180
+ }
181
+ //# sourceMappingURL=ansi16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi16.js","sourceRoot":"","sources":["../../src/theme/ansi16.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * xterm 256-color nearest match for non-truecolor terminals.
3
+ *
4
+ * Palette: 0–15 system (skipped for matching — cube+gray only for
5
+ * semantic colors; 16–231 6³ cube; 232–255 grayscale). Matching in
6
+ * sRGB Euclidean distance is good enough for TUI chrome; OKLCH match
7
+ * would be nicer but cube steps dominate error either way.
8
+ */
9
+ import type { Rgb } from "../lexicon/index.js";
10
+ /** Nearest xterm-256 index for an sRGB triple (0–255). */
11
+ export declare function nearestAnsi256(r: number, g: number, b: number): number;
12
+ export declare function nearestAnsi256FromRgb(rgb: Rgb): number;
13
+ /** Decode a 256-index back to approximate RGB (for tests / dimming). */
14
+ export declare function ansi256ToRgb(index: number): Rgb;
15
+ //# sourceMappingURL=ansi256.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi256.d.ts","sourceRoot":"","sources":["../../src/theme/ansi256.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AA8B/C,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAetE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEtD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAmC/C"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * xterm 256-color nearest match for non-truecolor terminals.
3
+ *
4
+ * Palette: 0–15 system (skipped for matching — cube+gray only for
5
+ * semantic colors; 16–231 6³ cube; 232–255 grayscale). Matching in
6
+ * sRGB Euclidean distance is good enough for TUI chrome; OKLCH match
7
+ * would be nicer but cube steps dominate error either way.
8
+ */
9
+ import invariant from "tiny-invariant";
10
+ /** Build the 240 matchable entries (cube + gray). System 0–15 omitted. */
11
+ function buildPalette() {
12
+ const out = [];
13
+ // 6×6×6 cube: levels 0,95,135,175,215,255
14
+ const levels = [0, 95, 135, 175, 215, 255];
15
+ for (let ri = 0; ri < 6; ri++) {
16
+ for (let gi = 0; gi < 6; gi++) {
17
+ for (let bi = 0; bi < 6; bi++) {
18
+ const index = 16 + 36 * ri + 6 * gi + bi;
19
+ out.push({
20
+ index,
21
+ r: levels[ri],
22
+ g: levels[gi],
23
+ b: levels[bi],
24
+ });
25
+ }
26
+ }
27
+ }
28
+ // grayscale ramp 232–255
29
+ for (let i = 0; i < 24; i++) {
30
+ const v = 8 + i * 10;
31
+ out.push({ index: 232 + i, r: v, g: v, b: v });
32
+ }
33
+ return out;
34
+ }
35
+ const PALETTE = buildPalette();
36
+ /** Nearest xterm-256 index for an sRGB triple (0–255). */
37
+ export function nearestAnsi256(r, g, b) {
38
+ let best = 16;
39
+ let bestD = Infinity;
40
+ for (const p of PALETTE) {
41
+ const dr = r - p.r;
42
+ const dg = g - p.g;
43
+ const db = b - p.b;
44
+ const d = dr * dr + dg * dg + db * db;
45
+ if (d < bestD) {
46
+ bestD = d;
47
+ best = p.index;
48
+ if (d === 0)
49
+ return best;
50
+ }
51
+ }
52
+ return best;
53
+ }
54
+ export function nearestAnsi256FromRgb(rgb) {
55
+ return nearestAnsi256(rgb.r, rgb.g, rgb.b);
56
+ }
57
+ /** Decode a 256-index back to approximate RGB (for tests / dimming). */
58
+ export function ansi256ToRgb(index) {
59
+ invariant(index >= 0, `ansi256 index cannot be negative: ${index}`);
60
+ invariant(index <= 255, `ansi256 index cannot overflow: ${index}`);
61
+ if (index < 16) {
62
+ // classic + bright — xterm defaults
63
+ const basic = [
64
+ { r: 0, g: 0, b: 0 },
65
+ { r: 205, g: 0, b: 0 },
66
+ { r: 0, g: 205, b: 0 },
67
+ { r: 205, g: 205, b: 0 },
68
+ { r: 0, g: 0, b: 238 },
69
+ { r: 205, g: 0, b: 205 },
70
+ { r: 0, g: 205, b: 205 },
71
+ { r: 229, g: 229, b: 229 },
72
+ { r: 127, g: 127, b: 127 },
73
+ { r: 255, g: 0, b: 0 },
74
+ { r: 0, g: 255, b: 0 },
75
+ { r: 255, g: 255, b: 0 },
76
+ { r: 92, g: 92, b: 255 },
77
+ { r: 255, g: 0, b: 255 },
78
+ { r: 0, g: 255, b: 255 },
79
+ { r: 255, g: 255, b: 255 },
80
+ ];
81
+ return basic[index];
82
+ }
83
+ if (index < 232) {
84
+ const n = index - 16;
85
+ const levels = [0, 95, 135, 175, 215, 255];
86
+ const ri = Math.floor(n / 36);
87
+ const gi = Math.floor((n % 36) / 6);
88
+ const bi = n % 6;
89
+ return { r: levels[ri], g: levels[gi], b: levels[bi] };
90
+ }
91
+ const v = 8 + (index - 232) * 10;
92
+ return { r: v, g: v, b: v };
93
+ }
94
+ //# sourceMappingURL=ansi256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi256.js","sourceRoot":"","sources":["../../src/theme/ansi256.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Terminal ground attunement (theme math).
3
+ *
4
+ * OSC 11 parse lives in ../capabilities/index.js; OKLCH L conversion here.
5
+ */
6
+ /** OKLCH L from OSC 11 / any sRGB background (0–255 channels). */
7
+ export declare function groundFromRgb(r: number, g: number, b: number): number;
8
+ //# sourceMappingURL=ground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground.d.ts","sourceRoot":"","sources":["../../src/theme/ground.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Terminal ground attunement (theme math).
3
+ *
4
+ * OSC 11 parse lives in ../capabilities/index.js; OKLCH L conversion here.
5
+ */
6
+ import { rgbToOklch } from "./salience.js";
7
+ /** OKLCH L from OSC 11 / any sRGB background (0–255 channels). */
8
+ export function groundFromRgb(r, g, b) {
9
+ return rgbToOklch(r, g, b).l;
10
+ }
11
+ //# sourceMappingURL=ground.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground.js","sourceRoot":"","sources":["../../src/theme/ground.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC3D,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from "./salience.js";
2
+ export * from "./seeds.js";
3
+ export * from "./ansi16.js";
4
+ export * from "./theme.js";
5
+ export * from "./ansi256.js";
6
+ export * from "./region.js";
7
+ export * from "./selection.js";
8
+ export * from "./resolver.js";
9
+ export * from "./ground.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from "./salience.js";
2
+ export * from "./seeds.js";
3
+ export * from "./ansi16.js";
4
+ export * from "./theme.js";
5
+ export * from "./ansi256.js";
6
+ export * from "./region.js";
7
+ export * from "./selection.js";
8
+ export * from "./resolver.js";
9
+ export * from "./ground.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Region prominence dimming — fade colors toward terminal ground.
3
+ *
4
+ * When a region is de-emphasized (modal backdrop, unfocused pane), both
5
+ * fg and bg fade: apparent lightness toward ground, chroma by p^γ.
6
+ * γ = ln(0.65)/ln(0.45): at overlay keep 0.45, chroma is 0.65 of source
7
+ * (0.45^γ = 0.65).
8
+ *
9
+ * p == 1.0 is identity (no work). Transparent bg (absent) never dims.
10
+ */
11
+ import { type Rgb } from "../lexicon/index.js";
12
+ /** Closed-form chroma exponent: ln(0.65)/ln(0.45). */
13
+ export declare const REGION_GAMMA: number;
14
+ /**
15
+ * Fade a hex color toward ground OKLCH L at prominence p.
16
+ * Returns new hex. At p=1 returns input unchanged (byte-identity path).
17
+ */
18
+ export declare function regionDimHex(hex: string, groundL: number, prominence: number): string;
19
+ export declare function regionDimRgb(rgb: Rgb, groundL: number, prominence: number): Rgb;
20
+ /**
21
+ * Opacity substitute over an arbitrary **local surface** (panel, wash, cell
22
+ * bg) — not only the terminal theme ground.
23
+ *
24
+ * At `p = 1` the fg is identity; at `p = 0` the result is the surface color
25
+ * (true "into opacity" against that backdrop). Intermediate: apparent
26
+ * lightness and chroma lerp toward the surface (chroma with REGION_GAMMA);
27
+ * hue stays the fg's until fully dissolved so identity reads while fading.
28
+ *
29
+ * Use this whenever text sits on painted furniture. {@link regionDimRgb}
30
+ * toward theme ground is wrong there — it dissolves into a different
31
+ * color than the cell behind the glyph.
32
+ */
33
+ export declare function fadeTowardSurfaceRgb(fg: Rgb, surface: Rgb, prominence: number, opts?: {
34
+ chromaExp?: number;
35
+ }): Rgb;
36
+ /**
37
+ * Mix a fill toward a hotter role. Hue takes the tint's identity immediately
38
+ * so chroma growth reads as one glow, not a hue sweep through red. Chroma
39
+ * and apparent lightness lerp with `t`.
40
+ */
41
+ export declare function mixTowardTintRgb(base: Rgb, tint: Rgb, t: number): Rgb;
42
+ //# sourceMappingURL=region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../src/theme/region.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE/C,sDAAsD;AACtD,eAAO,MAAM,YAAY,QAAkC,CAAC;AAiB5D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYrF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAI/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAmBlH;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAarE"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Region prominence dimming — fade colors toward terminal ground.
3
+ *
4
+ * When a region is de-emphasized (modal backdrop, unfocused pane), both
5
+ * fg and bg fade: apparent lightness toward ground, chroma by p^γ.
6
+ * γ = ln(0.65)/ln(0.45): at overlay keep 0.45, chroma is 0.65 of source
7
+ * (0.45^γ = 0.65).
8
+ *
9
+ * p == 1.0 is identity (no work). Transparent bg (absent) never dims.
10
+ */
11
+ import { apparentLightness, hexToOklch, hexToRgb, oklchToHex, rgbToOklch, solveLightness } from "./salience.js";
12
+ /** Closed-form chroma exponent: ln(0.65)/ln(0.45). */
13
+ export const REGION_GAMMA = Math.log(0.65) / Math.log(0.45);
14
+ function clamp01(p) {
15
+ if (!Number.isFinite(p))
16
+ return 1;
17
+ return Math.min(1, Math.max(0, p));
18
+ }
19
+ function rgbToHex(rgb) {
20
+ return `#${[rgb.r, rgb.g, rgb.b]
21
+ .map((x) => Math.max(0, Math.min(255, Math.round(x)))
22
+ .toString(16)
23
+ .padStart(2, "0"))
24
+ .join("")}`;
25
+ }
26
+ /**
27
+ * Fade a hex color toward ground OKLCH L at prominence p.
28
+ * Returns new hex. At p=1 returns input unchanged (byte-identity path).
29
+ */
30
+ export function regionDimHex(hex, groundL, prominence) {
31
+ const p = clamp01(prominence);
32
+ if (p >= 1)
33
+ return hex;
34
+ if (p <= 0) {
35
+ return oklchToHex(groundL, 0, 0);
36
+ }
37
+ const { l, c, h } = hexToOklch(hex);
38
+ const al = apparentLightness(l, c, h);
39
+ const fadedAl = groundL + (al - groundL) * p;
40
+ const fadedC = c * p ** REGION_GAMMA;
41
+ const fadedL = solveLightness(fadedAl, fadedC, h);
42
+ return oklchToHex(fadedL, fadedC, h);
43
+ }
44
+ export function regionDimRgb(rgb, groundL, prominence) {
45
+ const p = clamp01(prominence);
46
+ if (p >= 1)
47
+ return rgb;
48
+ return hexToRgb(regionDimHex(rgbToHex(rgb), groundL, p));
49
+ }
50
+ /**
51
+ * Opacity substitute over an arbitrary **local surface** (panel, wash, cell
52
+ * bg) — not only the terminal theme ground.
53
+ *
54
+ * At `p = 1` the fg is identity; at `p = 0` the result is the surface color
55
+ * (true "into opacity" against that backdrop). Intermediate: apparent
56
+ * lightness and chroma lerp toward the surface (chroma with REGION_GAMMA);
57
+ * hue stays the fg's until fully dissolved so identity reads while fading.
58
+ *
59
+ * Use this whenever text sits on painted furniture. {@link regionDimRgb}
60
+ * toward theme ground is wrong there — it dissolves into a different
61
+ * color than the cell behind the glyph.
62
+ */
63
+ export function fadeTowardSurfaceRgb(fg, surface, prominence, opts) {
64
+ const p = clamp01(prominence);
65
+ if (p >= 1)
66
+ return { ...fg };
67
+ if (p <= 0)
68
+ return { ...surface };
69
+ const f = rgbToOklch(fg.r, fg.g, fg.b);
70
+ const s = rgbToOklch(surface.r, surface.g, surface.b);
71
+ const fgAl = apparentLightness(f.l, f.c, f.h);
72
+ const sAl = apparentLightness(s.l, s.c, s.h);
73
+ const fadedAl = sAl + (fgAl - sAl) * p;
74
+ // Default: region-dim γ (sublinear — chroma lingers). Fuse-into-contour
75
+ // passes 2 so chroma dies faster than lightness (no late orange step).
76
+ const exp = opts?.chromaExp ?? REGION_GAMMA;
77
+ const tC = p ** exp;
78
+ const fadedC = s.c + (f.c - s.c) * tC;
79
+ // Hue: keep fg identity while any of the ink remains.
80
+ const fadedH = f.h;
81
+ const fadedL = solveLightness(fadedAl, fadedC, fadedH);
82
+ return hexToRgb(oklchToHex(fadedL, fadedC, fadedH));
83
+ }
84
+ /**
85
+ * Mix a fill toward a hotter role. Hue takes the tint's identity immediately
86
+ * so chroma growth reads as one glow, not a hue sweep through red. Chroma
87
+ * and apparent lightness lerp with `t`.
88
+ */
89
+ export function mixTowardTintRgb(base, tint, t) {
90
+ const p = typeof t === "number" && Number.isFinite(t) ? Math.max(0, Math.min(1, t)) : 0;
91
+ if (p <= 0)
92
+ return { ...base };
93
+ if (p >= 1)
94
+ return { ...tint };
95
+ const b = rgbToOklch(base.r, base.g, base.b);
96
+ const hot = rgbToOklch(tint.r, tint.g, tint.b);
97
+ const bAl = apparentLightness(b.l, b.c, b.h);
98
+ const hotAl = apparentLightness(hot.l, hot.c, hot.h);
99
+ const fadedAl = bAl + (hotAl - bAl) * p;
100
+ const fadedC = b.c + (hot.c - b.c) * p;
101
+ const fadedH = hot.h;
102
+ const fadedL = solveLightness(fadedAl, fadedC, fadedH);
103
+ return hexToRgb(oklchToHex(fadedL, fadedC, fadedH));
104
+ }
105
+ //# sourceMappingURL=region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.js","sourceRoot":"","sources":["../../src/theme/region.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * ColorResolver — single choke-point resolve of role intents → concrete
3
+ * style fields. Dual-dirty: re-run on an existing Frame without layout().
4
+ *
5
+ * Style may carry:
6
+ * - role (+ prominence) — re-solved against current Theme + depth
7
+ * - bgRole (+ bgProminence) — background identity, resolved via the BG ladder
8
+ * - literal fg / fgRgb / bg / bgRgb — passed through, optionally region-dimmed.
9
+ * fgRgb + role: hue/chroma from the literal (syntax tokens), apparent
10
+ * lightness from the role — same weight as body at that FgP. fgRgb
11
+ * alone stays claimed color.
12
+ *
13
+ * Layout stays theme-free: it only needs a resolveStyle callback.
14
+ *
15
+ * ## Pipeline (fixed order — G2)
16
+ *
17
+ * 1. solve(role, tier, ground) — baked into `Theme.rgb`/`colors` at
18
+ * build time (buildTheme/solvePalette);
19
+ * this resolver only *consumes* it.
20
+ * 2. prominence compose (own × region) — `effectiveP = ownP * regionP`.
21
+ * Region is the multiplicative fade of ALL paint (backdrop model, decision
22
+ * 1): a de-emphasized region fades fg AND bg by the same `regionProminence`.
23
+ * 3. bold H-K compensation — {@link compensateBoldRgb} on the
24
+ * role FG path (role alone, or fgRgb recast onto a role). Never
25
+ * bgRole/bgRgb, never fgRgb with no role.
26
+ * 4. bg resolve — `bgRole`+`bgProminence` (BgP: fill
27
+ * solidity of painted furniture, composed with region only — never with
28
+ * FG's own prominence) via the ELEVATION law ({@link elevateBgRgb}):
29
+ * ground raised a small AL step toward the role's hue, never the role's
30
+ * text color faded. Else literal `bg`/`bgRgb` (region-faded, never
31
+ * role-faded).
32
+ * 5. selection recolor — perception-preserving highlight on
33
+ * the solved RGB (identity-preserving AL shift on fg, fill/recolor on
34
+ * bg) *before* depth emit so ansi16/256 get a real shift, not a no-op
35
+ * on missing fgRgb. Composing after bold compensation means a
36
+ * bold+selected cell shifts once, from the already-compensated base —
37
+ * no double-shift.
38
+ * 6. depth degradation — truecolor rgb → ansi256 index →
39
+ * ansi16 hue-preserving slot → mono (no color SGR at all, NO_COLOR);
40
+ * `dim` is *emitted* here as the ansi16-and-mono-shared degradation of
41
+ * low FG prominence, never *authored* by a role. Mono still runs the
42
+ * full solve upstream (tier/prominence math, bold H-K compensation,
43
+ * selection) — only the final color escape is withheld; bold/italic/
44
+ * strike/underline attributes are untouched and always pass through
45
+ * (capabilities/src/types.ts:5-10 is the mono attribute-policy SSOT).
46
+ * Selected roles at ansi16 emit via nearest-RGB (not the role slot
47
+ * table) so the AL shift is visible in the index.
48
+ *
49
+ * Region (step 2) vs bg (step 4) are never interchangeable: region says "how
50
+ * much of the room is present", bg says "how solid is the furniture painted
51
+ * into it". A call site names which one it means.
52
+ */
53
+ import type { Theme } from "./theme.js";
54
+ import type { ColorDepth } from "../capabilities/index.js";
55
+ import { type Rgb } from "../lexicon/index.js";
56
+ /** Buffer-compatible style fragment (mirrors ../buffer/index.js Style). */
57
+ export type StyleLike = {
58
+ bold?: boolean;
59
+ dim?: boolean;
60
+ strike?: boolean;
61
+ italic?: boolean;
62
+ underline?: boolean;
63
+ href?: string;
64
+ fg?: number;
65
+ fgRgb?: Rgb;
66
+ bg?: number;
67
+ bgRgb?: Rgb;
68
+ bgFx?: string;
69
+ bgFxU?: number;
70
+ bgFxV?: number;
71
+ role?: string;
72
+ prominence?: number;
73
+ bgRole?: string;
74
+ bgProminence?: number;
75
+ surfaceRole?: string;
76
+ surfaceRgb?: Rgb;
77
+ surfaceProminence?: number;
78
+ fuseRole?: string;
79
+ fuseProminence?: number;
80
+ tintRole?: string;
81
+ tint?: number;
82
+ regionProminence?: number;
83
+ selected?: boolean;
84
+ cast?: "transparent";
85
+ };
86
+ export type ResolveCtx = {
87
+ theme: Theme;
88
+ depth?: ColorDepth;
89
+ /** Default region prominence when style has none (1.0 = full). */
90
+ regionProminence?: number;
91
+ };
92
+ /**
93
+ * Bold H-K compensation (enabler 7). Irradiation (Helmholtz 1867, observed by
94
+ * Galileo 1632) makes light-on-dark strokes look brighter/heavier than their
95
+ * measured lightness; on dark surfaces this compounds with sRGB gamma
96
+ * spreading (`typography.md`: "the double effect means dark theme display
97
+ * text at conventional bold weights appears significantly over-weighted").
98
+ * The resolver counters by nudging the solved apparent lightness back toward
99
+ * ground by a fixed budget so bold reads as *weight*, not as an accent bump.
100
+ * Polarity-aware: the shift is toward ground on EITHER polarity (dark ground
101
+ * pulls down, light ground pushes up) — never away from it.
102
+ *
103
+ * Delta derivation anchor (G10): Delta's surface-adaptive weight already
104
+ * solves the same irradiation family for font weight — `--font-weight`
105
+ * (`delta/delta-css/src/typography.css:78-81`) linearly interpolates
106
+ * `--⚙️weight-dark-surface` (360) → `--⚙️weight-light-surface` (420) by
107
+ * surface lightness (`typography-configuration-properties.css:30-58`); that
108
+ * 360/420 ratio is ≈0.85, the "0.85 multiplier" family cited in
109
+ * design-science typography notes (CSS-Tricks anchor, irradiation
110
+ * illusion). Font weight and terminal apparent-lightness are
111
+ * different render channels for the same perceptual correction, so the
112
+ * multiplier doesn't transfer directly — `BOLD_AL_COMPENSATION` is the AL
113
+ * budget's own starting point (an ~4% AL pull, not a weight ratio), picked
114
+ * as a small fraction of the JND (0.074, `dark-theme.md`) so it visibly
115
+ * de-weights bold without crossing into a second contrast step. Tunable —
116
+ * see the `bold-compensation` storybook story for the eyeball-tuning rig.
117
+ */
118
+ export declare const BOLD_AL_COMPENSATION = 0.04;
119
+ /**
120
+ * Resolve one style: role → concrete color at depth; apply region dim.
121
+ * Returns a new style with concrete fg/fgRgb (role kept for dual-dirty).
122
+ */
123
+ export declare function resolveStyle(style: StyleLike, ctx: ResolveCtx): StyleLike;
124
+ /** Bind a resolveStyle callback for paintFrame / dual-dirty. */
125
+ export declare function makeStyleResolver(ctx: ResolveCtx): (style: StyleLike) => StyleLike;
126
+ //# sourceMappingURL=resolver.d.ts.map