@react-x11/components 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (721) hide show
  1. package/README.md +105 -38
  2. package/dist/charts/node.d.ts +12 -2
  3. package/dist/charts/node.d.ts.map +1 -1
  4. package/dist/charts/node.js +50 -16
  5. package/dist/charts/node.js.map +1 -1
  6. package/dist/charts/render.d.ts +12 -3
  7. package/dist/charts/render.d.ts.map +1 -1
  8. package/dist/charts/render.js +94 -25
  9. package/dist/charts/render.js.map +1 -1
  10. package/dist/code/index.d.ts.map +1 -1
  11. package/dist/code/index.js +3 -1
  12. package/dist/code/index.js.map +1 -1
  13. package/dist/code-editor/completion.d.ts.map +1 -1
  14. package/dist/code-editor/completion.js +3 -2
  15. package/dist/code-editor/completion.js.map +1 -1
  16. package/dist/code-editor/index.d.ts.map +1 -1
  17. package/dist/code-editor/index.js +19 -0
  18. package/dist/code-editor/index.js.map +1 -1
  19. package/dist/code-editor/node.d.ts +177 -7
  20. package/dist/code-editor/node.d.ts.map +1 -1
  21. package/dist/code-editor/node.js +1329 -164
  22. package/dist/code-editor/node.js.map +1 -1
  23. package/dist/code-language/languages/glsl.d.ts.map +1 -1
  24. package/dist/code-language/languages/glsl.js +10 -2
  25. package/dist/code-language/languages/glsl.js.map +1 -1
  26. package/dist/code-language/languages/javascript.d.ts.map +1 -1
  27. package/dist/code-language/languages/javascript.js +18 -3
  28. package/dist/code-language/languages/javascript.js.map +1 -1
  29. package/dist/code-language/languages/json.d.ts.map +1 -1
  30. package/dist/code-language/languages/json.js +10 -2
  31. package/dist/code-language/languages/json.js.map +1 -1
  32. package/dist/code-language/languages/shell.d.ts.map +1 -1
  33. package/dist/code-language/languages/shell.js +10 -2
  34. package/dist/code-language/languages/shell.js.map +1 -1
  35. package/dist/code-language/languages/sql.d.ts.map +1 -1
  36. package/dist/code-language/languages/sql.js +20 -2
  37. package/dist/code-language/languages/sql.js.map +1 -1
  38. package/dist/code-language/stream.d.ts +22 -0
  39. package/dist/code-language/stream.d.ts.map +1 -1
  40. package/dist/code-language/stream.js +259 -9
  41. package/dist/code-language/stream.js.map +1 -1
  42. package/dist/code-language/types.d.ts +5 -4
  43. package/dist/code-language/types.d.ts.map +1 -1
  44. package/dist/codeblock/index.d.ts +13 -2
  45. package/dist/codeblock/index.d.ts.map +1 -1
  46. package/dist/codeblock/index.js +20 -3
  47. package/dist/codeblock/index.js.map +1 -1
  48. package/dist/embed/client.d.ts +48 -3
  49. package/dist/embed/client.d.ts.map +1 -1
  50. package/dist/embed/client.js +79 -5
  51. package/dist/embed/client.js.map +1 -1
  52. package/dist/embed/index.d.ts +1 -1
  53. package/dist/embed/index.d.ts.map +1 -1
  54. package/dist/embed/index.js +1 -1
  55. package/dist/embed/index.js.map +1 -1
  56. package/dist/flow/draw.d.ts +50 -0
  57. package/dist/flow/draw.d.ts.map +1 -1
  58. package/dist/flow/draw.js +132 -33
  59. package/dist/flow/draw.js.map +1 -1
  60. package/dist/flow/gl/color.d.ts +13 -0
  61. package/dist/flow/gl/color.d.ts.map +1 -0
  62. package/dist/flow/gl/color.js +82 -0
  63. package/dist/flow/gl/color.js.map +1 -0
  64. package/dist/flow/gl/index.d.ts +60 -0
  65. package/dist/flow/gl/index.d.ts.map +1 -0
  66. package/dist/flow/gl/index.js +283 -0
  67. package/dist/flow/gl/index.js.map +1 -0
  68. package/dist/flow/gl/pack.d.ts +133 -0
  69. package/dist/flow/gl/pack.d.ts.map +1 -0
  70. package/dist/flow/gl/pack.js +408 -0
  71. package/dist/flow/gl/pack.js.map +1 -0
  72. package/dist/flow/gl/renderer.d.ts +95 -0
  73. package/dist/flow/gl/renderer.d.ts.map +1 -0
  74. package/dist/flow/gl/renderer.js +459 -0
  75. package/dist/flow/gl/renderer.js.map +1 -0
  76. package/dist/flow/gl/shaders.d.ts +79 -0
  77. package/dist/flow/gl/shaders.d.ts.map +1 -0
  78. package/dist/flow/gl/shaders.js +346 -0
  79. package/dist/flow/gl/shaders.js.map +1 -0
  80. package/dist/flow/gl/text.d.ts +318 -0
  81. package/dist/flow/gl/text.d.ts.map +1 -0
  82. package/dist/flow/gl/text.js +1103 -0
  83. package/dist/flow/gl/text.js.map +1 -0
  84. package/dist/flow/index.d.ts +1 -1
  85. package/dist/flow/index.d.ts.map +1 -1
  86. package/dist/flow/index.js +619 -64
  87. package/dist/flow/index.js.map +1 -1
  88. package/dist/flow/node.d.ts +621 -72
  89. package/dist/flow/node.d.ts.map +1 -1
  90. package/dist/flow/node.js +2253 -1018
  91. package/dist/flow/node.js.map +1 -1
  92. package/dist/flow/paint.d.ts +35 -0
  93. package/dist/flow/paint.d.ts.map +1 -0
  94. package/dist/flow/paint.js +393 -0
  95. package/dist/flow/paint.js.map +1 -0
  96. package/dist/flow/paths.d.ts +14 -0
  97. package/dist/flow/paths.d.ts.map +1 -1
  98. package/dist/flow/paths.js +45 -19
  99. package/dist/flow/paths.js.map +1 -1
  100. package/dist/flow/scene.d.ts +584 -0
  101. package/dist/flow/scene.d.ts.map +1 -0
  102. package/dist/flow/scene.js +1453 -0
  103. package/dist/flow/scene.js.map +1 -0
  104. package/dist/flow/types.d.ts +111 -1
  105. package/dist/flow/types.d.ts.map +1 -1
  106. package/dist/html/controls.d.ts +28 -0
  107. package/dist/html/controls.d.ts.map +1 -1
  108. package/dist/html/controls.js +52 -2
  109. package/dist/html/controls.js.map +1 -1
  110. package/dist/html/css/calc.d.ts +14 -0
  111. package/dist/html/css/calc.d.ts.map +1 -0
  112. package/dist/html/css/calc.js +344 -0
  113. package/dist/html/css/calc.js.map +1 -0
  114. package/dist/html/css/cascade.d.ts +240 -6
  115. package/dist/html/css/cascade.d.ts.map +1 -1
  116. package/dist/html/css/cascade.js +1327 -66
  117. package/dist/html/css/cascade.js.map +1 -1
  118. package/dist/html/css/color.d.ts +23 -0
  119. package/dist/html/css/color.d.ts.map +1 -0
  120. package/dist/html/css/color.js +740 -0
  121. package/dist/html/css/color.js.map +1 -0
  122. package/dist/html/css/content.d.ts +92 -0
  123. package/dist/html/css/content.d.ts.map +1 -0
  124. package/dist/html/css/content.js +388 -0
  125. package/dist/html/css/content.js.map +1 -0
  126. package/dist/html/css/counter-styles.d.ts +76 -0
  127. package/dist/html/css/counter-styles.d.ts.map +1 -0
  128. package/dist/html/css/counter-styles.js +893 -0
  129. package/dist/html/css/counter-styles.js.map +1 -0
  130. package/dist/html/css/decode.d.ts +12 -0
  131. package/dist/html/css/decode.d.ts.map +1 -0
  132. package/dist/html/css/decode.js +116 -0
  133. package/dist/html/css/decode.js.map +1 -0
  134. package/dist/html/css/parse.d.ts +110 -10
  135. package/dist/html/css/parse.d.ts.map +1 -1
  136. package/dist/html/css/parse.js +1473 -180
  137. package/dist/html/css/parse.js.map +1 -1
  138. package/dist/html/css/style.d.ts +498 -15
  139. package/dist/html/css/style.d.ts.map +1 -1
  140. package/dist/html/css/style.js +3698 -206
  141. package/dist/html/css/style.js.map +1 -1
  142. package/dist/html/css/ua.d.ts.map +1 -1
  143. package/dist/html/css/ua.js +57 -11
  144. package/dist/html/css/ua.js.map +1 -1
  145. package/dist/html/css/values.d.ts +37 -3
  146. package/dist/html/css/values.d.ts.map +1 -1
  147. package/dist/html/css/values.js +122 -48
  148. package/dist/html/css/values.js.map +1 -1
  149. package/dist/html/css/vars.d.ts +52 -0
  150. package/dist/html/css/vars.d.ts.map +1 -0
  151. package/dist/html/css/vars.js +358 -0
  152. package/dist/html/css/vars.js.map +1 -0
  153. package/dist/html/dom.d.ts +30 -4
  154. package/dist/html/dom.d.ts.map +1 -1
  155. package/dist/html/dom.js +278 -17
  156. package/dist/html/dom.js.map +1 -1
  157. package/dist/html/fonts.d.ts +106 -0
  158. package/dist/html/fonts.d.ts.map +1 -0
  159. package/dist/html/fonts.js +565 -0
  160. package/dist/html/fonts.js.map +1 -0
  161. package/dist/html/gif.d.ts +15 -0
  162. package/dist/html/gif.d.ts.map +1 -0
  163. package/dist/html/gif.js +229 -0
  164. package/dist/html/gif.js.map +1 -0
  165. package/dist/html/index.d.ts +50 -11
  166. package/dist/html/index.d.ts.map +1 -1
  167. package/dist/html/index.js +115 -9
  168. package/dist/html/index.js.map +1 -1
  169. package/dist/html/layout/block.d.ts +226 -3
  170. package/dist/html/layout/block.d.ts.map +1 -1
  171. package/dist/html/layout/block.js +2937 -197
  172. package/dist/html/layout/block.js.map +1 -1
  173. package/dist/html/layout/boxes.d.ts +340 -17
  174. package/dist/html/layout/boxes.d.ts.map +1 -1
  175. package/dist/html/layout/boxes.js +1714 -182
  176. package/dist/html/layout/boxes.js.map +1 -1
  177. package/dist/html/layout/cache.d.ts +58 -0
  178. package/dist/html/layout/cache.d.ts.map +1 -0
  179. package/dist/html/layout/cache.js +224 -0
  180. package/dist/html/layout/cache.js.map +1 -0
  181. package/dist/html/layout/collapse.d.ts +45 -0
  182. package/dist/html/layout/collapse.d.ts.map +1 -0
  183. package/dist/html/layout/collapse.js +246 -0
  184. package/dist/html/layout/collapse.js.map +1 -0
  185. package/dist/html/layout/css-grid.d.ts +7 -0
  186. package/dist/html/layout/css-grid.d.ts.map +1 -0
  187. package/dist/html/layout/css-grid.js +900 -0
  188. package/dist/html/layout/css-grid.js.map +1 -0
  189. package/dist/html/layout/flex.d.ts.map +1 -1
  190. package/dist/html/layout/flex.js +1025 -89
  191. package/dist/html/layout/flex.js.map +1 -1
  192. package/dist/html/layout/floats.d.ts +45 -6
  193. package/dist/html/layout/floats.d.ts.map +1 -1
  194. package/dist/html/layout/floats.js +113 -14
  195. package/dist/html/layout/floats.js.map +1 -1
  196. package/dist/html/layout/grid-lines.d.ts +39 -0
  197. package/dist/html/layout/grid-lines.d.ts.map +1 -0
  198. package/dist/html/layout/grid-lines.js +119 -0
  199. package/dist/html/layout/grid-lines.js.map +1 -0
  200. package/dist/html/layout/grid.d.ts +53 -0
  201. package/dist/html/layout/grid.d.ts.map +1 -0
  202. package/dist/html/layout/grid.js +153 -0
  203. package/dist/html/layout/grid.js.map +1 -0
  204. package/dist/html/layout/inline.d.ts +151 -1
  205. package/dist/html/layout/inline.d.ts.map +1 -1
  206. package/dist/html/layout/inline.js +3375 -174
  207. package/dist/html/layout/inline.js.map +1 -1
  208. package/dist/html/layout/shaping.d.ts +6 -0
  209. package/dist/html/layout/shaping.d.ts.map +1 -0
  210. package/dist/html/layout/shaping.js +100 -0
  211. package/dist/html/layout/shaping.js.map +1 -0
  212. package/dist/html/layout/table.d.ts +3 -0
  213. package/dist/html/layout/table.d.ts.map +1 -1
  214. package/dist/html/layout/table.js +681 -175
  215. package/dist/html/layout/table.js.map +1 -1
  216. package/dist/html/layout/tracks.d.ts +44 -0
  217. package/dist/html/layout/tracks.d.ts.map +1 -0
  218. package/dist/html/layout/tracks.js +349 -0
  219. package/dist/html/layout/tracks.js.map +1 -0
  220. package/dist/html/node.d.ts +172 -5
  221. package/dist/html/node.d.ts.map +1 -1
  222. package/dist/html/node.js +1336 -103
  223. package/dist/html/node.js.map +1 -1
  224. package/dist/html/paint.d.ts +92 -3
  225. package/dist/html/paint.d.ts.map +1 -1
  226. package/dist/html/paint.js +3503 -141
  227. package/dist/html/paint.js.map +1 -1
  228. package/dist/html/resources.d.ts +60 -14
  229. package/dist/html/resources.d.ts.map +1 -1
  230. package/dist/html/resources.js +122 -36
  231. package/dist/html/resources.js.map +1 -1
  232. package/dist/html/surfaces.d.ts +23 -0
  233. package/dist/html/surfaces.d.ts.map +1 -0
  234. package/dist/html/surfaces.js +68 -0
  235. package/dist/html/surfaces.js.map +1 -0
  236. package/dist/html/svg.d.ts +80 -0
  237. package/dist/html/svg.d.ts.map +1 -0
  238. package/dist/html/svg.js +435 -0
  239. package/dist/html/svg.js.map +1 -0
  240. package/dist/html/url.d.ts +23 -0
  241. package/dist/html/url.d.ts.map +1 -0
  242. package/dist/html/url.js +80 -0
  243. package/dist/html/url.js.map +1 -0
  244. package/dist/index.d.ts +2 -2
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js +1 -1
  247. package/dist/index.js.map +1 -1
  248. package/dist/internal/collate.d.ts +3 -0
  249. package/dist/internal/collate.d.ts.map +1 -0
  250. package/dist/internal/collate.js +11 -0
  251. package/dist/internal/collate.js.map +1 -0
  252. package/dist/{markdown → internal/markdown}/ast.d.ts +23 -0
  253. package/dist/internal/markdown/ast.d.ts.map +1 -0
  254. package/dist/internal/markdown/ast.js +22 -0
  255. package/dist/internal/markdown/ast.js.map +1 -0
  256. package/dist/internal/markdown/parse.d.ts.map +1 -0
  257. package/dist/{markdown → internal/markdown}/parse.js +221 -30
  258. package/dist/internal/markdown/parse.js.map +1 -0
  259. package/dist/internal/markdown/stringify.d.ts +4 -0
  260. package/dist/internal/markdown/stringify.d.ts.map +1 -0
  261. package/dist/internal/markdown/stringify.js +684 -0
  262. package/dist/internal/markdown/stringify.js.map +1 -0
  263. package/dist/internal/markdown/tags.d.ts.map +1 -0
  264. package/dist/internal/markdown/tags.js.map +1 -0
  265. package/dist/internal/prewarm.d.ts +18 -0
  266. package/dist/internal/prewarm.d.ts.map +1 -0
  267. package/dist/internal/prewarm.js +42 -0
  268. package/dist/internal/prewarm.js.map +1 -0
  269. package/dist/internal/scroll.d.ts +3 -2
  270. package/dist/internal/scroll.d.ts.map +1 -1
  271. package/dist/internal/scroll.js +1 -0
  272. package/dist/internal/scroll.js.map +1 -1
  273. package/dist/internal/sdf.d.ts +20 -0
  274. package/dist/internal/sdf.d.ts.map +1 -0
  275. package/dist/internal/sdf.js +216 -0
  276. package/dist/internal/sdf.js.map +1 -0
  277. package/dist/internal/splice.d.ts +12 -0
  278. package/dist/internal/splice.d.ts.map +1 -0
  279. package/dist/internal/splice.js +23 -0
  280. package/dist/internal/splice.js.map +1 -0
  281. package/dist/internal/window.d.ts +12 -0
  282. package/dist/internal/window.d.ts.map +1 -1
  283. package/dist/internal/window.js +23 -6
  284. package/dist/internal/window.js.map +1 -1
  285. package/dist/maps/anchors.d.ts +103 -0
  286. package/dist/maps/anchors.d.ts.map +1 -0
  287. package/dist/maps/anchors.js +790 -0
  288. package/dist/maps/anchors.js.map +1 -0
  289. package/dist/maps/controller.d.ts +340 -0
  290. package/dist/maps/controller.d.ts.map +1 -0
  291. package/dist/maps/controller.js +822 -0
  292. package/dist/maps/controller.js.map +1 -0
  293. package/dist/maps/gl/buckets.d.ts +99 -0
  294. package/dist/maps/gl/buckets.d.ts.map +1 -0
  295. package/dist/maps/gl/buckets.js +365 -0
  296. package/dist/maps/gl/buckets.js.map +1 -0
  297. package/dist/maps/gl/build-worker.d.ts +15 -0
  298. package/dist/maps/gl/build-worker.d.ts.map +1 -0
  299. package/dist/maps/gl/build-worker.js +44 -0
  300. package/dist/maps/gl/build-worker.js.map +1 -0
  301. package/dist/maps/gl/color.d.ts +8 -0
  302. package/dist/maps/gl/color.d.ts.map +1 -0
  303. package/dist/maps/gl/color.js +57 -0
  304. package/dist/maps/gl/color.js.map +1 -0
  305. package/dist/maps/gl/cover.d.ts +70 -0
  306. package/dist/maps/gl/cover.d.ts.map +1 -0
  307. package/dist/maps/gl/cover.js +137 -0
  308. package/dist/maps/gl/cover.js.map +1 -0
  309. package/dist/maps/gl/index.d.ts +3 -0
  310. package/dist/maps/gl/index.d.ts.map +1 -0
  311. package/dist/maps/gl/index.js +20 -0
  312. package/dist/maps/gl/index.js.map +1 -0
  313. package/dist/maps/gl/markers.d.ts +28 -0
  314. package/dist/maps/gl/markers.d.ts.map +1 -0
  315. package/dist/maps/gl/markers.js +60 -0
  316. package/dist/maps/gl/markers.js.map +1 -0
  317. package/dist/maps/gl/overlays.d.ts +68 -0
  318. package/dist/maps/gl/overlays.d.ts.map +1 -0
  319. package/dist/maps/gl/overlays.js +300 -0
  320. package/dist/maps/gl/overlays.js.map +1 -0
  321. package/dist/maps/gl/pane.d.ts +12 -0
  322. package/dist/maps/gl/pane.d.ts.map +1 -0
  323. package/dist/maps/gl/pane.js +37 -0
  324. package/dist/maps/gl/pane.js.map +1 -0
  325. package/dist/maps/gl/placement.d.ts +124 -0
  326. package/dist/maps/gl/placement.d.ts.map +1 -0
  327. package/dist/maps/gl/placement.js +642 -0
  328. package/dist/maps/gl/placement.js.map +1 -0
  329. package/dist/maps/gl/renderer.d.ts +384 -0
  330. package/dist/maps/gl/renderer.d.ts.map +1 -0
  331. package/dist/maps/gl/renderer.js +1184 -0
  332. package/dist/maps/gl/renderer.js.map +1 -0
  333. package/dist/maps/gl/shaders.d.ts +121 -0
  334. package/dist/maps/gl/shaders.d.ts.map +1 -0
  335. package/dist/maps/gl/shaders.js +453 -0
  336. package/dist/maps/gl/shaders.js.map +1 -0
  337. package/dist/maps/gl/store.d.ts +125 -0
  338. package/dist/maps/gl/store.d.ts.map +1 -0
  339. package/dist/maps/gl/store.js +512 -0
  340. package/dist/maps/gl/store.js.map +1 -0
  341. package/dist/maps/gl/text.d.ts +283 -0
  342. package/dist/maps/gl/text.d.ts.map +1 -0
  343. package/dist/maps/gl/text.js +698 -0
  344. package/dist/maps/gl/text.js.map +1 -0
  345. package/dist/maps/gl/view.d.ts +345 -0
  346. package/dist/maps/gl/view.d.ts.map +1 -0
  347. package/dist/maps/gl/view.js +1209 -0
  348. package/dist/maps/gl/view.js.map +1 -0
  349. package/dist/maps/icons.d.ts +32 -0
  350. package/dist/maps/icons.d.ts.map +1 -0
  351. package/dist/maps/icons.js +151 -0
  352. package/dist/maps/icons.js.map +1 -0
  353. package/dist/maps/index.d.ts +3 -1
  354. package/dist/maps/index.d.ts.map +1 -1
  355. package/dist/maps/index.js +218 -52
  356. package/dist/maps/index.js.map +1 -1
  357. package/dist/maps/labels.d.ts +91 -18
  358. package/dist/maps/labels.d.ts.map +1 -1
  359. package/dist/maps/labels.js +376 -140
  360. package/dist/maps/labels.js.map +1 -1
  361. package/dist/maps/node.d.ts +179 -56
  362. package/dist/maps/node.d.ts.map +1 -1
  363. package/dist/maps/node.js +663 -537
  364. package/dist/maps/node.js.map +1 -1
  365. package/dist/maps/overlay.d.ts +72 -9
  366. package/dist/maps/overlay.d.ts.map +1 -1
  367. package/dist/maps/overlay.js +108 -28
  368. package/dist/maps/overlay.js.map +1 -1
  369. package/dist/maps/paint.d.ts +3 -0
  370. package/dist/maps/paint.d.ts.map +1 -1
  371. package/dist/maps/paint.js.map +1 -1
  372. package/dist/maps/proj.d.ts +62 -0
  373. package/dist/maps/proj.d.ts.map +1 -1
  374. package/dist/maps/proj.js +101 -0
  375. package/dist/maps/proj.js.map +1 -1
  376. package/dist/maps/renderer.d.ts +69 -0
  377. package/dist/maps/renderer.d.ts.map +1 -0
  378. package/dist/maps/renderer.js +66 -0
  379. package/dist/maps/renderer.js.map +1 -0
  380. package/dist/maps/sources.d.ts +30 -6
  381. package/dist/maps/sources.d.ts.map +1 -1
  382. package/dist/maps/sources.js +22 -3
  383. package/dist/maps/sources.js.map +1 -1
  384. package/dist/maps/style.d.ts +35 -0
  385. package/dist/maps/style.d.ts.map +1 -1
  386. package/dist/maps/style.js.map +1 -1
  387. package/dist/maps/styles.d.ts +12 -0
  388. package/dist/maps/styles.d.ts.map +1 -1
  389. package/dist/maps/styles.js +120 -6
  390. package/dist/maps/styles.js.map +1 -1
  391. package/dist/maps/theme.d.ts +19 -0
  392. package/dist/maps/theme.d.ts.map +1 -0
  393. package/dist/maps/theme.js +44 -0
  394. package/dist/maps/theme.js.map +1 -0
  395. package/dist/maps/tiles.d.ts +147 -27
  396. package/dist/maps/tiles.d.ts.map +1 -1
  397. package/dist/maps/tiles.js +221 -54
  398. package/dist/maps/tiles.js.map +1 -1
  399. package/dist/maps/types.d.ts +213 -21
  400. package/dist/maps/types.d.ts.map +1 -1
  401. package/dist/markdown/expressions.d.ts +1 -1
  402. package/dist/markdown/expressions.d.ts.map +1 -1
  403. package/dist/markdown/expressions.js.map +1 -1
  404. package/dist/markdown/index.d.ts +7 -6
  405. package/dist/markdown/index.d.ts.map +1 -1
  406. package/dist/markdown/index.js +121 -50
  407. package/dist/markdown/index.js.map +1 -1
  408. package/dist/markdown/spans.d.ts +1 -1
  409. package/dist/markdown/spans.d.ts.map +1 -1
  410. package/dist/markdown/spans.js +6 -0
  411. package/dist/markdown/spans.js.map +1 -1
  412. package/dist/media-player/index.d.ts +11 -3
  413. package/dist/media-player/index.d.ts.map +1 -1
  414. package/dist/media-player/index.js +13 -2
  415. package/dist/media-player/index.js.map +1 -1
  416. package/dist/qml/containers.d.ts.map +1 -1
  417. package/dist/qml/containers.js +6 -1
  418. package/dist/qml/containers.js.map +1 -1
  419. package/dist/qml/interaction.d.ts.map +1 -1
  420. package/dist/qml/interaction.js +38 -5
  421. package/dist/qml/interaction.js.map +1 -1
  422. package/dist/qml/layouts.d.ts.map +1 -1
  423. package/dist/qml/layouts.js +21 -6
  424. package/dist/qml/layouts.js.map +1 -1
  425. package/dist/qml/qtquick.d.ts.map +1 -1
  426. package/dist/qml/qtquick.js +9 -2
  427. package/dist/qml/qtquick.js.map +1 -1
  428. package/dist/qml/react.d.ts.map +1 -1
  429. package/dist/qml/react.js +9 -7
  430. package/dist/qml/react.js.map +1 -1
  431. package/dist/reorder/clock.d.ts +7 -0
  432. package/dist/reorder/clock.d.ts.map +1 -0
  433. package/dist/reorder/clock.js +26 -0
  434. package/dist/reorder/clock.js.map +1 -0
  435. package/dist/reorder/index.d.ts +25 -3
  436. package/dist/reorder/index.d.ts.map +1 -1
  437. package/dist/reorder/index.js +64 -19
  438. package/dist/reorder/index.js.map +1 -1
  439. package/dist/rich-text-editor/clipboard.d.ts +23 -0
  440. package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
  441. package/dist/rich-text-editor/clipboard.js +307 -0
  442. package/dist/rich-text-editor/clipboard.js.map +1 -0
  443. package/dist/rich-text-editor/collab.d.ts +32 -0
  444. package/dist/rich-text-editor/collab.d.ts.map +1 -0
  445. package/dist/rich-text-editor/collab.js +55 -0
  446. package/dist/rich-text-editor/collab.js.map +1 -0
  447. package/dist/rich-text-editor/commands.d.ts +50 -0
  448. package/dist/rich-text-editor/commands.d.ts.map +1 -0
  449. package/dist/rich-text-editor/commands.js +376 -0
  450. package/dist/rich-text-editor/commands.js.map +1 -0
  451. package/dist/rich-text-editor/drag.d.ts +68 -0
  452. package/dist/rich-text-editor/drag.d.ts.map +1 -0
  453. package/dist/rich-text-editor/drag.js +148 -0
  454. package/dist/rich-text-editor/drag.js.map +1 -0
  455. package/dist/rich-text-editor/html.d.ts +145 -0
  456. package/dist/rich-text-editor/html.d.ts.map +1 -0
  457. package/dist/rich-text-editor/html.js +516 -0
  458. package/dist/rich-text-editor/html.js.map +1 -0
  459. package/dist/rich-text-editor/index.d.ts +252 -0
  460. package/dist/rich-text-editor/index.d.ts.map +1 -0
  461. package/dist/rich-text-editor/index.js +856 -0
  462. package/dist/rich-text-editor/index.js.map +1 -0
  463. package/dist/rich-text-editor/inline.d.ts +94 -0
  464. package/dist/rich-text-editor/inline.d.ts.map +1 -0
  465. package/dist/rich-text-editor/inline.js +252 -0
  466. package/dist/rich-text-editor/inline.js.map +1 -0
  467. package/dist/rich-text-editor/keymap.d.ts +71 -0
  468. package/dist/rich-text-editor/keymap.d.ts.map +1 -0
  469. package/dist/rich-text-editor/keymap.js +394 -0
  470. package/dist/rich-text-editor/keymap.js.map +1 -0
  471. package/dist/rich-text-editor/keys.d.ts +40 -0
  472. package/dist/rich-text-editor/keys.d.ts.map +1 -0
  473. package/dist/rich-text-editor/keys.js +202 -0
  474. package/dist/rich-text-editor/keys.js.map +1 -0
  475. package/dist/rich-text-editor/look.d.ts +71 -0
  476. package/dist/rich-text-editor/look.d.ts.map +1 -0
  477. package/dist/rich-text-editor/look.js +342 -0
  478. package/dist/rich-text-editor/look.js.map +1 -0
  479. package/dist/rich-text-editor/markdown.d.ts +18 -0
  480. package/dist/rich-text-editor/markdown.d.ts.map +1 -0
  481. package/dist/rich-text-editor/markdown.js +496 -0
  482. package/dist/rich-text-editor/markdown.js.map +1 -0
  483. package/dist/rich-text-editor/marks.d.ts +9 -0
  484. package/dist/rich-text-editor/marks.d.ts.map +1 -0
  485. package/dist/rich-text-editor/marks.js +83 -0
  486. package/dist/rich-text-editor/marks.js.map +1 -0
  487. package/dist/rich-text-editor/nodes.d.ts +135 -0
  488. package/dist/rich-text-editor/nodes.d.ts.map +1 -0
  489. package/dist/rich-text-editor/nodes.js +397 -0
  490. package/dist/rich-text-editor/nodes.js.map +1 -0
  491. package/dist/rich-text-editor/render.d.ts +68 -0
  492. package/dist/rich-text-editor/render.d.ts.map +1 -0
  493. package/dist/rich-text-editor/render.js +518 -0
  494. package/dist/rich-text-editor/render.js.map +1 -0
  495. package/dist/rich-text-editor/schema.d.ts +16 -0
  496. package/dist/rich-text-editor/schema.d.ts.map +1 -0
  497. package/dist/rich-text-editor/schema.js +386 -0
  498. package/dist/rich-text-editor/schema.js.map +1 -0
  499. package/dist/rich-text-editor/store.d.ts +11 -0
  500. package/dist/rich-text-editor/store.d.ts.map +1 -0
  501. package/dist/rich-text-editor/store.js +43 -0
  502. package/dist/rich-text-editor/store.js.map +1 -0
  503. package/dist/rich-text-editor/suggest.d.ts +127 -0
  504. package/dist/rich-text-editor/suggest.d.ts.map +1 -0
  505. package/dist/rich-text-editor/suggest.js +0 -0
  506. package/dist/rich-text-editor/suggest.js.map +1 -0
  507. package/dist/rich-text-editor/tables.d.ts +41 -0
  508. package/dist/rich-text-editor/tables.d.ts.map +1 -0
  509. package/dist/rich-text-editor/tables.js +204 -0
  510. package/dist/rich-text-editor/tables.js.map +1 -0
  511. package/dist/rich-text-editor/toolbar.d.ts +58 -0
  512. package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
  513. package/dist/rich-text-editor/toolbar.js +548 -0
  514. package/dist/rich-text-editor/toolbar.js.map +1 -0
  515. package/dist/rich-text-editor/view.d.ts +368 -0
  516. package/dist/rich-text-editor/view.d.ts.map +1 -0
  517. package/dist/rich-text-editor/view.js +1968 -0
  518. package/dist/rich-text-editor/view.js.map +1 -0
  519. package/dist/rich-text-editor/virtual.d.ts +54 -0
  520. package/dist/rich-text-editor/virtual.d.ts.map +1 -0
  521. package/dist/rich-text-editor/virtual.js +279 -0
  522. package/dist/rich-text-editor/virtual.js.map +1 -0
  523. package/dist/richtext/node.d.ts +71 -4
  524. package/dist/richtext/node.d.ts.map +1 -1
  525. package/dist/richtext/node.js +233 -28
  526. package/dist/richtext/node.js.map +1 -1
  527. package/dist/richtext/runs.d.ts +13 -8
  528. package/dist/richtext/runs.d.ts.map +1 -1
  529. package/dist/richtext/runs.js +18 -8
  530. package/dist/richtext/runs.js.map +1 -1
  531. package/dist/table/index.d.ts.map +1 -1
  532. package/dist/table/index.js +23 -0
  533. package/dist/table/index.js.map +1 -1
  534. package/dist/table/rows.d.ts +3 -2
  535. package/dist/table/rows.d.ts.map +1 -1
  536. package/dist/table/rows.js +20 -6
  537. package/dist/table/rows.js.map +1 -1
  538. package/dist/terminal/backends.d.ts +4 -1
  539. package/dist/terminal/backends.d.ts.map +1 -1
  540. package/dist/terminal/backends.js.map +1 -1
  541. package/dist/terminal/index.d.ts +18 -7
  542. package/dist/terminal/index.d.ts.map +1 -1
  543. package/dist/terminal/index.js +32 -11
  544. package/dist/terminal/index.js.map +1 -1
  545. package/dist/terminal/vt/pty.d.ts +13 -2
  546. package/dist/terminal/vt/pty.d.ts.map +1 -1
  547. package/dist/terminal/vt/pty.js +18 -3
  548. package/dist/terminal/vt/pty.js.map +1 -1
  549. package/dist/terminal-output/index.d.ts.map +1 -1
  550. package/dist/terminal-output/index.js +6 -1
  551. package/dist/terminal-output/index.js.map +1 -1
  552. package/dist/three/canvas.d.ts.map +1 -1
  553. package/dist/three/canvas.js +85 -7
  554. package/dist/three/canvas.js.map +1 -1
  555. package/dist/three/events.d.ts +22 -4
  556. package/dist/three/events.d.ts.map +1 -1
  557. package/dist/three/events.js +34 -4
  558. package/dist/three/events.js.map +1 -1
  559. package/dist/tree/index.d.ts.map +1 -1
  560. package/dist/tree/index.js +17 -0
  561. package/dist/tree/index.js.map +1 -1
  562. package/package.json +59 -31
  563. package/src/charts/node.ts +68 -28
  564. package/src/charts/render.ts +120 -30
  565. package/src/code/index.ts +3 -1
  566. package/src/code-editor/completion.ts +3 -2
  567. package/src/code-editor/index.ts +19 -0
  568. package/src/code-editor/node.ts +1574 -184
  569. package/src/code-language/languages/glsl.ts +12 -2
  570. package/src/code-language/languages/javascript.ts +21 -4
  571. package/src/code-language/languages/json.ts +12 -2
  572. package/src/code-language/languages/shell.ts +12 -2
  573. package/src/code-language/languages/sql.ts +22 -2
  574. package/src/code-language/stream.ts +257 -17
  575. package/src/code-language/types.ts +5 -4
  576. package/src/codeblock/index.ts +20 -3
  577. package/src/embed/client.ts +102 -8
  578. package/src/embed/index.ts +2 -0
  579. package/src/flow/draw.ts +167 -41
  580. package/src/flow/gl/color.ts +85 -0
  581. package/src/flow/gl/index.ts +342 -0
  582. package/src/flow/gl/pack.ts +585 -0
  583. package/src/flow/gl/renderer.ts +679 -0
  584. package/src/flow/gl/shaders.ts +371 -0
  585. package/src/flow/gl/text.ts +1295 -0
  586. package/src/flow/index.ts +794 -67
  587. package/src/flow/node.ts +2496 -1256
  588. package/src/flow/paint.ts +511 -0
  589. package/src/flow/paths.ts +80 -15
  590. package/src/flow/scene.ts +2199 -0
  591. package/src/flow/types.ts +113 -1
  592. package/src/html/controls.ts +73 -2
  593. package/src/html/css/calc.ts +385 -0
  594. package/src/html/css/cascade.ts +1403 -62
  595. package/src/html/css/color.ts +755 -0
  596. package/src/html/css/content.ts +417 -0
  597. package/src/html/css/counter-styles.ts +973 -0
  598. package/src/html/css/decode.ts +130 -0
  599. package/src/html/css/parse.ts +1514 -160
  600. package/src/html/css/style.ts +4102 -222
  601. package/src/html/css/ua.ts +58 -12
  602. package/src/html/css/values.ts +150 -50
  603. package/src/html/css/vars.ts +348 -0
  604. package/src/html/dom.ts +284 -17
  605. package/src/html/fonts.ts +641 -0
  606. package/src/html/gif.ts +233 -0
  607. package/src/html/index.ts +180 -20
  608. package/src/html/layout/block.ts +3456 -230
  609. package/src/html/layout/boxes.ts +2100 -190
  610. package/src/html/layout/cache.ts +289 -0
  611. package/src/html/layout/collapse.ts +317 -0
  612. package/src/html/layout/css-grid.ts +1063 -0
  613. package/src/html/layout/flex.ts +1115 -106
  614. package/src/html/layout/floats.ts +128 -14
  615. package/src/html/layout/grid-lines.ts +141 -0
  616. package/src/html/layout/grid.ts +181 -0
  617. package/src/html/layout/inline.ts +3943 -192
  618. package/src/html/layout/shaping.ts +140 -0
  619. package/src/html/layout/table.ts +696 -186
  620. package/src/html/layout/tracks.ts +437 -0
  621. package/src/html/node.ts +1486 -121
  622. package/src/html/paint.ts +4293 -169
  623. package/src/html/resources.ts +161 -50
  624. package/src/html/surfaces.ts +81 -0
  625. package/src/html/svg.ts +493 -0
  626. package/src/html/url.ts +86 -0
  627. package/src/index.ts +4 -0
  628. package/src/internal/collate.ts +12 -0
  629. package/src/{markdown → internal/markdown}/ast.ts +35 -7
  630. package/src/{markdown → internal/markdown}/parse.ts +288 -35
  631. package/src/internal/markdown/stringify.ts +772 -0
  632. package/src/internal/prewarm.ts +45 -0
  633. package/src/internal/scroll.ts +5 -3
  634. package/src/internal/sdf.ts +227 -0
  635. package/src/internal/splice.ts +25 -0
  636. package/src/internal/window.ts +36 -5
  637. package/src/maps/anchors.ts +913 -0
  638. package/src/maps/controller.ts +1084 -0
  639. package/src/maps/gl/buckets.ts +461 -0
  640. package/src/maps/gl/build-worker.ts +66 -0
  641. package/src/maps/gl/color.ts +62 -0
  642. package/src/maps/gl/cover.ts +205 -0
  643. package/src/maps/gl/index.ts +23 -0
  644. package/src/maps/gl/markers.ts +83 -0
  645. package/src/maps/gl/overlays.ts +379 -0
  646. package/src/maps/gl/pane.ts +42 -0
  647. package/src/maps/gl/placement.ts +968 -0
  648. package/src/maps/gl/renderer.ts +1660 -0
  649. package/src/maps/gl/shaders.ts +489 -0
  650. package/src/maps/gl/store.ts +615 -0
  651. package/src/maps/gl/text.ts +868 -0
  652. package/src/maps/gl/view.ts +1489 -0
  653. package/src/maps/icons.ts +183 -0
  654. package/src/maps/index.ts +274 -81
  655. package/src/maps/labels.ts +457 -144
  656. package/src/maps/node.ts +832 -665
  657. package/src/maps/overlay.ts +148 -43
  658. package/src/maps/paint.ts +3 -0
  659. package/src/maps/proj.ts +118 -0
  660. package/src/maps/renderer.ts +155 -0
  661. package/src/maps/sources.ts +43 -6
  662. package/src/maps/style.ts +32 -0
  663. package/src/maps/styles.ts +215 -4
  664. package/src/maps/theme.ts +51 -0
  665. package/src/maps/tiles.ts +253 -62
  666. package/src/maps/types.ts +213 -21
  667. package/src/markdown/expressions.ts +5 -1
  668. package/src/markdown/index.ts +163 -78
  669. package/src/markdown/spans.ts +6 -1
  670. package/src/media-player/index.ts +18 -4
  671. package/src/qml/containers.tsx +6 -1
  672. package/src/qml/interaction.tsx +42 -5
  673. package/src/qml/layouts.tsx +21 -6
  674. package/src/qml/qtquick.tsx +9 -2
  675. package/src/qml/react.tsx +7 -5
  676. package/src/reorder/clock.ts +27 -0
  677. package/src/reorder/index.ts +100 -27
  678. package/src/rich-text-editor/clipboard.ts +439 -0
  679. package/src/rich-text-editor/collab.ts +91 -0
  680. package/src/rich-text-editor/commands.ts +448 -0
  681. package/src/rich-text-editor/dom-globals.d.ts +23 -0
  682. package/src/rich-text-editor/drag.ts +211 -0
  683. package/src/rich-text-editor/html.ts +619 -0
  684. package/src/rich-text-editor/index.ts +1364 -0
  685. package/src/rich-text-editor/inline.ts +345 -0
  686. package/src/rich-text-editor/keymap.ts +510 -0
  687. package/src/rich-text-editor/keys.ts +228 -0
  688. package/src/rich-text-editor/look.ts +427 -0
  689. package/src/rich-text-editor/markdown.ts +653 -0
  690. package/src/rich-text-editor/marks.ts +101 -0
  691. package/src/rich-text-editor/nodes.ts +497 -0
  692. package/src/rich-text-editor/render.ts +837 -0
  693. package/src/rich-text-editor/schema.ts +431 -0
  694. package/src/rich-text-editor/store.ts +39 -0
  695. package/src/rich-text-editor/suggest.ts +597 -0
  696. package/src/rich-text-editor/tables.ts +272 -0
  697. package/src/rich-text-editor/toolbar.ts +724 -0
  698. package/src/rich-text-editor/view.ts +2287 -0
  699. package/src/rich-text-editor/virtual.ts +372 -0
  700. package/src/richtext/node.ts +294 -44
  701. package/src/richtext/runs.ts +23 -12
  702. package/src/table/index.ts +29 -0
  703. package/src/table/rows.ts +18 -8
  704. package/src/terminal/backends.ts +4 -1
  705. package/src/terminal/index.ts +47 -15
  706. package/src/terminal/vt/pty.ts +16 -2
  707. package/src/terminal-output/index.ts +6 -1
  708. package/src/three/canvas.ts +102 -8
  709. package/src/three/events.ts +49 -9
  710. package/src/tree/index.ts +19 -0
  711. package/dist/markdown/ast.d.ts.map +0 -1
  712. package/dist/markdown/ast.js +0 -17
  713. package/dist/markdown/ast.js.map +0 -1
  714. package/dist/markdown/parse.d.ts.map +0 -1
  715. package/dist/markdown/parse.js.map +0 -1
  716. package/dist/markdown/tags.d.ts.map +0 -1
  717. package/dist/markdown/tags.js.map +0 -1
  718. /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
  719. /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
  720. /package/dist/{markdown → internal/markdown}/tags.js +0 -0
  721. /package/src/{markdown → internal/markdown}/tags.ts +0 -0
