@react-x11/components 0.1.0 → 0.2.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 (788) hide show
  1. package/README.md +979 -21
  2. package/dist/ansi/cast.d.ts +48 -0
  3. package/dist/ansi/cast.d.ts.map +1 -0
  4. package/dist/ansi/cast.js +135 -0
  5. package/dist/ansi/cast.js.map +1 -0
  6. package/dist/ansi/index.d.ts +10 -0
  7. package/dist/ansi/index.d.ts.map +1 -0
  8. package/dist/ansi/index.js +27 -0
  9. package/dist/ansi/index.js.map +1 -0
  10. package/dist/ansi/palette.d.ts +79 -0
  11. package/dist/ansi/palette.d.ts.map +1 -0
  12. package/dist/ansi/palette.js +155 -0
  13. package/dist/ansi/palette.js.map +1 -0
  14. package/dist/ansi/parse.d.ts +114 -0
  15. package/dist/ansi/parse.d.ts.map +1 -0
  16. package/dist/ansi/parse.js +687 -0
  17. package/dist/ansi/parse.js.map +1 -0
  18. package/dist/ansi/sgr.d.ts +87 -0
  19. package/dist/ansi/sgr.d.ts.map +1 -0
  20. package/dist/ansi/sgr.js +302 -0
  21. package/dist/ansi/sgr.js.map +1 -0
  22. package/dist/ansi/utf8.d.ts +15 -0
  23. package/dist/ansi/utf8.d.ts.map +1 -0
  24. package/dist/ansi/utf8.js +82 -0
  25. package/dist/ansi/utf8.js.map +1 -0
  26. package/dist/calendar/Calendar.d.ts +136 -0
  27. package/dist/calendar/Calendar.d.ts.map +1 -0
  28. package/dist/calendar/Calendar.js +460 -0
  29. package/dist/calendar/Calendar.js.map +1 -0
  30. package/dist/calendar/DatePicker.d.ts +52 -0
  31. package/dist/calendar/DatePicker.d.ts.map +1 -0
  32. package/dist/calendar/DatePicker.js +257 -0
  33. package/dist/calendar/DatePicker.js.map +1 -0
  34. package/dist/calendar/dates.d.ts +90 -0
  35. package/dist/calendar/dates.d.ts.map +1 -0
  36. package/dist/calendar/dates.js +236 -0
  37. package/dist/calendar/dates.js.map +1 -0
  38. package/dist/calendar/index.d.ts +8 -0
  39. package/dist/calendar/index.d.ts.map +1 -0
  40. package/dist/calendar/index.js +15 -0
  41. package/dist/calendar/index.js.map +1 -0
  42. package/dist/charts/components.d.ts +141 -0
  43. package/dist/charts/components.d.ts.map +1 -0
  44. package/dist/charts/components.js +580 -0
  45. package/dist/charts/components.js.map +1 -0
  46. package/dist/charts/data.d.ts +198 -0
  47. package/dist/charts/data.d.ts.map +1 -0
  48. package/dist/charts/data.js +616 -0
  49. package/dist/charts/data.js.map +1 -0
  50. package/dist/charts/hx.d.ts +21 -0
  51. package/dist/charts/hx.d.ts.map +1 -0
  52. package/dist/charts/hx.js +15 -0
  53. package/dist/charts/hx.js.map +1 -0
  54. package/dist/charts/index.d.ts +27 -0
  55. package/dist/charts/index.d.ts.map +1 -0
  56. package/dist/charts/index.js +38 -0
  57. package/dist/charts/index.js.map +1 -0
  58. package/dist/charts/node.d.ts +96 -0
  59. package/dist/charts/node.d.ts.map +1 -0
  60. package/dist/charts/node.js +720 -0
  61. package/dist/charts/node.js.map +1 -0
  62. package/dist/charts/render.d.ts +153 -0
  63. package/dist/charts/render.d.ts.map +1 -0
  64. package/dist/charts/render.js +762 -0
  65. package/dist/charts/render.js.map +1 -0
  66. package/dist/charts/scale.d.ts +42 -0
  67. package/dist/charts/scale.d.ts.map +1 -0
  68. package/dist/charts/scale.js +173 -0
  69. package/dist/charts/scale.js.map +1 -0
  70. package/dist/charts/spec.d.ts +91 -0
  71. package/dist/charts/spec.d.ts.map +1 -0
  72. package/dist/charts/spec.js +33 -0
  73. package/dist/charts/spec.js.map +1 -0
  74. package/dist/charts/timers.d.ts +6 -0
  75. package/dist/charts/timers.d.ts.map +1 -0
  76. package/dist/charts/timers.js +14 -0
  77. package/dist/charts/timers.js.map +1 -0
  78. package/dist/code/hx.d.ts +24 -0
  79. package/dist/code/hx.d.ts.map +1 -0
  80. package/dist/code/hx.js +25 -0
  81. package/dist/code/hx.js.map +1 -0
  82. package/dist/code/index.d.ts +45 -0
  83. package/dist/code/index.d.ts.map +1 -0
  84. package/dist/code/index.js +93 -0
  85. package/dist/code/index.js.map +1 -0
  86. package/dist/code-editor/completion.d.ts +26 -0
  87. package/dist/code-editor/completion.d.ts.map +1 -0
  88. package/dist/code-editor/completion.js +129 -0
  89. package/dist/code-editor/completion.js.map +1 -0
  90. package/dist/code-editor/doc.d.ts +35 -0
  91. package/dist/code-editor/doc.d.ts.map +1 -0
  92. package/dist/code-editor/doc.js +162 -0
  93. package/dist/code-editor/doc.js.map +1 -0
  94. package/dist/code-editor/hx.d.ts +13 -0
  95. package/dist/code-editor/hx.d.ts.map +1 -0
  96. package/dist/code-editor/hx.js +10 -0
  97. package/dist/code-editor/hx.js.map +1 -0
  98. package/dist/code-editor/index.d.ts +88 -0
  99. package/dist/code-editor/index.d.ts.map +1 -0
  100. package/dist/code-editor/index.js +401 -0
  101. package/dist/code-editor/index.js.map +1 -0
  102. package/dist/code-editor/node.d.ts +343 -0
  103. package/dist/code-editor/node.d.ts.map +1 -0
  104. package/dist/code-editor/node.js +1521 -0
  105. package/dist/code-editor/node.js.map +1 -0
  106. package/dist/code-language/hljs.d.ts +47 -0
  107. package/dist/code-language/hljs.d.ts.map +1 -0
  108. package/dist/code-language/hljs.js +211 -0
  109. package/dist/code-language/hljs.js.map +1 -0
  110. package/dist/code-language/index.d.ts +22 -0
  111. package/dist/code-language/index.d.ts.map +1 -0
  112. package/dist/code-language/index.js +20 -0
  113. package/dist/code-language/index.js.map +1 -0
  114. package/dist/code-language/languages/glsl.d.ts +4 -0
  115. package/dist/code-language/languages/glsl.d.ts.map +1 -0
  116. package/dist/code-language/languages/glsl.js +99 -0
  117. package/dist/code-language/languages/glsl.js.map +1 -0
  118. package/dist/code-language/languages/javascript.d.ts +10 -0
  119. package/dist/code-language/languages/javascript.d.ts.map +1 -0
  120. package/dist/code-language/languages/javascript.js +360 -0
  121. package/dist/code-language/languages/javascript.js.map +1 -0
  122. package/dist/code-language/languages/json.d.ts +4 -0
  123. package/dist/code-language/languages/json.d.ts.map +1 -0
  124. package/dist/code-language/languages/json.js +68 -0
  125. package/dist/code-language/languages/json.js.map +1 -0
  126. package/dist/code-language/languages/shell.d.ts +4 -0
  127. package/dist/code-language/languages/shell.d.ts.map +1 -0
  128. package/dist/code-language/languages/shell.js +189 -0
  129. package/dist/code-language/languages/shell.js.map +1 -0
  130. package/dist/code-language/languages/sql.d.ts +11 -0
  131. package/dist/code-language/languages/sql.d.ts.map +1 -0
  132. package/dist/code-language/languages/sql.js +133 -0
  133. package/dist/code-language/languages/sql.js.map +1 -0
  134. package/dist/code-language/lezer.d.ts +24 -0
  135. package/dist/code-language/lezer.d.ts.map +1 -0
  136. package/dist/code-language/lezer.js +148 -0
  137. package/dist/code-language/lezer.js.map +1 -0
  138. package/dist/code-language/registry.d.ts +19 -0
  139. package/dist/code-language/registry.d.ts.map +1 -0
  140. package/dist/code-language/registry.js +56 -0
  141. package/dist/code-language/registry.js.map +1 -0
  142. package/dist/code-language/runs.d.ts +35 -0
  143. package/dist/code-language/runs.d.ts.map +1 -0
  144. package/dist/code-language/runs.js +88 -0
  145. package/dist/code-language/runs.js.map +1 -0
  146. package/dist/code-language/stream.d.ts +70 -0
  147. package/dist/code-language/stream.d.ts.map +1 -0
  148. package/dist/code-language/stream.js +243 -0
  149. package/dist/code-language/stream.js.map +1 -0
  150. package/dist/code-language/textmate.d.ts +27 -0
  151. package/dist/code-language/textmate.d.ts.map +1 -0
  152. package/dist/code-language/textmate.js +86 -0
  153. package/dist/code-language/textmate.js.map +1 -0
  154. package/dist/code-language/theme.d.ts +26 -0
  155. package/dist/code-language/theme.d.ts.map +1 -0
  156. package/dist/code-language/theme.js +108 -0
  157. package/dist/code-language/theme.js.map +1 -0
  158. package/dist/code-language/timers.d.ts +7 -0
  159. package/dist/code-language/timers.d.ts.map +1 -0
  160. package/dist/code-language/timers.js +22 -0
  161. package/dist/code-language/timers.js.map +1 -0
  162. package/dist/code-language/types.d.ts +173 -0
  163. package/dist/code-language/types.d.ts.map +1 -0
  164. package/dist/code-language/types.js +41 -0
  165. package/dist/code-language/types.js.map +1 -0
  166. package/dist/codeblock/index.d.ts +69 -0
  167. package/dist/codeblock/index.d.ts.map +1 -0
  168. package/dist/codeblock/index.js +85 -0
  169. package/dist/codeblock/index.js.map +1 -0
  170. package/dist/color-picker/ColorField.d.ts +39 -0
  171. package/dist/color-picker/ColorField.d.ts.map +1 -0
  172. package/dist/color-picker/ColorField.js +239 -0
  173. package/dist/color-picker/ColorField.js.map +1 -0
  174. package/dist/color-picker/ColorPicker.d.ts +109 -0
  175. package/dist/color-picker/ColorPicker.d.ts.map +1 -0
  176. package/dist/color-picker/ColorPicker.js +757 -0
  177. package/dist/color-picker/ColorPicker.js.map +1 -0
  178. package/dist/color-picker/color.d.ts +105 -0
  179. package/dist/color-picker/color.d.ts.map +1 -0
  180. package/dist/color-picker/color.js +313 -0
  181. package/dist/color-picker/color.js.map +1 -0
  182. package/dist/color-picker/index.d.ts +8 -0
  183. package/dist/color-picker/index.d.ts.map +1 -0
  184. package/dist/color-picker/index.js +19 -0
  185. package/dist/color-picker/index.js.map +1 -0
  186. package/dist/desktop-calendar/eds.d.ts +102 -0
  187. package/dist/desktop-calendar/eds.d.ts.map +1 -0
  188. package/dist/desktop-calendar/eds.js +356 -0
  189. package/dist/desktop-calendar/eds.js.map +1 -0
  190. package/dist/desktop-calendar/ical.d.ts +63 -0
  191. package/dist/desktop-calendar/ical.d.ts.map +1 -0
  192. package/dist/desktop-calendar/ical.js +57 -0
  193. package/dist/desktop-calendar/ical.js.map +1 -0
  194. package/dist/desktop-calendar/index.d.ts +72 -0
  195. package/dist/desktop-calendar/index.d.ts.map +1 -0
  196. package/dist/desktop-calendar/index.js +213 -0
  197. package/dist/desktop-calendar/index.js.map +1 -0
  198. package/dist/embed/client.d.ts +121 -0
  199. package/dist/embed/client.d.ts.map +1 -0
  200. package/dist/embed/client.js +203 -0
  201. package/dist/embed/client.js.map +1 -0
  202. package/dist/embed/host.d.ts +96 -0
  203. package/dist/embed/host.d.ts.map +1 -0
  204. package/dist/embed/host.js +266 -0
  205. package/dist/embed/host.js.map +1 -0
  206. package/dist/embed/index.d.ts +5 -0
  207. package/dist/embed/index.d.ts.map +1 -0
  208. package/dist/embed/index.js +13 -0
  209. package/dist/embed/index.js.map +1 -0
  210. package/dist/embed/timers.d.ts +6 -0
  211. package/dist/embed/timers.d.ts.map +1 -0
  212. package/dist/embed/timers.js +16 -0
  213. package/dist/embed/timers.js.map +1 -0
  214. package/dist/flow/draw.d.ts +45 -0
  215. package/dist/flow/draw.d.ts.map +1 -0
  216. package/dist/flow/draw.js +295 -0
  217. package/dist/flow/draw.js.map +1 -0
  218. package/dist/flow/index.d.ts +64 -0
  219. package/dist/flow/index.d.ts.map +1 -0
  220. package/dist/flow/index.js +306 -0
  221. package/dist/flow/index.js.map +1 -0
  222. package/dist/flow/model.d.ts +158 -0
  223. package/dist/flow/model.d.ts.map +1 -0
  224. package/dist/flow/model.js +566 -0
  225. package/dist/flow/model.js.map +1 -0
  226. package/dist/flow/node.d.ts +429 -0
  227. package/dist/flow/node.d.ts.map +1 -0
  228. package/dist/flow/node.js +3025 -0
  229. package/dist/flow/node.js.map +1 -0
  230. package/dist/flow/paths.d.ts +43 -0
  231. package/dist/flow/paths.d.ts.map +1 -0
  232. package/dist/flow/paths.js +327 -0
  233. package/dist/flow/paths.js.map +1 -0
  234. package/dist/flow/types.d.ts +561 -0
  235. package/dist/flow/types.d.ts.map +1 -0
  236. package/dist/flow/types.js +2 -0
  237. package/dist/flow/types.js.map +1 -0
  238. package/dist/formula/hx.d.ts +24 -0
  239. package/dist/formula/hx.d.ts.map +1 -0
  240. package/dist/formula/hx.js +25 -0
  241. package/dist/formula/hx.js.map +1 -0
  242. package/dist/formula/index.d.ts +74 -0
  243. package/dist/formula/index.d.ts.map +1 -0
  244. package/dist/formula/index.js +155 -0
  245. package/dist/formula/index.js.map +1 -0
  246. package/dist/formula/katex.d.ts +78 -0
  247. package/dist/formula/katex.d.ts.map +1 -0
  248. package/dist/formula/katex.js +130 -0
  249. package/dist/formula/katex.js.map +1 -0
  250. package/dist/formula/layout.d.ts +103 -0
  251. package/dist/formula/layout.d.ts.map +1 -0
  252. package/dist/formula/layout.js +716 -0
  253. package/dist/formula/layout.js.map +1 -0
  254. package/dist/formula/node.d.ts +50 -0
  255. package/dist/formula/node.d.ts.map +1 -0
  256. package/dist/formula/node.js +351 -0
  257. package/dist/formula/node.js.map +1 -0
  258. package/dist/html/controls.d.ts +48 -0
  259. package/dist/html/controls.d.ts.map +1 -0
  260. package/dist/html/controls.js +195 -0
  261. package/dist/html/controls.js.map +1 -0
  262. package/dist/html/css/cascade.d.ts +51 -0
  263. package/dist/html/css/cascade.d.ts.map +1 -0
  264. package/dist/html/css/cascade.js +552 -0
  265. package/dist/html/css/cascade.js.map +1 -0
  266. package/dist/html/css/parse.d.ts +74 -0
  267. package/dist/html/css/parse.d.ts.map +1 -0
  268. package/dist/html/css/parse.js +464 -0
  269. package/dist/html/css/parse.js.map +1 -0
  270. package/dist/html/css/style.d.ts +142 -0
  271. package/dist/html/css/style.d.ts.map +1 -0
  272. package/dist/html/css/style.js +1145 -0
  273. package/dist/html/css/style.js.map +1 -0
  274. package/dist/html/css/ua.d.ts +5 -0
  275. package/dist/html/css/ua.d.ts.map +1 -0
  276. package/dist/html/css/ua.js +171 -0
  277. package/dist/html/css/ua.js.map +1 -0
  278. package/dist/html/css/values.d.ts +78 -0
  279. package/dist/html/css/values.d.ts.map +1 -0
  280. package/dist/html/css/values.js +330 -0
  281. package/dist/html/css/values.js.map +1 -0
  282. package/dist/html/dom.d.ts +112 -0
  283. package/dist/html/dom.d.ts.map +1 -0
  284. package/dist/html/dom.js +374 -0
  285. package/dist/html/dom.js.map +1 -0
  286. package/dist/html/hx.d.ts +24 -0
  287. package/dist/html/hx.d.ts.map +1 -0
  288. package/dist/html/hx.js +29 -0
  289. package/dist/html/hx.js.map +1 -0
  290. package/dist/html/index.d.ts +137 -0
  291. package/dist/html/index.d.ts.map +1 -0
  292. package/dist/html/index.js +339 -0
  293. package/dist/html/index.js.map +1 -0
  294. package/dist/html/layout/block.d.ts +58 -0
  295. package/dist/html/layout/block.d.ts.map +1 -0
  296. package/dist/html/layout/block.js +724 -0
  297. package/dist/html/layout/block.js.map +1 -0
  298. package/dist/html/layout/boxes.d.ts +261 -0
  299. package/dist/html/layout/boxes.d.ts.map +1 -0
  300. package/dist/html/layout/boxes.js +725 -0
  301. package/dist/html/layout/boxes.js.map +1 -0
  302. package/dist/html/layout/flex.d.ts +16 -0
  303. package/dist/html/layout/flex.d.ts.map +1 -0
  304. package/dist/html/layout/flex.js +242 -0
  305. package/dist/html/layout/flex.js.map +1 -0
  306. package/dist/html/layout/floats.d.ts +50 -0
  307. package/dist/html/layout/floats.d.ts.map +1 -0
  308. package/dist/html/layout/floats.js +110 -0
  309. package/dist/html/layout/floats.js.map +1 -0
  310. package/dist/html/layout/inline.d.ts +44 -0
  311. package/dist/html/layout/inline.d.ts.map +1 -0
  312. package/dist/html/layout/inline.js +700 -0
  313. package/dist/html/layout/inline.js.map +1 -0
  314. package/dist/html/layout/table.d.ts +5 -0
  315. package/dist/html/layout/table.d.ts.map +1 -0
  316. package/dist/html/layout/table.js +340 -0
  317. package/dist/html/layout/table.js.map +1 -0
  318. package/dist/html/node.d.ts +149 -0
  319. package/dist/html/node.d.ts.map +1 -0
  320. package/dist/html/node.js +861 -0
  321. package/dist/html/node.js.map +1 -0
  322. package/dist/html/paint.d.ts +48 -0
  323. package/dist/html/paint.d.ts.map +1 -0
  324. package/dist/html/paint.js +495 -0
  325. package/dist/html/paint.js.map +1 -0
  326. package/dist/html/resources.d.ts +48 -0
  327. package/dist/html/resources.d.ts.map +1 -0
  328. package/dist/html/resources.js +156 -0
  329. package/dist/html/resources.js.map +1 -0
  330. package/dist/index.d.ts +48 -0
  331. package/dist/index.d.ts.map +1 -0
  332. package/dist/index.js +92 -0
  333. package/dist/index.js.map +1 -0
  334. package/dist/internal/heights.d.ts +88 -0
  335. package/dist/internal/heights.d.ts.map +1 -0
  336. package/dist/internal/heights.js +203 -0
  337. package/dist/internal/heights.js.map +1 -0
  338. package/dist/internal/hx.d.ts +24 -0
  339. package/dist/internal/hx.d.ts.map +1 -0
  340. package/dist/internal/hx.js +27 -0
  341. package/dist/internal/hx.js.map +1 -0
  342. package/dist/internal/scroll.d.ts +62 -0
  343. package/dist/internal/scroll.d.ts.map +1 -0
  344. package/dist/internal/scroll.js +224 -0
  345. package/dist/internal/scroll.js.map +1 -0
  346. package/dist/internal/text.d.ts +6 -0
  347. package/dist/internal/text.d.ts.map +1 -0
  348. package/dist/internal/text.js +44 -0
  349. package/dist/internal/text.js.map +1 -0
  350. package/dist/internal/timers.d.ts +8 -0
  351. package/dist/internal/timers.d.ts.map +1 -0
  352. package/dist/internal/timers.js +22 -0
  353. package/dist/internal/timers.js.map +1 -0
  354. package/dist/internal/widget.d.ts +40 -0
  355. package/dist/internal/widget.d.ts.map +1 -0
  356. package/dist/internal/widget.js +44 -0
  357. package/dist/internal/widget.js.map +1 -0
  358. package/dist/markdown/ast.d.ts +126 -0
  359. package/dist/markdown/ast.d.ts.map +1 -0
  360. package/dist/markdown/ast.js +8 -0
  361. package/dist/markdown/ast.js.map +1 -0
  362. package/dist/markdown/hx.d.ts +24 -0
  363. package/dist/markdown/hx.d.ts.map +1 -0
  364. package/dist/markdown/hx.js +25 -0
  365. package/dist/markdown/hx.js.map +1 -0
  366. package/dist/markdown/index.d.ts +90 -0
  367. package/dist/markdown/index.d.ts.map +1 -0
  368. package/dist/markdown/index.js +413 -0
  369. package/dist/markdown/index.js.map +1 -0
  370. package/dist/markdown/parse.d.ts +8 -0
  371. package/dist/markdown/parse.d.ts.map +1 -0
  372. package/dist/markdown/parse.js +911 -0
  373. package/dist/markdown/parse.js.map +1 -0
  374. package/dist/markdown/spans.d.ts +20 -0
  375. package/dist/markdown/spans.d.ts.map +1 -0
  376. package/dist/markdown/spans.js +96 -0
  377. package/dist/markdown/spans.js.map +1 -0
  378. package/dist/media-player/backends.d.ts +64 -0
  379. package/dist/media-player/backends.d.ts.map +1 -0
  380. package/dist/media-player/backends.js +110 -0
  381. package/dist/media-player/backends.js.map +1 -0
  382. package/dist/media-player/control.d.ts +40 -0
  383. package/dist/media-player/control.d.ts.map +1 -0
  384. package/dist/media-player/control.js +44 -0
  385. package/dist/media-player/control.js.map +1 -0
  386. package/dist/media-player/hx.d.ts +24 -0
  387. package/dist/media-player/hx.d.ts.map +1 -0
  388. package/dist/media-player/hx.js +25 -0
  389. package/dist/media-player/hx.js.map +1 -0
  390. package/dist/media-player/index.d.ts +107 -0
  391. package/dist/media-player/index.d.ts.map +1 -0
  392. package/dist/media-player/index.js +219 -0
  393. package/dist/media-player/index.js.map +1 -0
  394. package/dist/media-player/mpv.d.ts +4 -0
  395. package/dist/media-player/mpv.d.ts.map +1 -0
  396. package/dist/media-player/mpv.js +120 -0
  397. package/dist/media-player/mpv.js.map +1 -0
  398. package/dist/media-player/vlc.d.ts +8 -0
  399. package/dist/media-player/vlc.d.ts.map +1 -0
  400. package/dist/media-player/vlc.js +83 -0
  401. package/dist/media-player/vlc.js.map +1 -0
  402. package/dist/richtext/index.d.ts +19 -0
  403. package/dist/richtext/index.d.ts.map +1 -0
  404. package/dist/richtext/index.js +4 -0
  405. package/dist/richtext/index.js.map +1 -0
  406. package/dist/richtext/links.d.ts +12 -0
  407. package/dist/richtext/links.d.ts.map +1 -0
  408. package/dist/richtext/links.js +64 -0
  409. package/dist/richtext/links.js.map +1 -0
  410. package/dist/richtext/menu.d.ts +11 -0
  411. package/dist/richtext/menu.d.ts.map +1 -0
  412. package/dist/richtext/menu.js +43 -0
  413. package/dist/richtext/menu.js.map +1 -0
  414. package/dist/richtext/node.d.ts +151 -0
  415. package/dist/richtext/node.d.ts.map +1 -0
  416. package/dist/richtext/node.js +255 -0
  417. package/dist/richtext/node.js.map +1 -0
  418. package/dist/richtext/runs.d.ts +92 -0
  419. package/dist/richtext/runs.d.ts.map +1 -0
  420. package/dist/richtext/runs.js +158 -0
  421. package/dist/richtext/runs.js.map +1 -0
  422. package/dist/table/hx.d.ts +24 -0
  423. package/dist/table/hx.d.ts.map +1 -0
  424. package/dist/table/hx.js +25 -0
  425. package/dist/table/hx.js.map +1 -0
  426. package/dist/table/index.d.ts +169 -0
  427. package/dist/table/index.d.ts.map +1 -0
  428. package/dist/table/index.js +890 -0
  429. package/dist/table/index.js.map +1 -0
  430. package/dist/table/rows.d.ts +136 -0
  431. package/dist/table/rows.d.ts.map +1 -0
  432. package/dist/table/rows.js +146 -0
  433. package/dist/table/rows.js.map +1 -0
  434. package/dist/terminal/backends.d.ts +105 -0
  435. package/dist/terminal/backends.d.ts.map +1 -0
  436. package/dist/terminal/backends.js +185 -0
  437. package/dist/terminal/backends.js.map +1 -0
  438. package/dist/terminal/hx.d.ts +24 -0
  439. package/dist/terminal/hx.d.ts.map +1 -0
  440. package/dist/terminal/hx.js +25 -0
  441. package/dist/terminal/hx.js.map +1 -0
  442. package/dist/terminal/index.d.ts +160 -0
  443. package/dist/terminal/index.d.ts.map +1 -0
  444. package/dist/terminal/index.js +344 -0
  445. package/dist/terminal/index.js.map +1 -0
  446. package/dist/terminal/title.d.ts +24 -0
  447. package/dist/terminal/title.d.ts.map +1 -0
  448. package/dist/terminal/title.js +129 -0
  449. package/dist/terminal/title.js.map +1 -0
  450. package/dist/terminal/vt/colors.d.ts +63 -0
  451. package/dist/terminal/vt/colors.d.ts.map +1 -0
  452. package/dist/terminal/vt/colors.js +203 -0
  453. package/dist/terminal/vt/colors.js.map +1 -0
  454. package/dist/terminal/vt/diff.d.ts +117 -0
  455. package/dist/terminal/vt/diff.d.ts.map +1 -0
  456. package/dist/terminal/vt/diff.js +358 -0
  457. package/dist/terminal/vt/diff.js.map +1 -0
  458. package/dist/terminal/vt/fonts.d.ts +92 -0
  459. package/dist/terminal/vt/fonts.d.ts.map +1 -0
  460. package/dist/terminal/vt/fonts.js +178 -0
  461. package/dist/terminal/vt/fonts.js.map +1 -0
  462. package/dist/terminal/vt/index.d.ts +78 -0
  463. package/dist/terminal/vt/index.d.ts.map +1 -0
  464. package/dist/terminal/vt/index.js +312 -0
  465. package/dist/terminal/vt/index.js.map +1 -0
  466. package/dist/terminal/vt/keys.d.ts +74 -0
  467. package/dist/terminal/vt/keys.d.ts.map +1 -0
  468. package/dist/terminal/vt/keys.js +309 -0
  469. package/dist/terminal/vt/keys.js.map +1 -0
  470. package/dist/terminal/vt/mouse.d.ts +44 -0
  471. package/dist/terminal/vt/mouse.d.ts.map +1 -0
  472. package/dist/terminal/vt/mouse.js +106 -0
  473. package/dist/terminal/vt/mouse.js.map +1 -0
  474. package/dist/terminal/vt/node.d.ts +246 -0
  475. package/dist/terminal/vt/node.d.ts.map +1 -0
  476. package/dist/terminal/vt/node.js +1068 -0
  477. package/dist/terminal/vt/node.js.map +1 -0
  478. package/dist/terminal/vt/pty.d.ts +81 -0
  479. package/dist/terminal/vt/pty.d.ts.map +1 -0
  480. package/dist/terminal/vt/pty.js +201 -0
  481. package/dist/terminal/vt/pty.js.map +1 -0
  482. package/dist/terminal/vt/renderer.d.ts +179 -0
  483. package/dist/terminal/vt/renderer.d.ts.map +1 -0
  484. package/dist/terminal/vt/renderer.js +357 -0
  485. package/dist/terminal/vt/renderer.js.map +1 -0
  486. package/dist/terminal/vt/timers.d.ts +6 -0
  487. package/dist/terminal/vt/timers.d.ts.map +1 -0
  488. package/dist/terminal/vt/timers.js +16 -0
  489. package/dist/terminal/vt/timers.js.map +1 -0
  490. package/dist/terminal/vt/xterm.d.ts +142 -0
  491. package/dist/terminal/vt/xterm.d.ts.map +1 -0
  492. package/dist/terminal/vt/xterm.js +32 -0
  493. package/dist/terminal/vt/xterm.js.map +1 -0
  494. package/dist/terminal-output/hx.d.ts +24 -0
  495. package/dist/terminal-output/hx.d.ts.map +1 -0
  496. package/dist/terminal-output/hx.js +25 -0
  497. package/dist/terminal-output/hx.js.map +1 -0
  498. package/dist/terminal-output/index.d.ts +92 -0
  499. package/dist/terminal-output/index.d.ts.map +1 -0
  500. package/dist/terminal-output/index.js +179 -0
  501. package/dist/terminal-output/index.js.map +1 -0
  502. package/dist/terminal-output/runs.d.ts +27 -0
  503. package/dist/terminal-output/runs.d.ts.map +1 -0
  504. package/dist/terminal-output/runs.js +66 -0
  505. package/dist/terminal-output/runs.js.map +1 -0
  506. package/dist/three/canvas.d.ts +46 -0
  507. package/dist/three/canvas.d.ts.map +1 -0
  508. package/dist/three/canvas.js +305 -0
  509. package/dist/three/canvas.js.map +1 -0
  510. package/dist/three/events.d.ts +64 -0
  511. package/dist/three/events.d.ts.map +1 -0
  512. package/dist/three/events.js +146 -0
  513. package/dist/three/events.js.map +1 -0
  514. package/dist/three/geometries.d.ts +89 -0
  515. package/dist/three/geometries.d.ts.map +1 -0
  516. package/dist/three/geometries.js +345 -0
  517. package/dist/three/geometries.js.map +1 -0
  518. package/dist/three/globals.d.ts +7 -0
  519. package/dist/three/globals.d.ts.map +1 -0
  520. package/dist/three/globals.js +20 -0
  521. package/dist/three/globals.js.map +1 -0
  522. package/dist/three/hx.d.ts +9 -0
  523. package/dist/three/hx.d.ts.map +1 -0
  524. package/dist/three/hx.js +10 -0
  525. package/dist/three/hx.js.map +1 -0
  526. package/dist/three/index.d.ts +22 -0
  527. package/dist/three/index.d.ts.map +1 -0
  528. package/dist/three/index.js +24 -0
  529. package/dist/three/index.js.map +1 -0
  530. package/dist/three/jsx-dev-runtime.d.ts +19 -0
  531. package/dist/three/jsx-dev-runtime.d.ts.map +1 -0
  532. package/dist/three/jsx-dev-runtime.js +2 -0
  533. package/dist/three/jsx-dev-runtime.js.map +1 -0
  534. package/dist/three/jsx-runtime.d.ts +19 -0
  535. package/dist/three/jsx-runtime.d.ts.map +1 -0
  536. package/dist/three/jsx-runtime.js +2 -0
  537. package/dist/three/jsx-runtime.js.map +1 -0
  538. package/dist/three/jsx.d.ts +198 -0
  539. package/dist/three/jsx.d.ts.map +1 -0
  540. package/dist/three/jsx.js +2 -0
  541. package/dist/three/jsx.js.map +1 -0
  542. package/dist/three/materials.d.ts +125 -0
  543. package/dist/three/materials.d.ts.map +1 -0
  544. package/dist/three/materials.js +229 -0
  545. package/dist/three/materials.js.map +1 -0
  546. package/dist/three/math.d.ts +146 -0
  547. package/dist/three/math.d.ts.map +1 -0
  548. package/dist/three/math.js +464 -0
  549. package/dist/three/math.js.map +1 -0
  550. package/dist/three/objects.d.ts +185 -0
  551. package/dist/three/objects.d.ts.map +1 -0
  552. package/dist/three/objects.js +309 -0
  553. package/dist/three/objects.js.map +1 -0
  554. package/dist/three/passes.d.ts +54 -0
  555. package/dist/three/passes.d.ts.map +1 -0
  556. package/dist/three/passes.js +78 -0
  557. package/dist/three/passes.js.map +1 -0
  558. package/dist/three/postprocess.d.ts +85 -0
  559. package/dist/three/postprocess.d.ts.map +1 -0
  560. package/dist/three/postprocess.js +503 -0
  561. package/dist/three/postprocess.js.map +1 -0
  562. package/dist/three/raycast.d.ts +24 -0
  563. package/dist/three/raycast.d.ts.map +1 -0
  564. package/dist/three/raycast.js +138 -0
  565. package/dist/three/raycast.js.map +1 -0
  566. package/dist/three/reconciler.d.ts +48 -0
  567. package/dist/three/reconciler.d.ts.map +1 -0
  568. package/dist/three/reconciler.js +416 -0
  569. package/dist/three/reconciler.js.map +1 -0
  570. package/dist/three/renderer-direct.d.ts +102 -0
  571. package/dist/three/renderer-direct.d.ts.map +1 -0
  572. package/dist/three/renderer-direct.js +782 -0
  573. package/dist/three/renderer-direct.js.map +1 -0
  574. package/dist/three/renderer-indirect.d.ts +68 -0
  575. package/dist/three/renderer-indirect.d.ts.map +1 -0
  576. package/dist/three/renderer-indirect.js +438 -0
  577. package/dist/three/renderer-indirect.js.map +1 -0
  578. package/dist/three/store.d.ts +81 -0
  579. package/dist/three/store.d.ts.map +1 -0
  580. package/dist/three/store.js +110 -0
  581. package/dist/three/store.js.map +1 -0
  582. package/dist/timeline/hx.d.ts +18 -0
  583. package/dist/timeline/hx.d.ts.map +1 -0
  584. package/dist/timeline/hx.js +10 -0
  585. package/dist/timeline/hx.js.map +1 -0
  586. package/dist/timeline/index.d.ts +152 -0
  587. package/dist/timeline/index.d.ts.map +1 -0
  588. package/dist/timeline/index.js +383 -0
  589. package/dist/timeline/index.js.map +1 -0
  590. package/dist/tray-host/hx.d.ts +24 -0
  591. package/dist/tray-host/hx.d.ts.map +1 -0
  592. package/dist/tray-host/hx.js +25 -0
  593. package/dist/tray-host/hx.js.map +1 -0
  594. package/dist/tray-host/index.d.ts +110 -0
  595. package/dist/tray-host/index.d.ts.map +1 -0
  596. package/dist/tray-host/index.js +191 -0
  597. package/dist/tray-host/index.js.map +1 -0
  598. package/dist/tray-host/manager.d.ts +137 -0
  599. package/dist/tray-host/manager.d.ts.map +1 -0
  600. package/dist/tray-host/manager.js +462 -0
  601. package/dist/tray-host/manager.js.map +1 -0
  602. package/dist/tray-host/notify.d.ts +22 -0
  603. package/dist/tray-host/notify.d.ts.map +1 -0
  604. package/dist/tray-host/notify.js +74 -0
  605. package/dist/tray-host/notify.js.map +1 -0
  606. package/dist/tray-host/protocol.d.ts +106 -0
  607. package/dist/tray-host/protocol.d.ts.map +1 -0
  608. package/dist/tray-host/protocol.js +191 -0
  609. package/dist/tray-host/protocol.js.map +1 -0
  610. package/dist/tree/hx.d.ts +24 -0
  611. package/dist/tree/hx.d.ts.map +1 -0
  612. package/dist/tree/hx.js +25 -0
  613. package/dist/tree/hx.js.map +1 -0
  614. package/dist/tree/index.d.ts +221 -0
  615. package/dist/tree/index.d.ts.map +1 -0
  616. package/dist/tree/index.js +751 -0
  617. package/dist/tree/index.js.map +1 -0
  618. package/dist/tree/internal.d.ts +18 -0
  619. package/dist/tree/internal.d.ts.map +1 -0
  620. package/dist/tree/internal.js +66 -0
  621. package/dist/tree/internal.js.map +1 -0
  622. package/dist/tree/rows.d.ts +177 -0
  623. package/dist/tree/rows.d.ts.map +1 -0
  624. package/dist/tree/rows.js +179 -0
  625. package/dist/tree/rows.js.map +1 -0
  626. package/package.json +166 -12
  627. package/src/ansi/cast.ts +159 -0
  628. package/src/ansi/index.ts +53 -0
  629. package/src/ansi/palette.ts +226 -0
  630. package/src/ansi/parse.ts +780 -0
  631. package/src/ansi/sgr.ts +380 -0
  632. package/src/ansi/utf8.ts +84 -0
  633. package/src/calendar/Calendar.ts +744 -0
  634. package/src/calendar/DatePicker.ts +368 -0
  635. package/src/calendar/dates.ts +307 -0
  636. package/src/calendar/index.ts +51 -0
  637. package/src/charts/components.ts +864 -0
  638. package/src/charts/data.ts +776 -0
  639. package/src/charts/hx.ts +39 -0
  640. package/src/charts/index.ts +99 -0
  641. package/src/charts/node.ts +932 -0
  642. package/src/charts/render.ts +982 -0
  643. package/src/charts/scale.ts +214 -0
  644. package/src/charts/spec.ts +122 -0
  645. package/src/charts/timers.ts +24 -0
  646. package/src/code/hx.ts +51 -0
  647. package/src/code/index.ts +174 -0
  648. package/src/code-editor/completion.ts +161 -0
  649. package/src/code-editor/doc.ts +198 -0
  650. package/src/code-editor/hx.ts +26 -0
  651. package/src/code-editor/index.ts +615 -0
  652. package/src/code-editor/node.ts +1926 -0
  653. package/src/code-language/hljs.ts +302 -0
  654. package/src/code-language/index.ts +51 -0
  655. package/src/code-language/languages/glsl.ts +120 -0
  656. package/src/code-language/languages/javascript.ts +419 -0
  657. package/src/code-language/languages/json.ts +72 -0
  658. package/src/code-language/languages/shell.ts +221 -0
  659. package/src/code-language/languages/sql.ts +165 -0
  660. package/src/code-language/lezer.ts +190 -0
  661. package/src/code-language/registry.ts +66 -0
  662. package/src/code-language/runs.ts +128 -0
  663. package/src/code-language/stream.ts +306 -0
  664. package/src/code-language/textmate.ts +134 -0
  665. package/src/code-language/theme.ts +124 -0
  666. package/src/code-language/timers.ts +36 -0
  667. package/src/code-language/types.ts +252 -0
  668. package/src/codeblock/index.ts +146 -0
  669. package/src/color-picker/ColorField.ts +333 -0
  670. package/src/color-picker/ColorPicker.ts +1069 -0
  671. package/src/color-picker/color.ts +399 -0
  672. package/src/color-picker/index.ts +50 -0
  673. package/src/desktop-calendar/eds.ts +484 -0
  674. package/src/desktop-calendar/ical.ts +119 -0
  675. package/src/desktop-calendar/index.ts +287 -0
  676. package/src/embed/client.ts +311 -0
  677. package/src/embed/host.ts +432 -0
  678. package/src/embed/index.ts +33 -0
  679. package/src/embed/timers.ts +32 -0
  680. package/src/flow/draw.ts +418 -0
  681. package/src/flow/index.ts +473 -0
  682. package/src/flow/model.ts +687 -0
  683. package/src/flow/node.ts +3694 -0
  684. package/src/flow/paths.ts +403 -0
  685. package/src/flow/types.ts +634 -0
  686. package/src/formula/hx.ts +51 -0
  687. package/src/formula/index.ts +243 -0
  688. package/src/formula/katex.ts +209 -0
  689. package/src/formula/layout.ts +876 -0
  690. package/src/formula/node.ts +467 -0
  691. package/src/html/controls.ts +244 -0
  692. package/src/html/css/cascade.ts +606 -0
  693. package/src/html/css/parse.ts +500 -0
  694. package/src/html/css/style.ts +1371 -0
  695. package/src/html/css/ua.ts +174 -0
  696. package/src/html/css/values.ts +358 -0
  697. package/src/html/dom.ts +410 -0
  698. package/src/html/hx.ts +55 -0
  699. package/src/html/index.ts +545 -0
  700. package/src/html/layout/block.ts +876 -0
  701. package/src/html/layout/boxes.ts +981 -0
  702. package/src/html/layout/flex.ts +297 -0
  703. package/src/html/layout/floats.ts +125 -0
  704. package/src/html/layout/inline.ts +870 -0
  705. package/src/html/layout/table.ts +380 -0
  706. package/src/html/node.ts +967 -0
  707. package/src/html/paint.ts +605 -0
  708. package/src/html/resources.ts +214 -0
  709. package/src/index.ts +638 -0
  710. package/src/internal/heights.ts +222 -0
  711. package/src/internal/hx.ts +53 -0
  712. package/src/internal/scroll.ts +288 -0
  713. package/src/internal/text.ts +44 -0
  714. package/src/internal/timers.ts +44 -0
  715. package/src/internal/widget.ts +92 -0
  716. package/src/markdown/ast.ts +163 -0
  717. package/src/markdown/hx.ts +51 -0
  718. package/src/markdown/index.ts +686 -0
  719. package/src/markdown/parse.ts +1037 -0
  720. package/src/markdown/spans.ts +143 -0
  721. package/src/media-player/backends.ts +155 -0
  722. package/src/media-player/control.ts +70 -0
  723. package/src/media-player/hx.ts +51 -0
  724. package/src/media-player/index.ts +378 -0
  725. package/src/media-player/mpv.ts +146 -0
  726. package/src/media-player/vlc.ts +97 -0
  727. package/src/richtext/index.ts +42 -0
  728. package/src/richtext/links.ts +78 -0
  729. package/src/richtext/menu.ts +49 -0
  730. package/src/richtext/node.ts +406 -0
  731. package/src/richtext/runs.ts +253 -0
  732. package/src/table/hx.ts +51 -0
  733. package/src/table/index.ts +1270 -0
  734. package/src/table/rows.ts +275 -0
  735. package/src/terminal/backends.ts +242 -0
  736. package/src/terminal/hx.ts +51 -0
  737. package/src/terminal/index.ts +574 -0
  738. package/src/terminal/title.ts +172 -0
  739. package/src/terminal/vt/colors.ts +247 -0
  740. package/src/terminal/vt/diff.ts +467 -0
  741. package/src/terminal/vt/fonts.ts +233 -0
  742. package/src/terminal/vt/index.ts +443 -0
  743. package/src/terminal/vt/keys.ts +369 -0
  744. package/src/terminal/vt/mouse.ts +144 -0
  745. package/src/terminal/vt/node.ts +1242 -0
  746. package/src/terminal/vt/pty.ts +334 -0
  747. package/src/terminal/vt/renderer.ts +555 -0
  748. package/src/terminal/vt/timers.ts +31 -0
  749. package/src/terminal/vt/xterm.ts +193 -0
  750. package/src/terminal-output/hx.ts +51 -0
  751. package/src/terminal-output/index.ts +340 -0
  752. package/src/terminal-output/runs.ts +79 -0
  753. package/src/three/canvas.ts +451 -0
  754. package/src/three/events.ts +197 -0
  755. package/src/three/geometries.ts +429 -0
  756. package/src/three/globals.ts +34 -0
  757. package/src/three/hx.ts +22 -0
  758. package/src/three/index.ts +98 -0
  759. package/src/three/jsx-dev-runtime.ts +27 -0
  760. package/src/three/jsx-runtime.ts +38 -0
  761. package/src/three/jsx.ts +275 -0
  762. package/src/three/materials.ts +270 -0
  763. package/src/three/math.ts +585 -0
  764. package/src/three/objects.ts +397 -0
  765. package/src/three/passes.ts +90 -0
  766. package/src/three/postprocess.ts +677 -0
  767. package/src/three/raycast.ts +189 -0
  768. package/src/three/react-reconciler.d.ts +50 -0
  769. package/src/three/reconciler.ts +624 -0
  770. package/src/three/renderer-direct.ts +1055 -0
  771. package/src/three/renderer-indirect.ts +570 -0
  772. package/src/three/store.ts +207 -0
  773. package/src/timeline/hx.ts +31 -0
  774. package/src/timeline/index.ts +603 -0
  775. package/src/tray-host/hx.ts +51 -0
  776. package/src/tray-host/index.ts +331 -0
  777. package/src/tray-host/manager.ts +639 -0
  778. package/src/tray-host/notify.ts +102 -0
  779. package/src/tray-host/protocol.ts +235 -0
  780. package/src/tree/hx.ts +51 -0
  781. package/src/tree/index.ts +1127 -0
  782. package/src/tree/internal.ts +87 -0
  783. package/src/tree/rows.ts +334 -0
  784. package/src/index.d.ts +0 -2
  785. package/src/index.js +0 -9
  786. package/src/sparkline/index.d.ts +0 -29
  787. package/src/sparkline/index.js +0 -50
  788. package/src/sparkline/node.js +0 -72
