@react-x11/components 0.3.0 → 0.5.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 (314) hide show
  1. package/README.md +131 -4
  2. package/dist/charts/components.d.ts +3 -1
  3. package/dist/charts/components.d.ts.map +1 -1
  4. package/dist/charts/components.js +8 -4
  5. package/dist/charts/components.js.map +1 -1
  6. package/dist/charts/node.d.ts +13 -6
  7. package/dist/charts/node.d.ts.map +1 -1
  8. package/dist/charts/node.js +75 -24
  9. package/dist/charts/node.js.map +1 -1
  10. package/dist/charts/render.d.ts +4 -0
  11. package/dist/charts/render.d.ts.map +1 -1
  12. package/dist/charts/render.js +11 -6
  13. package/dist/charts/render.js.map +1 -1
  14. package/dist/code-editor/node.d.ts +47 -16
  15. package/dist/code-editor/node.d.ts.map +1 -1
  16. package/dist/code-editor/node.js +121 -51
  17. package/dist/code-editor/node.js.map +1 -1
  18. package/dist/flow/draw.d.ts +19 -1
  19. package/dist/flow/draw.d.ts.map +1 -1
  20. package/dist/flow/draw.js +64 -35
  21. package/dist/flow/draw.js.map +1 -1
  22. package/dist/flow/index.d.ts.map +1 -1
  23. package/dist/flow/index.js +24 -8
  24. package/dist/flow/index.js.map +1 -1
  25. package/dist/flow/model.d.ts +4 -2
  26. package/dist/flow/model.d.ts.map +1 -1
  27. package/dist/flow/model.js +4 -2
  28. package/dist/flow/model.js.map +1 -1
  29. package/dist/flow/node.d.ts +40 -9
  30. package/dist/flow/node.d.ts.map +1 -1
  31. package/dist/flow/node.js +142 -53
  32. package/dist/flow/node.js.map +1 -1
  33. package/dist/flow/types.d.ts +46 -21
  34. package/dist/flow/types.d.ts.map +1 -1
  35. package/dist/formula/index.d.ts +4 -2
  36. package/dist/formula/index.d.ts.map +1 -1
  37. package/dist/formula/index.js.map +1 -1
  38. package/dist/formula/node.d.ts +5 -1
  39. package/dist/formula/node.d.ts.map +1 -1
  40. package/dist/formula/node.js +19 -3
  41. package/dist/formula/node.js.map +1 -1
  42. package/dist/html/controls.d.ts +4 -1
  43. package/dist/html/controls.d.ts.map +1 -1
  44. package/dist/html/controls.js.map +1 -1
  45. package/dist/html/css/cascade.d.ts +11 -5
  46. package/dist/html/css/cascade.d.ts.map +1 -1
  47. package/dist/html/css/cascade.js +18 -8
  48. package/dist/html/css/cascade.js.map +1 -1
  49. package/dist/html/css/parse.d.ts +15 -10
  50. package/dist/html/css/parse.d.ts.map +1 -1
  51. package/dist/html/css/parse.js +41 -16
  52. package/dist/html/css/parse.js.map +1 -1
  53. package/dist/html/css/style.d.ts +3 -0
  54. package/dist/html/css/style.d.ts.map +1 -1
  55. package/dist/html/css/style.js +3 -1
  56. package/dist/html/css/style.js.map +1 -1
  57. package/dist/html/css/values.d.ts +14 -1
  58. package/dist/html/css/values.d.ts.map +1 -1
  59. package/dist/html/css/values.js +11 -8
  60. package/dist/html/css/values.js.map +1 -1
  61. package/dist/html/index.d.ts.map +1 -1
  62. package/dist/html/index.js +1 -0
  63. package/dist/html/index.js.map +1 -1
  64. package/dist/html/layout/boxes.d.ts +12 -5
  65. package/dist/html/layout/boxes.d.ts.map +1 -1
  66. package/dist/html/layout/boxes.js +7 -4
  67. package/dist/html/layout/boxes.js.map +1 -1
  68. package/dist/html/layout/inline.d.ts.map +1 -1
  69. package/dist/html/layout/inline.js +22 -1
  70. package/dist/html/layout/inline.js.map +1 -1
  71. package/dist/html/node.d.ts +22 -8
  72. package/dist/html/node.d.ts.map +1 -1
  73. package/dist/html/node.js +97 -15
  74. package/dist/html/node.js.map +1 -1
  75. package/dist/html/paint.d.ts +3 -0
  76. package/dist/html/paint.d.ts.map +1 -1
  77. package/dist/html/paint.js +2 -2
  78. package/dist/html/paint.js.map +1 -1
  79. package/dist/index.d.ts +11 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +26 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/maps/clip.d.ts +43 -0
  84. package/dist/maps/clip.d.ts.map +1 -0
  85. package/dist/maps/clip.js +171 -0
  86. package/dist/maps/clip.js.map +1 -0
  87. package/dist/maps/gzip.d.ts +15 -0
  88. package/dist/maps/gzip.d.ts.map +1 -0
  89. package/dist/maps/gzip.js +56 -0
  90. package/dist/maps/gzip.js.map +1 -0
  91. package/dist/maps/index.d.ts +55 -0
  92. package/dist/maps/index.d.ts.map +1 -0
  93. package/dist/maps/index.js +141 -0
  94. package/dist/maps/index.js.map +1 -0
  95. package/dist/maps/labels.d.ts +123 -0
  96. package/dist/maps/labels.d.ts.map +1 -0
  97. package/dist/maps/labels.js +323 -0
  98. package/dist/maps/labels.js.map +1 -0
  99. package/dist/maps/mvt.d.ts +244 -0
  100. package/dist/maps/mvt.d.ts.map +1 -0
  101. package/dist/maps/mvt.js +820 -0
  102. package/dist/maps/mvt.js.map +1 -0
  103. package/dist/maps/node.d.ts +278 -0
  104. package/dist/maps/node.d.ts.map +1 -0
  105. package/dist/maps/node.js +1459 -0
  106. package/dist/maps/node.js.map +1 -0
  107. package/dist/maps/overlay.d.ts +157 -0
  108. package/dist/maps/overlay.d.ts.map +1 -0
  109. package/dist/maps/overlay.js +472 -0
  110. package/dist/maps/overlay.js.map +1 -0
  111. package/dist/maps/paint.d.ts +226 -0
  112. package/dist/maps/paint.d.ts.map +1 -0
  113. package/dist/maps/paint.js +705 -0
  114. package/dist/maps/paint.js.map +1 -0
  115. package/dist/maps/proj.d.ts +281 -0
  116. package/dist/maps/proj.d.ts.map +1 -0
  117. package/dist/maps/proj.js +451 -0
  118. package/dist/maps/proj.js.map +1 -0
  119. package/dist/maps/sources.d.ts +256 -0
  120. package/dist/maps/sources.d.ts.map +1 -0
  121. package/dist/maps/sources.js +210 -0
  122. package/dist/maps/sources.js.map +1 -0
  123. package/dist/maps/style.d.ts +141 -0
  124. package/dist/maps/style.d.ts.map +1 -0
  125. package/dist/maps/style.js +147 -0
  126. package/dist/maps/style.js.map +1 -0
  127. package/dist/maps/styles.d.ts +82 -0
  128. package/dist/maps/styles.d.ts.map +1 -0
  129. package/dist/maps/styles.js +898 -0
  130. package/dist/maps/styles.js.map +1 -0
  131. package/dist/maps/tiles.d.ts +283 -0
  132. package/dist/maps/tiles.d.ts.map +1 -0
  133. package/dist/maps/tiles.js +469 -0
  134. package/dist/maps/tiles.js.map +1 -0
  135. package/dist/maps/types.d.ts +244 -0
  136. package/dist/maps/types.d.ts.map +1 -0
  137. package/dist/maps/types.js +2 -0
  138. package/dist/maps/types.js.map +1 -0
  139. package/dist/qml/containers.d.ts +3 -0
  140. package/dist/qml/containers.d.ts.map +1 -0
  141. package/dist/qml/containers.js +331 -0
  142. package/dist/qml/containers.js.map +1 -0
  143. package/dist/qml/controls.d.ts +12 -0
  144. package/dist/qml/controls.d.ts.map +1 -0
  145. package/dist/qml/controls.js +21 -0
  146. package/dist/qml/controls.js.map +1 -0
  147. package/dist/qml/globals.d.ts +6 -0
  148. package/dist/qml/globals.d.ts.map +1 -0
  149. package/dist/qml/globals.js +25 -0
  150. package/dist/qml/globals.js.map +1 -0
  151. package/dist/qml/index.d.ts +15 -0
  152. package/dist/qml/index.d.ts.map +1 -0
  153. package/dist/qml/index.js +25 -0
  154. package/dist/qml/index.js.map +1 -0
  155. package/dist/qml/interaction.d.ts +12 -0
  156. package/dist/qml/interaction.d.ts.map +1 -0
  157. package/dist/qml/interaction.js +246 -0
  158. package/dist/qml/interaction.js.map +1 -0
  159. package/dist/qml/ir.d.ts +106 -0
  160. package/dist/qml/ir.d.ts.map +1 -0
  161. package/dist/qml/ir.js +7 -0
  162. package/dist/qml/ir.js.map +1 -0
  163. package/dist/qml/layouts.d.ts +3 -0
  164. package/dist/qml/layouts.d.ts.map +1 -0
  165. package/dist/qml/layouts.js +122 -0
  166. package/dist/qml/layouts.js.map +1 -0
  167. package/dist/qml/models.d.ts +14 -0
  168. package/dist/qml/models.d.ts.map +1 -0
  169. package/dist/qml/models.js +80 -0
  170. package/dist/qml/models.js.map +1 -0
  171. package/dist/qml/objects.d.ts +228 -0
  172. package/dist/qml/objects.d.ts.map +1 -0
  173. package/dist/qml/objects.js +1103 -0
  174. package/dist/qml/objects.js.map +1 -0
  175. package/dist/qml/parse.d.ts +10 -0
  176. package/dist/qml/parse.d.ts.map +1 -0
  177. package/dist/qml/parse.js +607 -0
  178. package/dist/qml/parse.js.map +1 -0
  179. package/dist/qml/qtquick.d.ts +7 -0
  180. package/dist/qml/qtquick.d.ts.map +1 -0
  181. package/dist/qml/qtquick.js +347 -0
  182. package/dist/qml/qtquick.js.map +1 -0
  183. package/dist/qml/react.d.ts +83 -0
  184. package/dist/qml/react.d.ts.map +1 -0
  185. package/dist/qml/react.js +323 -0
  186. package/dist/qml/react.js.map +1 -0
  187. package/dist/qml/resolver.d.ts +38 -0
  188. package/dist/qml/resolver.d.ts.map +1 -0
  189. package/dist/qml/resolver.js +64 -0
  190. package/dist/qml/resolver.js.map +1 -0
  191. package/dist/qml/slots.d.ts +65 -0
  192. package/dist/qml/slots.d.ts.map +1 -0
  193. package/dist/qml/slots.js +230 -0
  194. package/dist/qml/slots.js.map +1 -0
  195. package/dist/qml/states.d.ts +5 -0
  196. package/dist/qml/states.d.ts.map +1 -0
  197. package/dist/qml/states.js +276 -0
  198. package/dist/qml/states.js.map +1 -0
  199. package/dist/qml/view-utils.d.ts +42 -0
  200. package/dist/qml/view-utils.d.ts.map +1 -0
  201. package/dist/qml/view-utils.js +121 -0
  202. package/dist/qml/view-utils.js.map +1 -0
  203. package/dist/reorder/hx.d.ts +18 -0
  204. package/dist/reorder/hx.d.ts.map +1 -0
  205. package/dist/reorder/hx.js +10 -0
  206. package/dist/reorder/hx.js.map +1 -0
  207. package/dist/reorder/index.d.ts +314 -0
  208. package/dist/reorder/index.d.ts.map +1 -0
  209. package/dist/reorder/index.js +1539 -0
  210. package/dist/reorder/index.js.map +1 -0
  211. package/dist/reorder/model.d.ts +107 -0
  212. package/dist/reorder/model.d.ts.map +1 -0
  213. package/dist/reorder/model.js +162 -0
  214. package/dist/reorder/model.js.map +1 -0
  215. package/dist/richtext/node.d.ts +15 -5
  216. package/dist/richtext/node.d.ts.map +1 -1
  217. package/dist/richtext/node.js +40 -11
  218. package/dist/richtext/node.js.map +1 -1
  219. package/dist/richtext/runs.d.ts +35 -13
  220. package/dist/richtext/runs.d.ts.map +1 -1
  221. package/dist/richtext/runs.js +83 -27
  222. package/dist/richtext/runs.js.map +1 -1
  223. package/dist/tabs/hx.d.ts +18 -0
  224. package/dist/tabs/hx.d.ts.map +1 -0
  225. package/dist/tabs/hx.js +10 -0
  226. package/dist/tabs/hx.js.map +1 -0
  227. package/dist/tabs/index.d.ts +160 -0
  228. package/dist/tabs/index.d.ts.map +1 -0
  229. package/dist/tabs/index.js +1265 -0
  230. package/dist/tabs/index.js.map +1 -0
  231. package/dist/terminal/vt/fonts.d.ts +45 -15
  232. package/dist/terminal/vt/fonts.d.ts.map +1 -1
  233. package/dist/terminal/vt/fonts.js +89 -19
  234. package/dist/terminal/vt/fonts.js.map +1 -1
  235. package/dist/terminal/vt/index.d.ts +1 -1
  236. package/dist/terminal/vt/index.d.ts.map +1 -1
  237. package/dist/terminal/vt/index.js +3 -3
  238. package/dist/terminal/vt/index.js.map +1 -1
  239. package/dist/terminal/vt/node.d.ts +42 -0
  240. package/dist/terminal/vt/node.d.ts.map +1 -1
  241. package/dist/terminal/vt/node.js +95 -11
  242. package/dist/terminal/vt/node.js.map +1 -1
  243. package/dist/terminal/vt/pty.d.ts +16 -0
  244. package/dist/terminal/vt/pty.d.ts.map +1 -1
  245. package/dist/terminal/vt/pty.js +186 -0
  246. package/dist/terminal/vt/pty.js.map +1 -1
  247. package/dist/terminal/vt/renderer.d.ts.map +1 -1
  248. package/dist/terminal/vt/renderer.js +13 -3
  249. package/dist/terminal/vt/renderer.js.map +1 -1
  250. package/package.json +23 -3
  251. package/src/charts/components.ts +14 -7
  252. package/src/charts/node.ts +81 -26
  253. package/src/charts/render.ts +16 -6
  254. package/src/code-editor/node.ts +147 -53
  255. package/src/flow/draw.ts +104 -35
  256. package/src/flow/index.ts +33 -13
  257. package/src/flow/model.ts +4 -2
  258. package/src/flow/node.ts +158 -59
  259. package/src/flow/types.ts +46 -21
  260. package/src/formula/index.ts +4 -2
  261. package/src/formula/node.ts +24 -5
  262. package/src/html/controls.ts +4 -1
  263. package/src/html/css/cascade.ts +18 -7
  264. package/src/html/css/parse.ts +46 -21
  265. package/src/html/css/style.ts +6 -1
  266. package/src/html/css/values.ts +25 -9
  267. package/src/html/index.ts +1 -0
  268. package/src/html/layout/boxes.ts +19 -9
  269. package/src/html/layout/inline.ts +23 -1
  270. package/src/html/node.ts +110 -17
  271. package/src/html/paint.ts +17 -2
  272. package/src/index.ts +142 -0
  273. package/src/maps/clip.ts +184 -0
  274. package/src/maps/gzip.ts +66 -0
  275. package/src/maps/index.ts +316 -0
  276. package/src/maps/labels.ts +442 -0
  277. package/src/maps/mvt.ts +857 -0
  278. package/src/maps/node.ts +1819 -0
  279. package/src/maps/overlay.ts +639 -0
  280. package/src/maps/paint.ts +978 -0
  281. package/src/maps/proj.ts +641 -0
  282. package/src/maps/sources.ts +425 -0
  283. package/src/maps/style.ts +309 -0
  284. package/src/maps/styles.ts +1040 -0
  285. package/src/maps/tiles.ts +676 -0
  286. package/src/maps/types.ts +260 -0
  287. package/src/qml/containers.tsx +380 -0
  288. package/src/qml/controls.tsx +47 -0
  289. package/src/qml/globals.ts +33 -0
  290. package/src/qml/index.ts +67 -0
  291. package/src/qml/interaction.tsx +317 -0
  292. package/src/qml/ir.ts +80 -0
  293. package/src/qml/layouts.tsx +141 -0
  294. package/src/qml/models.ts +101 -0
  295. package/src/qml/objects.ts +1431 -0
  296. package/src/qml/parse.ts +624 -0
  297. package/src/qml/qtquick.tsx +413 -0
  298. package/src/qml/react.tsx +454 -0
  299. package/src/qml/resolver.ts +99 -0
  300. package/src/qml/slots.ts +249 -0
  301. package/src/qml/states.ts +318 -0
  302. package/src/qml/view-utils.ts +140 -0
  303. package/src/reorder/hx.ts +31 -0
  304. package/src/reorder/index.ts +2223 -0
  305. package/src/reorder/model.ts +232 -0
  306. package/src/richtext/node.ts +49 -14
  307. package/src/richtext/runs.ts +115 -30
  308. package/src/tabs/hx.ts +31 -0
  309. package/src/tabs/index.ts +1686 -0
  310. package/src/terminal/vt/fonts.ts +128 -36
  311. package/src/terminal/vt/index.ts +4 -2
  312. package/src/terminal/vt/node.ts +105 -12
  313. package/src/terminal/vt/pty.ts +243 -0
  314. package/src/terminal/vt/renderer.ts +13 -3
