@react-x11/components 0.7.1 → 0.9.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 (354) hide show
  1. package/README.md +295 -51
  2. package/dist/charts/node.d.ts +1 -1
  3. package/dist/charts/node.d.ts.map +1 -1
  4. package/dist/charts/node.js +6 -2
  5. package/dist/charts/node.js.map +1 -1
  6. package/dist/color-picker/ColorPicker.d.ts.map +1 -1
  7. package/dist/color-picker/ColorPicker.js +43 -33
  8. package/dist/color-picker/ColorPicker.js.map +1 -1
  9. package/dist/embed/client.d.ts +48 -3
  10. package/dist/embed/client.d.ts.map +1 -1
  11. package/dist/embed/client.js +79 -5
  12. package/dist/embed/client.js.map +1 -1
  13. package/dist/embed/index.d.ts +1 -1
  14. package/dist/embed/index.d.ts.map +1 -1
  15. package/dist/embed/index.js +1 -1
  16. package/dist/embed/index.js.map +1 -1
  17. package/dist/html/node.d.ts +3 -1
  18. package/dist/html/node.d.ts.map +1 -1
  19. package/dist/html/node.js +7 -5
  20. package/dist/html/node.js.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/{markdown → internal/markdown}/ast.d.ts +12 -0
  26. package/dist/internal/markdown/ast.d.ts.map +1 -0
  27. package/dist/internal/markdown/ast.js +22 -0
  28. package/dist/internal/markdown/ast.js.map +1 -0
  29. package/dist/internal/markdown/parse.d.ts.map +1 -0
  30. package/dist/{markdown → internal/markdown}/parse.js +112 -22
  31. package/dist/internal/markdown/parse.js.map +1 -0
  32. package/dist/internal/markdown/stringify.d.ts +4 -0
  33. package/dist/internal/markdown/stringify.d.ts.map +1 -0
  34. package/dist/internal/markdown/stringify.js +684 -0
  35. package/dist/internal/markdown/stringify.js.map +1 -0
  36. package/dist/internal/markdown/tags.d.ts.map +1 -0
  37. package/dist/internal/markdown/tags.js.map +1 -0
  38. package/dist/internal/scroll.d.ts +3 -2
  39. package/dist/internal/scroll.d.ts.map +1 -1
  40. package/dist/internal/scroll.js +33 -15
  41. package/dist/internal/scroll.js.map +1 -1
  42. package/dist/internal/units.d.ts +2 -0
  43. package/dist/internal/units.d.ts.map +1 -0
  44. package/dist/internal/units.js +35 -0
  45. package/dist/internal/units.js.map +1 -0
  46. package/dist/internal/window.d.ts.map +1 -1
  47. package/dist/internal/window.js +4 -2
  48. package/dist/internal/window.js.map +1 -1
  49. package/dist/maps/anchors.d.ts +98 -0
  50. package/dist/maps/anchors.d.ts.map +1 -0
  51. package/dist/maps/anchors.js +531 -0
  52. package/dist/maps/anchors.js.map +1 -0
  53. package/dist/maps/controller.d.ts +283 -0
  54. package/dist/maps/controller.d.ts.map +1 -0
  55. package/dist/maps/controller.js +743 -0
  56. package/dist/maps/controller.js.map +1 -0
  57. package/dist/maps/gl/buckets.d.ts +95 -0
  58. package/dist/maps/gl/buckets.d.ts.map +1 -0
  59. package/dist/maps/gl/buckets.js +362 -0
  60. package/dist/maps/gl/buckets.js.map +1 -0
  61. package/dist/maps/gl/build-worker.d.ts +13 -0
  62. package/dist/maps/gl/build-worker.d.ts.map +1 -0
  63. package/dist/maps/gl/build-worker.js +44 -0
  64. package/dist/maps/gl/build-worker.js.map +1 -0
  65. package/dist/maps/gl/color.d.ts +8 -0
  66. package/dist/maps/gl/color.d.ts.map +1 -0
  67. package/dist/maps/gl/color.js +57 -0
  68. package/dist/maps/gl/color.js.map +1 -0
  69. package/dist/maps/gl/cover.d.ts +51 -0
  70. package/dist/maps/gl/cover.d.ts.map +1 -0
  71. package/dist/maps/gl/cover.js +124 -0
  72. package/dist/maps/gl/cover.js.map +1 -0
  73. package/dist/maps/gl/index.d.ts +3 -0
  74. package/dist/maps/gl/index.d.ts.map +1 -0
  75. package/dist/maps/gl/index.js +20 -0
  76. package/dist/maps/gl/index.js.map +1 -0
  77. package/dist/maps/gl/markers.d.ts +28 -0
  78. package/dist/maps/gl/markers.d.ts.map +1 -0
  79. package/dist/maps/gl/markers.js +60 -0
  80. package/dist/maps/gl/markers.js.map +1 -0
  81. package/dist/maps/gl/overlays.d.ts +68 -0
  82. package/dist/maps/gl/overlays.d.ts.map +1 -0
  83. package/dist/maps/gl/overlays.js +300 -0
  84. package/dist/maps/gl/overlays.js.map +1 -0
  85. package/dist/maps/gl/pane.d.ts +12 -0
  86. package/dist/maps/gl/pane.d.ts.map +1 -0
  87. package/dist/maps/gl/pane.js +37 -0
  88. package/dist/maps/gl/pane.js.map +1 -0
  89. package/dist/maps/gl/placement.d.ts +111 -0
  90. package/dist/maps/gl/placement.d.ts.map +1 -0
  91. package/dist/maps/gl/placement.js +567 -0
  92. package/dist/maps/gl/placement.js.map +1 -0
  93. package/dist/maps/gl/renderer.d.ts +352 -0
  94. package/dist/maps/gl/renderer.d.ts.map +1 -0
  95. package/dist/maps/gl/renderer.js +1127 -0
  96. package/dist/maps/gl/renderer.js.map +1 -0
  97. package/dist/maps/gl/shaders.d.ts +120 -0
  98. package/dist/maps/gl/shaders.d.ts.map +1 -0
  99. package/dist/maps/gl/shaders.js +451 -0
  100. package/dist/maps/gl/shaders.js.map +1 -0
  101. package/dist/maps/gl/store.d.ts +115 -0
  102. package/dist/maps/gl/store.d.ts.map +1 -0
  103. package/dist/maps/gl/store.js +469 -0
  104. package/dist/maps/gl/store.js.map +1 -0
  105. package/dist/maps/gl/text.d.ts +154 -0
  106. package/dist/maps/gl/text.d.ts.map +1 -0
  107. package/dist/maps/gl/text.js +382 -0
  108. package/dist/maps/gl/text.js.map +1 -0
  109. package/dist/maps/gl/view.d.ts +54 -0
  110. package/dist/maps/gl/view.d.ts.map +1 -0
  111. package/dist/maps/gl/view.js +974 -0
  112. package/dist/maps/gl/view.js.map +1 -0
  113. package/dist/maps/index.d.ts +1 -1
  114. package/dist/maps/index.d.ts.map +1 -1
  115. package/dist/maps/index.js +216 -52
  116. package/dist/maps/index.js.map +1 -1
  117. package/dist/maps/labels.d.ts +37 -16
  118. package/dist/maps/labels.d.ts.map +1 -1
  119. package/dist/maps/labels.js +188 -119
  120. package/dist/maps/labels.js.map +1 -1
  121. package/dist/maps/node.d.ts +162 -56
  122. package/dist/maps/node.d.ts.map +1 -1
  123. package/dist/maps/node.js +607 -515
  124. package/dist/maps/node.js.map +1 -1
  125. package/dist/maps/overlay.d.ts +72 -9
  126. package/dist/maps/overlay.d.ts.map +1 -1
  127. package/dist/maps/overlay.js +108 -28
  128. package/dist/maps/overlay.js.map +1 -1
  129. package/dist/maps/paint.d.ts +3 -0
  130. package/dist/maps/paint.d.ts.map +1 -1
  131. package/dist/maps/paint.js.map +1 -1
  132. package/dist/maps/proj.d.ts +14 -0
  133. package/dist/maps/proj.d.ts.map +1 -1
  134. package/dist/maps/proj.js +28 -0
  135. package/dist/maps/proj.js.map +1 -1
  136. package/dist/maps/renderer.d.ts +69 -0
  137. package/dist/maps/renderer.d.ts.map +1 -0
  138. package/dist/maps/renderer.js +66 -0
  139. package/dist/maps/renderer.js.map +1 -0
  140. package/dist/maps/sources.d.ts +25 -3
  141. package/dist/maps/sources.d.ts.map +1 -1
  142. package/dist/maps/sources.js +17 -0
  143. package/dist/maps/sources.js.map +1 -1
  144. package/dist/maps/theme.d.ts +19 -0
  145. package/dist/maps/theme.d.ts.map +1 -0
  146. package/dist/maps/theme.js +44 -0
  147. package/dist/maps/theme.js.map +1 -0
  148. package/dist/maps/tiles.d.ts +117 -17
  149. package/dist/maps/tiles.d.ts.map +1 -1
  150. package/dist/maps/tiles.js +163 -30
  151. package/dist/maps/tiles.js.map +1 -1
  152. package/dist/maps/types.d.ts +188 -20
  153. package/dist/maps/types.d.ts.map +1 -1
  154. package/dist/markdown/expressions.d.ts +1 -1
  155. package/dist/markdown/expressions.d.ts.map +1 -1
  156. package/dist/markdown/expressions.js.map +1 -1
  157. package/dist/markdown/index.d.ts +7 -6
  158. package/dist/markdown/index.d.ts.map +1 -1
  159. package/dist/markdown/index.js +9 -7
  160. package/dist/markdown/index.js.map +1 -1
  161. package/dist/markdown/spans.d.ts +1 -1
  162. package/dist/markdown/spans.d.ts.map +1 -1
  163. package/dist/media-player/index.d.ts +11 -3
  164. package/dist/media-player/index.d.ts.map +1 -1
  165. package/dist/media-player/index.js +13 -2
  166. package/dist/media-player/index.js.map +1 -1
  167. package/dist/rich-text-editor/clipboard.d.ts +23 -0
  168. package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
  169. package/dist/rich-text-editor/clipboard.js +307 -0
  170. package/dist/rich-text-editor/clipboard.js.map +1 -0
  171. package/dist/rich-text-editor/collab.d.ts +32 -0
  172. package/dist/rich-text-editor/collab.d.ts.map +1 -0
  173. package/dist/rich-text-editor/collab.js +55 -0
  174. package/dist/rich-text-editor/collab.js.map +1 -0
  175. package/dist/rich-text-editor/commands.d.ts +50 -0
  176. package/dist/rich-text-editor/commands.d.ts.map +1 -0
  177. package/dist/rich-text-editor/commands.js +376 -0
  178. package/dist/rich-text-editor/commands.js.map +1 -0
  179. package/dist/rich-text-editor/drag.d.ts +68 -0
  180. package/dist/rich-text-editor/drag.d.ts.map +1 -0
  181. package/dist/rich-text-editor/drag.js +148 -0
  182. package/dist/rich-text-editor/drag.js.map +1 -0
  183. package/dist/rich-text-editor/html.d.ts +145 -0
  184. package/dist/rich-text-editor/html.d.ts.map +1 -0
  185. package/dist/rich-text-editor/html.js +516 -0
  186. package/dist/rich-text-editor/html.js.map +1 -0
  187. package/dist/rich-text-editor/index.d.ts +263 -0
  188. package/dist/rich-text-editor/index.d.ts.map +1 -0
  189. package/dist/rich-text-editor/index.js +822 -0
  190. package/dist/rich-text-editor/index.js.map +1 -0
  191. package/dist/rich-text-editor/inline.d.ts +94 -0
  192. package/dist/rich-text-editor/inline.d.ts.map +1 -0
  193. package/dist/rich-text-editor/inline.js +252 -0
  194. package/dist/rich-text-editor/inline.js.map +1 -0
  195. package/dist/rich-text-editor/keymap.d.ts +71 -0
  196. package/dist/rich-text-editor/keymap.d.ts.map +1 -0
  197. package/dist/rich-text-editor/keymap.js +393 -0
  198. package/dist/rich-text-editor/keymap.js.map +1 -0
  199. package/dist/rich-text-editor/keys.d.ts +29 -0
  200. package/dist/rich-text-editor/keys.d.ts.map +1 -0
  201. package/dist/rich-text-editor/keys.js +93 -0
  202. package/dist/rich-text-editor/keys.js.map +1 -0
  203. package/dist/rich-text-editor/look.d.ts +71 -0
  204. package/dist/rich-text-editor/look.d.ts.map +1 -0
  205. package/dist/rich-text-editor/look.js +342 -0
  206. package/dist/rich-text-editor/look.js.map +1 -0
  207. package/dist/rich-text-editor/markdown.d.ts +18 -0
  208. package/dist/rich-text-editor/markdown.d.ts.map +1 -0
  209. package/dist/rich-text-editor/markdown.js +496 -0
  210. package/dist/rich-text-editor/markdown.js.map +1 -0
  211. package/dist/rich-text-editor/nodes.d.ts +135 -0
  212. package/dist/rich-text-editor/nodes.d.ts.map +1 -0
  213. package/dist/rich-text-editor/nodes.js +397 -0
  214. package/dist/rich-text-editor/nodes.js.map +1 -0
  215. package/dist/rich-text-editor/render.d.ts +68 -0
  216. package/dist/rich-text-editor/render.d.ts.map +1 -0
  217. package/dist/rich-text-editor/render.js +500 -0
  218. package/dist/rich-text-editor/render.js.map +1 -0
  219. package/dist/rich-text-editor/schema.d.ts +16 -0
  220. package/dist/rich-text-editor/schema.d.ts.map +1 -0
  221. package/dist/rich-text-editor/schema.js +386 -0
  222. package/dist/rich-text-editor/schema.js.map +1 -0
  223. package/dist/rich-text-editor/store.d.ts +11 -0
  224. package/dist/rich-text-editor/store.d.ts.map +1 -0
  225. package/dist/rich-text-editor/store.js +43 -0
  226. package/dist/rich-text-editor/store.js.map +1 -0
  227. package/dist/rich-text-editor/suggest.d.ts +127 -0
  228. package/dist/rich-text-editor/suggest.d.ts.map +1 -0
  229. package/dist/rich-text-editor/suggest.js +0 -0
  230. package/dist/rich-text-editor/suggest.js.map +1 -0
  231. package/dist/rich-text-editor/tables.d.ts +41 -0
  232. package/dist/rich-text-editor/tables.d.ts.map +1 -0
  233. package/dist/rich-text-editor/tables.js +204 -0
  234. package/dist/rich-text-editor/tables.js.map +1 -0
  235. package/dist/rich-text-editor/toolbar.d.ts +58 -0
  236. package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
  237. package/dist/rich-text-editor/toolbar.js +548 -0
  238. package/dist/rich-text-editor/toolbar.js.map +1 -0
  239. package/dist/rich-text-editor/view.d.ts +368 -0
  240. package/dist/rich-text-editor/view.d.ts.map +1 -0
  241. package/dist/rich-text-editor/view.js +1968 -0
  242. package/dist/rich-text-editor/view.js.map +1 -0
  243. package/dist/rich-text-editor/virtual.d.ts +54 -0
  244. package/dist/rich-text-editor/virtual.d.ts.map +1 -0
  245. package/dist/rich-text-editor/virtual.js +262 -0
  246. package/dist/rich-text-editor/virtual.js.map +1 -0
  247. package/dist/richtext/node.d.ts +25 -2
  248. package/dist/richtext/node.d.ts.map +1 -1
  249. package/dist/richtext/node.js +46 -24
  250. package/dist/richtext/node.js.map +1 -1
  251. package/dist/table/index.d.ts.map +1 -1
  252. package/dist/table/index.js +14 -5
  253. package/dist/table/index.js.map +1 -1
  254. package/dist/terminal/backends.d.ts +4 -1
  255. package/dist/terminal/backends.d.ts.map +1 -1
  256. package/dist/terminal/backends.js.map +1 -1
  257. package/dist/terminal/index.d.ts +18 -7
  258. package/dist/terminal/index.d.ts.map +1 -1
  259. package/dist/terminal/index.js +28 -11
  260. package/dist/terminal/index.js.map +1 -1
  261. package/dist/terminal/vt/node.d.ts +56 -3
  262. package/dist/terminal/vt/node.d.ts.map +1 -1
  263. package/dist/terminal/vt/node.js +106 -26
  264. package/dist/terminal/vt/node.js.map +1 -1
  265. package/dist/terminal/vt/renderer.d.ts +4 -0
  266. package/dist/terminal/vt/renderer.d.ts.map +1 -1
  267. package/dist/terminal/vt/renderer.js +14 -5
  268. package/dist/terminal/vt/renderer.js.map +1 -1
  269. package/dist/tree/index.d.ts.map +1 -1
  270. package/dist/tree/index.js +6 -4
  271. package/dist/tree/index.js.map +1 -1
  272. package/package.json +23 -4
  273. package/src/charts/node.ts +6 -2
  274. package/src/color-picker/ColorPicker.ts +107 -81
  275. package/src/embed/client.ts +102 -8
  276. package/src/embed/index.ts +2 -0
  277. package/src/html/node.ts +7 -5
  278. package/src/index.ts +2 -0
  279. package/src/{markdown → internal/markdown}/ast.ts +24 -7
  280. package/src/{markdown → internal/markdown}/parse.ts +134 -24
  281. package/src/internal/markdown/stringify.ts +772 -0
  282. package/src/internal/scroll.ts +39 -18
  283. package/src/internal/units.ts +34 -0
  284. package/src/internal/window.ts +4 -2
  285. package/src/maps/anchors.ts +607 -0
  286. package/src/maps/controller.ts +999 -0
  287. package/src/maps/gl/buckets.ts +457 -0
  288. package/src/maps/gl/build-worker.ts +55 -0
  289. package/src/maps/gl/color.ts +62 -0
  290. package/src/maps/gl/cover.ts +170 -0
  291. package/src/maps/gl/index.ts +23 -0
  292. package/src/maps/gl/markers.ts +83 -0
  293. package/src/maps/gl/overlays.ts +379 -0
  294. package/src/maps/gl/pane.ts +42 -0
  295. package/src/maps/gl/placement.ts +816 -0
  296. package/src/maps/gl/renderer.ts +1576 -0
  297. package/src/maps/gl/shaders.ts +486 -0
  298. package/src/maps/gl/store.ts +566 -0
  299. package/src/maps/gl/text.ts +495 -0
  300. package/src/maps/gl/view.ts +1224 -0
  301. package/src/maps/index.ts +270 -81
  302. package/src/maps/labels.ts +214 -121
  303. package/src/maps/node.ts +763 -629
  304. package/src/maps/overlay.ts +148 -43
  305. package/src/maps/paint.ts +3 -0
  306. package/src/maps/proj.ts +31 -0
  307. package/src/maps/renderer.ts +155 -0
  308. package/src/maps/sources.ts +38 -3
  309. package/src/maps/theme.ts +51 -0
  310. package/src/maps/tiles.ts +191 -33
  311. package/src/maps/types.ts +188 -20
  312. package/src/markdown/expressions.ts +5 -1
  313. package/src/markdown/index.ts +14 -11
  314. package/src/markdown/spans.ts +1 -1
  315. package/src/media-player/index.ts +18 -4
  316. package/src/rich-text-editor/clipboard.ts +439 -0
  317. package/src/rich-text-editor/collab.ts +91 -0
  318. package/src/rich-text-editor/commands.ts +448 -0
  319. package/src/rich-text-editor/dom-globals.d.ts +23 -0
  320. package/src/rich-text-editor/drag.ts +211 -0
  321. package/src/rich-text-editor/html.ts +619 -0
  322. package/src/rich-text-editor/index.ts +1331 -0
  323. package/src/rich-text-editor/inline.ts +345 -0
  324. package/src/rich-text-editor/keymap.ts +510 -0
  325. package/src/rich-text-editor/keys.ts +119 -0
  326. package/src/rich-text-editor/look.ts +427 -0
  327. package/src/rich-text-editor/markdown.ts +653 -0
  328. package/src/rich-text-editor/nodes.ts +497 -0
  329. package/src/rich-text-editor/render.ts +800 -0
  330. package/src/rich-text-editor/schema.ts +431 -0
  331. package/src/rich-text-editor/store.ts +39 -0
  332. package/src/rich-text-editor/suggest.ts +597 -0
  333. package/src/rich-text-editor/tables.ts +272 -0
  334. package/src/rich-text-editor/toolbar.ts +724 -0
  335. package/src/rich-text-editor/view.ts +2287 -0
  336. package/src/rich-text-editor/virtual.ts +347 -0
  337. package/src/richtext/node.ts +59 -30
  338. package/src/table/index.ts +14 -5
  339. package/src/terminal/backends.ts +4 -1
  340. package/src/terminal/index.ts +43 -15
  341. package/src/terminal/vt/node.ts +128 -29
  342. package/src/terminal/vt/renderer.ts +27 -5
  343. package/src/tree/index.ts +6 -4
  344. package/dist/markdown/ast.d.ts.map +0 -1
  345. package/dist/markdown/ast.js +0 -17
  346. package/dist/markdown/ast.js.map +0 -1
  347. package/dist/markdown/parse.d.ts.map +0 -1
  348. package/dist/markdown/parse.js.map +0 -1
  349. package/dist/markdown/tags.d.ts.map +0 -1
  350. package/dist/markdown/tags.js.map +0 -1
  351. /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
  352. /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
  353. /package/dist/{markdown → internal/markdown}/tags.js +0 -0
  354. /package/src/{markdown → internal/markdown}/tags.ts +0 -0
