@react-x11/components 0.9.0 → 0.11.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 (579) hide show
  1. package/README.md +10 -4
  2. package/dist/charts/node.d.ts +11 -1
  3. package/dist/charts/node.d.ts.map +1 -1
  4. package/dist/charts/node.js +44 -14
  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 +27 -24
  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/index.d.ts +1 -1
  24. package/dist/code-language/index.d.ts.map +1 -1
  25. package/dist/code-language/index.js +1 -1
  26. package/dist/code-language/index.js.map +1 -1
  27. package/dist/code-language/languages/glsl.d.ts.map +1 -1
  28. package/dist/code-language/languages/glsl.js +10 -2
  29. package/dist/code-language/languages/glsl.js.map +1 -1
  30. package/dist/code-language/languages/javascript.d.ts.map +1 -1
  31. package/dist/code-language/languages/javascript.js +18 -3
  32. package/dist/code-language/languages/javascript.js.map +1 -1
  33. package/dist/code-language/languages/json.d.ts.map +1 -1
  34. package/dist/code-language/languages/json.js +10 -2
  35. package/dist/code-language/languages/json.js.map +1 -1
  36. package/dist/code-language/languages/shell.d.ts.map +1 -1
  37. package/dist/code-language/languages/shell.js +10 -2
  38. package/dist/code-language/languages/shell.js.map +1 -1
  39. package/dist/code-language/languages/sql.d.ts.map +1 -1
  40. package/dist/code-language/languages/sql.js +20 -2
  41. package/dist/code-language/languages/sql.js.map +1 -1
  42. package/dist/code-language/runs.d.ts +31 -0
  43. package/dist/code-language/runs.d.ts.map +1 -1
  44. package/dist/code-language/runs.js +105 -0
  45. package/dist/code-language/runs.js.map +1 -1
  46. package/dist/code-language/stream.d.ts +22 -0
  47. package/dist/code-language/stream.d.ts.map +1 -1
  48. package/dist/code-language/stream.js +259 -9
  49. package/dist/code-language/stream.js.map +1 -1
  50. package/dist/code-language/types.d.ts +5 -4
  51. package/dist/code-language/types.d.ts.map +1 -1
  52. package/dist/codeblock/index.d.ts +26 -2
  53. package/dist/codeblock/index.d.ts.map +1 -1
  54. package/dist/codeblock/index.js +57 -4
  55. package/dist/codeblock/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 +262 -6
  115. package/dist/html/css/cascade.d.ts.map +1 -1
  116. package/dist/html/css/cascade.js +1373 -67
  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 +501 -15
  139. package/dist/html/css/style.d.ts.map +1 -1
  140. package/dist/html/css/style.js +3729 -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 +65 -16
  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 +3077 -219
  172. package/dist/html/layout/block.js.map +1 -1
  173. package/dist/html/layout/boxes.d.ts +367 -17
  174. package/dist/html/layout/boxes.d.ts.map +1 -1
  175. package/dist/html/layout/boxes.js +1742 -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 +154 -1
  205. package/dist/html/layout/inline.d.ts.map +1 -1
  206. package/dist/html/layout/inline.js +3598 -175
  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 +169 -4
  221. package/dist/html/node.d.ts.map +1 -1
  222. package/dist/html/node.js +1429 -137
  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 +3635 -107
  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 +442 -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 +1 -1
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js.map +1 -1
  247. package/dist/internal/codelines.d.ts +42 -0
  248. package/dist/internal/codelines.d.ts.map +1 -0
  249. package/dist/internal/codelines.js +170 -0
  250. package/dist/internal/codelines.js.map +1 -0
  251. package/dist/internal/collate.d.ts +3 -0
  252. package/dist/internal/collate.d.ts.map +1 -0
  253. package/dist/internal/collate.js +11 -0
  254. package/dist/internal/collate.js.map +1 -0
  255. package/dist/internal/markdown/ast.d.ts +11 -0
  256. package/dist/internal/markdown/ast.d.ts.map +1 -1
  257. package/dist/internal/markdown/parse.d.ts.map +1 -1
  258. package/dist/internal/markdown/parse.js +109 -8
  259. package/dist/internal/markdown/parse.js.map +1 -1
  260. package/dist/internal/prewarm.d.ts +18 -0
  261. package/dist/internal/prewarm.d.ts.map +1 -0
  262. package/dist/internal/prewarm.js +42 -0
  263. package/dist/internal/prewarm.js.map +1 -0
  264. package/dist/internal/sdf.d.ts +20 -0
  265. package/dist/internal/sdf.d.ts.map +1 -0
  266. package/dist/internal/sdf.js +216 -0
  267. package/dist/internal/sdf.js.map +1 -0
  268. package/dist/internal/splice.d.ts +12 -0
  269. package/dist/internal/splice.d.ts.map +1 -0
  270. package/dist/internal/splice.js +23 -0
  271. package/dist/internal/splice.js.map +1 -0
  272. package/dist/internal/window.d.ts +12 -0
  273. package/dist/internal/window.d.ts.map +1 -1
  274. package/dist/internal/window.js +23 -6
  275. package/dist/internal/window.js.map +1 -1
  276. package/dist/maps/anchors.d.ts +6 -1
  277. package/dist/maps/anchors.d.ts.map +1 -1
  278. package/dist/maps/anchors.js +260 -1
  279. package/dist/maps/anchors.js.map +1 -1
  280. package/dist/maps/controller.d.ts +57 -0
  281. package/dist/maps/controller.d.ts.map +1 -1
  282. package/dist/maps/controller.js +97 -18
  283. package/dist/maps/controller.js.map +1 -1
  284. package/dist/maps/gl/buckets.d.ts +5 -1
  285. package/dist/maps/gl/buckets.d.ts.map +1 -1
  286. package/dist/maps/gl/buckets.js +5 -2
  287. package/dist/maps/gl/buckets.js.map +1 -1
  288. package/dist/maps/gl/build-worker.d.ts +2 -0
  289. package/dist/maps/gl/build-worker.d.ts.map +1 -1
  290. package/dist/maps/gl/build-worker.js +1 -1
  291. package/dist/maps/gl/build-worker.js.map +1 -1
  292. package/dist/maps/gl/cover.d.ts +23 -4
  293. package/dist/maps/gl/cover.d.ts.map +1 -1
  294. package/dist/maps/gl/cover.js +61 -48
  295. package/dist/maps/gl/cover.js.map +1 -1
  296. package/dist/maps/gl/placement.d.ts +21 -8
  297. package/dist/maps/gl/placement.d.ts.map +1 -1
  298. package/dist/maps/gl/placement.js +133 -58
  299. package/dist/maps/gl/placement.js.map +1 -1
  300. package/dist/maps/gl/renderer.d.ts +36 -4
  301. package/dist/maps/gl/renderer.d.ts.map +1 -1
  302. package/dist/maps/gl/renderer.js +81 -24
  303. package/dist/maps/gl/renderer.js.map +1 -1
  304. package/dist/maps/gl/shaders.d.ts +18 -17
  305. package/dist/maps/gl/shaders.d.ts.map +1 -1
  306. package/dist/maps/gl/shaders.js +34 -32
  307. package/dist/maps/gl/shaders.js.map +1 -1
  308. package/dist/maps/gl/store.d.ts +10 -0
  309. package/dist/maps/gl/store.d.ts.map +1 -1
  310. package/dist/maps/gl/store.js +47 -4
  311. package/dist/maps/gl/store.js.map +1 -1
  312. package/dist/maps/gl/text.d.ts +153 -24
  313. package/dist/maps/gl/text.d.ts.map +1 -1
  314. package/dist/maps/gl/text.js +379 -63
  315. package/dist/maps/gl/text.js.map +1 -1
  316. package/dist/maps/gl/view.d.ts +293 -2
  317. package/dist/maps/gl/view.d.ts.map +1 -1
  318. package/dist/maps/gl/view.js +317 -82
  319. package/dist/maps/gl/view.js.map +1 -1
  320. package/dist/maps/icons.d.ts +32 -0
  321. package/dist/maps/icons.d.ts.map +1 -0
  322. package/dist/maps/icons.js +151 -0
  323. package/dist/maps/icons.js.map +1 -0
  324. package/dist/maps/index.d.ts +2 -0
  325. package/dist/maps/index.d.ts.map +1 -1
  326. package/dist/maps/index.js +2 -0
  327. package/dist/maps/index.js.map +1 -1
  328. package/dist/maps/labels.d.ts +56 -4
  329. package/dist/maps/labels.d.ts.map +1 -1
  330. package/dist/maps/labels.js +213 -46
  331. package/dist/maps/labels.js.map +1 -1
  332. package/dist/maps/node.d.ts +17 -0
  333. package/dist/maps/node.d.ts.map +1 -1
  334. package/dist/maps/node.js +64 -30
  335. package/dist/maps/node.js.map +1 -1
  336. package/dist/maps/proj.d.ts +48 -0
  337. package/dist/maps/proj.d.ts.map +1 -1
  338. package/dist/maps/proj.js +73 -0
  339. package/dist/maps/proj.js.map +1 -1
  340. package/dist/maps/sources.d.ts +5 -3
  341. package/dist/maps/sources.d.ts.map +1 -1
  342. package/dist/maps/sources.js +5 -3
  343. package/dist/maps/sources.js.map +1 -1
  344. package/dist/maps/style.d.ts +35 -0
  345. package/dist/maps/style.d.ts.map +1 -1
  346. package/dist/maps/style.js.map +1 -1
  347. package/dist/maps/styles.d.ts +12 -0
  348. package/dist/maps/styles.d.ts.map +1 -1
  349. package/dist/maps/styles.js +120 -6
  350. package/dist/maps/styles.js.map +1 -1
  351. package/dist/maps/tiles.d.ts +31 -11
  352. package/dist/maps/tiles.d.ts.map +1 -1
  353. package/dist/maps/tiles.js +61 -27
  354. package/dist/maps/tiles.js.map +1 -1
  355. package/dist/maps/types.d.ts +28 -4
  356. package/dist/maps/types.d.ts.map +1 -1
  357. package/dist/markdown/index.d.ts.map +1 -1
  358. package/dist/markdown/index.js +209 -68
  359. package/dist/markdown/index.js.map +1 -1
  360. package/dist/markdown/spans.d.ts.map +1 -1
  361. package/dist/markdown/spans.js +6 -0
  362. package/dist/markdown/spans.js.map +1 -1
  363. package/dist/qml/containers.d.ts.map +1 -1
  364. package/dist/qml/containers.js +6 -1
  365. package/dist/qml/containers.js.map +1 -1
  366. package/dist/qml/interaction.d.ts.map +1 -1
  367. package/dist/qml/interaction.js +38 -5
  368. package/dist/qml/interaction.js.map +1 -1
  369. package/dist/qml/layouts.d.ts.map +1 -1
  370. package/dist/qml/layouts.js +21 -6
  371. package/dist/qml/layouts.js.map +1 -1
  372. package/dist/qml/qtquick.d.ts.map +1 -1
  373. package/dist/qml/qtquick.js +9 -2
  374. package/dist/qml/qtquick.js.map +1 -1
  375. package/dist/qml/react.d.ts.map +1 -1
  376. package/dist/qml/react.js +9 -7
  377. package/dist/qml/react.js.map +1 -1
  378. package/dist/reorder/clock.d.ts +7 -0
  379. package/dist/reorder/clock.d.ts.map +1 -0
  380. package/dist/reorder/clock.js +26 -0
  381. package/dist/reorder/clock.js.map +1 -0
  382. package/dist/reorder/index.d.ts +25 -3
  383. package/dist/reorder/index.d.ts.map +1 -1
  384. package/dist/reorder/index.js +64 -19
  385. package/dist/reorder/index.js.map +1 -1
  386. package/dist/rich-text-editor/index.d.ts +0 -11
  387. package/dist/rich-text-editor/index.d.ts.map +1 -1
  388. package/dist/rich-text-editor/index.js +38 -9
  389. package/dist/rich-text-editor/index.js.map +1 -1
  390. package/dist/rich-text-editor/keymap.d.ts.map +1 -1
  391. package/dist/rich-text-editor/keymap.js +2 -1
  392. package/dist/rich-text-editor/keymap.js.map +1 -1
  393. package/dist/rich-text-editor/keys.d.ts +17 -6
  394. package/dist/rich-text-editor/keys.d.ts.map +1 -1
  395. package/dist/rich-text-editor/keys.js +135 -26
  396. package/dist/rich-text-editor/keys.js.map +1 -1
  397. package/dist/rich-text-editor/markdown.d.ts.map +1 -1
  398. package/dist/rich-text-editor/markdown.js +30 -1
  399. package/dist/rich-text-editor/markdown.js.map +1 -1
  400. package/dist/rich-text-editor/marks.d.ts +9 -0
  401. package/dist/rich-text-editor/marks.d.ts.map +1 -0
  402. package/dist/rich-text-editor/marks.js +83 -0
  403. package/dist/rich-text-editor/marks.js.map +1 -0
  404. package/dist/rich-text-editor/render.d.ts.map +1 -1
  405. package/dist/rich-text-editor/render.js +28 -10
  406. package/dist/rich-text-editor/render.js.map +1 -1
  407. package/dist/rich-text-editor/replace.d.ts +13 -0
  408. package/dist/rich-text-editor/replace.d.ts.map +1 -0
  409. package/dist/rich-text-editor/replace.js +64 -0
  410. package/dist/rich-text-editor/replace.js.map +1 -0
  411. package/dist/rich-text-editor/toolbar.d.ts.map +1 -1
  412. package/dist/rich-text-editor/toolbar.js +1 -1
  413. package/dist/rich-text-editor/toolbar.js.map +1 -1
  414. package/dist/rich-text-editor/virtual.d.ts.map +1 -1
  415. package/dist/rich-text-editor/virtual.js +17 -0
  416. package/dist/rich-text-editor/virtual.js.map +1 -1
  417. package/dist/richtext/node.d.ts +46 -2
  418. package/dist/richtext/node.d.ts.map +1 -1
  419. package/dist/richtext/node.js +187 -4
  420. package/dist/richtext/node.js.map +1 -1
  421. package/dist/richtext/runs.d.ts +13 -8
  422. package/dist/richtext/runs.d.ts.map +1 -1
  423. package/dist/richtext/runs.js +18 -8
  424. package/dist/richtext/runs.js.map +1 -1
  425. package/dist/table/index.d.ts.map +1 -1
  426. package/dist/table/index.js +23 -0
  427. package/dist/table/index.js.map +1 -1
  428. package/dist/table/rows.d.ts +3 -2
  429. package/dist/table/rows.d.ts.map +1 -1
  430. package/dist/table/rows.js +20 -6
  431. package/dist/table/rows.js.map +1 -1
  432. package/dist/terminal/index.d.ts.map +1 -1
  433. package/dist/terminal/index.js +4 -0
  434. package/dist/terminal/index.js.map +1 -1
  435. package/dist/terminal/vt/pty.d.ts +13 -2
  436. package/dist/terminal/vt/pty.d.ts.map +1 -1
  437. package/dist/terminal/vt/pty.js +18 -3
  438. package/dist/terminal/vt/pty.js.map +1 -1
  439. package/dist/terminal-output/index.d.ts.map +1 -1
  440. package/dist/terminal-output/index.js +103 -23
  441. package/dist/terminal-output/index.js.map +1 -1
  442. package/dist/terminal-output/runs.d.ts +4 -1
  443. package/dist/terminal-output/runs.d.ts.map +1 -1
  444. package/dist/terminal-output/runs.js +5 -1
  445. package/dist/terminal-output/runs.js.map +1 -1
  446. package/dist/three/canvas.d.ts.map +1 -1
  447. package/dist/three/canvas.js +85 -7
  448. package/dist/three/canvas.js.map +1 -1
  449. package/dist/three/events.d.ts +22 -4
  450. package/dist/three/events.d.ts.map +1 -1
  451. package/dist/three/events.js +34 -4
  452. package/dist/three/events.js.map +1 -1
  453. package/dist/tree/index.d.ts.map +1 -1
  454. package/dist/tree/index.js +17 -0
  455. package/dist/tree/index.js.map +1 -1
  456. package/package.json +42 -33
  457. package/src/charts/node.ts +62 -26
  458. package/src/charts/render.ts +120 -30
  459. package/src/code/index.ts +36 -32
  460. package/src/code-editor/completion.ts +3 -2
  461. package/src/code-editor/index.ts +19 -0
  462. package/src/code-editor/node.ts +1574 -184
  463. package/src/code-language/index.ts +1 -1
  464. package/src/code-language/languages/glsl.ts +12 -2
  465. package/src/code-language/languages/javascript.ts +21 -4
  466. package/src/code-language/languages/json.ts +12 -2
  467. package/src/code-language/languages/shell.ts +12 -2
  468. package/src/code-language/languages/sql.ts +22 -2
  469. package/src/code-language/runs.ts +111 -1
  470. package/src/code-language/stream.ts +257 -17
  471. package/src/code-language/types.ts +5 -4
  472. package/src/codeblock/index.ts +68 -4
  473. package/src/flow/draw.ts +167 -41
  474. package/src/flow/gl/color.ts +85 -0
  475. package/src/flow/gl/index.ts +342 -0
  476. package/src/flow/gl/pack.ts +585 -0
  477. package/src/flow/gl/renderer.ts +679 -0
  478. package/src/flow/gl/shaders.ts +371 -0
  479. package/src/flow/gl/text.ts +1295 -0
  480. package/src/flow/index.ts +794 -67
  481. package/src/flow/node.ts +2496 -1256
  482. package/src/flow/paint.ts +511 -0
  483. package/src/flow/paths.ts +80 -15
  484. package/src/flow/scene.ts +2199 -0
  485. package/src/flow/types.ts +113 -1
  486. package/src/html/controls.ts +73 -2
  487. package/src/html/css/calc.ts +385 -0
  488. package/src/html/css/cascade.ts +1481 -62
  489. package/src/html/css/color.ts +755 -0
  490. package/src/html/css/content.ts +417 -0
  491. package/src/html/css/counter-styles.ts +973 -0
  492. package/src/html/css/decode.ts +130 -0
  493. package/src/html/css/parse.ts +1514 -160
  494. package/src/html/css/style.ts +4131 -223
  495. package/src/html/css/ua.ts +66 -17
  496. package/src/html/css/values.ts +150 -50
  497. package/src/html/css/vars.ts +348 -0
  498. package/src/html/dom.ts +284 -17
  499. package/src/html/fonts.ts +641 -0
  500. package/src/html/gif.ts +233 -0
  501. package/src/html/index.ts +180 -20
  502. package/src/html/layout/block.ts +3560 -208
  503. package/src/html/layout/boxes.ts +2141 -190
  504. package/src/html/layout/cache.ts +289 -0
  505. package/src/html/layout/collapse.ts +317 -0
  506. package/src/html/layout/css-grid.ts +1063 -0
  507. package/src/html/layout/flex.ts +1115 -106
  508. package/src/html/layout/floats.ts +128 -14
  509. package/src/html/layout/grid-lines.ts +141 -0
  510. package/src/html/layout/grid.ts +181 -0
  511. package/src/html/layout/inline.ts +4187 -192
  512. package/src/html/layout/shaping.ts +140 -0
  513. package/src/html/layout/table.ts +696 -186
  514. package/src/html/layout/tracks.ts +437 -0
  515. package/src/html/node.ts +1585 -156
  516. package/src/html/paint.ts +4582 -267
  517. package/src/html/resources.ts +161 -50
  518. package/src/html/surfaces.ts +81 -0
  519. package/src/html/svg.ts +504 -0
  520. package/src/html/url.ts +86 -0
  521. package/src/index.ts +2 -0
  522. package/src/internal/codelines.ts +200 -0
  523. package/src/internal/collate.ts +12 -0
  524. package/src/internal/markdown/ast.ts +11 -0
  525. package/src/internal/markdown/parse.ts +154 -11
  526. package/src/internal/prewarm.ts +45 -0
  527. package/src/internal/sdf.ts +227 -0
  528. package/src/internal/splice.ts +25 -0
  529. package/src/internal/window.ts +36 -5
  530. package/src/maps/anchors.ts +307 -1
  531. package/src/maps/controller.ts +116 -31
  532. package/src/maps/gl/buckets.ts +5 -1
  533. package/src/maps/gl/build-worker.ts +13 -2
  534. package/src/maps/gl/cover.ts +79 -44
  535. package/src/maps/gl/placement.ts +221 -69
  536. package/src/maps/gl/renderer.ts +104 -20
  537. package/src/maps/gl/shaders.ts +35 -32
  538. package/src/maps/gl/store.ts +66 -17
  539. package/src/maps/gl/text.ts +444 -71
  540. package/src/maps/gl/view.ts +361 -96
  541. package/src/maps/icons.ts +183 -0
  542. package/src/maps/index.ts +4 -0
  543. package/src/maps/labels.ts +269 -49
  544. package/src/maps/node.ts +82 -49
  545. package/src/maps/proj.ts +87 -0
  546. package/src/maps/sources.ts +5 -3
  547. package/src/maps/style.ts +32 -0
  548. package/src/maps/styles.ts +215 -4
  549. package/src/maps/tiles.ts +64 -31
  550. package/src/maps/types.ts +28 -4
  551. package/src/markdown/index.ts +293 -92
  552. package/src/markdown/spans.ts +5 -0
  553. package/src/qml/containers.tsx +6 -1
  554. package/src/qml/interaction.tsx +42 -5
  555. package/src/qml/layouts.tsx +21 -6
  556. package/src/qml/qtquick.tsx +9 -2
  557. package/src/qml/react.tsx +7 -5
  558. package/src/reorder/clock.ts +27 -0
  559. package/src/reorder/index.ts +100 -27
  560. package/src/rich-text-editor/index.ts +37 -12
  561. package/src/rich-text-editor/keymap.ts +1 -1
  562. package/src/rich-text-editor/keys.ts +135 -26
  563. package/src/rich-text-editor/markdown.ts +36 -1
  564. package/src/rich-text-editor/marks.ts +101 -0
  565. package/src/rich-text-editor/render.ts +49 -12
  566. package/src/rich-text-editor/replace.ts +85 -0
  567. package/src/rich-text-editor/toolbar.ts +1 -1
  568. package/src/rich-text-editor/virtual.ts +25 -0
  569. package/src/richtext/node.ts +235 -14
  570. package/src/richtext/runs.ts +23 -12
  571. package/src/table/index.ts +29 -0
  572. package/src/table/rows.ts +18 -8
  573. package/src/terminal/index.ts +4 -0
  574. package/src/terminal/vt/pty.ts +16 -2
  575. package/src/terminal-output/index.ts +129 -31
  576. package/src/terminal-output/runs.ts +16 -2
  577. package/src/three/canvas.ts +102 -8
  578. package/src/three/events.ts +49 -9
  579. package/src/tree/index.ts +19 -0
