@flyingrobots/bijou 7.2.0 → 8.0.0-rc.1

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 (842) hide show
  1. package/README.md +14 -0
  2. package/dist/core/ansi.d.ts +2 -0
  3. package/dist/core/ansi.d.ts.map +1 -1
  4. package/dist/core/ansi.js +4 -0
  5. package/dist/core/ansi.js.map +1 -1
  6. package/dist/core/app-shell-composition-normalize.d.ts +10 -0
  7. package/dist/core/app-shell-composition-normalize.d.ts.map +1 -0
  8. package/dist/core/app-shell-composition-normalize.js +63 -0
  9. package/dist/core/app-shell-composition-normalize.js.map +1 -0
  10. package/dist/core/app-shell-composition.d.ts.map +1 -1
  11. package/dist/core/app-shell-composition.js +10 -71
  12. package/dist/core/app-shell-composition.js.map +1 -1
  13. package/dist/core/binding-frame-issues.d.ts +5 -0
  14. package/dist/core/binding-frame-issues.d.ts.map +1 -0
  15. package/dist/core/binding-frame-issues.js +31 -0
  16. package/dist/core/binding-frame-issues.js.map +1 -0
  17. package/dist/core/binding-frame-records.d.ts +10 -0
  18. package/dist/core/binding-frame-records.d.ts.map +1 -0
  19. package/dist/core/binding-frame-records.js +53 -0
  20. package/dist/core/binding-frame-records.js.map +1 -0
  21. package/dist/core/binding-frame-update.d.ts.map +1 -1
  22. package/dist/core/binding-frame-update.js +6 -85
  23. package/dist/core/binding-frame-update.js.map +1 -1
  24. package/dist/core/block-tree-render-contract.d.ts +24 -0
  25. package/dist/core/block-tree-render-contract.d.ts.map +1 -0
  26. package/dist/core/block-tree-render-contract.js +8 -0
  27. package/dist/core/block-tree-render-contract.js.map +1 -0
  28. package/dist/core/block-tree-render-snapshot.d.ts +6 -0
  29. package/dist/core/block-tree-render-snapshot.d.ts.map +1 -0
  30. package/dist/core/block-tree-render-snapshot.js +55 -0
  31. package/dist/core/block-tree-render-snapshot.js.map +1 -0
  32. package/dist/core/block-tree-render.d.ts +4 -16
  33. package/dist/core/block-tree-render.d.ts.map +1 -1
  34. package/dist/core/block-tree-render.js +3 -184
  35. package/dist/core/block-tree-render.js.map +1 -1
  36. package/dist/core/block-tree-render.part01.d.ts +4 -0
  37. package/dist/core/block-tree-render.part01.d.ts.map +1 -0
  38. package/dist/core/block-tree-render.part01.js +10 -0
  39. package/dist/core/block-tree-render.part01.js.map +1 -0
  40. package/dist/core/block-tree-render.part02.d.ts +7 -0
  41. package/dist/core/block-tree-render.part02.d.ts.map +1 -0
  42. package/dist/core/block-tree-render.part02.js +59 -0
  43. package/dist/core/block-tree-render.part02.js.map +1 -0
  44. package/dist/core/block-tree-render.part03.d.ts +14 -0
  45. package/dist/core/block-tree-render.part03.d.ts.map +1 -0
  46. package/dist/core/block-tree-render.part03.js +64 -0
  47. package/dist/core/block-tree-render.part03.js.map +1 -0
  48. package/dist/core/components/box-fill.d.ts +2 -0
  49. package/dist/core/components/box-fill.d.ts.map +1 -0
  50. package/dist/core/components/box-fill.js +7 -0
  51. package/dist/core/components/box-fill.js.map +1 -0
  52. package/dist/core/components/box-render.d.ts +9 -0
  53. package/dist/core/components/box-render.d.ts.map +1 -0
  54. package/dist/core/components/box-render.js +76 -0
  55. package/dist/core/components/box-render.js.map +1 -0
  56. package/dist/core/components/box-v3.d.ts +2 -15
  57. package/dist/core/components/box-v3.d.ts.map +1 -1
  58. package/dist/core/components/box-v3.js +2 -222
  59. package/dist/core/components/box-v3.js.map +1 -1
  60. package/dist/core/components/box-v3.part01.d.ts +30 -0
  61. package/dist/core/components/box-v3.part01.d.ts.map +1 -0
  62. package/dist/core/components/box-v3.part01.js +72 -0
  63. package/dist/core/components/box-v3.part01.js.map +1 -0
  64. package/dist/core/components/box-v3.part02.d.ts +9 -0
  65. package/dist/core/components/box-v3.part02.d.ts.map +1 -0
  66. package/dist/core/components/box-v3.part02.js +131 -0
  67. package/dist/core/components/box-v3.part02.js.map +1 -0
  68. package/dist/core/components/box-v3.part03.d.ts +10 -0
  69. package/dist/core/components/box-v3.part03.d.ts.map +1 -0
  70. package/dist/core/components/box-v3.part03.js +29 -0
  71. package/dist/core/components/box-v3.part03.js.map +1 -0
  72. package/dist/core/components/box.d.ts +2 -7
  73. package/dist/core/components/box.d.ts.map +1 -1
  74. package/dist/core/components/box.js +13 -106
  75. package/dist/core/components/box.js.map +1 -1
  76. package/dist/core/components/dag-edges.d.ts +5 -100
  77. package/dist/core/components/dag-edges.d.ts.map +1 -1
  78. package/dist/core/components/dag-edges.js +4 -222
  79. package/dist/core/components/dag-edges.js.map +1 -1
  80. package/dist/core/components/dag-edges.part01.d.ts +67 -0
  81. package/dist/core/components/dag-edges.part01.d.ts.map +1 -0
  82. package/dist/core/components/dag-edges.part01.js +99 -0
  83. package/dist/core/components/dag-edges.part01.js.map +1 -0
  84. package/dist/core/components/dag-edges.part02.d.ts +31 -0
  85. package/dist/core/components/dag-edges.part02.d.ts.map +1 -0
  86. package/dist/core/components/dag-edges.part02.js +57 -0
  87. package/dist/core/components/dag-edges.part02.js.map +1 -0
  88. package/dist/core/components/dag-edges.part03.d.ts +18 -0
  89. package/dist/core/components/dag-edges.part03.d.ts.map +1 -0
  90. package/dist/core/components/dag-edges.part03.js +41 -0
  91. package/dist/core/components/dag-edges.part03.js.map +1 -0
  92. package/dist/core/components/dag-edges.part04.d.ts +9 -0
  93. package/dist/core/components/dag-edges.part04.d.ts.map +1 -0
  94. package/dist/core/components/dag-edges.part04.js +67 -0
  95. package/dist/core/components/dag-edges.part04.js.map +1 -0
  96. package/dist/core/components/dag-layers.d.ts +3 -0
  97. package/dist/core/components/dag-layers.d.ts.map +1 -0
  98. package/dist/core/components/dag-layers.js +92 -0
  99. package/dist/core/components/dag-layers.js.map +1 -0
  100. package/dist/core/components/dag-layout.d.ts +1 -11
  101. package/dist/core/components/dag-layout.d.ts.map +1 -1
  102. package/dist/core/components/dag-layout.js +3 -114
  103. package/dist/core/components/dag-layout.js.map +1 -1
  104. package/dist/core/components/dag-render-contract.d.ts +42 -0
  105. package/dist/core/components/dag-render-contract.d.ts.map +1 -0
  106. package/dist/core/components/dag-render-contract.js +2 -0
  107. package/dist/core/components/dag-render-contract.js.map +1 -0
  108. package/dist/core/components/dag-render-grid.d.ts +6 -0
  109. package/dist/core/components/dag-render-grid.d.ts.map +1 -0
  110. package/dist/core/components/dag-render-grid.js +90 -0
  111. package/dist/core/components/dag-render-grid.js.map +1 -0
  112. package/dist/core/components/dag-render-interactive.d.ts +11 -0
  113. package/dist/core/components/dag-render-interactive.d.ts.map +1 -0
  114. package/dist/core/components/dag-render-interactive.js +18 -0
  115. package/dist/core/components/dag-render-interactive.js.map +1 -0
  116. package/dist/core/components/dag-render-layout.d.ts +6 -0
  117. package/dist/core/components/dag-render-layout.d.ts.map +1 -0
  118. package/dist/core/components/dag-render-layout.js +80 -0
  119. package/dist/core/components/dag-render-layout.js.map +1 -0
  120. package/dist/core/components/dag-render-metrics.d.ts +21 -0
  121. package/dist/core/components/dag-render-metrics.d.ts.map +1 -0
  122. package/dist/core/components/dag-render-metrics.js +95 -0
  123. package/dist/core/components/dag-render-metrics.js.map +1 -0
  124. package/dist/core/components/dag-render-node.d.ts +9 -0
  125. package/dist/core/components/dag-render-node.d.ts.map +1 -0
  126. package/dist/core/components/dag-render-node.js +71 -0
  127. package/dist/core/components/dag-render-node.js.map +1 -0
  128. package/dist/core/components/dag-render-place.d.ts +6 -0
  129. package/dist/core/components/dag-render-place.d.ts.map +1 -0
  130. package/dist/core/components/dag-render-place.js +59 -0
  131. package/dist/core/components/dag-render-place.js.map +1 -0
  132. package/dist/core/components/dag-render-text.d.ts +4 -0
  133. package/dist/core/components/dag-render-text.d.ts.map +1 -0
  134. package/dist/core/components/dag-render-text.js +55 -0
  135. package/dist/core/components/dag-render-text.js.map +1 -0
  136. package/dist/core/components/dag-render.d.ts +3 -51
  137. package/dist/core/components/dag-render.d.ts.map +1 -1
  138. package/dist/core/components/dag-render.js +3 -550
  139. package/dist/core/components/dag-render.js.map +1 -1
  140. package/dist/core/components/enumerated-list-format.d.ts +5 -0
  141. package/dist/core/components/enumerated-list-format.d.ts.map +1 -0
  142. package/dist/core/components/enumerated-list-format.js +93 -0
  143. package/dist/core/components/enumerated-list-format.js.map +1 -0
  144. package/dist/core/components/enumerated-list.d.ts.map +1 -1
  145. package/dist/core/components/enumerated-list.js +8 -128
  146. package/dist/core/components/enumerated-list.js.map +1 -1
  147. package/dist/core/components/guided-flow-sections.d.ts +6 -0
  148. package/dist/core/components/guided-flow-sections.d.ts.map +1 -0
  149. package/dist/core/components/guided-flow-sections.js +81 -0
  150. package/dist/core/components/guided-flow-sections.js.map +1 -0
  151. package/dist/core/components/guided-flow.d.ts.map +1 -1
  152. package/dist/core/components/guided-flow.js +4 -77
  153. package/dist/core/components/guided-flow.js.map +1 -1
  154. package/dist/core/components/markdown-parse.d.ts +4 -65
  155. package/dist/core/components/markdown-parse.d.ts.map +1 -1
  156. package/dist/core/components/markdown-parse.js +3 -320
  157. package/dist/core/components/markdown-parse.js.map +1 -1
  158. package/dist/core/components/markdown-parse.part01.d.ts +58 -0
  159. package/dist/core/components/markdown-parse.part01.d.ts.map +1 -0
  160. package/dist/core/components/markdown-parse.part01.js +111 -0
  161. package/dist/core/components/markdown-parse.part01.js.map +1 -0
  162. package/dist/core/components/markdown-parse.part02.d.ts +14 -0
  163. package/dist/core/components/markdown-parse.part02.d.ts.map +1 -0
  164. package/dist/core/components/markdown-parse.part02.js +110 -0
  165. package/dist/core/components/markdown-parse.part02.js.map +1 -0
  166. package/dist/core/components/markdown-parse.part03.d.ts +12 -0
  167. package/dist/core/components/markdown-parse.part03.d.ts.map +1 -0
  168. package/dist/core/components/markdown-parse.part03.js +104 -0
  169. package/dist/core/components/markdown-parse.part03.js.map +1 -0
  170. package/dist/core/components/preference-list.d.ts +4 -60
  171. package/dist/core/components/preference-list.d.ts.map +1 -1
  172. package/dist/core/components/preference-list.js +3 -305
  173. package/dist/core/components/preference-list.js.map +1 -1
  174. package/dist/core/components/preference-list.part01.d.ts +69 -0
  175. package/dist/core/components/preference-list.part01.d.ts.map +1 -0
  176. package/dist/core/components/preference-list.part01.js +61 -0
  177. package/dist/core/components/preference-list.part01.js.map +1 -0
  178. package/dist/core/components/preference-list.part02.d.ts +18 -0
  179. package/dist/core/components/preference-list.part02.d.ts.map +1 -0
  180. package/dist/core/components/preference-list.part02.js +113 -0
  181. package/dist/core/components/preference-list.part02.js.map +1 -0
  182. package/dist/core/components/preference-list.part04.d.ts +4 -0
  183. package/dist/core/components/preference-list.part04.d.ts.map +1 -0
  184. package/dist/core/components/preference-list.part04.js +88 -0
  185. package/dist/core/components/preference-list.part04.js.map +1 -0
  186. package/dist/core/components/preference-list.part05.d.ts +4 -0
  187. package/dist/core/components/preference-list.part05.d.ts.map +1 -0
  188. package/dist/core/components/preference-list.part05.js +60 -0
  189. package/dist/core/components/preference-list.part05.js.map +1 -0
  190. package/dist/core/components/progress.d.ts +5 -86
  191. package/dist/core/components/progress.d.ts.map +1 -1
  192. package/dist/core/components/progress.js +3 -205
  193. package/dist/core/components/progress.js.map +1 -1
  194. package/dist/core/components/progress.part01.d.ts +57 -0
  195. package/dist/core/components/progress.part01.d.ts.map +1 -0
  196. package/dist/core/components/progress.part01.js +69 -0
  197. package/dist/core/components/progress.part01.js.map +1 -0
  198. package/dist/core/components/progress.part02.d.ts +21 -0
  199. package/dist/core/components/progress.part02.d.ts.map +1 -0
  200. package/dist/core/components/progress.part02.js +53 -0
  201. package/dist/core/components/progress.part02.js.map +1 -0
  202. package/dist/core/components/progress.part03.d.ts +14 -0
  203. package/dist/core/components/progress.part03.d.ts.map +1 -0
  204. package/dist/core/components/progress.part03.js +96 -0
  205. package/dist/core/components/progress.part03.js.map +1 -0
  206. package/dist/core/components/surface-text-layout.d.ts +5 -0
  207. package/dist/core/components/surface-text-layout.d.ts.map +1 -0
  208. package/dist/core/components/surface-text-layout.js +47 -0
  209. package/dist/core/components/surface-text-layout.js.map +1 -0
  210. package/dist/core/components/surface-text-style.d.ts +17 -0
  211. package/dist/core/components/surface-text-style.d.ts.map +1 -0
  212. package/dist/core/components/surface-text-style.js +36 -0
  213. package/dist/core/components/surface-text-style.js.map +1 -0
  214. package/dist/core/components/surface-text.d.ts +5 -6
  215. package/dist/core/components/surface-text.d.ts.map +1 -1
  216. package/dist/core/components/surface-text.js +13 -92
  217. package/dist/core/components/surface-text.js.map +1 -1
  218. package/dist/core/components/table-build.d.ts +12 -0
  219. package/dist/core/components/table-build.d.ts.map +1 -0
  220. package/dist/core/components/table-build.js +48 -0
  221. package/dist/core/components/table-build.js.map +1 -0
  222. package/dist/core/components/table-cell-format.d.ts +4 -0
  223. package/dist/core/components/table-cell-format.d.ts.map +1 -0
  224. package/dist/core/components/table-cell-format.js +11 -0
  225. package/dist/core/components/table-cell-format.js.map +1 -0
  226. package/dist/core/components/table-contract.d.ts +66 -0
  227. package/dist/core/components/table-contract.d.ts.map +1 -0
  228. package/dist/core/components/table-contract.js +17 -0
  229. package/dist/core/components/table-contract.js.map +1 -0
  230. package/dist/core/components/table-fit.d.ts +3 -0
  231. package/dist/core/components/table-fit.d.ts.map +1 -0
  232. package/dist/core/components/table-fit.js +73 -0
  233. package/dist/core/components/table-fit.js.map +1 -0
  234. package/dist/core/components/table-measure.d.ts +11 -0
  235. package/dist/core/components/table-measure.d.ts.map +1 -0
  236. package/dist/core/components/table-measure.js +78 -0
  237. package/dist/core/components/table-measure.js.map +1 -0
  238. package/dist/core/components/table-model.d.ts +33 -0
  239. package/dist/core/components/table-model.d.ts.map +1 -0
  240. package/dist/core/components/table-model.js +2 -0
  241. package/dist/core/components/table-model.js.map +1 -0
  242. package/dist/core/components/table-normalize.d.ts +7 -0
  243. package/dist/core/components/table-normalize.d.ts.map +1 -0
  244. package/dist/core/components/table-normalize.js +47 -0
  245. package/dist/core/components/table-normalize.js.map +1 -0
  246. package/dist/core/components/table-render-borderless.d.ts +7 -0
  247. package/dist/core/components/table-render-borderless.d.ts.map +1 -0
  248. package/dist/core/components/table-render-borderless.js +62 -0
  249. package/dist/core/components/table-render-borderless.js.map +1 -0
  250. package/dist/core/components/table-render-expanded.d.ts +5 -0
  251. package/dist/core/components/table-render-expanded.d.ts.map +1 -0
  252. package/dist/core/components/table-render-expanded.js +58 -0
  253. package/dist/core/components/table-render-expanded.js.map +1 -0
  254. package/dist/core/components/table-render-grid.d.ts +5 -0
  255. package/dist/core/components/table-render-grid.d.ts.map +1 -0
  256. package/dist/core/components/table-render-grid.js +64 -0
  257. package/dist/core/components/table-render-grid.js.map +1 -0
  258. package/dist/core/components/table-render-markdown.d.ts +4 -0
  259. package/dist/core/components/table-render-markdown.d.ts.map +1 -0
  260. package/dist/core/components/table-render-markdown.js +52 -0
  261. package/dist/core/components/table-render-markdown.js.map +1 -0
  262. package/dist/core/components/table-render-pipe.d.ts +5 -0
  263. package/dist/core/components/table-render-pipe.d.ts.map +1 -0
  264. package/dist/core/components/table-render-pipe.js +46 -0
  265. package/dist/core/components/table-render-pipe.js.map +1 -0
  266. package/dist/core/components/table-render-visual.d.ts +5 -0
  267. package/dist/core/components/table-render-visual.d.ts.map +1 -0
  268. package/dist/core/components/table-render-visual.js +30 -0
  269. package/dist/core/components/table-render-visual.js.map +1 -0
  270. package/dist/core/components/table-text-ansi.d.ts +3 -0
  271. package/dist/core/components/table-text-ansi.d.ts.map +1 -0
  272. package/dist/core/components/table-text-ansi.js +121 -0
  273. package/dist/core/components/table-text-ansi.js.map +1 -0
  274. package/dist/core/components/table.d.ts +2 -64
  275. package/dist/core/components/table.d.ts.map +1 -1
  276. package/dist/core/components/table.js +22 -680
  277. package/dist/core/components/table.js.map +1 -1
  278. package/dist/core/components/timer-format.d.ts +6 -0
  279. package/dist/core/components/timer-format.d.ts.map +1 -0
  280. package/dist/core/components/timer-format.js +39 -0
  281. package/dist/core/components/timer-format.js.map +1 -0
  282. package/dist/core/components/timer.d.ts +3 -73
  283. package/dist/core/components/timer.d.ts.map +1 -1
  284. package/dist/core/components/timer.js +2 -220
  285. package/dist/core/components/timer.js.map +1 -1
  286. package/dist/core/components/timer.part01.d.ts +93 -0
  287. package/dist/core/components/timer.part01.d.ts.map +1 -0
  288. package/dist/core/components/timer.part01.js +35 -0
  289. package/dist/core/components/timer.part01.js.map +1 -0
  290. package/dist/core/components/timer.part02.d.ts +5 -0
  291. package/dist/core/components/timer.part02.d.ts.map +1 -0
  292. package/dist/core/components/timer.part02.js +120 -0
  293. package/dist/core/components/timer.part02.js.map +1 -0
  294. package/dist/core/components/timer.part03.d.ts +20 -0
  295. package/dist/core/components/timer.part03.d.ts.map +1 -0
  296. package/dist/core/components/timer.part03.js +53 -0
  297. package/dist/core/components/timer.part03.js.map +1 -0
  298. package/dist/core/detect/tty.d.ts +13 -3
  299. package/dist/core/detect/tty.d.ts.map +1 -1
  300. package/dist/core/detect/tty.js +12 -4
  301. package/dist/core/detect/tty.js.map +1 -1
  302. package/dist/core/forms/multiselect-interactive.d.ts +4 -0
  303. package/dist/core/forms/multiselect-interactive.d.ts.map +1 -0
  304. package/dist/core/forms/multiselect-interactive.js +106 -0
  305. package/dist/core/forms/multiselect-interactive.js.map +1 -0
  306. package/dist/core/forms/multiselect.d.ts.map +1 -1
  307. package/dist/core/forms/multiselect.js +2 -106
  308. package/dist/core/forms/multiselect.js.map +1 -1
  309. package/dist/core/layout/geometry.d.ts +3 -38
  310. package/dist/core/layout/geometry.d.ts.map +1 -1
  311. package/dist/core/layout/geometry.js +2 -198
  312. package/dist/core/layout/geometry.js.map +1 -1
  313. package/dist/core/layout/geometry.part01.d.ts +38 -0
  314. package/dist/core/layout/geometry.part01.d.ts.map +1 -0
  315. package/dist/core/layout/geometry.part01.js +42 -0
  316. package/dist/core/layout/geometry.part01.js.map +1 -0
  317. package/dist/core/layout/geometry.part02.d.ts +5 -0
  318. package/dist/core/layout/geometry.part02.d.ts.map +1 -0
  319. package/dist/core/layout/geometry.part02.js +77 -0
  320. package/dist/core/layout/geometry.part02.js.map +1 -0
  321. package/dist/core/layout/geometry.part03.d.ts +8 -0
  322. package/dist/core/layout/geometry.part03.d.ts.map +1 -0
  323. package/dist/core/layout/geometry.part03.js +85 -0
  324. package/dist/core/layout/geometry.part03.js.map +1 -0
  325. package/dist/core/mode-lowering.d.ts +2 -47
  326. package/dist/core/mode-lowering.d.ts.map +1 -1
  327. package/dist/core/mode-lowering.js +1 -175
  328. package/dist/core/mode-lowering.js.map +1 -1
  329. package/dist/core/mode-lowering.part01.d.ts +51 -0
  330. package/dist/core/mode-lowering.part01.d.ts.map +1 -0
  331. package/dist/core/mode-lowering.part01.js +11 -0
  332. package/dist/core/mode-lowering.part01.js.map +1 -0
  333. package/dist/core/mode-lowering.part02.d.ts +11 -0
  334. package/dist/core/mode-lowering.part02.d.ts.map +1 -0
  335. package/dist/core/mode-lowering.part02.js +81 -0
  336. package/dist/core/mode-lowering.part02.js.map +1 -0
  337. package/dist/core/mode-lowering.part03.d.ts +12 -0
  338. package/dist/core/mode-lowering.part03.d.ts.map +1 -0
  339. package/dist/core/mode-lowering.part03.js +86 -0
  340. package/dist/core/mode-lowering.part03.js.map +1 -0
  341. package/dist/core/mode-lowering.part04.d.ts +5 -0
  342. package/dist/core/mode-lowering.part04.d.ts.map +1 -0
  343. package/dist/core/mode-lowering.part04.js +14 -0
  344. package/dist/core/mode-lowering.part04.js.map +1 -0
  345. package/dist/core/packed-bijou-cells-adapter.d.ts +3 -0
  346. package/dist/core/packed-bijou-cells-adapter.d.ts.map +1 -0
  347. package/dist/core/packed-bijou-cells-adapter.js +14 -0
  348. package/dist/core/packed-bijou-cells-adapter.js.map +1 -0
  349. package/dist/core/packed-bijou-cells-contract.d.ts +48 -0
  350. package/dist/core/packed-bijou-cells-contract.d.ts.map +1 -0
  351. package/dist/core/packed-bijou-cells-contract.js +38 -0
  352. package/dist/core/packed-bijou-cells-contract.js.map +1 -0
  353. package/dist/core/packed-bijou-cells-glyph-policy.d.ts +3 -0
  354. package/dist/core/packed-bijou-cells-glyph-policy.d.ts.map +1 -0
  355. package/dist/core/packed-bijou-cells-glyph-policy.js +45 -0
  356. package/dist/core/packed-bijou-cells-glyph-policy.js.map +1 -0
  357. package/dist/core/packed-bijou-cells-schema-record.d.ts +4 -0
  358. package/dist/core/packed-bijou-cells-schema-record.d.ts.map +1 -0
  359. package/dist/core/packed-bijou-cells-schema-record.js +84 -0
  360. package/dist/core/packed-bijou-cells-schema-record.js.map +1 -0
  361. package/dist/core/packed-bijou-cells-schema-values.d.ts +7 -0
  362. package/dist/core/packed-bijou-cells-schema-values.d.ts.map +1 -0
  363. package/dist/core/packed-bijou-cells-schema-values.js +66 -0
  364. package/dist/core/packed-bijou-cells-schema-values.js.map +1 -0
  365. package/dist/core/packed-bijou-cells-schema.d.ts +4 -0
  366. package/dist/core/packed-bijou-cells-schema.d.ts.map +1 -0
  367. package/dist/core/packed-bijou-cells-schema.js +3 -0
  368. package/dist/core/packed-bijou-cells-schema.js.map +1 -0
  369. package/dist/core/packed-bijou-cells-validate-bytes.d.ts +3 -0
  370. package/dist/core/packed-bijou-cells-validate-bytes.d.ts.map +1 -0
  371. package/dist/core/packed-bijou-cells-validate-bytes.js +22 -0
  372. package/dist/core/packed-bijou-cells-validate-bytes.js.map +1 -0
  373. package/dist/core/packed-bijou-cells-validate-cells.d.ts +4 -0
  374. package/dist/core/packed-bijou-cells-validate-cells.d.ts.map +1 -0
  375. package/dist/core/packed-bijou-cells-validate-cells.js +4 -0
  376. package/dist/core/packed-bijou-cells-validate-cells.js.map +1 -0
  377. package/dist/core/packed-bijou-cells-validate-colors.d.ts +2 -0
  378. package/dist/core/packed-bijou-cells-validate-colors.d.ts.map +1 -0
  379. package/dist/core/packed-bijou-cells-validate-colors.js +31 -0
  380. package/dist/core/packed-bijou-cells-validate-colors.js.map +1 -0
  381. package/dist/core/packed-bijou-cells-validate-focus.d.ts +4 -0
  382. package/dist/core/packed-bijou-cells-validate-focus.d.ts.map +1 -0
  383. package/dist/core/packed-bijou-cells-validate-focus.js +54 -0
  384. package/dist/core/packed-bijou-cells-validate-focus.js.map +1 -0
  385. package/dist/core/packed-bijou-cells-validate-glyphs.d.ts +3 -0
  386. package/dist/core/packed-bijou-cells-validate-glyphs.d.ts.map +1 -0
  387. package/dist/core/packed-bijou-cells-validate-glyphs.js +50 -0
  388. package/dist/core/packed-bijou-cells-validate-glyphs.js.map +1 -0
  389. package/dist/core/packed-bijou-cells-validate-metadata.d.ts +8 -0
  390. package/dist/core/packed-bijou-cells-validate-metadata.d.ts.map +1 -0
  391. package/dist/core/packed-bijou-cells-validate-metadata.js +12 -0
  392. package/dist/core/packed-bijou-cells-validate-metadata.js.map +1 -0
  393. package/dist/core/packed-bijou-cells-validate-scene.d.ts +3 -0
  394. package/dist/core/packed-bijou-cells-validate-scene.d.ts.map +1 -0
  395. package/dist/core/packed-bijou-cells-validate-scene.js +54 -0
  396. package/dist/core/packed-bijou-cells-validate-scene.js.map +1 -0
  397. package/dist/core/packed-bijou-cells-validate.d.ts +3 -0
  398. package/dist/core/packed-bijou-cells-validate.d.ts.map +1 -0
  399. package/dist/core/packed-bijou-cells-validate.js +58 -0
  400. package/dist/core/packed-bijou-cells-validate.js.map +1 -0
  401. package/dist/core/packed-bijou-cells.d.ts +4 -0
  402. package/dist/core/packed-bijou-cells.d.ts.map +1 -0
  403. package/dist/core/packed-bijou-cells.js +4 -0
  404. package/dist/core/packed-bijou-cells.js.map +1 -0
  405. package/dist/core/profunctor-page-actions.d.ts +7 -0
  406. package/dist/core/profunctor-page-actions.d.ts.map +1 -0
  407. package/dist/core/profunctor-page-actions.js +41 -0
  408. package/dist/core/profunctor-page-actions.js.map +1 -0
  409. package/dist/core/profunctor-page-block-contract.d.ts +4 -0
  410. package/dist/core/profunctor-page-block-contract.d.ts.map +1 -0
  411. package/dist/core/profunctor-page-block-contract.js +65 -0
  412. package/dist/core/profunctor-page-block-contract.js.map +1 -0
  413. package/dist/core/profunctor-page-capabilities.d.ts +3 -0
  414. package/dist/core/profunctor-page-capabilities.d.ts.map +1 -0
  415. package/dist/core/profunctor-page-capabilities.js +31 -0
  416. package/dist/core/profunctor-page-capabilities.js.map +1 -0
  417. package/dist/core/profunctor-page-contract.d.ts +13 -0
  418. package/dist/core/profunctor-page-contract.d.ts.map +1 -0
  419. package/dist/core/profunctor-page-contract.js +99 -0
  420. package/dist/core/profunctor-page-contract.js.map +1 -0
  421. package/dist/core/profunctor-page-error.d.ts +9 -0
  422. package/dist/core/profunctor-page-error.d.ts.map +1 -0
  423. package/dist/core/profunctor-page-error.js +16 -0
  424. package/dist/core/profunctor-page-error.js.map +1 -0
  425. package/dist/core/profunctor-page-json-record.d.ts +77 -0
  426. package/dist/core/profunctor-page-json-record.d.ts.map +1 -0
  427. package/dist/core/profunctor-page-json-record.js +2 -0
  428. package/dist/core/profunctor-page-json-record.js.map +1 -0
  429. package/dist/core/profunctor-page-json.d.ts +14 -0
  430. package/dist/core/profunctor-page-json.d.ts.map +1 -0
  431. package/dist/core/profunctor-page-json.js +72 -0
  432. package/dist/core/profunctor-page-json.js.map +1 -0
  433. package/dist/core/profunctor-page-lines.d.ts +10 -0
  434. package/dist/core/profunctor-page-lines.d.ts.map +1 -0
  435. package/dist/core/profunctor-page-lines.js +77 -0
  436. package/dist/core/profunctor-page-lines.js.map +1 -0
  437. package/dist/core/profunctor-page-map.d.ts +7 -0
  438. package/dist/core/profunctor-page-map.d.ts.map +1 -0
  439. package/dist/core/profunctor-page-map.js +61 -0
  440. package/dist/core/profunctor-page-map.js.map +1 -0
  441. package/dist/core/profunctor-page-model.d.ts +87 -0
  442. package/dist/core/profunctor-page-model.d.ts.map +1 -0
  443. package/dist/core/profunctor-page-model.js +2 -0
  444. package/dist/core/profunctor-page-model.js.map +1 -0
  445. package/dist/core/profunctor-page-output.d.ts +18 -0
  446. package/dist/core/profunctor-page-output.d.ts.map +1 -0
  447. package/dist/core/profunctor-page-output.js +45 -0
  448. package/dist/core/profunctor-page-output.js.map +1 -0
  449. package/dist/core/profunctor-page-parse-page-structure.d.ts +6 -0
  450. package/dist/core/profunctor-page-parse-page-structure.d.ts.map +1 -0
  451. package/dist/core/profunctor-page-parse-page-structure.js +87 -0
  452. package/dist/core/profunctor-page-parse-page-structure.js.map +1 -0
  453. package/dist/core/profunctor-page-parse-page.d.ts +3 -0
  454. package/dist/core/profunctor-page-parse-page.d.ts.map +1 -0
  455. package/dist/core/profunctor-page-parse-page.js +50 -0
  456. package/dist/core/profunctor-page-parse-page.js.map +1 -0
  457. package/dist/core/profunctor-page-parse-support.d.ts +4 -0
  458. package/dist/core/profunctor-page-parse-support.d.ts.map +1 -0
  459. package/dist/core/profunctor-page-parse-support.js +67 -0
  460. package/dist/core/profunctor-page-parse-support.js.map +1 -0
  461. package/dist/core/profunctor-page-parse.d.ts +3 -0
  462. package/dist/core/profunctor-page-parse.d.ts.map +1 -0
  463. package/dist/core/profunctor-page-parse.js +16 -0
  464. package/dist/core/profunctor-page-parse.js.map +1 -0
  465. package/dist/core/profunctor-page-provenance.d.ts +9 -0
  466. package/dist/core/profunctor-page-provenance.d.ts.map +1 -0
  467. package/dist/core/profunctor-page-provenance.js +30 -0
  468. package/dist/core/profunctor-page-provenance.js.map +1 -0
  469. package/dist/core/profunctor-page-scene-bounds.d.ts +3 -0
  470. package/dist/core/profunctor-page-scene-bounds.d.ts.map +1 -0
  471. package/dist/core/profunctor-page-scene-bounds.js +42 -0
  472. package/dist/core/profunctor-page-scene-bounds.js.map +1 -0
  473. package/dist/core/profunctor-page-scene-nodes.d.ts +6 -0
  474. package/dist/core/profunctor-page-scene-nodes.d.ts.map +1 -0
  475. package/dist/core/profunctor-page-scene-nodes.js +49 -0
  476. package/dist/core/profunctor-page-scene-nodes.js.map +1 -0
  477. package/dist/core/profunctor-page-scene.d.ts +28 -0
  478. package/dist/core/profunctor-page-scene.d.ts.map +1 -0
  479. package/dist/core/profunctor-page-scene.js +77 -0
  480. package/dist/core/profunctor-page-scene.js.map +1 -0
  481. package/dist/core/profunctor-page-source-shape.d.ts +3 -0
  482. package/dist/core/profunctor-page-source-shape.d.ts.map +1 -0
  483. package/dist/core/profunctor-page-source-shape.js +89 -0
  484. package/dist/core/profunctor-page-source-shape.js.map +1 -0
  485. package/dist/core/profunctor-page-source-span.d.ts +3 -0
  486. package/dist/core/profunctor-page-source-span.d.ts.map +1 -0
  487. package/dist/core/profunctor-page-source-span.js +22 -0
  488. package/dist/core/profunctor-page-source-span.js.map +1 -0
  489. package/dist/core/profunctor-page-source-target-state.d.ts +3 -0
  490. package/dist/core/profunctor-page-source-target-state.d.ts.map +1 -0
  491. package/dist/core/profunctor-page-source-target-state.js +24 -0
  492. package/dist/core/profunctor-page-source-target-state.js.map +1 -0
  493. package/dist/core/profunctor-page-target-types.d.ts +93 -0
  494. package/dist/core/profunctor-page-target-types.d.ts.map +1 -0
  495. package/dist/core/profunctor-page-target-types.js +2 -0
  496. package/dist/core/profunctor-page-target-types.js.map +1 -0
  497. package/dist/core/profunctor-page-target.d.ts +8 -0
  498. package/dist/core/profunctor-page-target.d.ts.map +1 -0
  499. package/dist/core/profunctor-page-target.js +87 -0
  500. package/dist/core/profunctor-page-target.js.map +1 -0
  501. package/dist/core/profunctor-page-validate-dependencies.d.ts +3 -0
  502. package/dist/core/profunctor-page-validate-dependencies.d.ts.map +1 -0
  503. package/dist/core/profunctor-page-validate-dependencies.js +25 -0
  504. package/dist/core/profunctor-page-validate-dependencies.js.map +1 -0
  505. package/dist/core/profunctor-page-validate-family.d.ts +3 -0
  506. package/dist/core/profunctor-page-validate-family.d.ts.map +1 -0
  507. package/dist/core/profunctor-page-validate-family.js +95 -0
  508. package/dist/core/profunctor-page-validate-family.js.map +1 -0
  509. package/dist/core/profunctor-page-validate-graph.d.ts +3 -0
  510. package/dist/core/profunctor-page-validate-graph.d.ts.map +1 -0
  511. package/dist/core/profunctor-page-validate-graph.js +98 -0
  512. package/dist/core/profunctor-page-validate-graph.js.map +1 -0
  513. package/dist/core/render/differ-ansi.d.ts +3 -0
  514. package/dist/core/render/differ-ansi.d.ts.map +1 -0
  515. package/dist/core/render/differ-ansi.js +100 -0
  516. package/dist/core/render/differ-ansi.js.map +1 -0
  517. package/dist/core/render/differ-cell.d.ts +10 -0
  518. package/dist/core/render/differ-cell.d.ts.map +1 -0
  519. package/dist/core/render/differ-cell.js +81 -0
  520. package/dist/core/render/differ-cell.js.map +1 -0
  521. package/dist/core/render/differ-cells.d.ts +4 -0
  522. package/dist/core/render/differ-cells.d.ts.map +1 -0
  523. package/dist/core/render/differ-cells.js +72 -0
  524. package/dist/core/render/differ-cells.js.map +1 -0
  525. package/dist/core/render/differ-packed-bytes.d.ts +7 -0
  526. package/dist/core/render/differ-packed-bytes.d.ts.map +1 -0
  527. package/dist/core/render/differ-packed-bytes.js +111 -0
  528. package/dist/core/render/differ-packed-bytes.js.map +1 -0
  529. package/dist/core/render/differ-packed.d.ts +4 -0
  530. package/dist/core/render/differ-packed.d.ts.map +1 -0
  531. package/dist/core/render/differ-packed.js +98 -0
  532. package/dist/core/render/differ-packed.js.map +1 -0
  533. package/dist/core/render/differ-paint.d.ts +3 -0
  534. package/dist/core/render/differ-paint.d.ts.map +1 -0
  535. package/dist/core/render/differ-paint.js +9 -0
  536. package/dist/core/render/differ-paint.js.map +1 -0
  537. package/dist/core/render/differ-string.d.ts +6 -0
  538. package/dist/core/render/differ-string.d.ts.map +1 -0
  539. package/dist/core/render/differ-string.js +63 -0
  540. package/dist/core/render/differ-string.js.map +1 -0
  541. package/dist/core/render/differ.d.ts +9 -55
  542. package/dist/core/render/differ.d.ts.map +1 -1
  543. package/dist/core/render/differ.js +11 -826
  544. package/dist/core/render/differ.js.map +1 -1
  545. package/dist/core/render/packed-cell.d.ts +1 -1
  546. package/dist/core/render/packed-cell.d.ts.map +1 -1
  547. package/dist/core/render/packed-cell.js +1 -1
  548. package/dist/core/render/packed-cell.js.map +1 -1
  549. package/dist/core/render/packed-cell.part01.d.ts +1 -0
  550. package/dist/core/render/packed-cell.part01.d.ts.map +1 -1
  551. package/dist/core/render/packed-cell.part01.js +1 -0
  552. package/dist/core/render/packed-cell.part01.js.map +1 -1
  553. package/dist/core/sha256-text.d.ts +2 -0
  554. package/dist/core/sha256-text.d.ts.map +1 -0
  555. package/dist/core/sha256-text.js +97 -0
  556. package/dist/core/sha256-text.js.map +1 -0
  557. package/dist/core/stable-json.d.ts +3 -0
  558. package/dist/core/stable-json.d.ts.map +1 -0
  559. package/dist/core/stable-json.js +41 -0
  560. package/dist/core/stable-json.js.map +1 -0
  561. package/dist/core/standard-blocks/metadata-standard.d.ts +4 -27
  562. package/dist/core/standard-blocks/metadata-standard.d.ts.map +1 -1
  563. package/dist/core/standard-blocks/metadata-standard.js +4 -421
  564. package/dist/core/standard-blocks/metadata-standard.js.map +1 -1
  565. package/dist/core/standard-blocks/metadata-standard.part01.d.ts +22 -0
  566. package/dist/core/standard-blocks/metadata-standard.part01.d.ts.map +1 -0
  567. package/dist/core/standard-blocks/metadata-standard.part01.js +110 -0
  568. package/dist/core/standard-blocks/metadata-standard.part01.js.map +1 -0
  569. package/dist/core/standard-blocks/metadata-standard.part02.d.ts +10 -0
  570. package/dist/core/standard-blocks/metadata-standard.part02.d.ts.map +1 -0
  571. package/dist/core/standard-blocks/metadata-standard.part02.js +123 -0
  572. package/dist/core/standard-blocks/metadata-standard.part02.js.map +1 -0
  573. package/dist/core/standard-blocks/metadata-standard.part03.d.ts +10 -0
  574. package/dist/core/standard-blocks/metadata-standard.part03.d.ts.map +1 -0
  575. package/dist/core/standard-blocks/metadata-standard.part03.js +123 -0
  576. package/dist/core/standard-blocks/metadata-standard.part03.js.map +1 -0
  577. package/dist/core/standard-blocks/metadata-standard.part04.d.ts +8 -0
  578. package/dist/core/standard-blocks/metadata-standard.part04.d.ts.map +1 -0
  579. package/dist/core/standard-blocks/metadata-standard.part04.js +76 -0
  580. package/dist/core/standard-blocks/metadata-standard.part04.js.map +1 -0
  581. package/dist/core/standard-blocks/render.d.ts +2 -15
  582. package/dist/core/standard-blocks/render.d.ts.map +1 -1
  583. package/dist/core/standard-blocks/render.js +2 -340
  584. package/dist/core/standard-blocks/render.js.map +1 -1
  585. package/dist/core/standard-blocks/render.part01.d.ts +24 -0
  586. package/dist/core/standard-blocks/render.part01.d.ts.map +1 -0
  587. package/dist/core/standard-blocks/render.part01.js +99 -0
  588. package/dist/core/standard-blocks/render.part01.js.map +1 -0
  589. package/dist/core/standard-blocks/render.part02.d.ts +10 -0
  590. package/dist/core/standard-blocks/render.part02.d.ts.map +1 -0
  591. package/dist/core/standard-blocks/render.part02.js +108 -0
  592. package/dist/core/standard-blocks/render.part02.js.map +1 -0
  593. package/dist/core/standard-blocks/render.part03.d.ts +15 -0
  594. package/dist/core/standard-blocks/render.part03.d.ts.map +1 -0
  595. package/dist/core/standard-blocks/render.part03.js +96 -0
  596. package/dist/core/standard-blocks/render.part03.js.map +1 -0
  597. package/dist/core/standard-blocks/render.part04.d.ts +14 -0
  598. package/dist/core/standard-blocks/render.part04.d.ts.map +1 -0
  599. package/dist/core/standard-blocks/render.part04.js +50 -0
  600. package/dist/core/standard-blocks/render.part04.js.map +1 -0
  601. package/dist/core/standard-blocks/schema-helpers.d.ts +1 -1
  602. package/dist/core/text/grapheme-plain.d.ts +25 -0
  603. package/dist/core/text/grapheme-plain.d.ts.map +1 -0
  604. package/dist/core/text/grapheme-plain.js +20 -0
  605. package/dist/core/text/grapheme-plain.js.map +1 -0
  606. package/dist/core/text/grapheme.d.ts +7 -137
  607. package/dist/core/text/grapheme.d.ts.map +1 -1
  608. package/dist/core/text/grapheme.js +5 -297
  609. package/dist/core/text/grapheme.js.map +1 -1
  610. package/dist/core/text/grapheme.part01.d.ts +35 -0
  611. package/dist/core/text/grapheme.part01.d.ts.map +1 -0
  612. package/dist/core/text/grapheme.part01.js +102 -0
  613. package/dist/core/text/grapheme.part01.js.map +1 -0
  614. package/dist/core/text/grapheme.part02.d.ts +59 -0
  615. package/dist/core/text/grapheme.part02.d.ts.map +1 -0
  616. package/dist/core/text/grapheme.part02.js +88 -0
  617. package/dist/core/text/grapheme.part02.js.map +1 -0
  618. package/dist/core/text/grapheme.part03.d.ts +19 -0
  619. package/dist/core/text/grapheme.part03.d.ts.map +1 -0
  620. package/dist/core/text/grapheme.part03.js +72 -0
  621. package/dist/core/text/grapheme.part03.js.map +1 -0
  622. package/dist/core/text/grapheme.part04.d.ts +15 -0
  623. package/dist/core/text/grapheme.part04.d.ts.map +1 -0
  624. package/dist/core/text/grapheme.part04.js +28 -0
  625. package/dist/core/text/grapheme.part04.js.map +1 -0
  626. package/dist/core/text/wrap-tokens.d.ts +29 -0
  627. package/dist/core/text/wrap-tokens.d.ts.map +1 -0
  628. package/dist/core/text/wrap-tokens.js +96 -0
  629. package/dist/core/text/wrap-tokens.js.map +1 -0
  630. package/dist/core/text/wrap.d.ts +3 -17
  631. package/dist/core/text/wrap.d.ts.map +1 -1
  632. package/dist/core/text/wrap.js +4 -99
  633. package/dist/core/text/wrap.js.map +1 -1
  634. package/dist/core/theme/accessors.d.ts +1 -1
  635. package/dist/core/theme/accessors.d.ts.map +1 -1
  636. package/dist/core/theme/accessors.js +7 -1
  637. package/dist/core/theme/accessors.js.map +1 -1
  638. package/dist/core/theme/builder.d.ts +3 -90
  639. package/dist/core/theme/builder.d.ts.map +1 -1
  640. package/dist/core/theme/builder.js +2 -235
  641. package/dist/core/theme/builder.js.map +1 -1
  642. package/dist/core/theme/builder.part01.d.ts +92 -0
  643. package/dist/core/theme/builder.part01.d.ts.map +1 -0
  644. package/dist/core/theme/builder.part01.js +25 -0
  645. package/dist/core/theme/builder.part01.js.map +1 -0
  646. package/dist/core/theme/builder.part02.d.ts +16 -0
  647. package/dist/core/theme/builder.part02.d.ts.map +1 -0
  648. package/dist/core/theme/builder.part02.js +100 -0
  649. package/dist/core/theme/builder.part02.js.map +1 -0
  650. package/dist/core/theme/builder.part03.d.ts +5 -0
  651. package/dist/core/theme/builder.part03.d.ts.map +1 -0
  652. package/dist/core/theme/builder.part03.js +74 -0
  653. package/dist/core/theme/builder.part03.js.map +1 -0
  654. package/dist/core/theme/builder.part04.d.ts +3 -0
  655. package/dist/core/theme/builder.part04.d.ts.map +1 -0
  656. package/dist/core/theme/builder.part04.js +49 -0
  657. package/dist/core/theme/builder.part04.js.map +1 -0
  658. package/dist/core/theme/doctor.d.ts +4 -51
  659. package/dist/core/theme/doctor.d.ts.map +1 -1
  660. package/dist/core/theme/doctor.js +3 -223
  661. package/dist/core/theme/doctor.js.map +1 -1
  662. package/dist/core/theme/doctor.part01.d.ts +77 -0
  663. package/dist/core/theme/doctor.part01.d.ts.map +1 -0
  664. package/dist/core/theme/doctor.part01.js +20 -0
  665. package/dist/core/theme/doctor.part01.js.map +1 -0
  666. package/dist/core/theme/doctor.part02.d.ts +13 -0
  667. package/dist/core/theme/doctor.part02.d.ts.map +1 -0
  668. package/dist/core/theme/doctor.part02.js +100 -0
  669. package/dist/core/theme/doctor.part02.js.map +1 -0
  670. package/dist/core/theme/doctor.part03.d.ts +6 -0
  671. package/dist/core/theme/doctor.part03.d.ts.map +1 -0
  672. package/dist/core/theme/doctor.part03.js +68 -0
  673. package/dist/core/theme/doctor.part03.js.map +1 -0
  674. package/dist/core/theme/doctor.part04.d.ts +4 -0
  675. package/dist/core/theme/doctor.part04.d.ts.map +1 -0
  676. package/dist/core/theme/doctor.part04.js +48 -0
  677. package/dist/core/theme/doctor.part04.js.map +1 -0
  678. package/dist/core/theme/dtcg.d.ts +3 -47
  679. package/dist/core/theme/dtcg.d.ts.map +1 -1
  680. package/dist/core/theme/dtcg.js +2 -261
  681. package/dist/core/theme/dtcg.js.map +1 -1
  682. package/dist/core/theme/dtcg.part01.d.ts +25 -0
  683. package/dist/core/theme/dtcg.part01.d.ts.map +1 -0
  684. package/dist/core/theme/dtcg.part01.js +89 -0
  685. package/dist/core/theme/dtcg.part01.js.map +1 -0
  686. package/dist/core/theme/dtcg.part02.d.ts +15 -0
  687. package/dist/core/theme/dtcg.part02.d.ts.map +1 -0
  688. package/dist/core/theme/dtcg.part02.js +105 -0
  689. package/dist/core/theme/dtcg.part02.js.map +1 -0
  690. package/dist/core/theme/dtcg.part03.d.ts +33 -0
  691. package/dist/core/theme/dtcg.part03.d.ts.map +1 -0
  692. package/dist/core/theme/dtcg.part03.js +85 -0
  693. package/dist/core/theme/dtcg.part03.js.map +1 -0
  694. package/dist/core/theme/extend.d.ts +10 -1
  695. package/dist/core/theme/extend.d.ts.map +1 -1
  696. package/dist/core/theme/extend.js +10 -1
  697. package/dist/core/theme/extend.js.map +1 -1
  698. package/dist/core/theme/presets.d.ts +5 -38
  699. package/dist/core/theme/presets.d.ts.map +1 -1
  700. package/dist/core/theme/presets.js +5 -291
  701. package/dist/core/theme/presets.js.map +1 -1
  702. package/dist/core/theme/presets.part01.d.ts +27 -0
  703. package/dist/core/theme/presets.part01.d.ts.map +1 -0
  704. package/dist/core/theme/presets.part01.js +105 -0
  705. package/dist/core/theme/presets.part01.js.map +1 -0
  706. package/dist/core/theme/presets.part02.d.ts +9 -0
  707. package/dist/core/theme/presets.part02.d.ts.map +1 -0
  708. package/dist/core/theme/presets.part02.js +66 -0
  709. package/dist/core/theme/presets.part02.js.map +1 -0
  710. package/dist/core/theme/presets.part03.d.ts +4 -0
  711. package/dist/core/theme/presets.part03.d.ts.map +1 -0
  712. package/dist/core/theme/presets.part03.js +125 -0
  713. package/dist/core/theme/presets.part03.js.map +1 -0
  714. package/dist/core/theme/resolve-rgb.d.ts +4 -0
  715. package/dist/core/theme/resolve-rgb.d.ts.map +1 -0
  716. package/dist/core/theme/resolve-rgb.js +21 -0
  717. package/dist/core/theme/resolve-rgb.js.map +1 -0
  718. package/dist/core/theme/resolve-types.d.ts +64 -0
  719. package/dist/core/theme/resolve-types.d.ts.map +1 -0
  720. package/dist/core/theme/resolve-types.js +2 -0
  721. package/dist/core/theme/resolve-types.js.map +1 -0
  722. package/dist/core/theme/resolve.d.ts +3 -61
  723. package/dist/core/theme/resolve.d.ts.map +1 -1
  724. package/dist/core/theme/resolve.js +8 -22
  725. package/dist/core/theme/resolve.js.map +1 -1
  726. package/dist/core/ui-scene-canonical.d.ts +6 -0
  727. package/dist/core/ui-scene-canonical.d.ts.map +1 -0
  728. package/dist/core/ui-scene-canonical.js +37 -0
  729. package/dist/core/ui-scene-canonical.js.map +1 -0
  730. package/dist/core/ui-scene-contract.d.ts +100 -0
  731. package/dist/core/ui-scene-contract.d.ts.map +1 -0
  732. package/dist/core/ui-scene-contract.js +3 -0
  733. package/dist/core/ui-scene-contract.js.map +1 -0
  734. package/dist/core/ui-scene-ir.d.ts +11 -194
  735. package/dist/core/ui-scene-ir.d.ts.map +1 -1
  736. package/dist/core/ui-scene-ir.js +6 -569
  737. package/dist/core/ui-scene-ir.js.map +1 -1
  738. package/dist/core/ui-scene-lowering-utils.d.ts +21 -0
  739. package/dist/core/ui-scene-lowering-utils.d.ts.map +1 -0
  740. package/dist/core/ui-scene-lowering-utils.js +99 -0
  741. package/dist/core/ui-scene-lowering-utils.js.map +1 -0
  742. package/dist/core/ui-scene-lowering.d.ts +31 -0
  743. package/dist/core/ui-scene-lowering.d.ts.map +1 -0
  744. package/dist/core/ui-scene-lowering.js +49 -0
  745. package/dist/core/ui-scene-lowering.js.map +1 -0
  746. package/dist/core/ui-scene-receipt.d.ts +29 -0
  747. package/dist/core/ui-scene-receipt.d.ts.map +1 -0
  748. package/dist/core/ui-scene-receipt.js +37 -0
  749. package/dist/core/ui-scene-receipt.js.map +1 -0
  750. package/dist/core/ui-scene-target-profile.d.ts +35 -0
  751. package/dist/core/ui-scene-target-profile.d.ts.map +1 -0
  752. package/dist/core/ui-scene-target-profile.js +38 -0
  753. package/dist/core/ui-scene-target-profile.js.map +1 -0
  754. package/dist/core/ui-scene-terminal-proof.d.ts +10 -0
  755. package/dist/core/ui-scene-terminal-proof.d.ts.map +1 -0
  756. package/dist/core/ui-scene-terminal-proof.js +26 -0
  757. package/dist/core/ui-scene-terminal-proof.js.map +1 -0
  758. package/dist/core/ui-scene-validation.d.ts +3 -0
  759. package/dist/core/ui-scene-validation.d.ts.map +1 -0
  760. package/dist/core/ui-scene-validation.js +88 -0
  761. package/dist/core/ui-scene-validation.js.map +1 -0
  762. package/dist/core/visor-artifact-bundle.d.ts +4 -0
  763. package/dist/core/visor-artifact-bundle.d.ts.map +1 -0
  764. package/dist/core/visor-artifact-bundle.js +3 -0
  765. package/dist/core/visor-artifact-bundle.js.map +1 -0
  766. package/dist/core/visor-artifact-bundle.part01.d.ts +115 -0
  767. package/dist/core/visor-artifact-bundle.part01.d.ts.map +1 -0
  768. package/dist/core/visor-artifact-bundle.part01.js +4 -0
  769. package/dist/core/visor-artifact-bundle.part01.js.map +1 -0
  770. package/dist/core/visor-artifact-bundle.part02.d.ts +4 -0
  771. package/dist/core/visor-artifact-bundle.part02.d.ts.map +1 -0
  772. package/dist/core/visor-artifact-bundle.part02.js +89 -0
  773. package/dist/core/visor-artifact-bundle.part02.js.map +1 -0
  774. package/dist/core/visor-artifact-bundle.part03.d.ts +16 -0
  775. package/dist/core/visor-artifact-bundle.part03.d.ts.map +1 -0
  776. package/dist/core/visor-artifact-bundle.part03.js +76 -0
  777. package/dist/core/visor-artifact-bundle.part03.js.map +1 -0
  778. package/dist/core/visor-artifact-bundle.part04.d.ts +18 -0
  779. package/dist/core/visor-artifact-bundle.part04.d.ts.map +1 -0
  780. package/dist/core/visor-artifact-bundle.part04.js +90 -0
  781. package/dist/core/visor-artifact-bundle.part04.js.map +1 -0
  782. package/dist/index.d.ts +1 -0
  783. package/dist/index.d.ts.map +1 -1
  784. package/dist/index.js +1 -0
  785. package/dist/index.js.map +1 -1
  786. package/dist/index.part02.d.ts +2 -0
  787. package/dist/index.part02.d.ts.map +1 -1
  788. package/dist/index.part02.js +2 -0
  789. package/dist/index.part02.js.map +1 -1
  790. package/dist/index.part11.d.ts +2 -0
  791. package/dist/index.part11.d.ts.map +1 -0
  792. package/dist/index.part11.js +2 -0
  793. package/dist/index.part11.js.map +1 -0
  794. package/dist/ports/surface-cell.d.ts +36 -0
  795. package/dist/ports/surface-cell.d.ts.map +1 -0
  796. package/dist/ports/surface-cell.js +42 -0
  797. package/dist/ports/surface-cell.js.map +1 -0
  798. package/dist/ports/surface-contract.d.ts +53 -0
  799. package/dist/ports/surface-contract.d.ts.map +1 -0
  800. package/dist/ports/surface-contract.js +5 -0
  801. package/dist/ports/surface-contract.js.map +1 -0
  802. package/dist/ports/surface-create.d.ts +4 -0
  803. package/dist/ports/surface-create.d.ts.map +1 -0
  804. package/dist/ports/surface-create.js +48 -0
  805. package/dist/ports/surface-create.js.map +1 -0
  806. package/dist/ports/surface-layout.d.ts +29 -0
  807. package/dist/ports/surface-layout.d.ts.map +1 -0
  808. package/dist/ports/surface-layout.js +2 -0
  809. package/dist/ports/surface-layout.js.map +1 -0
  810. package/dist/ports/surface-packed-codec.d.ts +6 -0
  811. package/dist/ports/surface-packed-codec.d.ts.map +1 -0
  812. package/dist/ports/surface-packed-codec.js +86 -0
  813. package/dist/ports/surface-packed-codec.js.map +1 -0
  814. package/dist/ports/surface-packed-color.d.ts +7 -0
  815. package/dist/ports/surface-packed-color.d.ts.map +1 -0
  816. package/dist/ports/surface-packed-color.js +53 -0
  817. package/dist/ports/surface-packed-color.js.map +1 -0
  818. package/dist/ports/surface-packed-compose.d.ts +7 -0
  819. package/dist/ports/surface-packed-compose.d.ts.map +1 -0
  820. package/dist/ports/surface-packed-compose.js +66 -0
  821. package/dist/ports/surface-packed-compose.js.map +1 -0
  822. package/dist/ports/surface-packed-read.d.ts +9 -0
  823. package/dist/ports/surface-packed-read.d.ts.map +1 -0
  824. package/dist/ports/surface-packed-read.js +77 -0
  825. package/dist/ports/surface-packed-read.js.map +1 -0
  826. package/dist/ports/surface-packed-state.d.ts +19 -0
  827. package/dist/ports/surface-packed-state.d.ts.map +1 -0
  828. package/dist/ports/surface-packed-state.js +60 -0
  829. package/dist/ports/surface-packed-state.js.map +1 -0
  830. package/dist/ports/surface-packed-write.d.ts +7 -0
  831. package/dist/ports/surface-packed-write.d.ts.map +1 -0
  832. package/dist/ports/surface-packed-write.js +73 -0
  833. package/dist/ports/surface-packed-write.js.map +1 -0
  834. package/dist/ports/surface-transform.d.ts +19 -0
  835. package/dist/ports/surface-transform.d.ts.map +1 -0
  836. package/dist/ports/surface-transform.js +19 -0
  837. package/dist/ports/surface-transform.js.map +1 -0
  838. package/dist/ports/surface.d.ts +7 -234
  839. package/dist/ports/surface.d.ts.map +1 -1
  840. package/dist/ports/surface.js +4 -514
  841. package/dist/ports/surface.js.map +1 -1
  842. package/package.json +1 -1
