@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
@@ -9,15 +9,26 @@ export interface FillContext {
9
9
  fillRect(x: number, y: number, w: number, h: number): void;
10
10
  }
11
11
  export declare function canFill(ctx: unknown): ctx is FillContext;
12
- /** One run of one laid-out line, as much of it as decoration reads. */
12
+ /**
13
+ * One run of one laid-out line, as much of it as decoration reads.
14
+ *
15
+ * `span` and `run` are what ntk's layout hands back and what every
16
+ * decoration is read from: the span the run came from, markers and all, and
17
+ * the face it was shaped with. Both are optional because react-x11's Cocoa
18
+ * engine (2.3.x) reports only a run's geometry — `{ x, width, start, end }`
19
+ * — and a paint that assumed the rest threw on the first paragraph on
20
+ * macOS. A run without its span has no decoration to draw; a run without
21
+ * its face takes its vertical extent from the line, which both engines
22
+ * report.
23
+ */
13
24
  export interface LaidRun {
14
25
  x: number;
15
26
  width: number;
16
27
  /** Extent within the laid-out text, in **code units** (ntk's vocabulary). */
17
28
  start: number;
18
29
  end: number;
19
- span: TextRun;
20
- run: {
30
+ span?: TextRun;
31
+ run?: {
21
32
  font: {
22
33
  metrics(size: number): {
23
34
  ascent: number;
@@ -34,6 +45,11 @@ export interface LaidLine {
34
45
  y: number;
35
46
  height: number;
36
47
  baseline: number;
48
+ /** The tallest face on the line, above and below `baseline`. Both engines
49
+ * report them; they stand in for a run's own metrics when the engine did
50
+ * not hand the run's face back. */
51
+ ascent?: number;
52
+ descent?: number;
37
53
  start: number;
38
54
  end: number;
39
55
  runs: LaidRun[];
@@ -52,21 +68,27 @@ export interface CaretSource {
52
68
  * terminal's cell backgrounds, a highlighted `<span>`.
53
69
  *
54
70
  * `dx`/`dy` translate the line's own coordinates into the target space, so a
55
- * caller that placed this line itself passes where it placed it.
71
+ * caller that placed this line itself passes where it placed it. `scale` is
72
+ * the display scale: the chip's two-pixel inset is a logical length that
73
+ * never passes through a style, and grows with it.
56
74
  */
57
- export declare function paintRunBackgrounds(ctx: FillContext, line: LaidLine, dx: number, dy: number): void;
58
- /** The rules that sit **over** the glyphs: link underlines, strikethrough. */
59
- export declare function paintRunRules(ctx: FillContext, line: LaidLine, dx: number, dy: number): void;
75
+ export declare function paintRunBackgrounds(ctx: FillContext, line: LaidLine, dx: number, dy: number, scale?: number): void;
76
+ /** The rules that sit **over** the glyphs: link underlines, strikethrough.
77
+ * A rule is one logical pixel thick — `scale` device pixels, so a link on a
78
+ * 2x panel is underlined as heavily as on a 1x one, not with a hairline. */
79
+ export declare function paintRunRules(ctx: FillContext, line: LaidLine, dx: number, dy: number, scale?: number): void;
60
80
  /**
61
81
  * The rule under a run, in one of SGR 4's five styles.
62
82
  *
63
- * All five are built from 1px rectangles rather than a stroked path: the mock
64
- * backend has no path API, and a hairline stroke on a text baseline is not
65
- * worth an antialiased path even where there is one. The curl is a two-level
66
- * square wave at a text size it reads as a squiggle, which is the entire
67
- * job.
83
+ * All five are built from rectangles `t` pixels thick one logical pixel —
84
+ * rather than a stroked path: the mock backend has no path API, and a
85
+ * hairline stroke on a text baseline is not worth an antialiased path even
86
+ * where there is one. The curl is a two-level square wave at a text size
87
+ * it reads as a squiggle, which is the entire job. The dot pitch and the
88
+ * dash length scale with the thickness, so the pattern is the pattern at
89
+ * any display scale.
68
90
  */
69
- export declare function underlineRule(ctx: FillContext, x: number, y: number, width: number, style: NonNullable<TextRun['underlineStyle']>): void;
91
+ export declare function underlineRule(ctx: FillContext, x: number, y: number, width: number, style: NonNullable<TextRun['underlineStyle']>, t?: number): void;
70
92
  /** A selected empty line still shows as a sliver, so a selection spanning a
71
93
  * blank line does not appear to skip it. Core's own width for the same. */
72
94
  export declare const EMPTY_LINE_BAND = 4;
@@ -1 +1 @@
1
- {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/richtext/runs.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;mEACmE;AACnE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAExD;AAED,uEAAuE;AACvE,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE;QACH,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;QACrE,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;KAC3B,CAAC;CACH;AAED,4DAA4D;AAC5D,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;QAC5B,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,IAAI,CA2BN;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,IAAI,CAwBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAC5C,IAAI,CA2BN;AAED;4EAC4E;AAC5E,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CA0ChC;AAED,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/richtext/runs.ts"],"names":[],"mappings":"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"}
@@ -17,20 +17,63 @@ import { codePointAtOffset, codeUnitOffsets } from '../internal/text.js';
17
17
  export function canFill(ctx) {
18
18
  return typeof ctx?.fillRect === 'function';
19
19
  }
20
+ /**
21
+ * The vertical extent of a run's ink, above and below the baseline: the
22
+ * run's own face when the engine handed it back, otherwise the line's.
23
+ */
24
+ function inkExtent(r, line) {
25
+ if (r.run)
26
+ return r.run.font.metrics(r.run.size);
27
+ return {
28
+ ascent: line.ascent ?? line.baseline - line.y,
29
+ descent: line.descent ?? line.y + line.height - line.baseline,
30
+ };
31
+ }
32
+ let warnedSpanless = false;
33
+ /**
34
+ * Say so, once, when a laid-out run arrives without the span it came from:
35
+ * every decoration is read off that span, so none will be drawn, and a
36
+ * document that suddenly has no code chips or link underlines should not be
37
+ * a mystery. react-x11's Cocoa engine (2.3.x) is the one that does this.
38
+ *
39
+ * `process` and `console` come off `globalThis` because `src/` compiles
40
+ * with `types: []` — a Node global that wandered in would fail the build
41
+ * rather than become an implicit `@types/node` dependency.
42
+ */
43
+ function warnSpanless() {
44
+ if (warnedSpanless)
45
+ return;
46
+ warnedSpanless = true;
47
+ const g = globalThis;
48
+ if (g.process?.env?.NODE_ENV === 'production')
49
+ return;
50
+ g.console?.warn('@react-x11/components: the text engine handed back laid-out runs ' +
51
+ 'without their spans, so run decorations (backgrounds, underlines, ' +
52
+ "strikethrough) and inline link hit-testing are off. react-x11's " +
53
+ "Cocoa text engine (2.3.x) does this; ntk's does not.");
54
+ }
20
55
  /**
21
56
  * The fills that sit **under** the glyphs: the inline-code chip, a
22
57
  * terminal's cell backgrounds, a highlighted `<span>`.
23
58
  *
24
59
  * `dx`/`dy` translate the line's own coordinates into the target space, so a
25
- * caller that placed this line itself passes where it placed it.
60
+ * caller that placed this line itself passes where it placed it. `scale` is
61
+ * the display scale: the chip's two-pixel inset is a logical length that
62
+ * never passes through a style, and grows with it.
26
63
  */
27
- export function paintRunBackgrounds(ctx, line, dx, dy) {
64
+ export function paintRunBackgrounds(ctx, line, dx, dy, scale = 1) {
65
+ const inset = Math.round(2 * scale);
28
66
  for (const r of line.runs) {
29
- const bg = r.span.bg;
67
+ const span = r.span;
68
+ if (!span) {
69
+ warnSpanless();
70
+ continue;
71
+ }
72
+ const bg = span.bg;
30
73
  if (!bg)
31
74
  continue;
32
75
  ctx.fillStyle = bg;
33
- if (r.span.bgFill === 'line') {
76
+ if (span.bgFill === 'line') {
34
77
  // Both edges are rounded from absolute positions rather than the left
35
78
  // being rounded and the width ceiled, so two adjacent runs agree on the
36
79
  // pixel between them: no seam, and no overlap either.
@@ -39,55 +82,68 @@ export function paintRunBackgrounds(ctx, line, dx, dy) {
39
82
  ctx.fillRect(left, Math.round(dy + line.y), Math.max(0, right - left), Math.ceil(line.height));
40
83
  continue;
41
84
  }
42
- const m = r.run.font.metrics(r.run.size);
43
- ctx.fillRect(Math.round(dx + line.x + r.x - 2), Math.round(dy + line.baseline - m.ascent), Math.ceil(r.width + 4), Math.ceil(m.ascent + m.descent));
85
+ const m = inkExtent(r, line);
86
+ ctx.fillRect(Math.round(dx + line.x + r.x - inset), Math.round(dy + line.baseline - m.ascent), Math.ceil(r.width + inset * 2), Math.ceil(m.ascent + m.descent));
44
87
  }
45
88
  }
46
- /** The rules that sit **over** the glyphs: link underlines, strikethrough. */
47
- export function paintRunRules(ctx, line, dx, dy) {
89
+ /** The rules that sit **over** the glyphs: link underlines, strikethrough.
90
+ * A rule is one logical pixel thick — `scale` device pixels, so a link on a
91
+ * 2x panel is underlined as heavily as on a 1x one, not with a hairline. */
92
+ export function paintRunRules(ctx, line, dx, dy, scale = 1) {
93
+ const t = ruleThickness(scale);
48
94
  for (const r of line.runs) {
49
- const { underline, strike } = r.span;
95
+ const span = r.span;
96
+ if (!span)
97
+ continue;
98
+ const { underline, strike } = span;
50
99
  if (underline) {
51
100
  ctx.fillStyle = underline;
52
- underlineRule(ctx, Math.round(dx + line.x + r.x), Math.round(dy + line.baseline + 2), Math.ceil(r.width), r.span.underlineStyle ?? 'single');
101
+ underlineRule(ctx, Math.round(dx + line.x + r.x), Math.round(dy + line.baseline + 2 * t), Math.ceil(r.width), span.underlineStyle ?? 'single', t);
53
102
  }
54
103
  if (strike) {
55
- const m = r.run.font.metrics(r.run.size);
104
+ const m = inkExtent(r, line);
56
105
  ctx.fillStyle = strike;
57
- ctx.fillRect(Math.round(dx + line.x + r.x), Math.round(dy + line.baseline - m.ascent * 0.38), Math.ceil(r.width), 1);
106
+ ctx.fillRect(Math.round(dx + line.x + r.x), Math.round(dy + line.baseline - m.ascent * 0.38), Math.ceil(r.width), t);
58
107
  }
59
108
  }
60
109
  }
110
+ /** One logical pixel on the device grid, never less than one device pixel. */
111
+ function ruleThickness(scale) {
112
+ return Math.max(1, Math.round(scale));
113
+ }
61
114
  /**
62
115
  * The rule under a run, in one of SGR 4's five styles.
63
116
  *
64
- * All five are built from 1px rectangles rather than a stroked path: the mock
65
- * backend has no path API, and a hairline stroke on a text baseline is not
66
- * worth an antialiased path even where there is one. The curl is a two-level
67
- * square wave at a text size it reads as a squiggle, which is the entire
68
- * job.
117
+ * All five are built from rectangles `t` pixels thick one logical pixel —
118
+ * rather than a stroked path: the mock backend has no path API, and a
119
+ * hairline stroke on a text baseline is not worth an antialiased path even
120
+ * where there is one. The curl is a two-level square wave at a text size
121
+ * it reads as a squiggle, which is the entire job. The dot pitch and the
122
+ * dash length scale with the thickness, so the pattern is the pattern at
123
+ * any display scale.
69
124
  */
70
- export function underlineRule(ctx, x, y, width, style) {
125
+ export function underlineRule(ctx, x, y, width, style, t = 1) {
71
126
  switch (style) {
72
127
  case 'double':
73
- ctx.fillRect(x, y, width, 1);
74
- ctx.fillRect(x, y + 2, width, 1);
128
+ ctx.fillRect(x, y, width, t);
129
+ ctx.fillRect(x, y + 2 * t, width, t);
75
130
  return;
76
131
  case 'dotted':
77
- for (let i = 0; i < width; i += 2)
78
- ctx.fillRect(x + i, y, 1, 1);
132
+ for (let i = 0; i < width; i += 2 * t) {
133
+ ctx.fillRect(x + i, y, Math.min(t, width - i), t);
134
+ }
79
135
  return;
80
136
  case 'dashed':
81
- for (let i = 0; i < width; i += 6)
82
- ctx.fillRect(x + i, y, Math.min(3, width - i), 1);
137
+ for (let i = 0; i < width; i += 6 * t)
138
+ ctx.fillRect(x + i, y, Math.min(3 * t, width - i), t);
83
139
  return;
84
140
  case 'curly':
85
- for (let i = 0; i < width; i += 2) {
86
- ctx.fillRect(x + i, y + (i % 4 === 0 ? 0 : 1), Math.min(2, width - i), 1);
141
+ for (let i = 0; i < width; i += 2 * t) {
142
+ ctx.fillRect(x + i, y + (i % (4 * t) === 0 ? 0 : t), Math.min(2 * t, width - i), t);
87
143
  }
88
144
  return;
89
145
  default:
90
- ctx.fillRect(x, y, width, 1);
146
+ ctx.fillRect(x, y, width, t);
91
147
  return;
92
148
  }
93
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/richtext/runs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/richtext/runs.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,oEAAoE;AACpE,6EAA6E;AAC7E,UAAU;AACV,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,8EAA8E;AAC9E,mCAAmC;AACnC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAYzE,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,OAAO,OAAQ,GAAmC,EAAE,QAAQ,KAAK,UAAU,CAAC;AAC9E,CAAC;AAsDD;;;GAGG;AACH,SAAS,SAAS,CAChB,CAAU,EACV,IAAc;IAEd,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;KAC9D,CAAC;AACJ,CAAC;AAED,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;;;;;;;GASG;AACH,SAAS,YAAY;IACnB,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,UAGT,CAAC;IACF,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,YAAY;QAAE,OAAO;IACtD,CAAC,CAAC,OAAO,EAAE,IAAI,CACb,mEAAmE;QACjE,oEAAoE;QACpE,kEAAkE;QAClE,sDAAsD,CACzD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAgB,EAChB,IAAc,EACd,EAAU,EACV,EAAU,EACV,KAAK,GAAG,CAAC;IAET,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,YAAY,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,sEAAsE;YACtE,wEAAwE;YACxE,sDAAsD;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACtD,GAAG,CAAC,QAAQ,CACV,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EACvB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,EACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CACvB,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7B,GAAG,CAAC,QAAQ,CACV,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EACrC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,EACzC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,EAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;6EAE6E;AAC7E,MAAM,UAAU,aAAa,CAC3B,GAAgB,EAChB,IAAc,EACd,EAAU,EACV,EAAU,EACV,KAAK,GAAG,CAAC;IAET,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACnC,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1B,aAAa,CACX,GAAG,EACH,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,EACtC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAClB,IAAI,CAAC,cAAc,IAAI,QAAQ,EAC/B,CAAC,CACF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7B,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;YACvB,GAAG,CAAC,QAAQ,CACV,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAChD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAClB,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAgB,EAChB,CAAS,EACT,CAAS,EACT,KAAa,EACb,KAA6C,EAC7C,CAAC,GAAG,CAAC;IAEL,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,QAAQ;YACX,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrC,OAAO;QACT,KAAK,QAAQ;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,OAAO;QACT,KAAK,QAAQ;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO;QACT,KAAK,OAAO;YACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,QAAQ,CACV,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAC1B,CAAC,CACF,CAAC;YACJ,CAAC;YACD,OAAO;QACT;YACE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7B,OAAO;IACX,CAAC;AACH,CAAC;AAED;4EAC4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CACvB,MAAmB,EACnB,IAAc,EACd,OAAiB,EACjB,IAAY,EACZ,EAAU;IAEV,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACrB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,SAAS,KAAK,KAAK,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QACpC,wEAAwE;QACxE,0DAA0D;QAC1D,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,YAAqB,EAAU,EAAE;YAC3D,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;gBACjE,OAAO,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3C,CAAC;YACD,OAAO,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;QACF,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK;YACvC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACzC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IACD,4EAA4E;IAC5E,yEAAyE;IACzE,gBAAgB;IAChB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,GAAG,GAAmC,EAAE,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,IAAI,KAAK,GAAG,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,IAAI;YAAE,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Key, ReactElement, ReactNode } from 'react';
2
+ import type { ReactX11Elements, Theme } from 'react-x11';
3
+ /** The host elements, by name. */
4
+ export type Host = ReactX11Elements;
5
+ interface CommonProps {
6
+ key?: Key;
7
+ /** Honoured by every node at runtime; declared only on `<window>` — the
8
+ * same narrow declaration the calendar works around. */
9
+ theme?: Theme | Record<string, string | number>;
10
+ /** The query hook every component forwards (docs/README.md,
11
+ * "Conventions"). react-x11 passes `data-*` through; the declarations
12
+ * just do not spell it, so it is added here rather than cast away at
13
+ * every call site. */
14
+ 'data-testname'?: string;
15
+ }
16
+ export declare function hx<K extends keyof Host>(type: K, props?: (Omit<Host[K], 'theme'> & CommonProps) | null, ...children: ReactNode[]): ReactElement;
17
+ export {};
18
+ //# sourceMappingURL=hx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx.d.ts","sourceRoot":"","sources":["../../src/tabs/hx.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEzD,kCAAkC;AAClC,MAAM,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAEpC,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV;6DACyD;IACzD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAChD;;;2BAGuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,IAAI,EACrC,IAAI,EAAE,CAAC,EACP,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,EACrD,GAAG,QAAQ,EAAE,SAAS,EAAE,GACvB,YAAY,CAEd"}
@@ -0,0 +1,10 @@
1
+ // `React.createElement`, typed against react-x11's host elements — a copy of
2
+ // `src/timeline/hx.ts`, duplicated on purpose: components in this package do
3
+ // not import each other (a lateral import welds two components into one
4
+ // tree-shaking unit — see AGENTS.md), and fifty shared lines are cheaper than
5
+ // that. See `src/internal/hx.ts` for the full why of the shape.
6
+ import React from 'react';
7
+ export function hx(type, props, ...children) {
8
+ return React.createElement(type, props, ...children);
9
+ }
10
+ //# sourceMappingURL=hx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx.js","sourceRoot":"","sources":["../../src/tabs/hx.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,wEAAwE;AACxE,8EAA8E;AAC9E,gEAAgE;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,MAAM,UAAU,EAAE,CAChB,IAAO,EACP,KAAqD,EACrD,GAAG,QAAqB;IAExB,OAAO,KAAK,CAAC,aAAa,CAAC,IAAc,EAAE,KAAc,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,160 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { Style } from 'react-x11/style';
3
+ /** What `style` props here accept, matching the rest of the package. */
4
+ type StyleInput = Style | Style[];
5
+ export type TabsVariant = 'line' | 'subtle' | 'enclosed' | 'outline' | 'plain';
6
+ export type TabsSize = 'sm' | 'md' | 'lg';
7
+ export type TabsOverflow = 'menu' | 'clip';
8
+ /** What `onValueChange` reports — Chakra's `details` object, so a handler
9
+ * written for Chakra (`(e) => setValue(e.value)`) transfers unchanged. */
10
+ export interface TabsValueChange {
11
+ value: string;
12
+ }
13
+ export interface TabsProps {
14
+ /** The selected trigger's value. Providing it makes the tabs controlled. */
15
+ value?: string;
16
+ /**
17
+ * The initially selected value, when uncontrolled. There is no implicit
18
+ * default: with neither prop nothing is selected and no panel shows, as in
19
+ * Chakra — the root cannot know its triggers until they mount, and a first
20
+ * render that selected nobody only to snap a frame later would be worse
21
+ * than asking for one line.
22
+ */
23
+ defaultValue?: string;
24
+ /** Selection changed — by click or by keyboard. Fires in controlled and
25
+ * uncontrolled mode alike. */
26
+ onValueChange?(change: TabsValueChange): void;
27
+ /** How the strip is drawn. Default `'line'`. */
28
+ variant?: TabsVariant;
29
+ /** Trigger padding, and the type inside. Default `'md'`. */
30
+ size?: TabsSize;
31
+ /** A vertical strip is a column beside its panel. Default `'horizontal'`. */
32
+ orientation?: 'horizontal' | 'vertical';
33
+ /**
34
+ * `'automatic'` (default) selects as the arrows move, the way a desktop
35
+ * notebook behaves. `'manual'` moves focus only and commits on Enter or
36
+ * Space — what you want when a panel is expensive to build.
37
+ */
38
+ activationMode?: 'automatic' | 'manual';
39
+ /** Triggers share the strip equally, filling its length. Default false. */
40
+ fitted?: boolean;
41
+ /** Where the triggers sit along the strip. Default `'start'`. */
42
+ justify?: 'start' | 'center' | 'end';
43
+ /**
44
+ * What a **horizontal** strip does with more tabs than it has room for.
45
+ *
46
+ * `'menu'` (the default) keeps as many as fit and moves the rest behind a
47
+ * button at the end of the strip, which drops them as a menu; the selected
48
+ * tab is never one of them. `'clip'` is the older behaviour — the strip
49
+ * overflows and the tabs past its edge are simply not visible.
50
+ *
51
+ * A vertical strip ignores this: it overflows downward, where a menu is
52
+ * the wrong answer and a scroll is the right one.
53
+ */
54
+ overflow?: TabsOverflow;
55
+ /** Build a panel the first time its tab is selected rather than up front.
56
+ * Default false: every panel mounts, hidden, so its state is live. */
57
+ lazyMount?: boolean;
58
+ /** Unmount a panel when its tab is deselected, giving up its state.
59
+ * Default false. */
60
+ unmountOnExit?: boolean;
61
+ /**
62
+ * The colour the selection takes — Chakra's `colorPalette`, as one colour.
63
+ * A `$token` is resolved against the palette. Default `$accent`.
64
+ */
65
+ accent?: string;
66
+ /**
67
+ * The colour behind the tabs, which is what an `enclosed` or `outline`
68
+ * selected trigger is filled with so it reads as part of the panel.
69
+ * Default `$background`; tabs on a card want `'$surface'`.
70
+ */
71
+ ground?: string;
72
+ /** The root `<box>`'s style — width, padding, `flexGrow`. */
73
+ style?: StyleInput;
74
+ 'data-testname'?: string;
75
+ children?: ReactNode;
76
+ }
77
+ /**
78
+ * Tabs.
79
+ *
80
+ * ```jsx
81
+ * <Tabs defaultValue="members">
82
+ * <TabsList>
83
+ * <TabsTrigger value="members">Members</TabsTrigger>
84
+ * <TabsTrigger value="projects">Projects</TabsTrigger>
85
+ * </TabsList>
86
+ * <TabsContent value="members">…</TabsContent>
87
+ * <TabsContent value="projects">…</TabsContent>
88
+ * </Tabs>
89
+ * ```
90
+ */
91
+ export declare function Tabs(props: TabsProps): ReactElement;
92
+ export interface TabsListProps {
93
+ style?: StyleInput;
94
+ 'data-testname'?: string;
95
+ children?: ReactNode;
96
+ }
97
+ /**
98
+ * The strip of triggers — a single tab stop, walked with the arrows.
99
+ *
100
+ * The arrows are visual, the list is logical: in a mirrored horizontal strip
101
+ * the *next* trigger is the one to the left, and in either direction the walk
102
+ * follows where layout actually put each trigger (sorted by position, not by
103
+ * mount order), wraps at the ends, and skips disabled triggers. Home/End jump
104
+ * to the ends. In `manual` mode focus moves without selecting, and Enter or
105
+ * Space commits — those keys are not handled here, because core makes them
106
+ * the click the trigger's own `onClick` already is.
107
+ *
108
+ * A horizontal strip with more tabs than room keeps the ones that fit and
109
+ * drops the rest into a menu at its end (`overflow`, on the root). The
110
+ * menu's button is the last stop on the same walk.
111
+ */
112
+ export declare function TabsList(props: TabsListProps): ReactElement;
113
+ export interface TabsTriggerProps {
114
+ /** What this trigger selects — the `value` its `<TabsContent>` names. */
115
+ value: string;
116
+ /** Unclickable and skipped by the arrows. */
117
+ disabled?: boolean;
118
+ style?: StyleInput;
119
+ 'data-testname'?: string;
120
+ children?: ReactNode;
121
+ }
122
+ /**
123
+ * One tab. Prose and glyphs alike are legal children — a string is wrapped
124
+ * in `<text>`, and an `<Icon>` inherits the trigger's ink (its `size` does
125
+ * not inherit and has to be named).
126
+ */
127
+ export declare function TabsTrigger(props: TabsTriggerProps): ReactElement;
128
+ export interface TabsIndicatorProps {
129
+ /** Merged over the default chip — a wash of the accent, radius 4. */
130
+ style?: StyleInput;
131
+ }
132
+ /**
133
+ * A marker that follows the selected trigger — Chakra's `Tabs.Indicator`,
134
+ * and like there it is what gives the `plain` variant a look.
135
+ *
136
+ * Write it as a direct child of `<TabsList>`. It renders nothing where it
137
+ * stands: the selected trigger draws it, as a box behind its own label — so
138
+ * layout owns the geometry and a resize, a font change or an RTL mirror can
139
+ * never leave the marker where a trigger used to be. What that costs is the
140
+ * slide: this renderer cannot animate between two mounts, so the marker
141
+ * moves in one step.
142
+ */
143
+ export declare function TabsIndicator(props: TabsIndicatorProps): null;
144
+ export interface TabsContentProps {
145
+ /** Which trigger shows this panel. */
146
+ value: string;
147
+ style?: StyleInput;
148
+ 'data-testname'?: string;
149
+ children?: ReactNode;
150
+ }
151
+ /**
152
+ * One panel. Every panel mounts up front and the unselected ones are
153
+ * `display: 'none'` — out of layout, still alive, so a form half-filled on
154
+ * another tab keeps its state. `lazyMount` defers a panel until its first
155
+ * selection; `unmountOnExit` gives the state up when it hides. Both are on
156
+ * the root, because they are a policy about the set, not about one panel.
157
+ */
158
+ export declare function TabsContent(props: TabsContentProps): ReactElement | null;
159
+ export {};
160
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tabs/index.ts"],"names":[],"mappings":"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"}