@@ -29,7 +29,15 @@ export class CachedTile {
29
29
  * keeps being composited until it is ready to be replaced.
30
30
  */
31
31
  shown = null;
32
- /** The rendering being drawn, or null when there is nothing to draw. */
32
+ /**
33
+ * The rendering being drawn, or null when there is nothing to draw.
34
+ *
35
+ * Finished ones do not usually stay: a draft is {@link TileCache.promote}d
36
+ * in the frame it is done. The exception is a restyle, which holds the
37
+ * previous style's whole picture up until the view is redrawn — so there
38
+ * a finished draft waits here until {@link TileCache.swap} puts every one
39
+ * on screen at once.
40
+ */
33
41
  drawing = null;
34
42
  /** Frame counter of the last frame that wanted it — what eviction sorts
35
43
  * on. */
@@ -66,6 +74,10 @@ export class TileCache {
66
74
  _entries = new Map();
67
75
  /** The source's own tiles, shared by every rendering that draws one. */
68
76
  _data = new Map();
77
+ /** The key prefix of each source object — per object and not per id,
78
+ * for the reason at the top of this file. */
79
+ _prefixes = new WeakMap();
80
+ _prefixCount = 0;
69
81
  _options;
70
82
  _frame = 0;
71
83
  _surfaceBytes = 0;
@@ -82,7 +94,16 @@ export class TileCache {
82
94
  get generation() {
83
95
  return this._generation;
84
96
  }
85
- /** Every rendered surface is stale — a new style, a new display scale. */
97
+ /**
98
+ * Every styled surface is stale: a new style, or `refresh()` after an
99
+ * edit to one. The data behind them stays, and so does a raster tile's
100
+ * rendering, which no style drew (see {@link TileRender.styled}).
101
+ *
102
+ * A new display scale needs none of this, because a rendering's size is
103
+ * already part of what makes it valid. And nothing on screen is thrown
104
+ * away here: each picture stays until its replacement is finished —
105
+ * {@link promote} for one tile, {@link swap} for the whole view at once.
106
+ */
86
107
  invalidateStyle() {
87
108
  this._generation++;
88
109
  }
@@ -93,23 +114,33 @@ export class TileCache {
93
114
  get size() {
94
115
  return this._entries.size;
95
116
  }
96
- key(sourceId, tile) {
97
- return `${sourceId}:${tileKey(tile)}`;
117
+ /** What a source's tile is filed under: a prefix of the source object's
118
+ * own, then `z/x/y`. The id is in the prefix only so that a key reads
119
+ * well in a debugger; two objects with one id get two prefixes. */
120
+ key(source, tile) {
121
+ let prefix = this._prefixes.get(source);
122
+ if (prefix === undefined) {
123
+ prefix = `${source.id ?? 'source'}#${++this._prefixCount}`;
124
+ this._prefixes.set(source, prefix);
125
+ }
126
+ return `${prefix}:${tileKey(tile)}`;
98
127
  }
99
- peek(sourceId, tile) {
100
- return this._entries.get(this.key(sourceId, tile));
128
+ peek(source, tile) {
129
+ return this._entries.get(this.key(source, tile));
101
130
  }
102
131
  /**
103
132
  * The entry for a tile the cover asked for, and the data behind it,
104
133
  * asking the source for that data if nothing has yet.
105
134
  *
106
- * `dataTile` is the tile whose bytes serve this one — itself, until the
107
- * cover goes deeper than the source cuts. Marks both used by the current
108
- * frame, which is what keeps them out of the next eviction.
135
+ * Filed under `source`; `sourceId` is only what it is called. `dataTile`
136
+ * is the tile whose bytes serve this one — itself, until the cover goes
137
+ * deeper than the source cuts. Marks both used by the current frame,
138
+ * which is what keeps them out of the next eviction — and a load still
139
+ * in flight from being cancelled by {@link sweep}.
109
140
  */
110
141
  want(source, sourceId, tile, dataTile = tile, sub = { x: 0, y: 0, span: 1 }) {
111
142
  const data = this._wantData(source, sourceId, dataTile);
112
- const key = this.key(sourceId, tile);
143
+ const key = this.key(source, tile);
113
144
  let entry = this._entries.get(key);
114
145
  if (!entry) {
115
146
  entry = new CachedTile(key, sourceId, tile, data, sub);
@@ -119,11 +150,13 @@ export class TileCache {
119
150
  return entry;
120
151
  }
121
152
  _wantData(source, sourceId, tile) {
122
- const key = this.key(sourceId, tile);
153
+ const key = this.key(source, tile);
123
154
  let data = this._data.get(key);
124
155
  if (!data) {
125
156
  data = {
126
157
  key,
158
+ source,
159
+ sourceId,
127
160
  tile,
128
161
  status: 'idle',
129
162
  error: null,
@@ -138,7 +171,7 @@ export class TileCache {
138
171
  }
139
172
  data.lastUsed = this._frame;
140
173
  if (data.status === 'idle') {
141
- this._load(source, sourceId, data);
174
+ this._load(data);
142
175
  }
143
176
  else if (data.status === 'error' && Date.now() >= data.retryAt) {
144
177
  // A failed tile is retried, but on a backoff rather than on every
@@ -146,11 +179,11 @@ export class TileCache {
146
179
  // `load` throws on the first call, which is how this was found — is
147
180
  // asked for every visible tile sixty times a second, which is a
148
181
  // retry storm pointed at somebody else's servers.
149
- this._load(source, sourceId, data);
182
+ this._load(data);
150
183
  }
151
184
  return data;
152
185
  }
153
- _load(source, sourceId, entry) {
186
+ _load(entry) {
154
187
  entry.status = 'loading';
155
188
  entry.error = null;
156
189
  // A **real** `AbortController` where the runtime has one. A look-alike
@@ -195,7 +228,11 @@ export class TileCache {
195
228
  };
196
229
  let result;
197
230
  try {
198
- result = source.load({ ...entry.tile, sourceId, signal });
231
+ result = entry.source.load({
232
+ ...entry.tile,
233
+ sourceId: entry.sourceId,
234
+ signal,
235
+ });
199
236
  }
200
237
  catch (error) {
201
238
  settle(() => fail(error));
@@ -237,16 +274,19 @@ export class TileCache {
237
274
  * under the fine one until it arrives — which is the difference between a
238
275
  * map that fills in and a map that flashes empty. Bounded, because
239
276
  * scaling one tile over sixteen screenfuls is worse than the hole.
277
+ *
278
+ * With a `generation`, only a picture drawn in it counts: a map showing
279
+ * one style must not cover a hole with a tile drawn in another.
240
280
  */
241
- ancestorWithSurface(sourceId, tile, levels = 5) {
281
+ ancestorWithSurface(source, tile, levels = 5, generation) {
242
282
  let z = tile.z - 1;
243
283
  let x = tile.x >> 1;
244
284
  let y = tile.y >> 1;
245
285
  for (let up = 0; up < levels && z >= 0; up++, z--, x >>= 1, y >>= 1) {
246
- const entry = this._entries.get(this.key(sourceId, { z, x, y }));
286
+ const entry = this._entries.get(this.key(source, { z, x, y }));
247
287
  // `shown` is finished by construction, so an ancestor is never a
248
288
  // half-drawn picture.
249
- if (entry?.shown) {
289
+ if (entry?.shown && drawnFor(entry.shown, generation)) {
250
290
  // Stamped, because for as long as it is covering a hole it is on
251
291
  // screen — and an unstamped entry is the *first* thing eviction
252
292
  // takes, which would drop the only picture the map is showing.
@@ -269,19 +309,21 @@ export class TileCache {
269
309
  * `depth` is how many levels down to look, and it is small on purpose: a
270
310
  * level down is 4 tiles, two is 16, and beyond that the pieces are too
271
311
  * small to be worth the composites.
312
+ *
313
+ * `generation` as for {@link ancestorWithSurface}.
272
314
  */
273
- descendantsWithSurface(sourceId, tile, depth = 2) {
315
+ descendantsWithSurface(source, tile, depth = 2, generation) {
274
316
  for (let down = 1; down <= depth; down++) {
275
317
  const span = 1 << down;
276
318
  const found = [];
277
319
  for (let dy = 0; dy < span; dy++) {
278
320
  for (let dx = 0; dx < span; dx++) {
279
- const entry = this._entries.get(this.key(sourceId, {
321
+ const entry = this._entries.get(this.key(source, {
280
322
  z: tile.z + down,
281
323
  x: (tile.x << down) + dx,
282
324
  y: (tile.y << down) + dy,
283
325
  }));
284
- if (entry?.shown) {
326
+ if (entry?.shown && drawnFor(entry.shown, generation)) {
285
327
  entry.lastUsed = this._frame;
286
328
  found.push({ entry, x: dx, y: dy, span });
287
329
  }
@@ -310,8 +352,15 @@ export class TileCache {
310
352
  * the tile is blank for the several frames it takes to redraw, which
311
353
  * above a source's `maxZoom` happens at every integer zoom — the same
312
354
  * z14 tile serves 15, 16, 17 and on.
355
+ *
356
+ * A draft that is finished but not yet promoted — a restyle holding the
357
+ * old style up until the whole view is ready — matches like any other and
358
+ * comes back as it is, so it is not drawn twice.
313
359
  */
314
- beginRender(entry, size, zoom, make) {
360
+ beginRender(entry, size, zoom, make,
361
+ /** False for a raster tile, whose pixels are the provider's and no
362
+ * style's — see {@link TileRender.styled}. */
363
+ styled = true) {
315
364
  if (this._matches(entry.shown, size, zoom))
316
365
  return null;
317
366
  if (this._matches(entry.drawing, size, zoom))
@@ -331,6 +380,7 @@ export class TileCache {
331
380
  size,
332
381
  zoom,
333
382
  generation: this._generation,
383
+ styled,
334
384
  progress: 0,
335
385
  progressLayer: 0,
336
386
  };
@@ -340,7 +390,7 @@ export class TileCache {
340
390
  return (render !== null &&
341
391
  render.size === size &&
342
392
  render.zoom === zoom &&
343
- render.generation === this._generation);
393
+ drawnFor(render, this._generation));
344
394
  }
345
395
  /** The finished draft becomes what is on screen, and the old one goes.
346
396
  * True when that happened, which is the one moment a tile's pixels
@@ -354,6 +404,33 @@ export class TileCache {
354
404
  entry.drawing = null;
355
405
  return true;
356
406
  }
407
+ /**
408
+ * Put the current generation on screen in one go: every finished draft
409
+ * becomes its tile's picture, and every picture and draft of an earlier
410
+ * generation is released — apart from a raster tile's, which no style
411
+ * drew.
412
+ *
413
+ * The other half of a restyle. While the element holds the previous style
414
+ * up it does not {@link promote}, so finished drafts wait in `drawing`,
415
+ * and this is the frame they all land in. What is released is more than
416
+ * what they replace: a tile off screen still holds whatever it was last
417
+ * drawn in, which is now a picture of a style the map has left — never
418
+ * composited again, and otherwise kept until eviction got round to it.
419
+ */
420
+ swap() {
421
+ for (const entry of this._entries.values()) {
422
+ if (entry.drawing && !drawnFor(entry.drawing, this._generation)) {
423
+ this._release(entry.drawing);
424
+ entry.drawing = null;
425
+ }
426
+ if (this.promote(entry))
427
+ continue;
428
+ if (entry.shown && !drawnFor(entry.shown, this._generation)) {
429
+ this._release(entry.shown);
430
+ entry.shown = null;
431
+ }
432
+ }
433
+ }
357
434
  /** Note where a tile's rasterization stopped: at run `run`, having
358
435
  * finished `layer` of its active layers (`-1` for all of them). */
359
436
  advance(render, run, layer, style) {
@@ -361,14 +438,18 @@ export class TileCache {
361
438
  render.progressLayer = layer < 0 ? 0 : layer;
362
439
  }
363
440
  /**
364
- * Drop what is no longer worth keeping.
441
+ * Drop what is no longer worth keeping. Called once a frame, after every
442
+ * tile the frame still needs has been through {@link want}.
365
443
  *
366
- * Surfaces go first and by least-recently-wanted, because they are two
444
+ * A load the frame did not want is cancelled outright (see
445
+ * `_cancelUnwanted`). What has arrived is kept on budgets instead:
446
+ * surfaces first and by least-recently-wanted, because they are two
367
447
  * orders of magnitude larger than the data behind them and much cheaper
368
- * to lose: a dropped surface is one re-rasterization, a dropped tile is a
369
- * network request.
448
+ * to lose — a dropped surface is one re-rasterization, a dropped tile is
449
+ * a network request.
370
450
  */
371
451
  sweep() {
452
+ this._cancelUnwanted();
372
453
  if (this._surfaceBytes >
373
454
  (this._options.surfaceBudget ?? DEFAULT_SURFACE_BUDGET)) {
374
455
  const withSurfaces = [...this._entries.values()]
@@ -407,6 +488,46 @@ export class TileCache {
407
488
  }
408
489
  }
409
490
  }
491
+ /**
492
+ * Cancel every load the frame just drawn did not ask for.
493
+ *
494
+ * A tile panned or zoomed out of the cover — or every tile of a source
495
+ * taken out of `sources` — would otherwise load to the end: a request
496
+ * nobody is waiting for, then a full-pane repaint when it lands, because
497
+ * a landing tile is an `onChange`. The cover is padded, so a tile just off
498
+ * screen is still wanted and keeps loading. That is also the contract on
499
+ * the element: it wants the whole cover on every frame, clipped and
500
+ * mid-gesture ones included, or what it skipped is aborted here and
501
+ * fetched again.
502
+ *
503
+ * Only loads: data that has arrived stays on the budgets above, and is
504
+ * what makes panning back, or switching back to a provider, free.
505
+ *
506
+ * And forgotten rather than parked. An aborted load never settles
507
+ * (`settle` ignores it), so an entry left in `_data` would say `'loading'`
508
+ * forever and never be asked for again; its renderings go with it, since
509
+ * each reads through to the same entry for life, and none has a surface to
510
+ * lose. The next frame that wants the tile starts over, with a new request
511
+ * and a new signal.
512
+ */
513
+ _cancelUnwanted() {
514
+ let unwanted = null;
515
+ for (const data of this._data.values()) {
516
+ if (data.status === 'loading' && data.lastUsed < this._frame) {
517
+ (unwanted ??= new Set()).add(data);
518
+ }
519
+ }
520
+ if (!unwanted)
521
+ return;
522
+ for (const entry of [...this._entries.values()]) {
523
+ if (unwanted.has(entry.data))
524
+ this._drop(entry);
525
+ }
526
+ for (const data of unwanted) {
527
+ data.abort?.();
528
+ this._data.delete(data.key);
529
+ }
530
+ }
410
531
  _dropSurface(entry) {
411
532
  if (entry.shown)
412
533
  this._release(entry.shown);
@@ -448,13 +569,25 @@ export class TileCache {
448
569
  entries() {
449
570
  return this._entries.values();
450
571
  }
451
- /** Every source tile whose bytes are held. What labels are collected
452
- * from: a label belongs to the tile the data came from, and past a
453
- * source's depth many renderings share one of those. */
572
+ /** Every source tile whose bytes are held — including those of sources no
573
+ * longer on the map, which is what makes switching back free and why a
574
+ * reader filters on `source`. What labels are collected from: a label
575
+ * belongs to the tile the data came from, and past a source's depth many
576
+ * renderings share one of those. */
454
577
  dataEntries() {
455
578
  return this._data.values();
456
579
  }
457
580
  }
581
+ /**
582
+ * Whether a rendering can be shown for `generation`: any can when none is
583
+ * given, which is `progressive`; one no style drew — a raster tile's — can
584
+ * in every generation; any other only in the one it was drawn under.
585
+ */
586
+ export function drawnFor(render, generation) {
587
+ return (generation === undefined ||
588
+ !render.styled ||
589
+ render.generation === generation);
590
+ }
458
591
  /** A source's pyramid, memoized per source object so the defaults are not
459
592
  * refilled per frame. */
460
593
  const pyramids = new WeakMap();
@@ -1 +1 @@
1
- {"version":3,"file":"tiles.js","sourceRoot":"","sources":["../../src/maps/tiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tiles.js","sourceRoot":"","sources":["../../src/maps/tiles.ts"],"names":[],"mappings":"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"}