@@ -17,7 +17,7 @@
17
17
  // fits its street at this zoom, it would be cut by the edge, or something
18
18
  // that outranks it arrives.
19
19
  // - **Labels fade**, in and out, over {@link FADE_MS}. A label never pops;
20
- // one whose raster is still being set waits, invisibly, and fades in
20
+ // one whose field is still being set waits, invisibly, and fades in
21
21
  // when it lands.
22
22
  // - **Labels do not slide.** Anchors are fixed ground, so a label moves
23
23
  // exactly with the map; when a street's label leaves the view another
@@ -42,8 +42,16 @@ import {
42
42
  estimateWidth,
43
43
  } from '../anchors.js';
44
44
  import type { GlLabelData } from '../anchors.js';
45
- import { haloReach } from './text.js';
45
+ import { fieldReach } from './text.js';
46
46
  import type { AtlasEntry, LabelAtlas } from './text.js';
47
+ import {
48
+ DEFAULT_ICON_COLOR,
49
+ DEFAULT_ICON_GLYPH_COLOR,
50
+ DEFAULT_ICON_SIZE,
51
+ ICON_GAP,
52
+ isMapIcon,
53
+ } from '../icons.js';
54
+ import type { MapIcon } from '../icons.js';
47
55
 
48
56
  /** A rectangle in device pixels. */