@@ -26,6 +26,10 @@ export function lookKey(look: RootLook): string {
26
26
  look.borderColor,
27
27
  look.mutedColor,
28
28
  look.background,
29
+ look.surface,
30
+ look.controlPadY,
31
+ look.controlBorder,
32
+ look.controlRadius,
29
33
  ].join('|');
30
34
  }
31
35
 
@@ -52,10 +56,21 @@ article, aside, footer, header, hgroup, main, nav, section, details,
52
56
  summary, dir, menu, center, marquee {
53
57
  display: block;
54
58
  }
59
+ /* <map> is inline (HTML 15.3.1), so an <area> in it the author gives a
60
+ display of its own is drawn */
55
61
  head, link, meta, style, script, title, base, template, noscript, param,
56
- source, track, col, colgroup, datalist, area, map, rp { display: none; }
57
-
58
- body { margin: 8px; color: ${look.color}; font-family: ${look.fontFamily}; }
62
+ source, track, col, colgroup, datalist, area, rp { display: none; }
63
+
64
+ /* HTML's bidi rules for the two elements that are about it: <bdi> takes
65
+ its first strong letter's direction, and <bdo> overrides. The \`dir\`
66
+ attribute's isolation is a presentational hint (\`hints\`), where the
67
+ attribute is read already, rather than a selector every element tries */
68
+ bdi { unicode-bidi: plaintext; }
69
+ bdo { unicode-bidi: isolate-override; }
70
+
71
+ /* the theme's colour and font are the root's (\`initialStyle\`), and the
72
+ body inherits them, from an author's \`html\` rule too */
73
+ body { margin: 8px; }
59
74
  html { color: ${look.color}; }