@@ -1,836 +1,21 @@
1
- import { createSurface, isPackedSurface } from '../../ports/surface.js';
2
- import { colorRgb } from '../theme/color.js';
3
- import { ANSI_OSC8_RE, graphemeClusterWidth, sanitizeTerminalText, segmentGraphemes } from '../text/index.js';
4
- import { CELL_STRIDE, OFF_FG_R, OFF_BG_R, OFF_BG_G, OFF_BG_B, FLAG_BOLD, FLAG_DIM, FLAG_STRIKETHROUGH, FLAG_INVERSE, FLAG_FG_SET, FLAG_BG_SET, FLAG_EMPTY, FLAG_DASHED, SIDE_TABLE_THRESHOLD, decodeChar, } from './packed-cell.js';
5
- import { byteAt, cellAtOrEmpty, cellToken, EMPTY_CELL, sgrByteHex, wordAt } from './safe-read.js';
6
- const EMPTY_MODIFIERS = [];
7
- const ANSI_ESCAPE = String.fromCharCode(0x1b);
8
- function hasVisibleStyle(cell) {
9
- return cell.fg !== undefined
10
- || cell.bg !== undefined
11
- || (cell.modifiers?.length ?? 0) > 0;
12
- }
13
- /**
14
- * Convert a multi-line string into a Surface.
15
- *
16
- * This is a plain-text bridge. It strips ANSI and treats all characters
17
- * as the default style.
18
- */
19
- export function stringToSurface(text, width, height) {
20
- const surface = createSurface(width, height);
21
- const plainText = sanitizeTerminalText(text);
22
- const lines = plainText.split('\n');
23
- for (let y = 0; y < Math.min(height, lines.length); y++) {
24
- const line = lines[y] ?? '';
25
- const gs = segmentGraphemes(line);
26
- let x = 0;
27
- for (const char of gs) {
28
- if (x >= width)
29
- break;
30
- x += writeSurfaceGrapheme(surface, x, y, char);
31
- }
32
- }
33
- return surface;
34
- }
35
- /**
36
- * Robust ANSI-aware string to Surface conversion.
37
- */
38
- export function parseAnsiToSurface(text, width, height) {
39
- const surface = createSurface(width, height);
40
- const safeText = sanitizeTerminalText(text, {
41
- allowAnsiStyling: true,
42
- allowHyperlinks: true,
43
- });
44
- const lines = safeText.replace(ANSI_OSC8_RE, '').split('\n');
45
- const ANSI_RE = new RegExp(ANSI_ESCAPE + '\\[([0-9;]*)m', 'g');
46
- for (let y = 0; y < Math.min(height, lines.length); y++) {
47
- const line = lines[y] ?? '';
48
- let x = 0;
49
- let currentFg;
50
- let currentBg;
51
- const currentMods = new Set();
52
- const matches = Array.from(line.matchAll(ANSI_RE));
53
- let lastIndex = 0;
54
- for (const match of matches) {
55
- const matchIndex = match.index;
56
- const part = line.slice(lastIndex, matchIndex);
57
- const gs = segmentGraphemes(part);
58
- for (const char of gs) {
59
- if (x >= width)
60
- break;
61
- x += writeSurfaceGrapheme(surface, x, y, char, {
62
- fg: currentFg,
63
- bg: currentBg,
64
- modifiers: Array.from(currentMods),
65
- });
66
- }
67
- const codeStr = match[1] ?? '';
68
- if (codeStr === '0' || codeStr === '') {
69
- currentFg = undefined;
70
- currentBg = undefined;
71
- currentMods.clear();
72
- }
73
- else {
74
- const parts = codeStr.split(';');
75
- let i = 0;
76
- while (i < parts.length) {
77
- const code = parts[i] ?? '';
78
- if (code === '0') {
79
- currentFg = undefined;
80
- currentBg = undefined;
81
- currentMods.clear();
82
- }
83
- else if (code === '1')
84
- currentMods.add('bold');
85
- else if (code === '2')
86
- currentMods.add('dim');
87
- else if (code === '3')
88
- currentMods.add('italic');
89
- else if (code === '4')
90
- currentMods.add('underline');
91
- else if (code === '7')
92
- currentMods.add('inverse');
93
- else if (code === '9')
94
- currentMods.add('strike');
95
- else if (code === '22') {
96
- currentMods.delete('bold');
97
- currentMods.delete('dim');
98
- }
99
- else if (code === '23')
100
- currentMods.delete('italic');
101
- else if (code === '24')
102
- currentMods.delete('underline');
103
- else if (code === '27')
104
- currentMods.delete('inverse');
105
- else if (code === '29')
106
- currentMods.delete('strike');
107
- else if (code === '39')
108
- currentFg = undefined;
109
- else if (code === '49')
110
- currentBg = undefined;
111
- else if (code === '38' && parts[i + 1] === '2') {
112
- // Truecolor FG: 38;2;R;G;B
113
- const r = sgrByteHex(parts, i + 2);
114
- const g = sgrByteHex(parts, i + 3);
115
- const b = sgrByteHex(parts, i + 4);
116
- currentFg = '#' + r + g + b;
117
- i += 4;
118
- }
119
- else if (code === '48' && parts[i + 1] === '2') {
120
- // Truecolor BG: 48;2;R;G;B
121
- const r = sgrByteHex(parts, i + 2);
122
- const g = sgrByteHex(parts, i + 3);
123
- const b = sgrByteHex(parts, i + 4);
124
- currentBg = '#' + r + g + b;
125
- i += 4;
126
- }
127
- i++;
128
- }
129
- }
130
- lastIndex = matchIndex + match[0].length;
131
- }
132
- const remaining = line.slice(lastIndex);
133
- const gs = segmentGraphemes(remaining);
134
- for (const char of gs) {
135
- if (x >= width)
136
- break;
137
- x += writeSurfaceGrapheme(surface, x, y, char, {
138
- fg: currentFg,
139
- bg: currentBg,
140
- modifiers: Array.from(currentMods),
141
- });
142
- }
143
- }
144
- return surface;
145
- }
146
- function writeSurfaceGrapheme(surface, x, y, char, style) {
147
- if (x >= surface.width)
148
- return 0;
149
- const width = Math.max(1, graphemeClusterWidth(char));
150
- if (isPackedSurface(surface) && (style?.fg || style?.bg)) {
151
- const fg = colorRgb(style.fg);
152
- let fR = -1, fG = 0, fB = 0;
153
- if (fg) {
154
- fR = fg[0];
155
- fG = fg[1];
156
- fB = fg[2];
157
- }
158
- const bg = colorRgb(style.bg);
159
- let bR = -1, bG = 0, bB = 0;
160
- if (bg) {
161
- bR = bg[0];
162
- bG = bg[1];
163
- bB = bg[2];
164
- }
165
- surface.setRGB(x, y, char, fR, fG, fB, bR, bG, bB);
166
- for (let offset = 1; offset < width && x + offset < surface.width; offset++) {
167
- surface.setRGB(x + offset, y, '', fR, fG, fB, bR, bG, bB);
168
- }
169
- }
170
- else {
171
- surface.set(x, y, { char, ...style, empty: false });
172
- for (let offset = 1; offset < width && x + offset < surface.width; offset++) {
173
- surface.set(x + offset, y, { char: '', ...style, empty: false });
174
- }
175
- }
176
- return width;
177
- }
178
- /**
179
- * Convert a Surface into a multi-line string with ANSI escape codes.
180
- *
181
- * This is an explicit bridge for string-first APIs and terminal writes.
182
- *
183
- * @param surface - The surface to convert.
184
- * @param style - The style port to use for color resolution.
185
- * @returns A string representation of the surface.
186
- */
187
- export function surfaceToString(surface, style) {
188
- const lines = [];
189
- for (let y = 0; y < surface.height; y++) {
190
- let line = '';
191
- for (let x = 0; x < surface.width; x++) {
192
- const cell = surface.get(x, y);
193
- line += hasVisibleStyle(cell)
194
- ? style.styled(cellToken(cell), cell.char)
195
- : cell.char;
196
- }
197
- lines.push(line);
198
- }
199
- return lines.join('\n');
200
- }
201
- /**
202
- * Paint a LayoutNode tree onto a Surface.
203
- *
204
- * @param target - The surface to paint onto.
205
- * @param node - The root layout node to paint.
206
- */
207
- export function paintLayoutNode(target, node) {
208
- if (node.surface) {
209
- target.blit(node.surface, node.rect.x, node.rect.y);
210
- }
211
- for (const child of node.children) {
212
- paintLayoutNode(target, child);
213
- }
214
- }
215
- /**
216
- * Compare two cells for equality (content and style).
217
- */
218
- export function isSameCell(a, b) {
219
- if (a === b)
220
- return true;
221
- if (a.char !== b.char)
222
- return false;
223
- if (a.fg !== b.fg)
224
- return false;
225
- if (a.bg !== b.bg)
226
- return false;
227
- if (a.empty !== b.empty)
228
- return false;
229
- const aMods = a.modifiers ?? [];
230
- const bMods = b.modifiers ?? [];
231
- if (aMods === bMods)
232
- return true;
233
- if (aMods.length !== bMods.length)
234
- return false;
235
- // Order-insensitive comparison: every modifier in a must exist in b.
236
- // For short arrays (typically 0-3 modifiers) this is faster than sorting.
237
- for (const modifier of aMods) {
238
- if (!bMods.includes(modifier))
239
- return false;
240
- }
241
- return true;
242
- }
243
- /**
244
- * Move the terminal cursor to (x, y) using CUP (Cursor Position) escape code.
245
- * Coordinates are 0-based in Bijou, but 1-based in ANSI.
246
- */
247
- function moveCursor(x, y) {
248
- return `\x1b[${String(y + 1)};${String(x + 1)}H`;
249
- }
1
+ import { isPackedSurface, } from '../../ports/surface.js';
2
+ import { renderDiffCells } from './differ-cells.js';
3
+ import { renderDiffPacked } from './differ-packed.js';
4
+ export { parseAnsiToSurface } from './differ-ansi.js';
5
+ export { isSameCell } from './differ-cell.js';
6
+ export { paintLayoutNode } from './differ-paint.js';
7
+ export { stringToSurface, surfaceToString, } from './differ-string.js';
250
8
  /**
251
- * Diff two surfaces and write the minimal set of changes to the WritePort.
9
+ * Diff two surfaces and write the minimal set of changes to the output port.
252
10
  *
253
- * Optimizations:
254
- * 1. Skips identical cells.
255
- * 2. Minimizes CUP (move cursor) commands by detecting contiguous changes.
256
- * 3. Batches cells with identical styles to minimize SGR codes and keep strings contiguous.
257
- *
258
- * When both surfaces are {@link PackedSurface}, the caller owns a pooled
259
- * `outBuf`, and the IO port implements {@link WritePort.writeBytes}, the
260
- * composed frame is UTF-8 encoded into the supplied buffer once and
261
- * handed off via `writeBytes` instead of `write(string)`. This lets the
262
- * TUI runtime own the output allocation and bypass the implicit
263
- * string→UTF-8 conversion inside the underlying stream.
264
- *
265
- * Callers without an `outBuf` (tests, bench scenarios, simple drivers)
266
- * fall through to the legacy `io.write(string)` path with no overhead.
267
- *
268
- * @param current - The surface currently on the terminal.
269
- * @param target - The desired surface state.
270
- * @param io - The port to write ANSI codes to.
271
- * @param style - The port to resolve cell styling.
272
- * @param outBuf - Optional pooled byte buffer for the packed byte path.
11
+ * Packed surfaces use pooled direct UTF-8 emission when available. Other
12
+ * surfaces retain the string-based compatibility path.
273
13
  */
