@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 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/theme/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AASH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,KAAK,GAAG,EAA4B,MAAM,qBAAqB,CAAC;AAEzE,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAUF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAqGzC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CA8KzE;AAED,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,CAElF"}
@@ -0,0 +1,366 @@
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 invariant from "tiny-invariant";
54
+ import { ansi16Slot, ansi16ToRgb, canvasPolarity, nearestAnsi16FromRgb } from "./ansi16.js";
55
+ import { ansi256ToRgb, nearestAnsi256FromRgb } from "./ansi256.js";
56
+ import { fadeTowardSurfaceRgb, mixTowardTintRgb, regionDimRgb } from "./region.js";
57
+ import { apparentLightness, hexToRgb, oklchToHex, rgbToOklch, solveLightness } from "./salience.js";
58
+ import { selectionFillRgb, selectionRecolorBgRgb, selectionRecolorRgb } from "./selection.js";
59
+ import { FgP, ROLES } from "../lexicon/index.js";
60
+ /** Foreground prominence at/below which ansi16 degrades to `dim` (G2 step 6). */
61
+ const DIM_THRESHOLD = FgP.ghost;
62
+ function clamp01(p) {
63
+ if (!Number.isFinite(p))
64
+ return 1;
65
+ return Math.min(1, Math.max(0, p));
66
+ }
67
+ /**
68
+ * Bold H-K compensation (enabler 7). Irradiation (Helmholtz 1867, observed by
69
+ * Galileo 1632) makes light-on-dark strokes look brighter/heavier than their
70
+ * measured lightness; on dark surfaces this compounds with sRGB gamma
71
+ * spreading (`typography.md`: "the double effect means dark theme display
72
+ * text at conventional bold weights appears significantly over-weighted").
73
+ * The resolver counters by nudging the solved apparent lightness back toward
74
+ * ground by a fixed budget so bold reads as *weight*, not as an accent bump.
75
+ * Polarity-aware: the shift is toward ground on EITHER polarity (dark ground
76
+ * pulls down, light ground pushes up) — never away from it.
77
+ *
78
+ * Delta derivation anchor (G10): Delta's surface-adaptive weight already
79
+ * solves the same irradiation family for font weight — `--font-weight`
80
+ * (`delta/delta-css/src/typography.css:78-81`) linearly interpolates
81
+ * `--⚙️weight-dark-surface` (360) → `--⚙️weight-light-surface` (420) by
82
+ * surface lightness (`typography-configuration-properties.css:30-58`); that
83
+ * 360/420 ratio is ≈0.85, the "0.85 multiplier" family cited in
84
+ * design-science typography notes (CSS-Tricks anchor, irradiation
85
+ * illusion). Font weight and terminal apparent-lightness are
86
+ * different render channels for the same perceptual correction, so the
87
+ * multiplier doesn't transfer directly — `BOLD_AL_COMPENSATION` is the AL
88
+ * budget's own starting point (an ~4% AL pull, not a weight ratio), picked
89
+ * as a small fraction of the JND (0.074, `dark-theme.md`) so it visibly
90
+ * de-weights bold without crossing into a second contrast step. Tunable —
91
+ * see the `bold-compensation` storybook story for the eyeball-tuning rig.
92
+ */
93
+ export const BOLD_AL_COMPENSATION = 0.04;
94
+ function compensateBoldRgb(rgb, ground) {
95
+ const { l, c, h } = rgbToOklch(rgb.r, rgb.g, rgb.b);
96
+ const al = apparentLightness(l, c, h);
97
+ const sign = canvasPolarity(ground) === "dark" ? 1 : -1;
98
+ const newAl = al - sign * BOLD_AL_COMPENSATION;
99
+ const newL = solveLightness(newAl, c, h);
100
+ return hexToRgb(oklchToHex(newL, c, h));
101
+ }
102
+ /** Keep token H/C; land on the role's apparent lightness (body-weight syntax). */
103
+ function recastToRoleAl(literal, roleRgb) {
104
+ const tok = rgbToOklch(literal.r, literal.g, literal.b);
105
+ const role = rgbToOklch(roleRgb.r, roleRgb.g, roleRgb.b);
106
+ const targetAl = apparentLightness(role.l, role.c, role.h);
107
+ const l = solveLightness(targetAl, tok.c, tok.h);
108
+ return hexToRgb(oklchToHex(l, tok.c, tok.h));
109
+ }
110
+ /**
111
+ * Max apparent-lightness elevation of a solid background above ground.
112
+ * Backgrounds obey the ELEVATION law, not the contrast law: a surface is the
113
+ * ground raised a small step toward the role's identity — never the role's
114
+ * text color faded. Deriving bg from the FG tier solve painted panels at
115
+ * text contrast (recede ≈ AL 0.55): huge mid-gray slabs on a dark terminal.
116
+ * Anchors (dark-theme design notes): Material
117
+ * elevation overlays run 5–15% lightness above base, each step clearing the
118
+ * ~7.4% brightness JND; the reference panel (xterm 235 over a #121212
119
+ * ground) sat ≈ +0.07 AL — reproduced here at BgP.panel (0.85 × 0.09).
120
+ * (Historical hex above is comment prose: color-parity-ignore.)
121
+ */
122
+ const BG_ELEVATION_MAX = 0.09;
123
+ /**
124
+ * Background chroma budget: fraction of the role's chroma kept at p=0, plus
125
+ * slope × p. 0.35 left even a mist Diff wash at ~45% of role C — a tinted
126
+ * slab, not atmosphere toward ground. 0.12 lets low-p washes dissolve;
127
+ * panel still picks up identity through the slope (0.12 + 0.35 × 0.85).
128
+ */
129
+ const BG_CHROMA_BASE = 0.12;
130
+ const BG_CHROMA_SLOPE = 0.35;
131
+ /**
132
+ * Elevate ground toward a role's identity: target AL = ground ± elevation
133
+ * (away from ground on either polarity), hue kept, chroma cut to an
134
+ * atmospheric fraction. H-K-correct via solveLightness.
135
+ */
136
+ function elevateBgRgb(roleRgb, ground, solidity) {
137
+ const p = clamp01(solidity);
138
+ const { c, h } = rgbToOklch(roleRgb.r, roleRgb.g, roleRgb.b);
139
+ const sign = canvasPolarity(ground) === "dark" ? 1 : -1;
140
+ const targetAl = ground + sign * BG_ELEVATION_MAX * p;
141
+ const bgC = c * (BG_CHROMA_BASE + BG_CHROMA_SLOPE * p);
142
+ const l = solveLightness(targetAl, bgC, h);
143
+ return hexToRgb(oklchToHex(l, bgC, h));
144
+ }
145
+ function emitFg(rgb, depth, role, effectiveP, ground, out) {
146
+ if (depth === "mono") {
147
+ // NO_COLOR (capabilities/src/types.ts:5-10): role/prominence solving
148
+ // still ran (tier math, bold H-K compensation happened upstream) but no
149
+ // fg color escape is emitted at all — not even an index. Attributes
150
+ // (bold/italic/strike/underline) are untouched by this function and
151
+ // pass through on `out` unconditionally; `dim` is still applied by the
152
+ // caller as the mono/ansi16-shared low-prominence degradation (step 5).
153
+ return;
154
+ }
155
+ if (depth === "ansi16") {
156
+ // Roles: hue-preserving slot table. Literals (syntax): nearest RGB.
157
+ out.fg = role ? ansi16Slot(role, canvasPolarity(ground), effectiveP) : nearestAnsi16FromRgb(rgb);
158
+ return;
159
+ }
160
+ if (depth === "ansi256") {
161
+ out.fg = nearestAnsi256FromRgb(rgb);
162
+ return;
163
+ }
164
+ out.fgRgb = rgb;
165
+ }
166
+ /** Emit bg at declared depth — never truecolor under ansi16/256, never any
167
+ * color field under mono (NO_COLOR: attributes only, see emitFg). */
168
+ function emitBg(rgb, depth, out) {
169
+ if (depth === "mono") {
170
+ return;
171
+ }
172
+ if (depth === "truecolor") {
173
+ out.bgRgb = rgb;
174
+ }
175
+ else if (depth === "ansi16") {
176
+ out.bg = nearestAnsi16FromRgb(rgb);
177
+ }
178
+ else {
179
+ out.bg = nearestAnsi256FromRgb(rgb);
180
+ }
181
+ }
182
+ /**
183
+ * Resolve one style: role → concrete color at depth; apply region dim.
184
+ * Returns a new style with concrete fg/fgRgb (role kept for dual-dirty).
185
+ */
186
+ export function resolveStyle(style, ctx) {
187
+ const depth = ctx.depth ?? "truecolor";
188
+ const regionP = clamp01(style.regionProminence ?? ctx.regionProminence ?? 1);
189
+ const ownP = clamp01(style.prominence ?? 1);
190
+ const effectiveP = ownP * regionP;
191
+ const out = {
192
+ bold: style.bold,
193
+ strike: style.strike,
194
+ italic: style.italic,
195
+ underline: style.underline,
196
+ href: style.href,
197
+ role: style.role,
198
+ prominence: style.prominence,
199
+ bgRole: style.bgRole,
200
+ bgProminence: style.bgProminence,
201
+ surfaceRole: style.surfaceRole,
202
+ surfaceProminence: style.surfaceProminence,
203
+ fuseRole: style.fuseRole,
204
+ fuseProminence: style.fuseProminence,
205
+ tintRole: style.tintRole,
206
+ tint: style.tint,
207
+ regionProminence: style.regionProminence,
208
+ selected: style.selected,
209
+ cast: style.cast,
210
+ // Procedural bg is present-loop concern — never resolve away
211
+ bgFx: style.bgFx,
212
+ bgFxU: style.bgFxU,
213
+ bgFxV: style.bgFxV,
214
+ };
215
+ const ground = ctx.theme.ground;
216
+ // ── Surface / BG first: opacity target for FG prominence ──────────────
217
+ // Local surface (panel under ShadowStream, cell bgRole, etc.) beats theme
218
+ // ground. Order: explicit surfaceRole → cell bgRole/bgRgb → theme ground.
219
+ let bgRgb;
220
+ let bgIndexPassthrough;
221
+ if (style.bgRole && ROLES.has(style.bgRole)) {
222
+ const bgRole = style.bgRole;
223
+ invariant(ctx.theme.colors[bgRole], `theme missing role: ${bgRole}`);
224
+ const bgOwnP = clamp01(style.bgProminence ?? 1);
225
+ bgRgb = elevateBgRgb(ctx.theme.rgb[bgRole], ground, bgOwnP * regionP);
226
+ }
227
+ else if (style.bgRgb) {
228
+ bgRgb = { ...style.bgRgb };
229
+ if (regionP < 1) {
230
+ bgRgb = regionDimRgb(bgRgb, ground, regionP);
231
+ }
232
+ }
233
+ else if (style.bg !== undefined) {
234
+ if (style.selected) {
235
+ bgRgb = style.bg <= 15 ? ansi16ToRgb(style.bg) : ansi256ToRgb(style.bg);
236
+ }
237
+ else {
238
+ bgIndexPassthrough = style.bg;
239
+ }
240
+ }
241
+ let fadeSurface;
242
+ if (style.fuseRole && ROLES.has(style.fuseRole)) {
243
+ // FG→FG fuse (progress rail into contour). Not BG elevation.
244
+ // Target is fuseProminence × region so the dissolve matches the
245
+ // already-dimmed contour; omitting region leaves the rail at full-room
246
+ // brightness behind a modal.
247
+ const fr = style.fuseRole;
248
+ invariant(ctx.theme.colors[fr], `theme missing role: ${fr}`);
249
+ const fp = clamp01(style.fuseProminence ?? FgP.ghost) * regionP;
250
+ const full = ctx.theme.rgb[fr];
251
+ fadeSurface = fp >= 1 ? { ...full } : regionDimRgb(full, ground, fp);
252
+ }
253
+ else if (style.surfaceRole && ROLES.has(style.surfaceRole)) {
254
+ const sr = style.surfaceRole;
255
+ invariant(ctx.theme.colors[sr], `theme missing role: ${sr}`);
256
+ const sp = clamp01(style.surfaceProminence ?? 1);
257
+ fadeSurface = elevateBgRgb(ctx.theme.rgb[sr], ground, sp * regionP);
258
+ }
259
+ else if (bgRgb) {
260
+ fadeSurface = bgRgb;
261
+ }
262
+ else if (style.surfaceRgb) {
263
+ fadeSurface = style.surfaceRgb;
264
+ }
265
+ else {
266
+ fadeSurface = ctx.theme.groundRgb;
267
+ }
268
+ function tintFg(rgb) {
269
+ const amount = typeof style.tint === "number" && Number.isFinite(style.tint) ? clamp01(style.tint) : 0;
270
+ if (!(amount > 0) || !style.tintRole || !ROLES.has(style.tintRole))
271
+ return rgb;
272
+ const hot = ctx.theme.rgb[style.tintRole];
273
+ return hot ? mixTowardTintRgb(rgb, hot, amount) : rgb;
274
+ }
275
+ /** Prominence fade: toward local surface when known, else theme ground L. */
276
+ function fadeFg(rgb, p) {
277
+ if (p >= 1)
278
+ return rgb;
279
+ if (fadeSurface) {
280
+ return fadeTowardSurfaceRgb(rgb, fadeSurface, p, {
281
+ // Quadratic de-chroma on FG→FG fuse so the hot hue doesn't
282
+ // plateau then drop as a last step (region γ is sublinear).
283
+ chromaExp: style.fuseRole ? 2 : undefined,
284
+ });
285
+ }
286
+ return regionDimRgb(rgb, ground, p);
287
+ }
288
+ // fgRgb + role: token hue/chroma, role apparent-lightness (syntax).
289
+ // fgRgb alone: claimed color. Role alone: semantic chrome.
290
+ let fgRgb;
291
+ let fgRole;
292
+ let fgIsRole = false;
293
+ if (style.fgRgb) {
294
+ fgRgb = { ...style.fgRgb };
295
+ const withRole = style.role && ROLES.has(style.role);
296
+ if (withRole) {
297
+ const role = style.role;
298
+ const roleRgb = ctx.theme.rgb[role];
299
+ invariant(roleRgb, `theme missing role: ${role}`);
300
+ fgRgb = recastToRoleAl(fgRgb, roleRgb);
301
+ // Nearest-RGB at ansi16 — a role slot would collapse every token.
302
+ }
303
+ fgRgb = tintFg(fgRgb);
304
+ if (effectiveP < 1) {
305
+ fgRgb = fadeFg(fgRgb, effectiveP);
306
+ }
307
+ if (withRole && style.bold) {
308
+ fgRgb = compensateBoldRgb(fgRgb, ground);
309
+ }
310
+ out.dim = withRole && (depth === "ansi16" || depth === "mono") && effectiveP <= DIM_THRESHOLD ? true : style.dim;
311
+ }
312
+ else if (style.role && ROLES.has(style.role)) {
313
+ const role = style.role;
314
+ const fullHex = ctx.theme.colors[role];
315
+ invariant(fullHex, `theme missing role: ${role}`);
316
+ fgRole = role;
317
+ fgIsRole = true;
318
+ fgRgb = tintFg(ctx.theme.rgb[role]);
319
+ if (effectiveP < 1) {
320
+ fgRgb = fadeFg(fgRgb, effectiveP);
321
+ }
322
+ // FG only — never touch bgRole/bgRgb (elevation law owns surfaces).
323
+ if (style.bold) {
324
+ fgRgb = compensateBoldRgb(fgRgb, ground);
325
+ }
326
+ // dim is banned as an authoring channel for roles (enabler 6).
327
+ if ((depth === "ansi16" || depth === "mono") && effectiveP <= DIM_THRESHOLD) {
328
+ out.dim = true;
329
+ }
330
+ }
331
+ else if (style.fg === undefined) {
332
+ out.dim = style.dim;
333
+ }
334
+ else {
335
+ if (style.selected) {
336
+ fgRgb = style.fg <= 15 ? ansi16ToRgb(style.fg) : ansi256ToRgb(style.fg);
337
+ }
338
+ else {
339
+ out.fg = style.fg;
340
+ }
341
+ out.dim = style.dim;
342
+ }
343
+ if (style.selected && fgRgb) {
344
+ fgRgb = selectionRecolorRgb(fgRgb, ground);
345
+ }
346
+ if (fgRgb) {
347
+ const emitRole = style.selected && fgIsRole ? undefined : fgRole;
348
+ emitFg(fgRgb, depth, emitRole, effectiveP, ground, out);
349
+ }
350
+ // BG emit (already resolved above for fade target).
351
+ if (style.selected) {
352
+ bgRgb = bgRgb ? selectionRecolorBgRgb(bgRgb, ground) : selectionFillRgb(ground);
353
+ }
354
+ if (bgRgb) {
355
+ emitBg(bgRgb, depth, out);
356
+ }
357
+ else if (bgIndexPassthrough !== undefined) {
358
+ out.bg = bgIndexPassthrough;
359
+ }
360
+ return out;
361
+ }
362
+ /** Bind a resolveStyle callback for paintFrame / dual-dirty. */
363
+ export function makeStyleResolver(ctx) {
364
+ return (style) => resolveStyle(style, ctx);
365
+ }
366
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/theme/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Helmholtz–Kohlrausch salience solver.
3
+ *
4
+ * Palette seeds are (hue, chroma, tier). Each tier is an apparent-lightness
5
+ * contrast delta from ground; the solver compensates H-K so chromatic colors
6
+ * match achromatic brightness on the same tier.
7
+ *
8
+ * perceived_AL = L + 0.14 · C · hue_factor(h) // chromatic looks brighter
9
+ * L_nominal = target_AL − 0.14 · C · hue_factor(h)
10
+ *
11
+ * Hue weight is the **Nayatani 3-harmonic** (SSOT: Delta foundation.css +
12
+ * postcss-oklch-plus / helmholtz-kohlrausch-models.md).
13
+ *
14
+ * Ground is runtime input — pair with OSC 11 for terminal-attuned palettes.
15
+ * Color math via culori (OKLCH ↔ sRGB).
16
+ */
17
+ import type { Oklch, Polarity, Rgb, Tier } from "../lexicon/index.js";
18
+ /** H-K chroma scale (≈ Fairchild–Pirrotta k; magnitude is Delta's budget). */
19
+ export declare const HK_K = 0.14;
20
+ /**
21
+ * Apparent-lightness contrast deltas per tier at the reference ground.
22
+ * At L_ground = 0.2 these target recede≈0.55 … anchor≈0.85.
23
+ * Tier names are vocabulary (../lexicon/index.js); the deltas are
24
+ * solver calibration and live here.
25
+ */
26
+ export declare const TIER_DELTAS: {
27
+ readonly alarm: 0.33;
28
+ readonly recede: 0.35;
29
+ readonly differentiate: 0.42;
30
+ readonly baseline: 0.57;
31
+ readonly anchor: 0.65;
32
+ };
33
+ /** Reference near-black ground the tier deltas were derived against. */
34
+ export declare const REFERENCE_GROUND = 0.2;
35
+ export declare function hueFactor(h: number): number;
36
+ /** Amount of L to subtract so a chromatic color sits level with gray at same L. */
37
+ export declare function hkCompensation(c: number, h: number): number;
38
+ /**
39
+ * Perceived / apparent lightness (chromatic looks *brighter* than measured L).
40
+ * Inverse of solveLightness for fixed (C,h).
41
+ */
42
+ export declare function apparentLightness(l: number, c: number, h: number): number;
43
+ /**
44
+ * Nominal OKLCH L that lands (C, h) on a target apparent lightness.
45
+ * Chromatic → lower measured L (same as bake-darcula / Delta CSS subtract).
46
+ */
47
+ export declare function solveLightness(targetAl: number, c: number, h: number): number;
48
+ /**
49
+ * Target apparent lightness for a tier against ground, with headroom
50
+ * compression when the ground leaves less than the full delta range.
51
+ */
52
+ export declare function tierTarget(tier: Tier, ground: number, polarity?: Polarity): number;
53
+ export type SolveOpts = {
54
+ ground?: number;
55
+ polarity?: Polarity;
56
+ };
57
+ /**
58
+ * Solve (C, h) on a salience tier against ground → sRGB hex.
59
+ */
60
+ export declare function solve(tier: Tier, c: number, h: number, opts?: SolveOpts): string;
61
+ export type Seed = {
62
+ name: string;
63
+ h: number;
64
+ c: number;
65
+ tier: Tier;
66
+ };
67
+ /** Solve a seed list into `{ name → hex }`. */
68
+ export declare function solvePalette(seeds: readonly Seed[], opts?: SolveOpts): Record<string, string>;
69
+ /**
70
+ * True when OKLCH (l,c,h) is inside sRGB (linear channels in [0,1]).
71
+ * Culori `formatHex` / RGB conversion is *not* this check — it channel-clips.
72
+ */
73
+ export declare function inSrgb(l: number, c: number, h: number): boolean;
74
+ /**
75
+ * Map OKLCH into sRGB by shrinking chroma at fixed hue, then re-solving L
76
+ * so H-K apparent lightness matches the request. Channel-clip (culori
77
+ * formatHex, nearest-legal RGB) rotates hue — yellow at low L becomes
78
+ * rust `#542400` (h 77 → 51). We never do that.
79
+ */
80
+ export declare function fitOklchToSrgb(l: number, c: number, h: number): {
81
+ l: number;
82
+ c: number;
83
+ h: number;
84
+ };
85
+ export declare function oklchToHex(l: number, c: number, h: number): string;
86
+ export declare function hexToOklch(hex: string): Oklch;
87
+ export declare function hexToRgb(hex: string): Rgb;
88
+ /** sRGB → OKLCH L from 0–255 channel triple (OSC 11 ground path). */
89
+ export declare function rgbToOklch(r: number, g: number, b: number): Oklch;
90
+ //# sourceMappingURL=salience.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"salience.d.ts","sourceRoot":"","sources":["../../src/theme/salience.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAKtE,8EAA8E;AAC9E,eAAO,MAAM,IAAI,OAAO,CAAC;AAEzB;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;;;;CAMiB,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAiBpC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ3C;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7E;AAQD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,MAAM,CAK1F;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,SAAc,GAAG,MAAM,CAMpF;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,GAAE,SAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjG;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAU/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAuBnG;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYlE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAW7C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAUzC;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAUjE"}