60
75
 
61
76
  p { margin: 1em 0; }
@@ -69,6 +84,8 @@ h6 { font-size: 0.67em; font-weight: bold; margin: 2.33em 0; }
69
84
  ul, ol { margin: 1em 0; padding-left: 2.5em; }
70
85
  ul { list-style-type: disc; }
71
86
  ol { list-style-type: decimal; }
87
+ ol, ul, menu, dir { counter-reset: list-item; }
88
+ ol[reversed] { counter-reset: reversed(list-item); }
72
89
  li { display: list-item; }
73
90
  ul ul, ol ul { list-style-type: circle; }
74
91
  ul ul ul, ol ol ul, ul ol ul, ol ul ul { list-style-type: square; }
@@ -106,39 +123,51 @@ big { font-size: 1.17em; }
106
123
  sub { vertical-align: sub; font-size: 0.75em; }
107
124
  sup { vertical-align: super; font-size: 0.75em; }
108
125
  mark { background-color: #fff2a8; color: #1a1a1a; }
109
- abbr { text-decoration: none; }
110
- center { text-align: center; }
126
+ /* the HTML standard's rendering (15.3.4): an abbreviation with its
127
+ expansion in a title says so */
128
+ abbr[title], acronym[title] { text-decoration: dotted underline; }
129
+ center { text-align: -webkit-center; }
111
130
  nobr { white-space: nowrap; }
131
+ q::before { content: open-quote; }
132
+ q::after { content: close-quote; }
112
133
 
113
134
  /* Deliberately no 'a:hover' rule, though a browser's sheet has one: a
114
135
  document containing any ':hover' selector has to be restyled as the
115
136
  pointer moves, and a rule that changes nothing (the link is already
116
- underlined) would make every plain document pay that. */
117
- a { color: ${look.linkColor}; text-decoration: underline; cursor: pointer; }
137
+ underlined) would make every plain document pay that. An 'a' with no
138
+ 'href' is an anchor, not a link, and is drawn as the text around it. */
139
+ a[href] { color: ${look.linkColor}; text-decoration: underline; cursor: pointer; }
118
140
 