@@ -0,0 +1,725 @@
1
+ import { attr, childrenOf, isElement, isText, NON_RENDERED, tagOf, } from '../dom.js';
2
+ /**
3
+ * One box. Fields are assigned rather than passed so the shape stays
4
+ * monomorphic — every box has every field, which is what keeps the property
5
+ * access in the layout and paint loops a fixed offset rather than a
6
+ * megamorphic lookup.
7
+ */
8
+ export class Box {
9
+ kind;
10
+ el;
11
+ style;
12
+ parent = null;
13
+ children = [];
14
+ /** Border-box, in document coordinates, after layout. */
15
+ x = 0;
16
+ y = 0;
17
+ width = 0;
18
+ height = 0;
19
+ /** Resolved edges — border + padding, per side. */
20
+ borderTop = 0;
21
+ borderRight = 0;
22
+ borderBottom = 0;
23
+ borderLeft = 0;
24
+ padTop = 0;
25
+ padRight = 0;
26
+ padBottom = 0;
27
+ padLeft = 0;
28
+ marginTop = 0;
29
+ marginRight = 0;
30
+ marginBottom = 0;
31
+ marginLeft = 0;
32
+ /** Text, for a `text` box: already whitespace-processed and transformed. */
33
+ text = '';
34
+ /** This box's slice of the document text index. */
35
+ textStart = 0;
36
+ textEnd = 0;
37
+ /** Lines, for a box that established an inline formatting context. */
38
+ lines = null;
39
+ /** Intrinsic size, for a replaced box that knows one. */
40
+ intrinsicWidth = 0;
41
+ intrinsicHeight = 0;
42
+ /**
43
+ * Cached min-/max-content widths, for a table cell. -1 until measured.
44
+ *
45
+ * Intrinsic widths are width-independent by definition, so measuring them
46
+ * per layout pass was this engine breaking its own phase rule — a resize
47
+ * re-probed every cell twice and cost as much as the first layout. The
48
+ * cache lives on the box because the box's lifetime is exactly the
49
+ * invalidation rule: any DOM or style change rebuilds the tree, and a new
50
+ * box starts unmeasured.
51
+ */
52
+ intrinsicMinContent = -1;
53
+ intrinsicMaxContent = -1;
54
+ /** What a replaced box is: the resource seam and the control host both
55
+ * key on this rather than re-reading the tag. */
56
+ replaced = 'none';
57
+ /** The marker text of a `list-item`, if it generated one, and where it
58
+ * was laid out. The marker is not a box: it is not in the flow, nothing
59
+ * can select it (CSS spells that `::marker`, and no author styles it
60
+ * here), and giving it one would put a bullet in every copied list. */
61
+ markerText = '';
62
+ markerLayout = null;
63
+ markerX = 0;
64
+ markerY = 0;
65
+ /**
66
+ * The bounds of everything this box and its descendants draw, in document
67
+ * coordinates — **ink** bounds, not the border box, because `overflow:
68
+ * visible` lets a child draw outside its parent and a box-rect test would
69
+ * then cull something still on screen. Filled by `computePaintBounds`
70
+ * after layout; the paint pass culls against it.
71
+ */
72
+ boundsX = 0;
73
+ boundsY = 0;
74
+ boundsWidth = 0;
75
+ boundsHeight = 0;
76
+ /**
77
+ * The viewport query over a wide child list, built by `computePaintBounds`
78
+ * past a size threshold: the paintable in-flow children sorted by ink top,
79
+ * with each entry's document-order position and a running maximum of ink
80
+ * bottoms. What it buys is the promise this component makes about tall
81
+ * documents — the cost of a paint is the viewport's, not the document's —
82
+ * because without it every expose walked all N children of a flat
83
+ * document to reject N−20 of them.
84
+ */
85
+ paintIndex = null;
86
+ /** Out-of-flow children in paint order (z-index, then document order),
87
+ * precomputed so a paint does not filter and sort per box per frame. */
88
+ positionedPaint = null;
89
+ /** The tallest line box under this box — the slack a binary search over
90
+ * the y-sorted lines needs, since a line's bottom is not monotone. */
91
+ maxLineHeight = 0;
92
+ /**
93
+ * The document range this box's *subtree* covers, in code units. `[0, 0)`
94
+ * for a subtree with no text. Assigned once per build; the selection
95
+ * walks prune on it, which is what keeps "which pixels does this range
96
+ * cover" from touching the ninety-nine paragraphs a selection is not in.
97
+ */
98
+ subtreeTextStart = 0;
99
+ subtreeTextEnd = 0;
100
+ /** Set on a box whose `position` takes it out of flow, so the block pass
101
+ * can skip it and the positioned pass can find it. */
102
+ outOfFlow = false;
103
+ /** Set on a float, for the same reason. */
104
+ isFloat = false;
105
+ constructor(kind, el, style) {
106
+ this.kind = kind;
107
+ this.el = el;
108
+ this.style = style;
109
+ }
110
+ append(child) {
111
+ child.parent = this;
112
+ this.children.push(child);
113
+ }
114
+ /** Content-box left edge, in document coordinates. */
115
+ get contentX() {
116
+ return this.x + this.borderLeft + this.padLeft;
117
+ }
118
+ get contentY() {
119
+ return this.y + this.borderTop + this.padTop;
120
+ }
121
+ get contentWidth() {
122
+ return Math.max(0, this.width -
123
+ this.borderLeft -
124
+ this.borderRight -
125
+ this.padLeft -
126
+ this.padRight);
127
+ }
128
+ get contentHeight() {
129
+ return Math.max(0, this.height -
130
+ this.borderTop -
131
+ this.borderBottom -
132
+ this.padTop -
133
+ this.padBottom);
134
+ }
135
+ /** Border + padding across, which is what a `border-box` width already
136
+ * contains and a `content-box` width does not. */
137
+ get horizontalExtra() {
138
+ return this.borderLeft + this.borderRight + this.padLeft + this.padRight;
139
+ }
140
+ get verticalExtra() {
141
+ return this.borderTop + this.borderBottom + this.padTop + this.padBottom;
142
+ }
143
+ }
144
+ /** Build the box tree for a document. */
145
+ export function buildBoxes(root, options) {
146
+ const builder = new Builder(options);
147
+ return builder.run(root);
148
+ }
149
+ /**
150
+ * How deep the box tree may go. Everything downstream of the builder — the
151
+ * fix-up pass, layout, paint, the accessor walks — recurses on box depth, so
152
+ * this is the one bound that keeps a degenerately nested document (fuzzer
153
+ * output, a runaway template) from a stack overflow five phases later.
154
+ * Blink's parser flattens at 512 for the same reason; content past the cap
155
+ * is dropped, which beats the alternative of crashing the application.
156
+ */
157
+ const MAX_DEPTH = 512;
158
+ class Builder {
159
+ _options;
160
+ _text = '';
161
+ _textBoxes = [];
162
+ _controls = [];
163
+ _links = [];
164
+ /** Counter stack for `<ol>` numbering, one entry per open list. */
165
+ _counters = [];
166
+ _depth = 0;
167
+ constructor(options) {
168
+ this._options = options;
169
+ }
170
+ run(root) {
171
+ const cascade = this._options.cascade;
172
+ const rootStyle = cascade.rootStyle(hasBody(root));
173
+ const rootBox = new Box('block', null, rootStyle);
174
+ // The DOM's `<html>`/`<body>` are ordinary elements with ordinary styles;
175
+ // the box above them exists only to be the initial containing block, so
176
+ // it carries no margins of its own and cannot collapse with anything.
177
+ this._children(root, rootBox, rootStyle, false);
178
+ fixUp(rootBox);
179
+ assignSubtreeRanges(rootBox);
180
+ return {
181
+ root: rootBox,
182
+ text: this._text,
183
+ textBoxes: this._textBoxes,
184
+ controls: this._controls,
185
+ links: this._links,
186
+ };
187
+ }
188
+ /** Build boxes for a parent's children into `into`. */
189
+ _children(node, into, parentStyle, inFlex, owner = null) {
190
+ for (const child of childrenOf(node)) {
191
+ if (isText(child)) {
192
+ this._textNode(child.data, into, parentStyle, owner);
193
+ continue;
194
+ }
195
+ if (!isElement(child))
196
+ continue;
197
+ this._element(child, into, parentStyle, inFlex);
198
+ }
199
+ }
200
+ _element(el, into, parentStyle, inFlex) {
201
+ const tag = tagOf(el);
202
+ if (NON_RENDERED.has(tag))
203
+ return;
204
+ const style = this._options.cascade.styleFor(el, parentStyle, inFlex);
205
+ if (style.display === 'none')
206
+ return;
207
+ // `<br>` is a line break rather than a box, and it is the one element
208
+ // whose *absence* of a box still has to reach the inline layout.
209
+ if (tag === 'br') {
210
+ const box = new Box('break', el, style);
211
+ into.append(box);
212
+ this._push('\n', box);
213
+ return;
214
+ }
215
+ const replaced = replacedKind(el, tag);
216
+ if (replaced !== 'none') {
217
+ this._replaced(el, tag, replaced, style, into);
218
+ return;
219
+ }
220
+ if (this._depth >= MAX_DEPTH)
221
+ return;
222
+ const kind = boxKindFor(style.display);
223
+ const box = new Box(kind, el, style);
224
+ into.append(box);
225
+ if (style.position === 'absolute' || style.position === 'fixed')
226
+ box.outOfFlow = true;
227
+ else if (style.float !== 'none')
228
+ box.isFloat = true;
229
+ if (attr(el, 'href') && (tag === 'a' || tag === 'area'))
230
+ this._links.push(box);
231
+ if (style.display === 'list-item') {
232
+ box.markerText = markerFor(el, style, this._counters);
233
+ }
234
+ const opensCounter = tag === 'ol' || tag === 'ul';
235
+ if (opensCounter) {
236
+ const start = Number(attr(el, 'start') ?? '1');
237
+ this._counters.push(Number.isFinite(start) ? start : 1);
238
+ }
239
+ const childInFlex = style.display === 'flex' || style.display === 'inline-flex';
240
+ this._depth += 1;
241
+ this._children(el, box, style, childInFlex, el);
242
+ this._depth -= 1;
243
+ if (opensCounter)
244
+ this._counters.pop();
245
+ }
246
+ _replaced(el, tag, replaced, style, into) {
247
+ const box = new Box('replaced', el, style);
248
+ box.replaced = replaced;
249
+ into.append(box);
250
+ if (style.position === 'absolute' || style.position === 'fixed')
251
+ box.outOfFlow = true;
252
+ else if (style.float !== 'none')
253
+ box.isFloat = true;
254
+ if (replaced === 'image') {
255
+ const loaded = this._options.imageSize(el);
256
+ if (loaded) {
257
+ box.intrinsicWidth = loaded.width;
258
+ box.intrinsicHeight = loaded.height;
259
+ }
260
+ else {
261
+ // An image that has not arrived still needs a box, or the document
262
+ // reflows under the reader when it does. The attributes are the
263
+ // author telling us the size in advance; without them the box is a
264
+ // small placeholder rather than nothing.
265
+ box.intrinsicWidth = numberAttr(el, 'width') ?? 0;
266
+ box.intrinsicHeight = numberAttr(el, 'height') ?? 0;
267
+ }
268
+ // The alt text joins the document text, so a document read with the
269
+ // images blocked still copies as prose.
270
+ const alt = attr(el, 'alt');
271
+ if (alt)
272
+ this._push(alt, box);
273
+ return;
274
+ }
275
+ if (replaced === 'hr')
276
+ return;
277
+ const size = this._options.controlSize(el, replaced, style);
278
+ box.intrinsicWidth = size.width;
279
+ box.intrinsicHeight = size.height;
280
+ this._controls.push(box);
281
+ // A control's value is the widget's, not the document's: putting it in
282
+ // the selection index would make Ctrl+A copy the contents of every text
283
+ // field, which no document viewer does.
284
+ }
285
+ /** A text node, whitespace-processed per the inherited `white-space`. */
286
+ _textNode(data, into, style, owner) {
287
+ const ws = style.whiteSpace;
288
+ let text;
289
+ if (ws === 'pre' || ws === 'pre-wrap') {
290
+ text = data;
291
+ }
292
+ else if (ws === 'pre-line') {
293
+ text = data.replace(/[ \t]+/g, ' ').replace(/ *\n */g, '\n');
294
+ }
295
+ else {
296
+ text = data.replace(/[\t\n\r\f ]+/g, ' ');
297
+ // A run of whitespace against the start of a block collapses away
298
+ // entirely; between two inline boxes it collapses to one space, which
299
+ // the replace above already did.
300
+ if (text === ' ' && !hasInlineContent(into))
301
+ return;
302
+ }
303
+ if (!text)
304
+ return;
305
+ text = transformText(text, style.textTransform);
306
+ // The owning element rides on the text box, and from there onto the
307
+ // `TextRun`: hit testing inside a paragraph has no rectangle to test —
308
+ // an inline box is the runs on its lines — so the run is what has to
309
+ // know whose text it is.
310
+ const box = new Box('text', owner, style);
311
+ box.text = text;
312
+ into.append(box);
313
+ this._push(text, box);
314
+ }
315
+ /** Give a box its slice of the document text index. */
316
+ _push(text, box) {
317
+ box.textStart = this._text.length;
318
+ this._text += text;
319
+ box.textEnd = this._text.length;
320
+ if (box.kind === 'text')
321
+ this._textBoxes.push(box);
322
+ }
323
+ }
324
+ /** Whether the parsed document has a `<body>`. htmlparser2 does not
325
+ * synthesise one — it parses what it was given — so a fragment has none,
326
+ * and the root box stands in for it. */
327
+ function hasBody(root) {
328
+ for (const child of childrenOf(root)) {
329
+ if (!isElement(child))
330
+ continue;
331
+ const tag = tagOf(child);
332
+ if (tag === 'body')
333
+ return true;
334
+ if (tag === 'html' && hasBody(child))
335
+ return true;
336
+ }
337
+ return false;
338
+ }
339
+ function numberAttr(el, name) {
340
+ const raw = attr(el, name);
341
+ if (!raw)
342
+ return null;
343
+ const n = parseFloat(raw);
344
+ return Number.isFinite(n) ? n : null;
345
+ }
346
+ function hasInlineContent(box) {
347
+ for (let i = box.children.length - 1; i >= 0; i -= 1) {
348
+ const kind = box.children[i].kind;
349
+ if (kind === 'text' || kind === 'inline' || kind === 'replaced')
350
+ return true;
351
+ if (kind === 'block' || kind === 'flex' || kind === 'table')
352
+ return false;
353
+ }
354
+ return false;
355
+ }
356
+ function transformText(text, transform) {
357
+ switch (transform) {
358
+ case 'uppercase':
359
+ return text.toUpperCase();
360
+ case 'lowercase':
361
+ return text.toLowerCase();
362
+ case 'capitalize':
363
+ return text.replace(/(^|\s)(\S)/g, (_, sp, c) => sp + c.toUpperCase());
364
+ default:
365
+ return text;
366
+ }
367
+ }
368
+ function boxKindFor(display) {
369
+ switch (display) {
370
+ case 'inline':
371
+ return 'inline';
372
+ case 'flex':
373
+ case 'inline-flex':
374
+ return 'flex';
375
+ case 'table':
376
+ case 'inline-table':
377
+ return 'table';
378
+ case 'table-row-group':
379
+ case 'table-header-group':
380
+ case 'table-footer-group':
381
+ return 'table-row-group';
382
+ case 'table-row':
383
+ return 'table-row';
384
+ case 'table-cell':
385
+ return 'table-cell';
386
+ case 'table-caption':
387
+ return 'table-caption';
388
+ case 'table-column':
389
+ case 'table-column-group':
390
+ // A column box paints nothing and lays out nothing; the table reads
391
+ // its style for the column width and skips the box.
392
+ return 'block';
393
+ default:
394
+ // `inline-block` and `list-item` are block *containers* that happen to
395
+ // be inline-level or to carry a marker; both lay out inside like a
396
+ // block, and the difference is what the parent does with them.
397
+ return 'block';
398
+ }
399
+ }
400
+ function replacedKind(el, tag) {
401
+ switch (tag) {
402
+ case 'img':
403
+ return 'image';
404
+ case 'hr':
405
+ return 'hr';
406
+ case 'textarea':
407
+ return 'textarea';
408
+ case 'select':
409
+ return 'select';
410
+ case 'button':
411
+ return 'button';
412
+ case 'input': {
413
+ const type = (attr(el, 'type') ?? 'text').toLowerCase();
414
+ if (type === 'checkbox')
415
+ return 'checkbox';
416
+ if (type === 'radio')
417
+ return 'radio';
418
+ if (type === 'button' || type === 'submit' || type === 'reset')
419
+ return 'button';
420
+ if (type === 'hidden')
421
+ return 'none';
422
+ return 'input';
423
+ }
424
+ default:
425
+ return 'none';
426
+ }
427
+ }
428
+ const ROMAN = [
429
+ [1000, 'm'],
430
+ [900, 'cm'],
431
+ [500, 'd'],
432
+ [400, 'cd'],
433
+ [100, 'c'],
434
+ [90, 'xc'],
435
+ [50, 'l'],
436
+ [40, 'xl'],
437
+ [10, 'x'],
438
+ [9, 'ix'],
439
+ [5, 'v'],
440
+ [4, 'iv'],
441
+ [1, 'i'],
442
+ ];
443
+ /**
444
+ * The marker a `list-item` draws. The counter is the *builder's*, not the
445
+ * element's, because `value` on an `<li>` restarts it and a nested list has
446
+ * its own — both of which are lost if the number is derived from the index
447
+ * of the child in its parent.
448
+ */
449
+ function markerFor(el, style, counters) {
450
+ const type = style.listStyleType;
451
+ if (type === 'none')
452
+ return '';
453
+ const depth = counters.length;
454
+ if (depth) {
455
+ const value = numberAttr(el, 'value');
456
+ if (value !== null)
457
+ counters[depth - 1] = value;
458
+ }
459
+ const n = depth ? counters[depth - 1]++ : 1;
460
+ switch (type) {
461
+ case 'decimal':
462
+ return `${n}.`;
463
+ case 'decimal-leading-zero':
464
+ return `${n < 10 ? '0' : ''}${n}.`;
465
+ case 'lower-alpha':
466
+ case 'lower-latin':
467
+ return `${alpha(n).toLowerCase()}.`;
468
+ case 'upper-alpha':
469
+ case 'upper-latin':
470
+ return `${alpha(n)}.`;
471
+ case 'lower-roman':
472
+ return `${roman(n)}.`;
473
+ case 'upper-roman':
474
+ return `${roman(n).toUpperCase()}.`;
475
+ case 'circle':
476
+ return '◦';
477
+ case 'square':
478
+ return '▪';
479
+ case 'disc':
480
+ default:
481
+ return '•';
482
+ }
483
+ }
484
+ function alpha(n) {
485
+ let out = '';
486
+ let v = Math.max(1, n);
487
+ while (v > 0) {
488
+ const rem = (v - 1) % 26;
489
+ out = String.fromCharCode(65 + rem) + out;
490
+ v = Math.floor((v - 1) / 26);
491
+ }
492
+ return out;
493
+ }
494
+ function roman(n) {
495
+ let v = Math.max(1, Math.min(3999, n));
496
+ let out = '';
497
+ for (const [value, sym] of ROMAN) {
498
+ while (v >= value) {
499
+ out += sym;
500
+ v -= value;
501
+ }
502
+ }
503
+ return out;
504
+ }
505
+ /**
506
+ * Give every box the document range its subtree covers. Runs after `fixUp`,
507
+ * because fix-up reparents children into anonymous boxes and the ranges have
508
+ * to describe the tree the walks will actually traverse. Document order
509
+ * makes each subtree's range contiguous, so min/max over the children is
510
+ * exact rather than an approximation.
511
+ */
512
+ function assignSubtreeRanges(box) {
513
+ let start = box.textEnd > box.textStart ? box.textStart : Infinity;
514
+ let end = box.textEnd > box.textStart ? box.textEnd : -Infinity;
515
+ for (const child of box.children) {
516
+ const range = assignSubtreeRanges(child);
517
+ if (range.end > range.start) {
518
+ start = Math.min(start, range.start);
519
+ end = Math.max(end, range.end);
520
+ }
521
+ }
522
+ if (end <= start) {
523
+ box.subtreeTextStart = 0;
524
+ box.subtreeTextEnd = 0;
525
+ return { start: 0, end: 0 };
526
+ }
527
+ box.subtreeTextStart = start;
528
+ box.subtreeTextEnd = end;
529
+ return { start, end };
530
+ }
531
+ // --- anonymous boxes --------------------------------------------------------
532
+ /**
533
+ * The fix-up pass: CSS's anonymous box rules, applied bottom-up.
534
+ *
535
+ * Two of them, and both are the difference between a document that lays out
536
+ * and one that silently drops content:
537
+ *
538
+ * - **A block container with a mix of block-level and inline-level children
539
+ * wraps each run of inline children in an anonymous block.** Without it
540
+ * `<div>text<p>para</p></div>` has to decide whether the div is a block
541
+ * context or an inline one, and either answer loses something.
542
+ * - **A table's structure is completed.** Real documents write `<table>`
543
+ * straight to `<tr>`, and CSS says the missing row group is generated
544
+ * rather than the rows being dropped.
545
+ */
546
+ function fixUp(box) {
547
+ for (const child of box.children)
548
+ fixUp(child);
549
+ if (box.kind === 'table') {
550
+ fixUpTable(box);
551
+ return;
552
+ }
553
+ if (box.kind === 'table-row-group') {
554
+ wrapOrphans(box, 'table-row', (k) => k === 'table-row');
555
+ return;
556
+ }
557
+ if (box.kind === 'table-row') {
558
+ wrapOrphans(box, 'table-cell', (k) => k === 'table-cell');
559
+ return;
560
+ }
561
+ if (!box.children.length)
562
+ return;
563
+ let hasBlockLevel = false;
564
+ let hasInlineLevel = false;
565
+ for (const child of box.children) {
566
+ if (child.outOfFlow)
567
+ continue;
568
+ if (isBlockLevel(child))
569
+ hasBlockLevel = true;
570
+ else
571
+ hasInlineLevel = true;
572
+ }
573
+ // A flex container has no inline formatting context at all: every run of
574
+ // inline-level content becomes an anonymous flex *item*, whether or not a
575
+ // block-level sibling forced the question. `<div style="display:flex">some
576
+ // text</div>` is the case the mixed-content rule alone drops on the floor —
577
+ // all-inline children, so no wrapping, so the flex pass finds bare text
578
+ // boxes it cannot lay out and renders nothing.
579
+ const wrapAllInline = box.kind === 'flex';
580
+ if (!wrapAllInline && (!hasBlockLevel || !hasInlineLevel))
581
+ return;
582
+ if (wrapAllInline && !hasInlineLevel)
583
+ return;
584
+ const next = [];
585
+ let run = null;
586
+ for (const child of box.children) {
587
+ // A float or an absolutely positioned box sits in whichever context it
588
+ // finds itself; it does not force an anonymous block on its own.
589
+ if (isBlockLevel(child) && !child.outOfFlow && !child.isFloat) {
590
+ if (run) {
591
+ next.push(anonymousBlock(box, run));
592
+ run = null;
593
+ }
594
+ next.push(child);
595
+ continue;
596
+ }
597
+ // Whitespace between two blocks is not content and must not generate a
598
+ // line box — `<div><p>a</p> <p>b</p></div>` has no blank line in it.
599
+ if (!run && child.kind === 'text' && !child.text.trim())
600
+ continue;
601
+ (run ??= []).push(child);
602
+ }
603
+ if (run) {
604
+ if (run.every((c) => c.kind === 'text' && !c.text.trim())) {
605
+ // trailing whitespace after the last block: same rule
606
+ }
607
+ else {
608
+ next.push(anonymousBlock(box, run));
609
+ }
610
+ }
611
+ box.children = next;
612
+ }
613
+ function anonymousBlock(parent, run) {
614
+ const box = new Box('block', null, parent.style);
615
+ box.parent = parent;
616
+ for (const child of run) {
617
+ child.parent = box;
618
+ box.children.push(child);
619
+ }
620
+ return box;
621
+ }
622
+ function isBlockLevel(box) {
623
+ switch (box.kind) {
624
+ case 'block':
625
+ case 'flex':
626
+ case 'table':
627
+ case 'table-row':
628
+ case 'table-row-group':
629
+ case 'table-cell':
630
+ case 'table-caption':
631
+ // An `inline-block` or `inline-flex` is a block *container* with an
632
+ // inline-level outer role, so it belongs to the inline run around it.
633
+ return !isInlineLevelDisplay(box.style.display);
634
+ default:
635
+ return false;
636
+ }
637
+ }
638
+ function isInlineLevelDisplay(display) {
639
+ return (display === 'inline-block' ||
640
+ display === 'inline-flex' ||
641
+ display === 'inline-table');
642
+ }
643
+ /** Wrap children that are not of `expect` in an anonymous box that is. */
644
+ function wrapOrphans(box, kind, accept) {
645
+ let needed = false;
646
+ for (const child of box.children) {
647
+ if (!accept(child.kind) && !isDroppableWhitespace(child)) {
648
+ needed = true;
649
+ break;
650
+ }
651
+ }
652
+ if (!needed)
653
+ return;
654
+ const next = [];
655
+ let run = null;
656
+ for (const child of box.children) {
657
+ if (accept(child.kind)) {
658
+ if (run) {
659
+ next.push(anonymousOf(box, kind, run));
660
+ run = null;
661
+ }
662
+ next.push(child);
663
+ continue;
664
+ }
665
+ if (isDroppableWhitespace(child))
666
+ continue;
667
+ (run ??= []).push(child);
668
+ }
669
+ if (run)
670
+ next.push(anonymousOf(box, kind, run));
671
+ box.children = next;
672
+ }
673
+ function anonymousOf(parent, kind, run) {
674
+ const box = new Box(kind, null, parent.style);
675
+ box.parent = parent;
676
+ for (const child of run) {
677
+ child.parent = box;
678
+ box.children.push(child);
679
+ }
680
+ return box;
681
+ }
682
+ function isDroppableWhitespace(box) {
683
+ return box.kind === 'text' && !box.text.trim();
684
+ }
685
+ function fixUpTable(table) {
686
+ const groups = [];
687
+ const captions = [];
688
+ let looseRows = null;
689
+ for (const child of table.children) {
690
+ if (child.kind === 'table-row-group') {
691
+ if (looseRows) {
692
+ groups.push(anonymousOf(table, 'table-row-group', looseRows));
693
+ looseRows = null;
694
+ }
695
+ groups.push(child);
696
+ }
697
+ else if (child.kind === 'table-caption') {
698
+ captions.push(child);
699
+ }
700
+ else if (isDroppableWhitespace(child)) {
701
+ continue;
702
+ }
703
+ else {
704
+ // A `<tr>`, or anything else that ended up here: rows go into an
705
+ // anonymous group, and anything that is not a row becomes a cell in
706
+ // one, which is how a browser rescues `<table>text</table>`.
707
+ const row = child.kind === 'table-row'
708
+ ? child
709
+ : anonymousOf(table, 'table-row', [child]);
710
+ (looseRows ??= []).push(row);
711
+ }
712
+ }
713
+ if (looseRows)
714
+ groups.push(anonymousOf(table, 'table-row-group', looseRows));
715
+ for (const group of groups) {
716
+ wrapOrphans(group, 'table-row', (k) => k === 'table-row');
717
+ for (const row of group.children) {
718
+ wrapOrphans(row, 'table-cell', (k) => k === 'table-cell');
719
+ }
720
+ }
721
+ table.children = [...captions, ...groups];
722
+ for (const child of table.children)
723
+ child.parent = table;
724
+ }
725
+ //# sourceMappingURL=boxes.js.map