@@ -0,0 +1,226 @@
1
+ import type { CompiledFilter, MapStyleLayer } from './style.js';
2
+ import { GeometryBuffer } from './mvt.js';
3
+ import type { VectorTile } from './mvt.js';
4
+ /**
5
+ * The slice of ntk's 2d context this draws through.
6
+ *
7
+ * Structural because react-x11 types `Context2D` as `unknown` on purpose —
8
+ * it is ntk's API rather than react-x11's — so something has to name the
9
+ * operations, and naming them once beats naming them at sixty call sites
10
+ * (the same argument `src/flow/draw.ts` makes).
11
+ */
12
+ export interface MapCanvas {
13
+ fillStyle: unknown;
14
+ strokeStyle: unknown;
15
+ lineWidth: number;
16
+ lineJoin?: unknown;
17
+ lineCap?: unknown;
18
+ globalAlpha?: number;
19
+ save(): void;
20
+ restore(): void;
21
+ beginPath(): void;
22
+ closePath(): void;
23
+ moveTo(x: number, y: number): void;
24
+ lineTo(x: number, y: number): void;
25
+ rect(x: number, y: number, w: number, h: number): void;
26
+ arc(x: number, y: number, r: number, from: number, to: number): void;
27
+ fill(): void;
28
+ stroke(): void;
29
+ clip(): void;
30
+ fillRect(x: number, y: number, w: number, h: number): void;
31
+ /** One request for many rectangles — what a marker cluster and a
32
+ * scale bar are drawn with. */
33
+ fillRects?(rects: readonly number[]): void;
34
+ setLineDash?(segments: readonly number[]): void;
35
+ roundRect?(x: number, y: number, w: number, h: number, radii: number): void;
36
+ drawImage?(image: unknown, ...args: number[]): void;
37
+ /** Straight RGBA in, for a raster tile the application decoded. */
38
+ putImageData?(data: {
39
+ width: number;
40
+ height: number;
41
+ data: Uint8Array;
42
+ }, x: number, y: number): void;
43
+ }
44
+ /**
45
+ * Whether a context can draw at all.
46
+ *
47
+ * The mock backend the headless suite runs on has no path API, which is the
48
+ * repo convention for keeping a drawn element testable: the element's paint
49
+ * becomes a no-op there rather than a throw, and everything worth asserting
50
+ * about it — the cover, the projection, the cache, the hit test — is
51
+ * asserted without pixels.
52
+ */
53
+ export declare function isMapCanvas(ctx: unknown): ctx is MapCanvas;
54
+ /**
55
+ * The clock a rasterization budget is measured on.
56
+ *
57
+ * `performance.now()` rather than `Date.now()`, because a budget is a
58
+ * sub-frame quantity and `Date.now()` counts whole milliseconds: an 8 ms
59
+ * budget measured on it carries 12% of error, and anything under 1 ms
60
+ * rounds to a deadline that has already passed — so `rasterBudgetMs: 0.5`
61
+ * would silently mean "never rasterize", which is not what it says.
62
+ * Reached through `globalThis` because `src/` compiles with `types: []`.
63
+ */
64
+ export declare function now(): number;
65
+ /** Vertices after which the accumulated path is flushed. Large enough that
66
+ * a whole ordinary layer is one path, small enough that the 130,000-vertex
67
+ * outlier is a few rather than one enormous request. */
68
+ export declare const BATCH_VERTICES = 12000;
69
+ /**
70
+ * How a tile's own integer coordinates reach the target.
71
+ *
72
+ * `ox`/`oy`/`span` place the tile: its local `0` lands at `ox`, and its
73
+ * whole square is `span` target pixels across — so a layer's scale is
74
+ * `span / layer.extent`, computed **per layer**, because extent is a
75
+ * per-layer field and real tiles use that (OSM's Shortbread cuts `streets`,
76
+ * `land`, `ocean` and `water_polygons` at 2048 and its other twenty layers
77
+ * at 4096; a renderer that reads it once per tile draws half of them at
78
+ * twice their size).
79
+ *
80
+ * `pixelsPerLogical` is what a style's lengths are multiplied by. On the
81
+ * direct path it is simply the display scale. On the retained path it is
82
+ * `surfaceSize / tileScreenSize`, which is the display scale divided by
83
+ * whatever the composite is about to multiply by — so a two-logical-pixel
84
+ * road is two logical pixels on screen at every fractional zoom, without
85
+ * the raster being redrawn for any of them.
86
+ */
87
+ export interface TileDraw {
88
+ ox: number;
89
+ oy: number;
90
+ span: number;
91
+ pixelsPerLogical: number;
92
+ /** The zoom the style is resolved at. */
93
+ zoom: number;
94
+ /** Target pixels below which a vertex is dropped as a duplicate of the
95
+ * one before it. `0` disables decimation. */
96
+ tolerance?: number;
97
+ /** Target pixels below which a whole feature is skipped. */
98
+ minFeature?: number;
99
+ /** Clip rectangle in target coordinates — the direct path's viewport.
100
+ * Null on the retained path, where the surface is the clip. */
101
+ clip?: {
102
+ x: number;
103
+ y: number;
104
+ width: number;
105
+ height: number;
106
+ } | null;
107
+ /**
108
+ * Vertices after which the accumulated path is flushed, if not
109
+ * {@link BATCH_VERTICES}.
110
+ *
111
+ * One number for both backends since react-x11 2.6.1, and it was not
112
+ * before that. On **X11** a fill or stroke becomes an a8 coverage mask
113
+ * over the path's bounding box, uploaded with one `PutImage`, so a bigger
114
+ * path is fewer uploads over the same pixels — the number wants to be
115
+ * large. On the **Cocoa** backend `CGContextStrokePath` used to be
116
+ * quadratic in the number of subpaths, so it wanted the opposite, and
117
+ * `<Map>` probed the backend to pick. Core chunks that stroke itself now
118
+ * (react-x11#457), at a size it can choose and a caller cannot, so
119
+ * batching small there only defeats it.
120
+ */
121
+ batchVertices?: number;
122
+ }
123
+ /** What a rasterization cost, for the bench and for `onFrame`. */
124
+ export interface DrawStats {
125
+ layers: number;
126
+ features: number;
127
+ /** Vertices that survived decimation and were sent. */
128
+ vertices: number;
129
+ /** Vertices dropped as sub-pixel duplicates. */
130
+ decimated: number;
131
+ /** Features skipped because their whole box was sub-pixel. */
132
+ culled: number;
133
+ /** `fill()` and `stroke()` calls — the request count, near enough. */
134
+ batches: number;
135
+ }
136
+ /** A style layer with its filter already compiled — what a cache holds so
137
+ * the compile happens once per style rather than once per tile. */
138
+ export interface PreparedLayer {
139
+ layer: MapStyleLayer;
140
+ filter: CompiledFilter;
141
+ }
142
+ /** A maximal run of consecutive style layers over one source layer. */
143
+ export interface StyleRun {
144
+ sourceLayer: string;
145
+ /** `[from, to)` into {@link PreparedStyle.layers}. */
146
+ from: number;
147
+ to: number;
148
+ }
149
+ /**
150
+ * A style with its filters compiled and its runs found — computed once per
151
+ * style, not once per tile.
152
+ *
153
+ * The runs are also the unit of **resumable** rasterization: a tile's own
154
+ * layers are drawn run by run, with a time budget between them, so a
155
+ * hundred-millisecond tile becomes a dozen frames that each stay inside
156
+ * one. See {@link drawTileRun}.
157
+ */
158
+ export interface PreparedStyle {
159
+ layers: PreparedLayer[];
160
+ runs: StyleRun[];
161
+ }
162
+ /**
163
+ * Compile a style once.
164
+ *
165
+ * Runs rather than a global grouping by source layer, because the order a
166
+ * style lists its layers in *is* the cartography — water over landuse,
167
+ * buildings over both — and a grouping would reorder a style that
168
+ * interleaves two sources. A run preserves order exactly and captures the
169
+ * win whenever a style is written the way the casing-then-fill split forces
170
+ * anyway: a road network is fourteen consecutive layers over `streets`.
171
+ */
172
+ export declare function prepareStyle(style: {
173
+ layers: readonly MapStyleLayer[];
174
+ }): PreparedStyle;
175
+ /**
176
+ * Scratch a caller keeps between tiles, so nothing here allocates per
177
+ * feature or per layer.
178
+ */
179
+ export declare class DrawScratch {
180
+ buffer: GeometryBuffer;
181
+ /** One clipped ring at a time, reused, so the overzoom path allocates
182
+ * nothing per part either. */
183
+ ring: number[];
184
+ stats: DrawStats;
185
+ private _buckets;
186
+ /** `n` index lists, emptied. Grown to the widest run ever seen and then
187
+ * reused for the life of the element. */
188
+ buckets(n: number): number[][];
189
+ resetStats(): DrawStats;
190
+ }
191
+ /**
192
+ * Draw every layer of the style this tile has data for.
193
+ *
194
+ * The style is walked in **runs of consecutive layers over one source
195
+ * layer**, and each run's features are seeked once for the whole run. That
196
+ * is worth stating plainly because it is the difference between a fast
197
+ * zoom-12 tile and a slow one: a road network is fourteen style layers over
198
+ * `streets` (seven classes, and a casing pass before the fill pass so that
199
+ * junctions knit), so a layer-at-a-time walk parses each of eight thousand
200
+ * features' headers and tags fourteen times over. A run parses them once
201
+ * and asks fourteen already-compiled filters about them.
202
+ *
203
+ * Runs rather than a global grouping by source layer, because the order a
204
+ * style lists its layers in *is* the cartography — water over landuse,
205
+ * buildings over both — and a grouping would reorder a style that
206
+ * interleaves. A run preserves order exactly and captures the win whenever
207
+ * a style is written the way the casing/fill split forces anyway.
208
+ */
209
+ export declare function drawTileLayers(ctx: MapCanvas, tile: VectorTile, prepared: PreparedStyle, draw: TileDraw, scratch: DrawScratch): DrawStats;
210
+ /**
211
+ * One run of the style, drawn.
212
+ *
213
+ * The unit a caller budgets in: the node draws runs until its per-frame
214
+ * budget is spent, remembers where it stopped, and comes back next frame.
215
+ * Layers are painted bottom-up, so a tile stopped part-way looks like a map
216
+ * whose upper layers have not arrived — which is what a partly-drawn map
217
+ * should look like — rather than like a hole.
218
+ */
219
+ export declare function drawTileRun(ctx: MapCanvas, tile: VectorTile, prepared: PreparedStyle, runIndex: number, draw: TileDraw, scratch: DrawScratch, resume?: {
220
+ /** Skip this many of the run's active layers — where a previous frame
221
+ * stopped. */
222
+ fromLayer?: number;
223
+ /** Stop after the layer that crosses this, on {@link now}'s clock. */
224
+ deadline?: number;
225
+ }): number;
226
+ //# sourceMappingURL=paint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/maps/paint.ts"],"names":[],"mappings":"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"}