119
141
  hr {
120
- margin: 0.5em 0;
142
+ margin: 0.5em auto;
121
143
  border: none;
122
144
  border-top: 1px solid ${look.borderColor};
123
145
  height: 0;
124
146
  }
125
147
 
126
148
  img { display: inline-block; }
149
+ /* never loaded: a box of its own size, framed as a browser frames one */
150
+ iframe { border: 2px inset; }
151
+ /* a poster is drawn within the video's box at its own ratio (HTML 15.4.1) */
152
+ video { object-fit: contain; }
127
153
  figure { margin: 1em 2.5em; }
128
154
 
129
- table { display: table; border-collapse: separate; border-spacing: 2px; }
155
+ table { display: table; border-collapse: separate; border-spacing: 2px; box-sizing: border-box; }
130
156
  caption { display: table-caption; text-align: center; }
131
157
  thead { display: table-header-group; }
132
158
  tbody { display: table-row-group; }
133
159
  tfoot { display: table-footer-group; }
134
160
  tr { display: table-row; }
135
- td { display: table-cell; padding: 1px; vertical-align: middle; }
161
+ /* HTML's rendering rules: the rows are middle, and a cell takes its row's,
162
+ so a <tr valign="top"> sets its cells at the top */
163
+ thead, tbody, tfoot, tr { vertical-align: middle; }
164
+ td { display: table-cell; padding: 1px; vertical-align: inherit; }
136
165
  th {
137
166
  display: table-cell;
138
167
  padding: 1px;
139
168
  font-weight: bold;
140
169
  text-align: center;
141
- vertical-align: middle;
170
+ vertical-align: inherit;
142
171
  }