274
14
  export function renderDiff(current, target, io, style, outBuf) {
275
- // Use packed byte path when both surfaces have buffers
276
15
  if (isPackedSurface(target) && isPackedSurface(current)) {
277
- renderDiffPacked(current, target, io, style, outBuf);
16
+ renderDiffPacked(current, target, io, outBuf);
278
17
  return;
279
18
  }
280
19
  renderDiffCells(current, target, io, style);
281
20
  }
282
- // ── Packed byte-comparison differ ───────────────────────
283
- /**
284
- * Empty cell encoded as packed bytes for out-of-bounds boundary comparison.
285
- * Must match what createSurface produces for `{ char: ' ', empty: true }`.
286
- * Static shared buffer — do not mutate.
287
- */
288
- const EMPTY_PACKED = new Uint8Array(CELL_STRIDE);
289
- EMPTY_PACKED[0] = 0x20; // char: space (0x0020 LE)
290
- EMPTY_PACKED[8] = FLAG_EMPTY; // flags: empty bit set
291
- EMPTY_PACKED[9] = 63; // alpha: opacity=63 (1.0), fg/bg not present
292
- function packedBytesEqual(a, aOff, b, bOff) {
293
- for (let i = 0; i < CELL_STRIDE; i++) {
294
- if (a[aOff + i] !== b[bOff + i])
295
- return false;
296
- }
297
- return true;
298
- }
299
- function packedStyleBytesEqual(a, aOff, b, bOff) {
300
- // Compare from OFF_FG_R through end (fg, bg, flags, alpha) — skip char
301
- for (let i = OFF_FG_R; i < CELL_STRIDE; i++) {
302
- if (a[aOff + i] !== b[bOff + i])
303
- return false;
304
- }
305
- return true;
306
- }
307
- function packedHasVisibleStyle(buf, off) {
308
- const alpha = byteAt(buf, off + 9);
309
- return (alpha & (FLAG_FG_SET | FLAG_BG_SET)) !== 0
310
- || (byteAt(buf, off + 8) & ~FLAG_EMPTY) !== 0;
311
- }
312
- // --- Direct ANSI byte emission ─────────────────────────
313
- //
314
- // II-4: the differ no longer builds SGR/cursor/batch strings and
315
- // concatenates them. It writes raw UTF-8 bytes directly into the
316
- // pooled output buffer using the helpers below. The legacy
317
- // `sgrCache` / `buildSgr` / `styleCacheKey` machinery is gone — the
318
- // direct byte writers are fast enough that caching hash-indexed
319
- // strings is pure overhead.
320
- // Reusable UTF-8 encoder/decoder for the byte-output path. encodeInto
321
- // writes UTF-8 directly into a target view without an intermediate
322
- // Uint8Array; the decoder is only used on the fallback path where the
323
- // IO port lacks writeBytes (tests, mock sinks).
324
- const textEncoder = new TextEncoder();
325
- const textDecoder = new TextDecoder('utf-8');
326
- // Lazy module-level scratch buffer used when the caller does not pass
327
- // an outBuf (tests, bench scenarios, simple drivers). Grown once to
328
- // match the largest surface seen and reused thereafter.
329
- let scratchOutBuf = null;
330
- /** Upper bound on bytes the differ may emit per surface cell. */
331
- const SCRATCH_BYTES_PER_CELL = 96;
332
- /** Fixed slack on top of the scratch cell budget. */
333
- const SCRATCH_SLACK = 8192;
334
- // ANSI byte constants are emitted as inline `buf[off++] = …` writes in
335
- // writeCursorBytes / writeSgrFromBufBytes. TypedArray.set has per-call
336
- // setup cost that dominates for 4-byte sequences, so inline writes beat
337
- // pre-allocated Uint8Array constants in the hot path.
338
- /**
339
- * Write an unsigned integer (0–9999) as ASCII digits. Returns new offset.
340
- * Covers cursor coordinates (1-based, up to 9999 for ultra-wide
341
- * terminals) and RGB components (0–255).
342
- */
343
- function writeDecimal(buf, off, n) {
344
- if (n >= 1000) {
345
- const th = (n / 1000) | 0;
346
- const rem3 = n - th * 1000;
347
- const h = (rem3 / 100) | 0;
348
- const rem2 = rem3 - h * 100;
349
- const t = (rem2 / 10) | 0;
350
- buf[off] = 0x30 + th;
351
- buf[off + 1] = 0x30 + h;
352
- buf[off + 2] = 0x30 + t;
353
- buf[off + 3] = 0x30 + (rem2 - t * 10);
354
- return off + 4;
355
- }
356
- if (n >= 100) {
357
- const h = (n / 100) | 0;
358
- const rem = n - h * 100;
359
- const t = (rem / 10) | 0;
360
- buf[off] = 0x30 + h;
361
- buf[off + 1] = 0x30 + t;
362
- buf[off + 2] = 0x30 + (rem - t * 10);
363
- return off + 3;
364
- }
365
- if (n >= 10) {
366
- const t = (n / 10) | 0;
367
- buf[off] = 0x30 + t;
368
- buf[off + 1] = 0x30 + (n - t * 10);
369
- return off + 2;
370
- }
371
- buf[off] = 0x30 + n;
372
- return off + 1;
373
- }
374
- /** Write `\x1b[Y;XH` (CUP) with 1-based coordinates. */
375
- function writeCursorBytes(buf, off, x, y) {
376
- buf[off] = 0x1b; // ESC
377
- buf[off + 1] = 0x5b; // [
378
- off += 2;
379
- off = writeDecimal(buf, off, y + 1);
380
- buf[off++] = 0x3b; // ;
381
- off = writeDecimal(buf, off, x + 1);
382
- buf[off++] = 0x48; // H
383
- return off;
384
- }
385
- /**
386
- * Emit the full SGR prelude for the style bytes at `srcOff` into `buf`.
387
- * Functionally equivalent to the legacy `buildSgr()` emission: reset,
388
- * optional truecolor FG, optional truecolor BG, modifier flags (bold,
389
- * dim, strike, inverse in that order), optional underline.
390
- *
391
- * Short (≤6 byte) byte sequences are inlined via direct index writes
392
- * rather than `buf.set(CONST, off)` — the call overhead on a tiny
393
- * TypedArray.set outweighs the memcpy for 4-byte bursts in V8.
394
- */
395
- function writeSgrFromBufBytes(buf, off, srcBuf, srcOff) {
396
- // Leading reset: \x1b[0m — 4 inline byte writes.
397
- buf[off] = 0x1b;
398
- buf[off + 1] = 0x5b;
399
- buf[off + 2] = 0x30;
400
- buf[off + 3] = 0x6d;
401
- off += 4;
402
- const flags = byteAt(srcBuf, srcOff + 8);
403
- const alpha = byteAt(srcBuf, srcOff + 9);
404
- if (alpha & FLAG_FG_SET) {
405
- // \x1b[38;2;R;G;Bm — 7-byte prefix inlined as individual writes.
406
- buf[off] = 0x1b;
407
- buf[off + 1] = 0x5b;
408
- buf[off + 2] = 0x33;
409
- buf[off + 3] = 0x38;
410
- buf[off + 4] = 0x3b;
411
- buf[off + 5] = 0x32;
412
- buf[off + 6] = 0x3b;
413
- off += 7;
414
- off = writeDecimal(buf, off, byteAt(srcBuf, srcOff + OFF_FG_R));
415
- buf[off++] = 0x3b;
416
- off = writeDecimal(buf, off, byteAt(srcBuf, srcOff + OFF_FG_R + 1));
417
- buf[off++] = 0x3b;
418
- off = writeDecimal(buf, off, byteAt(srcBuf, srcOff + OFF_FG_R + 2));
419
- buf[off++] = 0x6d;
420
- }
421
- if (alpha & FLAG_BG_SET) {
422
- // \x1b[48;2;R;G;Bm
423
- buf[off] = 0x1b;
424
- buf[off + 1] = 0x5b;
425
- buf[off + 2] = 0x34;
426
- buf[off + 3] = 0x38;
427
- buf[off + 4] = 0x3b;
428
- buf[off + 5] = 0x32;
429
- buf[off + 6] = 0x3b;
430
- off += 7;
431
- off = writeDecimal(buf, off, byteAt(srcBuf, srcOff + OFF_BG_R));
432
- buf[off++] = 0x3b;
433
- off = writeDecimal(buf, off, byteAt(srcBuf, srcOff + OFF_BG_G));
434
- buf[off++] = 0x3b;
435
- off = writeDecimal(buf, off, byteAt(srcBuf, srcOff + OFF_BG_B));
436
- buf[off++] = 0x6d;
437
- }
438
- // Modifier flags — 4-byte sequences inlined.
439
- if (flags & FLAG_BOLD) {
440
- buf[off] = 0x1b;
441
- buf[off + 1] = 0x5b;
442
- buf[off + 2] = 0x31;
443
- buf[off + 3] = 0x6d;
444
- off += 4;
445
- }
446
- if (flags & FLAG_DIM) {
447
- buf[off] = 0x1b;
448
- buf[off + 1] = 0x5b;
449
- buf[off + 2] = 0x32;
450
- buf[off + 3] = 0x6d;
451
- off += 4;
452
- }
453
- if (flags & FLAG_STRIKETHROUGH) {
454
- buf[off] = 0x1b;
455
- buf[off + 1] = 0x5b;
456
- buf[off + 2] = 0x39;
457
- buf[off + 3] = 0x6d;
458
- off += 4;
459
- }
460
- if (flags & FLAG_INVERSE) {
461
- buf[off] = 0x1b;
462
- buf[off + 1] = 0x5b;
463
- buf[off + 2] = 0x37;
464
- buf[off + 3] = 0x6d;
465
- off += 4;
466
- }
467
- const uStyle = (flags >> 4) & 0x03;
468
- if (uStyle === 1) {
469
- // \x1b[4m
470
- buf[off] = 0x1b;
471
- buf[off + 1] = 0x5b;
472
- buf[off + 2] = 0x34;
473
- buf[off + 3] = 0x6d;
474
- off += 4;
475
- }
476
- else if (uStyle === 2) {
477
- // \x1b[4:3m
478
- buf[off] = 0x1b;
479
- buf[off + 1] = 0x5b;
480
- buf[off + 2] = 0x34;
481
- buf[off + 3] = 0x3a;
482
- buf[off + 4] = 0x33;
483
- buf[off + 5] = 0x6d;
484
- off += 6;
485
- }
486
- else if (uStyle === 3) {
487
- // \x1b[4:4m (dotted) or \x1b[4:5m (dashed)
488
- buf[off] = 0x1b;
489
- buf[off + 1] = 0x5b;
490
- buf[off + 2] = 0x34;
491
- buf[off + 3] = 0x3a;
492
- buf[off + 4] = (flags & FLAG_DASHED) ? 0x35 : 0x34;
493
- buf[off + 5] = 0x6d;
494
- off += 6;
495
- }
496
- return off;
497
- }
498
- /**
499
- * Write one packed cell's character into the output buffer as UTF-8.
500
- * ASCII and BMP code points are encoded inline; only side-table graphemes
501
- * (multi-codepoint clusters) require a `TextEncoder.encodeInto` call.
502
- */
503
- function writeCharBytes(buf, off, srcBuf, srcOff, sideTable) {
504
- const code = byteAt(srcBuf, srcOff) | (byteAt(srcBuf, srcOff + 1) << 8);
505
- if (code < 0x80) {
506
- // ASCII fast path
507
- buf[off] = code;
508
- return off + 1;
509
- }
510
- if (code < SIDE_TABLE_THRESHOLD) {
511
- // BMP code point: 0x0080..0x07ff → 2 bytes, 0x0800..0xffff → 3 bytes.
512
- if (code < 0x800) {
513
- buf[off] = 0xc0 | (code >> 6);
514
- buf[off + 1] = 0x80 | (code & 0x3f);
515
- return off + 2;
516
- }
517
- buf[off] = 0xe0 | (code >> 12);
518
- buf[off + 1] = 0x80 | ((code >> 6) & 0x3f);
519
- buf[off + 2] = 0x80 | (code & 0x3f);
520
- return off + 3;
521
- }
522
- // Side-table index — multi-codepoint grapheme cluster.
523
- const grapheme = sideTable[code - SIDE_TABLE_THRESHOLD] ?? '';
524
- const { written } = textEncoder.encodeInto(grapheme, buf.subarray(off));
525
- return off + written;
526
- }
527
- /**
528
- * Semantic packed-cell equality across two buffers with independent side tables.
529
- * Raw bytes are compared first; if they match and the char is a side-table
530
- * index, the actual grapheme strings are verified.
531
- */
532
- function packedCellsSemanticallyEqual(aBuf, aOff, aSide, bBuf, bOff, bSide) {
533
- if (!packedBytesEqual(aBuf, aOff, bBuf, bOff))
534
- return false;
535
- const aChar = byteAt(aBuf, aOff) | (byteAt(aBuf, aOff + 1) << 8);
536
- if (aChar < SIDE_TABLE_THRESHOLD)
537
- return true;
538
- const bChar = byteAt(bBuf, bOff) | (byteAt(bBuf, bOff + 1) << 8);
539
- return aChar === bChar && decodeChar(aChar, aSide) === decodeChar(bChar, bSide);
540
- }
541
- /**
542
- * Fixed byte budget for the cursor move + full SGR prelude + trailing
543
- * reset that bookend a batch. The variable per-batch cost comes from
544
- * the char writes, which are bounded by `width * MAX_CHAR_BYTES`.
545
- * The full batch budget is computed inside `renderDiffPacked` as
546
- * `BATCH_FIXED_BUDGET + width * MAX_CHAR_BYTES` so it scales with
547
- * terminal width and never overflows on ultra-wide monitors.
548
- */
549
- const BATCH_FIXED_BUDGET = 128;
550
- /** Worst-case UTF-8 bytes per cell character (side-table emoji cluster). */
551
- const MAX_CHAR_BYTES = 32;
552
- function renderDiffPacked(current, target, io, _style, outBuf) {
553
- const width = target.width;
554
- const height = target.height;
555
- const tBuf = target.buffer;
556
- const cBuf = current.buffer;
557
- const cWidth = current.width;
558
- const cHeight = current.height;
559
- const tSide = target.sideTable;
560
- const cSide = current.sideTable;
561
- // Render-dirty bitmap fast path. Cells that weren't mutated since
562
- // the last clear() in EITHER surface are guaranteed unchanged on
563
- // the buffer level, so we can skip them entirely. We walk the union
564
- // of the two bitmaps because:
565
- // - Bits in target.renderDirtyWords = cells the user painted this frame
566
- // - Bits in current.renderDirtyWords = cells the user painted last frame
567
- // (which may now need to be erased if not painted this frame)
568
- // The union covers both "new content" and "needs erasure" cases.
569
- const tDirty = target.renderDirtyWords;
570
- const cDirty = current.renderDirtyWords;
571
- const cellCount = width * height;
572
- const wordCount = (cellCount + 31) >>> 5;
573
- // Early out: if no cells in EITHER surface are dirty, there is
574
- // nothing to emit. This is the diff-static / unchanged-frame case
575
- // and should be near-zero cost.
576
- let anyDirty = false;
577
- // Both bitmaps may have different lengths if width/height differ,
578
- // but in practice they're the same. Walk min(both).
579
- const tWords = Math.min(wordCount, tDirty.length);
580
- const cWords = Math.min(wordCount, cDirty.length);
581
- const minWords = Math.min(tWords, cWords);
582
- for (let w = 0; w < minWords; w++) {
583
- if ((wordAt(tDirty, w) | wordAt(cDirty, w)) !== 0) {
584
- anyDirty = true;
585
- break;
586
- }
587
- }
588
- if (!anyDirty) {
589
- // Check tail words from whichever bitmap is longer
590
- for (let w = minWords; w < tWords && !anyDirty; w++) {
591
- if (wordAt(tDirty, w) !== 0)
592
- anyDirty = true;
593
- }
594
- for (let w = minWords; w < cWords && !anyDirty; w++) {
595
- if (wordAt(cDirty, w) !== 0)
596
- anyDirty = true;
597
- }
598
- }
599
- if (!anyDirty) {
600
- return;
601
- }
602
- // Acquire the pooled output buffer. The runtime supplies one sized
603
- // against the current viewport; all other callers land on the
604
- // module-level scratch buffer (sized against the live surface and
605
- // reused across calls).
606
- let buf;
607
- if (outBuf !== undefined) {
608
- buf = outBuf;
609
- }
610
- else {
611
- const needed = cellCount * SCRATCH_BYTES_PER_CELL + SCRATCH_SLACK;
612
- if (scratchOutBuf === null || scratchOutBuf.length < needed) {
613
- scratchOutBuf = new Uint8Array(needed);
614
- }
615
- buf = scratchOutBuf;
616
- }
617
- let off = 0;
618
- // Flush the pending bytes to the IO port and reset the cursor to
619
- // the start of the pool. Direct `writeBytes` handoff on the Node
620
- // stdout path; TextDecoder fallback for mock sinks that only carry
621
- // a string-level `write`.
622
- const flush = () => {
623
- if (off === 0)
624
- return;
625
- if (io.writeBytes !== undefined) {
626
- io.writeBytes(buf, off);
627
- }
628
- else {
629
- io.write(textDecoder.decode(buf.subarray(0, off)));
630
- }
631
- off = 0;
632
- };
633
- let cursorX = -1;
634
- let cursorY = -1;
635
- // Fast path: skip expensive side-table string verification when neither
636
- // surface has any side-table entries (the common case — no emoji/astral).
637
- const needsSideTableCheck = tSide.length > 0 || cSide.length > 0;
638
- // Per-batch byte budget computed from the current surface width so
639
- // the inner char-write loop never needs a per-cell capacity check,
640
- // even on ultra-wide terminals.
641
- const batchBudget = BATCH_FIXED_BUDGET + width * MAX_CHAR_BYTES;
642
- for (let y = 0; y < height; y++) {
643
- let x = 0;
644
- while (x < width) {
645
- const tIdx = y * width + x;
646
- // Per-cell dirty skip: if neither surface marked this cell as
647
- // touched, the bytes are guaranteed identical and there is
648
- // nothing to emit. Skip it without doing the byte compare.
649
- const wordIdx = tIdx >>> 5;
650
- const bitMask = 1 << (tIdx & 31);
651
- const cellDirty = ((wordIdx < tDirty.length ? wordAt(tDirty, wordIdx) : 0) & bitMask) !== 0
652
- || ((wordIdx < cDirty.length ? wordAt(cDirty, wordIdx) : 0) & bitMask) !== 0;
653
- if (!cellDirty) {
654
- x++;
655
- continue;
656
- }
657
- const tOff = tIdx * CELL_STRIDE;
658
- const inBounds = y < cHeight && x < cWidth;
659
- const cOff = inBounds ? (y * cWidth + x) * CELL_STRIDE : -1;
660
- const same = inBounds
661
- ? (needsSideTableCheck
662
- ? packedCellsSemanticallyEqual(tBuf, tOff, tSide, cBuf, cOff, cSide)
663
- : packedBytesEqual(tBuf, tOff, cBuf, cOff))
664
- : packedBytesEqual(tBuf, tOff, EMPTY_PACKED, 0);
665
- if (same) {
666
- x++;
667
- continue;
668
- }
669
- // Flush if the batch preamble (cursor + SGR) cannot fit contiguously.
670
- if (off + batchBudget > buf.length) {
671
- flush();
672
- }
673
- if (x !== cursorX || y !== cursorY) {
674
- off = writeCursorBytes(buf, off, x, y);
675
- }
676
- const hasStyle = packedHasVisibleStyle(tBuf, tOff);
677
- if (hasStyle) {
678
- off = writeSgrFromBufBytes(buf, off, tBuf, tOff);
679
- }
680
- // Write the first cell of the batch unconditionally: the outer
681
- // "same?" check above already told us it differs from current,
682
- // and the batch-leader style check is trivially true at the
683
- // leader position. This removes a redundant 10-byte compare and
684
- // a branch from the hot path — in diff-gradient, every batch is
685
- // one cell, so that's one compare saved per cell per frame.
686
- off = writeCharBytes(buf, off, tBuf, tOff, tSide);
687
- let batchX = x + 1;
688
- // NOTE: The batch continuation loop does not consult the render-
689
- // dirty bitmap per cell. This is intentional — the cellsMatch
690
- // byte-compare below catches unchanged cells and breaks the
691
- // batch. Checking the bitmap here would add a branch to every
692
- // iteration of the hot inner loop for negligible benefit, since
693
- // batches are short in practice (style changes break them).
694
- while (batchX < width) {
695
- const bIdx = y * width + batchX;
696
- const bOff = bIdx * CELL_STRIDE;
697
- // Style check vs batch leader (always — batchX > x here).
698
- if (!packedStyleBytesEqual(tBuf, tOff, tBuf, bOff)) {
699
- break;
700
- }
701
- // Cell-match break check: stop the batch when we hit a cell
702
- // that already matches current and has nothing to emit.
703
- const bInBounds = y < cHeight && batchX < cWidth;
704
- const bcOff = bInBounds ? (y * cWidth + batchX) * CELL_STRIDE : -1;
705
- const cellsMatch = bInBounds
706
- ? (needsSideTableCheck
707
- ? packedCellsSemanticallyEqual(tBuf, bOff, tSide, cBuf, bcOff, cSide)
708
- : packedBytesEqual(tBuf, bOff, cBuf, bcOff))
709
- : packedBytesEqual(tBuf, bOff, EMPTY_PACKED, 0);
710
- if (cellsMatch)
711
- break;
712
- off = writeCharBytes(buf, off, tBuf, bOff, tSide);
713
- batchX++;
714
- }
715
- // Trailing reset after styled batch — matches legacy emission.
716
- // 4-byte inline write, same as the leading reset inside writeSgrFromBufBytes.
717
- if (hasStyle) {
718
- buf[off] = 0x1b;
719
- buf[off + 1] = 0x5b;
720
- buf[off + 2] = 0x30;
721
- buf[off + 3] = 0x6d;
722
- off += 4;
723
- }
724
- cursorX = batchX;
725
- cursorY = y;
726
- x = batchX;
727
- }
728
- }
729
- flush();
730
- }
731
- // ── Legacy cell-based differ (fallback) ─────────────────
732
- function renderDiffCells(current, target, io, style) {
733
- const width = target.width;
734
- const height = target.height;
735
- const targetCells = target.cells;
736
- const currentCells = current.cells;
737
- const currentWidth = current.width;
738
- const currentHeight = current.height;
739
- let output = '';
740
- let cursorX = -1;
741
- let cursorY = -1;
742
- for (let y = 0; y < height; y++) {
743
- const targetRowOffset = y * width;
744
- const currentRowOffset = y * currentWidth;
745
- let x = 0;
746
- while (x < width) {
747
- const targetCell = cellAtOrEmpty(targetCells, targetRowOffset + x);
748
- const currentCell = y < currentHeight && x < currentWidth
749
- ? cellAtOrEmpty(currentCells, currentRowOffset + x)
750
- : EMPTY_CELL;
751
- const targetMods = targetCell.modifiers ?? EMPTY_MODIFIERS;
752
- const currentMods = currentCell.modifiers ?? EMPTY_MODIFIERS;
753
- let sameCell = targetCell === currentCell
754
- || (targetCell.char === currentCell.char
755
- && targetCell.fg === currentCell.fg
756
- && targetCell.bg === currentCell.bg
757
- && targetCell.empty === currentCell.empty
758
- && targetMods.length === currentMods.length);
759
- if (sameCell && targetCell !== currentCell && targetMods !== currentMods) {
760
- for (let i = 0; i < targetMods.length; i++) {
761
- if (targetMods[i] !== currentMods[i]) {
762
- sameCell = false;
763
- break;
764
- }
765
- }
766
- }
767
- if (sameCell) {
768
- x++;
769
- continue;
770
- }
771
- if (x !== cursorX || y !== cursorY) {
772
- output += moveCursor(x, y);
773
- }
774
- let batchX = x;
775
- let batchText = '';
776
- const batchStyleMods = targetMods;
777
- while (batchX < width) {
778
- const c = cellAtOrEmpty(targetCells, targetRowOffset + batchX);
779
- const curr = y < currentHeight && batchX < currentWidth
780
- ? cellAtOrEmpty(currentCells, currentRowOffset + batchX)
781
- : EMPTY_CELL;
782
- if (batchX > x) {
783
- const cellMods = c.modifiers ?? EMPTY_MODIFIERS;
784
- let sameStyle = c === targetCell
785
- || (c.fg === targetCell.fg
786
- && c.bg === targetCell.bg
787
- && cellMods.length === batchStyleMods.length);
788
- if (sameStyle && c !== targetCell && cellMods !== batchStyleMods) {
789
- for (let i = 0; i < cellMods.length; i++) {
790
- if (cellMods[i] !== batchStyleMods[i]) {
791
- sameStyle = false;
792
- break;
793
- }
794
- }
795
- }
796
- if (!sameStyle)
797
- break;
798
- }
799
- const cellMods = c.modifiers ?? EMPTY_MODIFIERS;
800
- const currMods = curr.modifiers ?? EMPTY_MODIFIERS;
801
- let cellsMatch = c === curr
802
- || (c.char === curr.char
803
- && c.fg === curr.fg
804
- && c.bg === curr.bg
805
- && c.empty === curr.empty
806
- && cellMods.length === currMods.length);
807
- if (cellsMatch && c !== curr && cellMods !== currMods) {
808
- for (let i = 0; i < cellMods.length; i++) {
809
- if (cellMods[i] !== currMods[i]) {
810
- cellsMatch = false;
811
- break;
812
- }
813
- }
814
- }
815
- if (cellsMatch)
816
- break;
817
- batchText += c.char;
818
- batchX++;
819
- }
820
- if (hasVisibleStyle(targetCell)) {
821
- output += style.styled(cellToken(targetCell), batchText);
822
- }
823
- else {
824
- output += batchText;
825
- }
826
- const batchWidth = batchX - x;
827
- cursorX = x + batchWidth;
828
- cursorY = y;
829
- x = batchX;
830
- }
831
- }
832
- if (output.length > 0) {
833
- io.write(output);
834
- }
835
- }
836
21
  //# sourceMappingURL=differ.js.map