49
57
  interface Rect {
@@ -85,23 +93,25 @@ export interface PlacementFrame {
85
93
  * must, and what the zoom uncovers is named once it stops — not labels
86
94
  * arriving and leaving at every step of it. `true` by default. */
87
95
  admit?: boolean;
88
- /** The camera is moving: a label keeps the raster it has, rather than
89
- * asking for one at each size its zoom ramp passes through. */
90
- moving?: boolean;
91
96
  }
92
97
 
93
98
  /** Floats per label instance; the layout `renderer.ts` binds. */
94
- export const LABEL_INSTANCE = 18;
99
+ export const LABEL_INSTANCE = 19;
95
100
 
96
101
  /** The frame's labels, ready to draw. */
97
102
  export interface LabelBatch {
98
103
  atlas: LabelAtlas;
99
104
  /** {@link LABEL_INSTANCE} floats per label: centre x, y (device
100
- * pixels); cos, sin of the baseline; the atlas rect x, y, w, h; ink
101
- * and halo colour, premultiplied and faded; halo radius; `1` to set
102
- * the label on whole pixels. */
105
+ * pixels); cos, sin of the baseline; the field's rect in the atlas x,
106
+ * y, w, h (texels); ink and halo colour, premultiplied and faded; halo
107
+ * radius (device pixels); `1` to set the label on whole pixels; and
108
+ * device pixels per field texel — the drawn size over the atlas's
109
+ * base. */
103
110
  instances: Float32Array;
104
111
  count: number;
112
+ /** Labels drawn: fewer than `count` where an icon is two instances of
113
+ * its own beside its name's. `count` where absent. */
114
+ labels?: number;
105
115
  }