143
172
  colgroup { display: table-column-group; }
144
173
  col { display: table-column; }
@@ -159,13 +188,30 @@ input, button, select, textarea, meter, progress {
159
188
  input[type=checkbox] { margin: 3px 4px 3px 4px; }
160
189
  input[type=radio] { margin: 3px 4px 3px 5px; }
161
190
  input[type=hidden] { display: none; }
191
+ /* A <button> is drawn rather than mounted: its content is the document's —
192
+ an icon, a label in spans, a pill of the page's own design, which is what
193
+ most buttons on the web are — and the page restyles it as it restyles
194
+ anything. What the sheet gives one the page left alone is the palette's
195
+ control, the chrome a mounted widget around it has. */
196
+ button {
197
+ vertical-align: baseline;
198
+ padding: ${look.controlPadY}px 0.75em;
199
+ border: ${look.controlBorder}px solid ${look.borderColor};
200
+ border-radius: ${look.controlRadius}px;
201
+ background-color: ${look.surface};
202
+ color: ${look.color};
203
+ text-align: center;
204
+ cursor: pointer;
205
+ }
206
+ button[disabled] { color: ${look.mutedColor}; cursor: default; }
162
207
  textarea { vertical-align: top; }
163
208
  fieldset { margin: 0 2px; padding: 0.35em 0.75em 0.6em; border: 1px solid ${look.borderColor}; }
164
209
  legend { display: block; padding: 0 2px; }
165
210
  label { cursor: pointer; }
166
211
 
167
212
  details { margin: 0.5em 0; }
168
- summary { display: block; cursor: pointer; font-weight: bold; }
213
+ summary { display: list-item; counter-increment: list-item 0; list-style: disclosure-closed inside; cursor: pointer; }
214
+ details[open] > summary:first-of-type { list-style-type: disclosure-open; }
169
215
 
170
216
  /* 'hidden' is an attribute, not a style, and a document that uses it expects
171
217
  it to win over the display above. */
@@ -13,11 +13,15 @@
13
13
  // layout can resolve them against a new containing block on its own.
14
14
  //
15
15
  // Colours are the other half of that decision, from the other side: they are
16
- // kept as **strings**, never parsed. ntk's context takes a CSS colour for
17
- // `fillStyle` and parses it behind its own cache, so parsing here would be
18
- // work done twice — and the only questions this renderer actually asks about
19
- // a colour are "is it `transparent`" and "is it `currentColor`", both of
20
- // which are string comparisons.
16
+ // kept as **strings**, never parsed into components, since the only
17
+ // questions this renderer asks about a colour are "is it `transparent`" and
18
+ // "is it `currentColor`", both string comparisons. A named or hex colour
19
+ // goes to the context as written. A functional one is read once, in
20
+ // `color.ts`, and written back in the form every context reads the same.
21
+
22
+ import type { ComputedStyle } from './style.js';
23
+ import { functionalColor } from './color.js';
24
+ import { LARGEST, parseMath, parseMathNumber } from './calc.js';
21
25
 
22
26
  /** A length that layout may still have to resolve. */
23
27
  export type Len = number | Pct | 'auto';
@@ -25,6 +29,12 @@ export type Len = number | Pct | 'auto';
25
29
  /** A percentage of something layout knows and computed style does not. */
26
30
  export interface Pct {
27
31
  pct: number;
32
+ /** A length added to it: `calc(100% - 20px)`, or a background position
33
+ * written from its far edge, `right 10px`. */
34
+ px?: number;
35
+ /** In place of the two: `min()` or `max()` with a percentage among its
36
+ * arguments, which is a different sum at every base (`calc.ts`). */
37
+ of?: { max: boolean; args: Len[] };
28
38
  }
29
39
 
30
40
  export const AUTO = 'auto';
@@ -41,8 +51,16 @@ export function isPct(len: Len): len is Pct {
41
51
  */
42
52
  export function resolve(len: Len, base: number, fallback = 0): number {
43
53
  if (typeof len === 'number') return len;
44
- if (len === AUTO) return fallback;
45
- return Number.isFinite(base) ? (len.pct / 100) * base : fallback;
54
+ if (len === AUTO || !Number.isFinite(base)) return fallback;
55
+ const px = len.of ? compared(len.of, base) : ofBase(len, base);
56
+ return px > LARGEST ? LARGEST : px < -LARGEST ? -LARGEST : px;
57
+ }
58
+
59
+ /** A gap between flex items or grid tracks: a length, or a percentage of
60
+ * the content box's size along it — of nothing where that is not known,
61
+ * as a gap in an intrinsic size is (CSS Box Alignment 3, 8.3). */
62
+ export function gapOf(len: Len, base: number): number {
63
+ return Math.max(0, resolve(len, Number.isFinite(base) ? base : 0));
46
64
  }
47
65
 
48
66
  /** Resolve, but keep "indefinite" distinguishable from zero — what a height
@@ -50,8 +68,21 @@ export function resolve(len: Len, base: number, fallback = 0): number {
50
68
  * "there is no height here". */
51
69
  export function resolveOrNull(len: Len, base: number): number | null {
52
70
  if (typeof len === 'number') return len;
53
- if (len === AUTO) return null;
54
- return Number.isFinite(base) ? (len.pct / 100) * base : null;
71
+ if (len === AUTO || !Number.isFinite(base)) return null;
72
+ return len.of ? compared(len.of, base) : ofBase(len, base);
73
+ }
74
+
75
+ function ofBase(len: Pct, base: number): number {
76
+ return (len.pct / 100) * base + (len.px ?? 0);
77
+ }
78
+
79
+ function compared(of: { max: boolean; args: Len[] }, base: number): number {
80
+ let out = of.max ? -Infinity : Infinity;
81
+ for (const arg of of.args) {
82
+ const v = resolve(arg, base);
83
+ out = of.max ? Math.max(out, v) : Math.min(out, v);
84
+ }
85
+ return out;
55
86
  }
56
87
 
57
88
  /**
@@ -76,10 +107,37 @@ export interface UnitContext {
76
107
  vh: number;
77
108
  /** Device pixels per CSS pixel — the display scale. */
78
109
  scale: number;
110
+ /** The x-height of the font the lengths are in, asked only for a length
111
+ * in `ex`; half an em where it is missing. */
112
+ ex?: () => number;
113
+ /** The advance of that font's "0", asked only for a length in `ch`; half
114
+ * an em where it is missing. */
115
+ ch?: () => number;
116
+ /** A computed `font-family` list with the families the document loads
117
+ * itself, with `@font-face`, put as the text engine knows them — see
118
+ * `fonts.ts`. Absent, the list is the one the author wrote. */
119
+ families?: (list: string) => string;
120
+ /** The element's line height and the root's, for `lh` and `rlh`, asked
121
+ * only for a length in them; 1.2em where they are missing. */
122
+ lh?: () => number;
123
+ rlh?: () => number;
124
+ /** Every property at its initial value, which `initial` sets one to. */
125
+ initial?: ComputedStyle;
79
126
  }
80
127
 
81
- const LENGTH_RE =
82
- /^([+-]?(?:\d+\.?\d*|\.\d+))(px|em|rem|pt|pc|in|cm|mm|ex|ch|vw|vh|vmin|vmax|q|%)?$/;
128
+ /** A CSS number (CSS Syntax 3 4.3.12): a sign, digits with at most one
129
+ * point and a digit after it, and an exponent — `1e1px` is ten pixels, and
130
+ * `1.px` is no length. */
131
+ const NUMBER_SRC = '[+-]?(?:\\d*\\.\\d+|\\d+)(?:e[+-]?\\d+)?';
132
+
133
+ const LENGTH_RE = new RegExp(
134
+ `^(${NUMBER_SRC})(px|em|rem|pt|pc|in|cm|mm|ex|ch|lh|rlh|vw|vh|vmin|vmax|q|%)?$`,
135
+ );
136
+
137
+ const NUMBER_RE = new RegExp(`^${NUMBER_SRC}$`, 'i');
138
+
139
+ /** A math function: `calc()`, `min()`, `max()` or `clamp()`. */
140
+ const MATH = /^(?:-webkit-)?calc\(|^(?:min|max|clamp)\(/i;
83
141
 
84
142
  /**
85
143
  * Parse a length. Returns `null` for anything that is not one, which is how
@@ -99,12 +157,24 @@ export function parseLength(
99
157
  if (v === 'auto') return AUTO;
100
158
  if (v === '0') return 0;
101
159
  const m = LENGTH_RE.exec(v);
102
- if (!m) return null;
160
+ if (!m) {
161
+ // `calc()` and its kin, down to pixels and a percentage (CSS Values 4 10)
162
+ if (!MATH.test(v)) return null;
163
+ return parseMath(v, (token) => {
164
+ const len = parseLength(token, ctx);
165
+ return typeof len === 'number' ? len : null;
166
+ });
167
+ }
103
168
  const n = Number(m[1]);
104
169
  const unit = m[2];
105
- if (!unit) return bareIsPx ? n * ctx.scale : null;
170
+ // a zero needs no unit however it is written — `-0`, `+0`, `0.0`
171
+ if (!unit) return n === 0 ? 0 : bareIsPx ? n * ctx.scale : null;
106
172
  if (unit === '%') return { pct: n };
107
- return n * unitScale(unit, ctx);
173
+ // Kept to what a browser holds: a `1e308px` height or margin, which a
174
+ // hostile or broken page writes, added up past what a number holds, and
175
+ // the document's height came to infinity
176
+ const px = n * unitScale(unit, ctx);
177
+ return px > LARGEST ? LARGEST : px < -LARGEST ? -LARGEST : px;
108
178
  }
109
179
 
110
180
  /** Device pixels per one of `unit`. The absolute units are CSS pixels and
@@ -130,13 +200,23 @@ function unitScale(unit: string, ctx: UnitContext): number {
130
200
  return (96 / 25.4) * ctx.scale;
131
201
  case 'q':
132
202
  return (96 / 101.6) * ctx.scale;
133
- // Approximations rather than font queries: both are within a few percent
134
- // for every text face, and asking the font manager here would make the
135
- // cascade depend on font loading.
203
+ // The font's own x-height where the cascade was handed a way to ask
204
+ // for it, and half an em where it was not, which is within a few
205
+ // percent for most text faces — and for Ahem, whose x-height is 0.8em,
206
+ // is not.
136
207
  case 'ex':
137
- return ctx.em * 0.5;
208
+ return ctx.ex ? ctx.ex() : ctx.em * 0.5;
209
+ // the advance of the font's "0" (CSS Values 4, 6.1.1), where the
210
+ // cascade can ask for it: half an em is Times's, a little under
211
+ // Arial's, and half of Ahem's and a monospace font's
138
212
  case 'ch':
139
- return ctx.em * 0.5;
213
+ return ctx.ch ? ctx.ch() : ctx.em * 0.5;
214
+ // the computed `line-height`, `normal` as the font's own (CSS Values
215
+ // 4, 6.1.1)
216
+ case 'lh':
217
+ return ctx.lh ? ctx.lh() : ctx.em * 1.2;
218
+ case 'rlh':
219
+ return ctx.rlh ? ctx.rlh() : ctx.rem * 1.2;
140
220
  case 'vw':
141
221
  return ctx.vw / 100;
142
222
  case 'vh':
@@ -152,19 +232,20 @@ function unitScale(unit: string, ctx: UnitContext): number {
152
232
 
153
233
  /** A plain number — `flex-grow`, `opacity`, `z-index`, `line-height`. */
154
234
  export function parseNumber(value: string): number | null {
155
- const n = Number(value.trim());
235
+ // `Number()` alone reads `0x10`, `1.` and white space as numbers
236
+ const v = value.trim();
237
+ if (!NUMBER_RE.test(v)) return MATH.test(v) ? parseMathNumber(v) : null;
238
+ const n = Number(v);
156
239
  return Number.isFinite(n) ? n : null;
157
240
  }
158
241
 
159
242
  /** `opacity: 50%` is as legal as `opacity: .5`. */
160
243
  export function parseAlpha(value: string): number | null {
161
244
  const v = value.trim();
162
- if (v.endsWith('%')) {
163
- const n = Number(v.slice(0, -1));
164
- return Number.isFinite(n) ? Math.max(0, Math.min(1, n / 100)) : null;
165
- }
166
- const n = Number(v);
167
- return Number.isFinite(n) ? Math.max(0, Math.min(1, n)) : null;
245
+ const pct = v.endsWith('%');
246
+ const n = parseNumber(pct ? v.slice(0, -1) : v);
247
+ if (n === null) return null;
248
+ return Math.max(0, Math.min(1, pct ? n / 100 : n));
168
249
  }
169
250
 
170
251
  /**
@@ -231,33 +312,21 @@ export function fourSides<T>(parts: T[]): [T, T, T, T] {
231
312
  return [a, b, c, d];
232
313
  }
233
314
 
234
- /** `url(x)`, `url("x")`, or a bare token. `null` for `none`. */
235
- export function parseUrl(value: string): string | null {
236
- const v = value.trim();
237
- if (!v || v.toLowerCase() === 'none') return null;
238
- const m = /^url\(\s*(.*?)\s*\)$/i.exec(v);
239
- const inner = m ? m[1] : v;
240
- return unquote(inner) || null;
241
- }
242
-
243
- export function unquote(value: string): string {
244
- const v = value.trim();
245
- if (
246
- v.length >= 2 &&
247
- (v[0] === '"' || v[0] === "'") &&
248
- v[v.length - 1] === v[0]
249
- ) {
250
- return v.slice(1, -1);
251
- }
252
- return v;
253
- }
254
-
255
315
  /** A colour as it is about to be used: `currentColor` resolved against the
256
316
  * element's own ink, everything else passed through. */
257
317
  export function inkColor(color: string, current: string): string {
258
- return color === 'currentColor' ? current : color;
318
+ if (color === 'currentColor') return current;
319
+ // a `color-mix()` with `currentColor` in it waits for the colour too;
320
+ // every other functional colour was read when it was parsed
321
+ if (color.charCodeAt(0) === 99 && color.startsWith('color-mix(')) {
322
+ return functionalColor(color.replace(CURRENT, current)) ?? current;
323
+ }
324
+ return color;
259
325
  }
260
326
 
327
+ const CURRENT = /currentcolor/gi;
328
+ const HAS_CURRENT = /currentcolor/i;
329
+
261
330
  /** Whether a colour paints anything at all. Two string tests rather than a
262
331
  * parse, for the reason at the top of the file. */
263
332
  export function isTransparent(color: string | null | undefined): boolean {
@@ -269,6 +338,24 @@ export function isTransparent(color: string | null | undefined): boolean {
269
338
  return /^(?:rgba|hsla)\([^)]*[,/]\s*0*(?:\.0+)?\s*\)$/.test(c);
270
339
  }
271
340
 
341
+ /**
342
+ * A colour's opacity, 0 to 1, as `parseColor` leaves it: a hex colour's
343
+ * fourth or eighth digits, an `rgba()`'s last number, and nothing for
344
+ * `transparent`; every other colour, `currentColor` among them, is taken
345
+ * for opaque.
346
+ */
347
+ export function alphaOf(color: string): number {
348
+ if (color === 'transparent') return 0;
349
+ if (color.charCodeAt(0) === 35) {
350
+ // `#rgba` and `#rrggbbaa`
351
+ if (color.length === 5) return parseInt(color[4], 16) / 15;
352
+ if (color.length === 9) return parseInt(color.slice(7), 16) / 255;
353
+ return 1;
354
+ }
355
+ const m = /^rgba\([^)]*,\s*([\d.]+)\s*\)$/.exec(color);
356
+ return m ? Number(m[1]) : 1;
357
+ }
358
+
272
359
  /**
273
360
  * A colour token. `null` means the value was not a colour, which is what a
274
361
  * shorthand parser branches on.
@@ -287,11 +374,24 @@ export function parseColor(value: string): string | null {
287
374
  if (lower === 'transparent') return 'transparent';
288
375
  if (lower === 'inherit' || lower === 'initial' || lower === 'unset')
289
376
  return null;
290
- if (v.startsWith('#')) return /^#[0-9a-f]{3,8}$/i.test(v) ? v : null;
291
- if (/^(?:rgb|rgba|hsl|hsla|color|lab|lch|oklab|oklch)\(/i.test(v)) return v;
377
+ // three, four, six or eight digits: ntk's context throws from paint on
378
+ // five or seven, and a typo'd `#ff000` took the application down
379
+ if (v.startsWith('#')) return HEX_COLOR.test(v) ? v : null;
380
+ if (/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color|color-mix)\(/i.test(v)) {
381
+ // a mix with `currentColor` in it is kept to be mixed where it is used
382
+ // (`inkColor`), once it is known to be one
383
+ if (HAS_CURRENT.test(v) && /^color-mix\(/i.test(v)) {
384
+ return functionalColor(v.replace(CURRENT, '#000')) === null
385
+ ? null
386
+ : `color-mix(${v.slice(v.indexOf('(') + 1)}`;
387
+ }
388
+ return functionalColor(v);
389
+ }
292
390
  return NAMED_COLORS.has(lower) ? lower : null;
293
391
  }
294
392
 
393
+ const HEX_COLOR = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
394
+
295
395
  /**
296
396
  * The CSS named colours. The list is here rather than reached through ntk's
297
397
  * `parse-color` because the only question asked of it is "is this token a