106
116
 
107
117
  export interface PlacementStats {
@@ -130,12 +140,23 @@ const CELL = 64;
130
140
  interface LayerLabels {
131
141
  id: string;
132
142
  rank: number;
133
- /** Device pixels, whole — the raster's size. */
143
+ /** Device pixels — not rounded: one field draws any size. */
134
144
  size: number;
135
145
  repeat: number;
136
146
  ink: Rgba;
137
147
  halo: Rgba | null;
138
148
  haloPx: number;
149
+ icon: LayerIcon | null;
150
+ }
151
+
152
+ /** A layer's icon at a zoom: device pixels across, the gap to the name,
153
+ * and its two colours. */
154
+ interface LayerIcon {
155
+ name: MapIcon;
156
+ size: number;
157
+ gap: number;
158
+ plate: Rgba;
159
+ glyph: Rgba;
139
160
  }
140
161
 
141
162
  /** A label on screen, or fading. Its ground is mercator, so it outlives
@@ -158,8 +179,6 @@ interface Shown {
158
179
  priority: number;
159
180
  opacity: number;
160
181
  placed: boolean;
161
- /** The size it has a raster at — drawn until the current size's lands. */
162
- drawn: number;
163
182
  }
164
183
 
165
184
  interface Candidate {
@@ -172,6 +191,9 @@ interface Candidate {
172
191
  point: boolean;
173
192
  sx: number;
174
193
  sy: number;
194
+ /** How far right of `sx` its box's centre is: an icon's name is set
195
+ * beside it. Device pixels; set once the box is measured. */
196
+ ox: number;
175
197
  angle: number;
176
198
  cos: number;
177
199
  sin: number;
@@ -226,7 +248,7 @@ export class LabelPlacer {
226
248
 
227
249
  /**
228
250
  * Choose the frame's labels. Asks `atlas` for each contender's box, as
229
- * the frame's budget allows, and for each winner's raster.
251
+ * the frame's budget allows, and for each winner's field.
230
252
  */
231
253
  place(frame: PlacementFrame, atlas: LabelAtlas): void {
232
254
  const started = now();
@@ -372,18 +394,28 @@ export class LabelPlacer {
372
394
  }
373
395
  const box = atlas.measure(c.text, c.size);
374
396
  if (!box || box.width === 0) continue;
375
- const w = box.width;
376
- const h = box.height;
397
+ let w = box.width;
398
+ let h = box.height;
377
399
  if (!c.point) {
378
400
  const need = w / 2 + h * LINE_MARGIN;
379
401
  if (c.avail < (c.shown ? need * 0.9 : need)) continue;
380
402
  }
403
+ // An icon on the point and the name beside it are one box, placed
404
+ // and given way as one.
405
+ const icon = this._icon(layers[c.layer], c.point, atlas);
406
+ if (icon) {
407
+ const full = icon.size + icon.gap + w;
408
+ c.ox = (full - icon.size) / 2;
409
+ w = full;
410
+ h = Math.max(h, icon.size);
411
+ }
412
+ const bx = c.sx + c.ox;
381
413
  const hw = (Math.abs(c.cos) * w + Math.abs(c.sin) * h) / 2;
382
414
  const hh = (Math.abs(c.sin) * w + Math.abs(c.cos) * h) / 2;
383
415
  if (
384
- c.sx - hw < inset ||
416
+ bx - hw < inset ||
385
417
  c.sy - hh < inset ||
386
- c.sx + hw > width - inset ||
418
+ bx + hw > width - inset ||
387
419
  c.sy + hh > height - inset
388
420
  ) {
389
421
  continue;
@@ -425,7 +457,6 @@ export class LabelPlacer {
425
457
  size: c.size,
426
458
  opacity: 0,
427
459
  placed: false,
428
- drawn: 0,
429
460
  } as Shown);
430
461
  fresh.mx = c.mx;
431
462
  fresh.my = c.my;
@@ -442,8 +473,12 @@ export class LabelPlacer {
442
473
  }
443
474
  shown.placed = true;
444
475
  shown.size = c.size;
445
- if (!frame.moving || shown.drawn === 0)
446
- atlas.entry(shown.text, shown.size);
476
+ atlas.entry(shown.text);
477
+ const icon = this._icon(layers[shown.layer], shown.point, atlas);
478
+ if (icon) {
479
+ atlas.icon(icon.name, 'plate');
480
+ atlas.icon(icon.name, 'glyph');
481
+ }
447
482
  }
448
483
 
449
484
  this.stats = {
@@ -464,24 +499,27 @@ export class LabelPlacer {
464
499
  this._last = frame.now;
465
500
  const step = dt / FADE_MS;
466
501
  const layers = this._layersAt(frame.style, frame.zoom, frame.scale);
467
- const reach = haloReach(atlas.pad);
502
+ // How far past its glyphs a field sees, in its own texels: the widest
503
+ // halo it can draw, times the label's scale.
504
+ const reach = fieldReach(atlas.pad);
468
505
  const halfW = frame.width / 2;
469
506
  const halfH = frame.height / 2;
470
507
  let count = 0;
508
+ let labels = 0;
471
509
  for (const shown of [...this._shown]) {
472
510
  const layer = layers[shown.layer];
473
- let entry: AtlasEntry | null;
474
- if (frame.moving && shown.drawn > 0 && shown.drawn !== shown.size) {
475
- // Its zoom ramp has moved on; the size it has serves until the
476
- // view is still.
477
- entry = atlas.entry(shown.text, shown.drawn);
478
- } else {
479
- entry = atlas.entry(shown.text, shown.size);
480
- if (entry) shown.drawn = shown.size;
481
- else if (shown.drawn > 0) entry = atlas.entry(shown.text, shown.drawn);
482
- }
511
+ // One field for every size: a zoom ramp that grows the type draws the
512
+ // same raster larger, the frame it changes.
513
+ const entry = atlas.entry(shown.text);
514
+ // A name set beside an icon waits for the icon as well: the name
515
+ // alone is what the icon is there to explain.
516
+ const icon = this._icon(layer, shown.point, atlas);
517
+ const plate = icon ? atlas.icon(icon.name, 'plate') : null;
518
+ const glyph = icon ? atlas.icon(icon.name, 'glyph') : null;
519
+ const ready =
520
+ entry !== null && (!icon || (plate !== null && glyph !== null));
483
521
  // Nothing to show yet: wait at zero rather than fade in unseen.
484
- if (entry && layer) {
522
+ if (ready && layer) {
485
523
  shown.opacity = shown.placed
486
524
  ? Math.min(1, shown.opacity + step)
487
525
  : Math.max(0, shown.opacity - step);
@@ -492,44 +530,111 @@ export class LabelPlacer {
492
530
  this._shown.delete(shown);
493
531
  continue;
494
532
  }
495
- if (!entry || !layer || shown.opacity <= 0) continue;
533
+ if (!ready || !entry || !layer || shown.opacity <= 0) continue;
496
534
  let dx = shown.mx - frame.centerX;
497
535
  dx -= Math.round(dx);
498
536
  const sx = halfW + dx * frame.world;
499
537
  const sy = halfH + (shown.my - frame.centerY) * frame.world;
500
538
  const eased = shown.opacity * shown.opacity * (3 - 2 * shown.opacity);
501
- if (this._instances.length < (count + 1) * LABEL_INSTANCE) {
502
- const grown = new Float32Array(this._instances.length * 2);
503
- grown.set(this._instances);
504
- this._instances = grown;
505
- }
506
- const d = this._instances;
507
- const at = count * LABEL_INSTANCE;
508
- const level = shown.angle === 0;
509
- d[at] = sx;
510
- d[at + 1] = sy;
511
- d[at + 2] = level ? 1 : Math.cos(shown.angle);
512
- d[at + 3] = level ? 0 : Math.sin(shown.angle);
513
- d[at + 4] = entry.x;
514
- d[at + 5] = entry.y;
515
- d[at + 6] = entry.width;
516
- d[at + 7] = entry.height;
517
539
  const ink = premultiplied(layer.ink, eased);
518
- d[at + 8] = ink[0];
519
- d[at + 9] = ink[1];
520
- d[at + 10] = ink[2];
521
- d[at + 11] = ink[3];
522
540
  const halo = layer.halo ? premultiplied(layer.halo, eased) : ZERO;
523
- d[at + 12] = halo[0];
524
- d[at + 13] = halo[1];
525
- d[at + 14] = halo[2];
526
- d[at + 15] = halo[3];
527
- d[at + 16] = layer.halo ? Math.min(layer.haloPx, reach) : 0;
528
- d[at + 17] = level ? 1 : 0;
529
- count++;
541
+ const k = shown.size / atlas.base;
542
+ const haloPx = layer.halo ? Math.min(layer.haloPx, reach * k) : 0;
543
+ if (icon && plate && glyph) {
544
+ // The plate under its halo, the glyph on it, and the name level
545
+ // beside it: the string is its field less the margin, and its
546
+ // left edge goes the gap past the plate's right.
547
+ const ki = icon.size / atlas.base;
548
+ const plateHalo = layer.halo ? Math.min(layer.haloPx, reach * ki) : 0;
549
+ count = this._put(
550
+ count,
551
+ sx,
552
+ sy,
553
+ 0,
554
+ plate,
555
+ premultiplied(icon.plate, eased),
556
+ halo,
557
+ plateHalo,
558
+ ki,
559
+ );
560
+ count = this._put(
561
+ count,
562
+ sx,
563
+ sy,
564
+ 0,
565
+ glyph,
566
+ premultiplied(icon.glyph, eased),
567
+ ZERO,
568
+ 0,
569
+ ki,
570
+ );
571
+ const tx =
572
+ sx +
573
+ icon.size / 2 +
574
+ icon.gap +
575
+ ((entry.width - 2 * atlas.pad) * k) / 2;
576
+ count = this._put(count, tx, sy, 0, entry, ink, halo, haloPx, k);
577
+ } else {
578
+ count = this._put(
579
+ count,
580
+ sx,
581
+ sy,
582
+ shown.angle,
583
+ entry,
584
+ ink,
585
+ halo,
586
+ haloPx,
587
+ k,
588
+ );
589
+ }
590
+ labels++;
530
591
  }
531
- this.stats.drawn = count;
532
- return { atlas, instances: this._instances, count };
592
+ this.stats.drawn = labels;
593
+ return { atlas, instances: this._instances, count, labels };
594
+ }
595
+
596
+ /** One instance — a label's string, or a piece of its icon — written at
597
+ * `count`: answers the count after it. Level (`angle` 0) is set on
598
+ * whole pixels. */
599
+ private _put(
600
+ count: number,
601
+ x: number,
602
+ y: number,
603
+ angle: number,
604
+ entry: AtlasEntry,
605
+ ink: Rgba,
606
+ halo: Rgba,
607
+ haloPx: number,
608
+ scale: number,
609
+ ): number {
610
+ if (this._instances.length < (count + 1) * LABEL_INSTANCE) {
611
+ const grown = new Float32Array(this._instances.length * 2);
612
+ grown.set(this._instances);
613
+ this._instances = grown;
614
+ }
615
+ const d = this._instances;
616
+ const at = count * LABEL_INSTANCE;
617
+ const level = angle === 0;
618
+ d[at] = x;
619
+ d[at + 1] = y;
620
+ d[at + 2] = level ? 1 : Math.cos(angle);
621
+ d[at + 3] = level ? 0 : Math.sin(angle);
622
+ d[at + 4] = entry.x;
623
+ d[at + 5] = entry.y;
624
+ d[at + 6] = entry.width;
625
+ d[at + 7] = entry.height;
626
+ d[at + 8] = ink[0];
627
+ d[at + 9] = ink[1];
628
+ d[at + 10] = ink[2];
629
+ d[at + 11] = ink[3];
630
+ d[at + 12] = halo[0];
631
+ d[at + 13] = halo[1];
632
+ d[at + 14] = halo[2];
633
+ d[at + 15] = halo[3];
634
+ d[at + 16] = haloPx;
635
+ d[at + 17] = level ? 1 : 0;
636
+ d[at + 18] = scale;
637
+ return count + 1;
533
638
  }
534
639
 
535
640
  // --- internals -------------------------------------------------------------
@@ -587,6 +692,7 @@ export class LabelPlacer {
587
692
  point,
588
693
  sx,
589
694
  sy,
695
+ ox: 0,
590
696
  angle: a,
591
697
  cos: Math.cos(a),
592
698
  sin: Math.sin(a),
@@ -607,6 +713,18 @@ export class LabelPlacer {
607
713
  };
608
714
  }
609
715
 
716
+ /** The icon a label of `layer` is set with: none for a name along a
717
+ * street, and none where the atlas cannot draw it — the name is then set
718
+ * alone rather than not at all. */
719
+ private _icon(
720
+ layer: LayerLabels | null | undefined,
721
+ point: boolean,
722
+ atlas: LabelAtlas,
723
+ ): LayerIcon | null {
724
+ const icon = point ? (layer?.icon ?? null) : null;
725
+ return icon && !atlas.iconFailed(icon.name) ? icon : null;
726
+ }
727
+
610
728
  /** Each symbol layer's labelling at this zoom, by layer index — null
611
729
  * where it does not label. */
612
730
  private _layersAt(
@@ -630,13 +748,13 @@ export class LabelPlacer {
630
748
  symbol.textHaloWidth === undefined
631
749
  ? 1
632
750
  : resolveZoomed(symbol.textHaloWidth, zoom);
751
+ // Not rounded: a field draws any size, so a ramp grows the type
752
+ // continuously rather than a whole pixel at a time.
633
753
  const size = Math.max(
634
754
  1,
635
- Math.round(
636
- (symbol.textSize === undefined
637
- ? 12
638
- : resolveZoomed(symbol.textSize, zoom)) * scale,
639
- ),
755
+ (symbol.textSize === undefined
756
+ ? 12
757
+ : resolveZoomed(symbol.textSize, zoom)) * scale,
640
758
  );
641
759
  return {
642
760
  id: layer.id,
@@ -646,10 +764,43 @@ export class LabelPlacer {
646
764
  ink,
647
765
  halo: halo && haloWidth > 0 ? halo : null,
648
766
  haloPx: haloWidth * scale,
767
+ icon: this._iconOf(symbol, zoom, scale),
649
768
  };
650
769
  });
651
770
  }
652
771
 
772
+ /** A layer's icon at this zoom, or null where it sets none — or names
773
+ * one this version does not draw, or a colour that does not parse. */
774
+ private _iconOf(
775
+ symbol: SymbolLayer,
776
+ zoom: number,
777
+ scale: number,
778
+ ): LayerIcon | null {
779
+ if (!isMapIcon(symbol.icon)) return null;
780
+ const plate = this._color(
781
+ symbol.iconColor
782
+ ? resolveZoomed(symbol.iconColor, zoom)
783
+ : DEFAULT_ICON_COLOR,
784
+ );
785
+ const glyph = this._color(
786
+ symbol.iconGlyphColor
787
+ ? resolveZoomed(symbol.iconGlyphColor, zoom)
788
+ : DEFAULT_ICON_GLYPH_COLOR,
789
+ );
790
+ if (!plate || !glyph) return null;
791
+ const size =
792
+ symbol.iconSize === undefined
793
+ ? DEFAULT_ICON_SIZE
794
+ : resolveZoomed(symbol.iconSize, zoom);
795
+ return {
796
+ name: symbol.icon,
797
+ size: Math.max(1, Math.round(size * scale)),
798
+ gap: ICON_GAP * scale,
799
+ plate,
800
+ glyph,
801
+ };
802
+ }
803
+
653
804
  private _color(value: string): Rgba | null {
654
805
  let color = this._colors.get(value);
655
806
  if (color === undefined) {
@@ -743,11 +894,12 @@ class CollisionGrid {
743
894
  const out = this._scratch;
744
895
  out.length = 0;
745
896
  if (c.angle === 0) {
897
+ const x = c.sx + c.ox;
746
898
  out.push(
747
899
  0,
748
- c.sx - w / 2 - pad,
900
+ x - w / 2 - pad,
749
901
  c.sy - h / 2 - pad,
750
- c.sx + w / 2 + pad,
902
+ x + w / 2 + pad,
751
903
  c.sy + h / 2 + pad,
752
904
  );
753
905
  return out;