@react-x11/components 0.13.0 → 0.14.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 (128) hide show
  1. package/dist/html/controls.d.ts +29 -2
  2. package/dist/html/controls.d.ts.map +1 -1
  3. package/dist/html/controls.js +70 -2
  4. package/dist/html/controls.js.map +1 -1
  5. package/dist/html/css/cascade.d.ts.map +1 -1
  6. package/dist/html/css/cascade.js +26 -4
  7. package/dist/html/css/cascade.js.map +1 -1
  8. package/dist/html/css/color.d.ts +18 -0
  9. package/dist/html/css/color.d.ts.map +1 -1
  10. package/dist/html/css/color.js +27 -0
  11. package/dist/html/css/color.js.map +1 -1
  12. package/dist/html/css/parse.d.ts +18 -4
  13. package/dist/html/css/parse.d.ts.map +1 -1
  14. package/dist/html/css/parse.js +66 -28
  15. package/dist/html/css/parse.js.map +1 -1
  16. package/dist/html/css/style.d.ts +128 -15
  17. package/dist/html/css/style.d.ts.map +1 -1
  18. package/dist/html/css/style.js +561 -144
  19. package/dist/html/css/style.js.map +1 -1
  20. package/dist/html/css/transform.d.ts +85 -0
  21. package/dist/html/css/transform.d.ts.map +1 -0
  22. package/dist/html/css/transform.js +425 -0
  23. package/dist/html/css/transform.js.map +1 -0
  24. package/dist/html/css/ua.d.ts.map +1 -1
  25. package/dist/html/css/ua.js +14 -2
  26. package/dist/html/css/ua.js.map +1 -1
  27. package/dist/html/css/values.d.ts +4 -0
  28. package/dist/html/css/values.d.ts.map +1 -1
  29. package/dist/html/css/values.js.map +1 -1
  30. package/dist/html/fonts.d.ts +55 -5
  31. package/dist/html/fonts.d.ts.map +1 -1
  32. package/dist/html/fonts.js +284 -23
  33. package/dist/html/fonts.js.map +1 -1
  34. package/dist/html/layout/axes.d.ts +14 -0
  35. package/dist/html/layout/axes.d.ts.map +1 -0
  36. package/dist/html/layout/axes.js +28 -0
  37. package/dist/html/layout/axes.js.map +1 -0
  38. package/dist/html/layout/block.d.ts +93 -12
  39. package/dist/html/layout/block.d.ts.map +1 -1
  40. package/dist/html/layout/block.js +389 -39
  41. package/dist/html/layout/block.js.map +1 -1
  42. package/dist/html/layout/boxes.d.ts +59 -1
  43. package/dist/html/layout/boxes.d.ts.map +1 -1
  44. package/dist/html/layout/boxes.js +22 -2
  45. package/dist/html/layout/boxes.js.map +1 -1
  46. package/dist/html/layout/cache.d.ts +1 -1
  47. package/dist/html/layout/cache.d.ts.map +1 -1
  48. package/dist/html/layout/cache.js +6 -0
  49. package/dist/html/layout/cache.js.map +1 -1
  50. package/dist/html/layout/css-grid.d.ts.map +1 -1
  51. package/dist/html/layout/css-grid.js +90 -18
  52. package/dist/html/layout/css-grid.js.map +1 -1
  53. package/dist/html/layout/flex.d.ts.map +1 -1
  54. package/dist/html/layout/flex.js +570 -83
  55. package/dist/html/layout/flex.js.map +1 -1
  56. package/dist/html/layout/inline.d.ts +3 -0
  57. package/dist/html/layout/inline.d.ts.map +1 -1
  58. package/dist/html/layout/inline.js +144 -54
  59. package/dist/html/layout/inline.js.map +1 -1
  60. package/dist/html/layout/multicol.d.ts +42 -0
  61. package/dist/html/layout/multicol.d.ts.map +1 -0
  62. package/dist/html/layout/multicol.js +897 -0
  63. package/dist/html/layout/multicol.js.map +1 -0
  64. package/dist/html/layout/shaping.d.ts +7 -0
  65. package/dist/html/layout/shaping.d.ts.map +1 -1
  66. package/dist/html/layout/shaping.js +25 -20
  67. package/dist/html/layout/shaping.js.map +1 -1
  68. package/dist/html/layout/table.d.ts.map +1 -1
  69. package/dist/html/layout/table.js +62 -18
  70. package/dist/html/layout/table.js.map +1 -1
  71. package/dist/html/node.d.ts +3 -0
  72. package/dist/html/node.d.ts.map +1 -1
  73. package/dist/html/node.js +263 -36
  74. package/dist/html/node.js.map +1 -1
  75. package/dist/html/paint.d.ts +79 -4
  76. package/dist/html/paint.d.ts.map +1 -1
  77. package/dist/html/paint.js +1213 -141
  78. package/dist/html/paint.js.map +1 -1
  79. package/dist/html/svg.d.ts +15 -2
  80. package/dist/html/svg.d.ts.map +1 -1
  81. package/dist/html/svg.js +249 -17
  82. package/dist/html/svg.js.map +1 -1
  83. package/dist/html/widgets.js +87 -7
  84. package/dist/html/widgets.js.map +1 -1
  85. package/dist/html/woff2.d.ts +14 -0
  86. package/dist/html/woff2.d.ts.map +1 -0
  87. package/dist/html/woff2.js +608 -0
  88. package/dist/html/woff2.js.map +1 -0
  89. package/dist/maps/controller.d.ts +17 -1
  90. package/dist/maps/controller.d.ts.map +1 -1
  91. package/dist/maps/controller.js +27 -7
  92. package/dist/maps/controller.js.map +1 -1
  93. package/dist/richtext/node.d.ts +8 -1
  94. package/dist/richtext/node.d.ts.map +1 -1
  95. package/dist/richtext/node.js +5 -1
  96. package/dist/richtext/node.js.map +1 -1
  97. package/dist/richtext/runs.d.ts +25 -6
  98. package/dist/richtext/runs.d.ts.map +1 -1
  99. package/dist/richtext/runs.js +240 -24
  100. package/dist/richtext/runs.js.map +1 -1
  101. package/package.json +1 -1
  102. package/src/html/controls.ts +85 -2
  103. package/src/html/css/cascade.ts +23 -0
  104. package/src/html/css/color.ts +29 -0
  105. package/src/html/css/parse.ts +71 -31
  106. package/src/html/css/style.ts +664 -147
  107. package/src/html/css/transform.ts +459 -0
  108. package/src/html/css/ua.ts +15 -2
  109. package/src/html/css/values.ts +4 -0
  110. package/src/html/fonts.ts +312 -29
  111. package/src/html/layout/axes.ts +62 -0
  112. package/src/html/layout/block.ts +444 -37
  113. package/src/html/layout/boxes.ts +65 -3
  114. package/src/html/layout/cache.ts +6 -0
  115. package/src/html/layout/css-grid.ts +95 -22
  116. package/src/html/layout/flex.ts +671 -77
  117. package/src/html/layout/inline.ts +149 -55
  118. package/src/html/layout/multicol.ts +977 -0
  119. package/src/html/layout/shaping.ts +27 -18
  120. package/src/html/layout/table.ts +62 -19
  121. package/src/html/node.ts +300 -37
  122. package/src/html/paint.ts +1406 -206
  123. package/src/html/svg.ts +277 -19
  124. package/src/html/widgets.ts +95 -9
  125. package/src/html/woff2.ts +612 -0
  126. package/src/maps/controller.ts +28 -7
  127. package/src/richtext/node.ts +13 -2
  128. package/src/richtext/runs.ts +313 -35
@@ -50,9 +50,18 @@ export declare class SvgDrawing {
50
50
  private _seen;
51
51
  private _seenLast;
52
52
  private _seenViewport;
53
+ /** The `fill` and `stroke` the view's tree was last given its root's. */
54
+ private _seenPaint;
53
55
  /** Whether a length in the tree is a percentage of the viewport; null
54
56
  * until the tree is first read. */
55
57
  private _percent;
58
+ /** Whether a `<use>` in the tree is one `SvgView` cannot draw as it
59
+ * stands (`needsExpanding`). */
60
+ private _uses;
61
+ /** The document's last node when a `<use>` was last looked up and its
62
+ * element not found: a streamed document may bring it yet, and has
63
+ * when its last node is another. Undefined where none was missing. */
64
+ private _missingAt;
56
65
  private _failed;
57
66
  /** An SVG image's own document, rather than an element of this one. */
58
67
  private readonly _standalone;
@@ -64,9 +73,13 @@ export declare class SvgDrawing {
64
73
  * Draw into a rectangle — the box's content box, in device pixels —
65
74
  * clipped to it. The `viewBox`, where there is one, is fitted to it as
66
75
  * `preserveAspectRatio` says; without one a user unit is a CSS pixel,
67
- * which is `scale` device pixels. `color` is `currentColor`.
76
+ * which is `scale` device pixels. `color` is `currentColor`, and `fill`
77
+ * and `stroke` the root's own where the document's styles set them (SVG
78
+ * 2, 13.2): they are properties, which a style sheet's rule sets over
79
+ * the presentation attribute, and what is in the drawing inherits them
80
+ * from its root.
68
81
  */
69
- draw(ctx: ClipContext, x: number, y: number, w: number, h: number, scale: number, color?: string): void;
82
+ draw(ctx: ClipContext, x: number, y: number, w: number, h: number, scale: number, color?: string, fill?: string | null, stroke?: string | null): void;
70
83
  private _viewFor;
71
84
  }
72
85
  /** The drawing of an inline `<svg>`. */
@@ -1 +1 @@
1
- {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../src/html/svg.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAQ,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB;;0EAE0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAyCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AA8BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,aAAa,CAWvE;AAwBD,0EAA0E;AAC1E,UAAU,WAAW;IACnB,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,IAAI,CAAC;IAChB,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7D;AAKD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,KAAK,CAA4B;IACzC;;;sCAGkC;IAClC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAAM;IAC3B;wCACoC;IACpC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC;yBACqB;IACrB,OAAO,CAAC,OAAO,CAAwC;IAEvD,YAAY,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,UAAQ,EAIvE;IAED;;;;;OAKG;IACH,IAAI,CACF,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CA+EN;IAED,OAAO,CAAC,QAAQ;CAgCjB;AA2BD,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,CAOrD;AA2FD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAoBjE"}
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../src/html/svg.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAQ,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB;;0EAE0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAyCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AA8BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,aAAa,CAWvE;AAwBD,0EAA0E;AAC1E,UAAU,WAAW;IACnB,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,IAAI,CAAC;IAChB,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7D;AAKD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,KAAK,CAA4B;IACzC;;;sCAGkC;IAClC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAAM;IAC3B,yEAAyE;IACzE,OAAO,CAAC,UAAU,CAAM;IACxB;wCACoC;IACpC,OAAO,CAAC,QAAQ,CAAwB;IACxC;qCACiC;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB;;2EAEuE;IACvE,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,OAAO,CAAS;IACxB,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC;yBACqB;IACrB,OAAO,CAAC,OAAO,CAAwC;IAEvD,YAAY,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,UAAQ,EAIvE;IAED;;;;;;;;;OASG;IACH,IAAI,CACF,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,IAAI,CAkFN;IAED,OAAO,CAAC,QAAQ;CAqDjB;AA0CD,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,CAOrD;AAuSD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAoBjE"}
package/dist/html/svg.js CHANGED
@@ -137,9 +137,18 @@ export class SvgDrawing {
137
137
  _seen = -1;
138
138
  _seenLast = null;
139
139
  _seenViewport = '';
140
+ /** The `fill` and `stroke` the view's tree was last given its root's. */
141
+ _seenPaint = '';
140
142
  /** Whether a length in the tree is a percentage of the viewport; null
141
143
  * until the tree is first read. */
142
144
  _percent = null;
145
+ /** Whether a `<use>` in the tree is one `SvgView` cannot draw as it
146
+ * stands (`needsExpanding`). */
147
+ _uses = false;
148
+ /** The document's last node when a `<use>` was last looked up and its
149
+ * element not found: a streamed document may bring it yet, and has
150
+ * when its last node is another. Undefined where none was missing. */
151
+ _missingAt = undefined;
143
152
  _failed = false;
144
153
  /** An SVG image's own document, rather than an element of this one. */
145
154
  _standalone;
@@ -155,9 +164,13 @@ export class SvgDrawing {
155
164
  * Draw into a rectangle — the box's content box, in device pixels —
156
165
  * clipped to it. The `viewBox`, where there is one, is fitted to it as
157
166
  * `preserveAspectRatio` says; without one a user unit is a CSS pixel,
158
- * which is `scale` device pixels. `color` is `currentColor`.
167
+ * which is `scale` device pixels. `color` is `currentColor`, and `fill`
168
+ * and `stroke` the root's own where the document's styles set them (SVG
169
+ * 2, 13.2): they are properties, which a style sheet's rule sets over
170
+ * the presentation attribute, and what is in the drawing inherits them
171
+ * from its root.
159
172
  */
160
- draw(ctx, x, y, w, h, scale, color) {
173
+ draw(ctx, x, y, w, h, scale, color, fill = null, stroke = null) {
161
174
  if (this._failed || !(w > 0 && h > 0))
162
175
  return;
163
176
  // the mock backend has no path API, and SvgView draws paths
@@ -189,9 +202,11 @@ export class SvgDrawing {
189
202
  }
190
203
  const box = viewBoxOf(root);
191
204
  // the viewport in user units, which a percentage is of
205
+ const paint = (fill === null ? '' : `fill:${fill};`) +
206
+ (stroke === null ? '' : `stroke:${stroke};`);
192
207
  const view = box
193
- ? this._viewFor(box[2], box[3])
194
- : this._viewFor(w / scale, h / scale);
208
+ ? this._viewFor(box[2], box[3], paint)
209
+ : this._viewFor(w / scale, h / scale, paint);
195
210
  if (!view)
196
211
  return;
197
212
  ctx.save();
@@ -232,15 +247,26 @@ export class SvgDrawing {
232
247
  ctx.restore();
233
248
  }
234
249
  }
235
- _viewFor(width, height) {
250
+ _viewFor(width, height,
251
+ /** The root's `fill` and `stroke` as declarations, or none. */
252
+ paint = '') {
236
253
  const root = this._root;
237
254
  const count = root.children.length;
238
255
  const last = root.lastChild;
239
- const grown = count !== this._seen || last !== this._seenLast;
240
- if (grown || this._percent === null)
256
+ // more of the document has arrived since a `<use>` found nothing
257
+ const arrived = this._missingAt !== undefined &&
258
+ lastNode(documentOf(root)) !== this._missingAt;
259
+ const grown = count !== this._seen || last !== this._seenLast || arrived;
260
+ if (grown || this._percent === null) {
241
261
  this._percent = hasPercent(root);
242
- const viewport = this._percent ? `${width}x${height}` : '';
243
- if (this._view && !grown && viewport === this._seenViewport) {
262
+ this._uses = needsExpanding(root);
263
+ }
264
+ const sized = this._percent || this._uses;
265
+ const viewport = sized ? `${width}x${height}` : '';
266
+ if (this._view &&
267
+ !grown &&
268
+ viewport === this._seenViewport &&
269
+ paint === this._seenPaint) {
244
270
  return this._view;
245
271
  }
246
272
  const View = svgViewClass();
@@ -250,13 +276,17 @@ export class SvgDrawing {
250
276
  }
251
277
  try {
252
278
  const view = this._view ?? new View(null);
253
- view.setSvgDom(this._percent || root.name.includes(':')
254
- ? copyTree(root, this._percent ? [width, height] : null)
255
- : root);
279
+ const missing = { any: false };
280
+ const tree = sized || root.name.includes(':')
281
+ ? copyTree(root, sized ? [width, height] : null, missing)
282
+ : root;
283
+ view.setSvgDom(paint ? painted(tree, paint) : tree);
284
+ this._missingAt = missing.any ? lastNode(documentOf(root)) : undefined;
256
285
  this._view = view;
257
286
  this._seen = count;
258
287
  this._seenLast = last;
259
288
  this._seenViewport = viewport;
289
+ this._seenPaint = paint;
260
290
  return view;
261
291
  }
262
292
  catch {
@@ -265,6 +295,16 @@ export class SvgDrawing {
265
295
  }
266
296
  }
267
297
  }
298
+ /**
299
+ * A drawing's root with its `fill` and `stroke` the document's: a copy of
300
+ * the root, its children the same ones, with the declarations at the end of
301
+ * its `style` — where `SvgView` reads a root's paint, over its presentation
302
+ * attributes, for what is under it to inherit.
303
+ */
304
+ function painted(root, paint) {
305
+ const style = root.attribs.style;
306
+ return new Element(root.name, { ...root.attribs, style: style ? `${style};${paint}` : paint }, root.children);
307
+ }
268
308
  /**
269
309
  * The colour an SVG image's root element sets as its background, in its
270
310
  * `style` attribute — the one place an image can say it, since
@@ -349,20 +389,211 @@ function hasPercent(root) {
349
389
  };
350
390
  return walk(root);
351
391
  }
392
+ /** The element a `<use>` refers to by a fragment, its id: one in another
393
+ * document is none here, where nothing is fetched for a drawing. */
394
+ function useTarget(el) {
395
+ const href = el.attribs.href ?? el.attribs['xlink:href'] ?? '';
396
+ return href.length > 1 && href.startsWith('#') ? href.slice(1) : null;
397
+ }
398
+ /** The elements under a root by their ids, the first of each. */
399
+ function idsUnder(root) {
400
+ const ids = new Map();
401
+ const walk = (el) => {
402
+ for (const child of el.children) {
403
+ if (child.type !== 'tag')
404
+ continue;
405
+ const tag = child;
406
+ const id = tag.attribs.id;
407
+ if (id && !ids.has(id))
408
+ ids.set(id, tag);
409
+ walk(tag);
410
+ }
411
+ };
412
+ walk(root);
413
+ return ids;
414
+ }
415
+ /**
416
+ * Whether a `<use>` under the root is one `SvgView` cannot draw as it
417
+ * stands: it looks a reference up among the root's own elements, and draws
418
+ * a `<symbol>` as its children where they are. So one to an element
419
+ * outside the root — an icon sprite's, a hidden `<svg>` of symbols at the
420
+ * top of the page — and one to a symbol with a `viewBox` of its own are
421
+ * drawn from a copy (`copyTree`).
422
+ */
423
+ function needsExpanding(root) {
424
+ let ids = null;
425
+ const walk = (el) => {
426
+ for (const child of el.children) {
427
+ if (child.type !== 'tag')
428
+ continue;
429
+ const tag = child;
430
+ if (localName(tag.name) === 'use') {
431
+ const id = useTarget(tag);
432
+ if (id !== null) {
433
+ ids ??= idsUnder(root);
434
+ const target = ids.get(id);
435
+ if (!target)
436
+ return true;
437
+ if (localName(target.name) === 'symbol' && viewBoxOf(target)) {
438
+ return true;
439
+ }
440
+ }
441
+ }
442
+ if (walk(tag))
443
+ return true;
444
+ }
445
+ return false;
446
+ };
447
+ return walk(root);
448
+ }
449
+ function documentOf(el) {
450
+ let top = el;
451
+ while (top.parent)
452
+ top = top.parent;
453
+ return top;
454
+ }
455
+ /** The last node of a document, in its order: what a document that is
456
+ * still arriving has another of once more of it has. */
457
+ function lastNode(top) {
458
+ let last = top.lastChild;
459
+ while (last && 'lastChild' in last && last.lastChild)
460
+ last = last.lastChild;
461
+ return last;
462
+ }
463
+ /** The first element of a document with an id, in its order. */
464
+ function elementById(top, id) {
465
+ const stack = [...top.children].reverse();
466
+ for (let node = stack.pop(); node; node = stack.pop()) {
467
+ if (node.type !== 'tag')
468
+ continue;
469
+ const el = node;
470
+ if (el.attribs.id === id)
471
+ return el;
472
+ for (let i = el.children.length - 1; i >= 0; i -= 1) {
473
+ stack.push(el.children[i]);
474
+ }
475
+ }
476
+ return null;
477
+ }
478
+ /** How deep a `<use>` may be of a `<use>`: one that reaches itself stops. */
479
+ const USE_DEPTH = 8;
480
+ /** A `<use>`'s `width` or `height`, in user units: a number, or a
481
+ * percentage of the viewport's; null for none, and for `auto`. */
482
+ function useLength(value, of) {
483
+ if (value === undefined)
484
+ return null;
485
+ const n = parseFloat(value);
486
+ if (!Number.isFinite(n) || n < 0)
487
+ return null;
488
+ return value.trim().endsWith('%') ? (n / 100) * of : n;
489
+ }
490
+ /** The transform that fits a `viewBox` into a viewport at `x`, `y`, as
491
+ * `preserveAspectRatio` says (SVG 2, 8.2). */
492
+ function fitTransform(box, x, y, width, height, preserve) {
493
+ const fit = (preserve ?? '').trim().split(/\s+/);
494
+ if (fit[0] === 'defer')
495
+ fit.shift();
496
+ let sx = width / box[2];
497
+ let sy = height / box[3];
498
+ if (fit[0] !== 'none') {
499
+ const align = ALIGN.exec(fit[0] ?? '') ?? ['xMidYMid', 'Mid', 'Mid'];
500
+ const scale = fit[1] === 'slice' ? Math.max(sx, sy) : Math.min(sx, sy);
501
+ x += (width - box[2] * scale) * AT[align[1]];
502
+ y += (height - box[3] * scale) * AT[align[2]];
503
+ sx = scale;
504
+ sy = scale;
505
+ }
506
+ return `translate(${x - box[0] * sx},${y - box[1] * sy}) scale(${sx},${sy})`;
507
+ }
508
+ /** What a `<use>` says of where its element goes, and not of how it looks:
509
+ * the rest is the group's the element is drawn in. */
510
+ const USE_PLACEMENT = new Set([
511
+ 'href',
512
+ 'xlink:href',
513
+ 'x',
514
+ 'y',
515
+ 'width',
516
+ 'height',
517
+ ]);
352
518
  /**
353
519
  * The tree `SvgView` reads, where the document's own will not do: with
354
520
  * local names — `SvgView` knows `rect`, not `svg:rect`, and a prefix is
355
521
  * dropped only where it is bound to SVG — and with its percentages resolved
356
- * against a viewport of `[width, height]` user units, where one is given.
522
+ * against a viewport of `[width, height]` user units, where one is given;
523
+ * and with each `<use>` that `SvgView` cannot draw (`needsExpanding`) as a
524
+ * group of what it refers to (SVG 2, 5.5): the element, from wherever in
525
+ * the document it is, or a symbol's children, its `viewBox` fitted to the
526
+ * viewport the `<use>` gives it — its `width` and `height`, and all of the
527
+ * drawing's where it has none. `missing.any` is set where one refers to an
528
+ * element the document does not have.
357
529
  */
358
- function copyTree(root, viewport) {
530
+ function copyTree(root, viewport, missing) {
359
531
  const colon = root.name.indexOf(':');
360
532
  const prefix = colon < 0 ? null : `${root.name.slice(0, colon)}:`;
361
533
  const strip = (name) => prefix && name.startsWith(prefix) ? name.slice(prefix.length) : name;
362
534
  const diagonal = viewport
363
535
  ? Math.sqrt((viewport[0] ** 2 + viewport[1] ** 2) / 2)
364
536
  : 0;
365
- const copy = (el, resolve) => {
537
+ let ids = null;
538
+ const expand = (use, resolve, depth) => {
539
+ const id = useTarget(use);
540
+ if (id === null || depth >= USE_DEPTH)
541
+ return null;
542
+ ids ??= idsUnder(root);
543
+ const inside = ids.get(id);
544
+ const target = inside ?? elementById(documentOf(root), id);
545
+ if (!target) {
546
+ if (missing)
547
+ missing.any = true;
548
+ return null;
549
+ }
550
+ const symbol = localName(target.name) === 'symbol';
551
+ const box = symbol ? viewBoxOf(target) : null;
552
+ // one of the root's own with no viewport to fit: `SvgView` draws it
553
+ if (inside && !box)
554
+ return null;
555
+ const attribs = {};
556
+ for (const name in use.attribs) {
557
+ if (!USE_PLACEMENT.has(name))
558
+ attribs[name] = use.attribs[name];
559
+ }
560
+ const x = parseFloat(use.attribs.x ?? '') || 0;
561
+ const y = parseFloat(use.attribs.y ?? '') || 0;
562
+ let placed = '';
563
+ if (box && viewport) {
564
+ const width = useLength(use.attribs.width, viewport[0]) ??
565
+ useLength(target.attribs.width, viewport[0]) ??
566
+ viewport[0];
567
+ const height = useLength(use.attribs.height, viewport[1]) ??
568
+ useLength(target.attribs.height, viewport[1]) ??
569
+ viewport[1];
570
+ placed = fitTransform(box, x, y, width, height, svgAttr(target, 'preserveAspectRatio'));
571
+ }
572
+ else if (x || y)
573
+ placed = `translate(${x},${y})`;
574
+ const transform = `${attribs.transform ?? ''} ${placed}`.trim();
575
+ if (transform)
576
+ attribs.transform = transform;
577
+ // a length in a symbol with a `viewBox` is of that, and left as it is
578
+ const within = resolve && !box;
579
+ const children = [];
580
+ if (symbol) {
581
+ for (const child of target.children) {
582
+ if (child.type === 'tag') {
583
+ children.push(copy(child, within, depth + 1));
584
+ }
585
+ }
586
+ }
587
+ else
588
+ children.push(copy(target, within, depth + 1));
589
+ return new Element('g', attribs, children);
590
+ };
591
+ const copy = (el, resolve, depth = 0) => {
592
+ if (localName(el.name) === 'use') {
593
+ const group = expand(el, resolve, depth);
594
+ if (group)
595
+ return group;
596
+ }
366
597
  const here = resolve && !OWN_UNITS.has(localName(el.name));
367
598
  const attribs = { ...el.attribs };
368
599
  if (here && viewport && el !== root) {
@@ -380,8 +611,9 @@ function copyTree(root, viewport) {
380
611
  }
381
612
  const children = [];
382
613
  for (const child of el.children) {
383
- if (child.type === 'tag')
384
- children.push(copy(child, here));
614
+ if (child.type === 'tag') {
615
+ children.push(copy(child, here, depth));
616
+ }
385
617
  else if (child.type === 'text')
386
618
  children.push(new Text(child.data));
387
619
  }
@@ -1 +1 @@
1
- {"version":3,"file":"svg.js","sourceRoot":"","sources":["../../src/html/svg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svg.js","sourceRoot":"","sources":["../../src/html/svg.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,8 @@ import React from 'react';
19
19
  import { Button, Checkbox, Radio, RadioGroup, Select } from 'react-x11';
20
20
  import { cancelLater, later } from '../internal/timers.js';
21
21
  import { hx } from './hx.js';
22
- import { attr, tagOf } from './dom.js';
23
- import { buttonLabel, optionsOf, selectedOption } from './controls.js';
22
+ import { attr, isElement, tagOf } from './dom.js';
23
+ import { between, buttonLabel, optionsOf, selectedOption } from './controls.js';
24
24
  import { FormState, buttonType, firstInvalid, formOwner, formSubmission, implicitSubmission, inputType, isDisabled, labeledControl, optionElements, optionValue, radioGroup, } from './form.js';
25
25
  const h = React.createElement;
26
26
  /** How far a press may travel and still be a click — `useLinkClicks`'s
@@ -347,12 +347,28 @@ function renderControl(rect, look, ctx) {
347
347
  const readOnly = attr(el, 'readonly') !== undefined;
348
348
  // a field whose box the document draws takes its content box
349
349
  const at = rect.bare ?? rect;
350
+ const left = Math.round(at.x);
351
+ const top = Math.round(at.y);
352
+ const width = Math.round(at.width);
353
+ const height = Math.round(at.height);
354
+ // What the widget shows through: its own rectangle, or where the
355
+ // document cuts the element, what the cut leaves of it — out to where a
356
+ // focus ring reaches, which a clip around the element cuts as it cuts
357
+ // the element, and one that leaves the box whole does not.
358
+ const port = rect.clip
359
+ ? between(rect.clip, {
360
+ x: left - RING_REACH,
361
+ y: top - RING_REACH,
362
+ width: width + 2 * RING_REACH,
363
+ height: height + 2 * RING_REACH,
364
+ })
365
+ : { x: left, y: top, width, height };
350
366
  const frame = {
351
367
  position: 'absolute',
352
- left: Math.round(at.x),
353
- top: Math.round(at.y),
354
- width: Math.round(at.width),
355
- height: Math.round(at.height),
368
+ left: left - port.x,
369
+ top: top - port.y,
370
+ width,
371
+ height,
356
372
  // The face and the size the box was measured in, the element's: the
357
373
  // palette's from the UA sheet, or the page's where it set its own. A
358
374
  // field inherits them, and so does a `<Button>`'s or a `<Select>`'s
@@ -366,6 +382,7 @@ function renderControl(rect, look, ctx) {
366
382
  ...(rect.opacity !== undefined && { opacity: rect.opacity }),
367
383
  };
368
384
  const field = rect.bare ? bareField(rect.bare) : fieldChrome(look);
385
+ const order = tabOrder(el);
369
386
  // A button or a select whose font the page set is the drawn control: a
370
387
  // native bezel sets its title at AppKit's size, whatever it is handed,
371
388
  // in a bezel only as tall as that title, where the box was measured for
@@ -387,6 +404,7 @@ function renderControl(rect, look, ctx) {
387
404
  widget = h(Checkbox, {
388
405
  checked: attr(el, 'checked') !== undefined,
389
406
  disabled,
407
+ ...order,
390
408
  // the element's whole box takes the press, as it does in a browser:
391
409
  // a page that sizes one over its label, invisible, means the label
392
410
  style: { width: '100%', height: '100%' },
@@ -395,6 +413,9 @@ function renderControl(rect, look, ctx) {
395
413
  break;
396
414
  case 'radio': {
397
415
  const value = attr(el, 'value') ?? 'on';
416
+ // No `tabindex` reaches a radio: core's `<Radio>` takes no props for
417
+ // the node it draws, as the other widgets do, and the group's box is
418
+ // not the one that takes the focus.
398
419
  widget = h(RadioGroup, {
399
420
  value: attr(el, 'checked') !== undefined ? value : undefined,
400
421
  onChange: () => ctx.checkRadio(el),
@@ -405,6 +426,7 @@ function renderControl(rect, look, ctx) {
405
426
  widget = h(Button, {
406
427
  label: buttonLabel(el),
407
428
  disabled,
429
+ ...order,
408
430
  ...(ownFont && { native: false }),
409
431
  style: { width: '100%', height: '100%' },
410
432
  onPress: () => ctx.press(el),
@@ -415,7 +437,11 @@ function renderControl(rect, look, ctx) {
415
437
  widget = h(Select, {
416
438
  options: options.map((o) => ({ value: o.value, label: o.label })),
417
439
  value: selectedOption(el) ?? undefined,
440
+ // a `<select>` with nothing selected has no options, and shows
441
+ // none: core's "Select…" is an application's prompt, not a page's
442
+ placeholder: '',
418
443
  disabled,
444
+ ...order,
419
445
  style: rect.bare
420
446
  ? [BARE_TRIGGER, { width: '100%', height: '100%' }]
421
447
  : { width: '100%', height: '100%' },
@@ -456,6 +482,7 @@ function renderControl(rect, look, ctx) {
456
482
  widget = hx('textarea', {
457
483
  defaultValue: forms.value(el),
458
484
  maxLength: maxLength(el),
485
+ ...order,
459
486
  style: [field, { width: '100%', height: '100%' }],
460
487
  onChange: readOnly ? undefined : (ev) => typed(ev.value),
461
488
  });
@@ -466,6 +493,7 @@ function renderControl(rect, look, ctx) {
466
493
  defaultValue: forms.value(el),
467
494
  placeholder: attr(el, 'placeholder'),
468
495
  maxLength: maxLength(el),
496
+ ...order,
469
497
  // Core's word for a password field: nothing in it reaches a
470
498
  // selection, PRIMARY included.
471
499
  sensitive: type === 'password',
@@ -487,13 +515,65 @@ function renderControl(rect, look, ctx) {
487
515
  default:
488
516
  return null;
489
517
  }
518
+ // Two boxes, always: the one the widget shows through, and in it the
519
+ // element's. A widget the document comes to cut, or stops cutting, is
520
+ // the same widget in the same place in the tree, and keeps its focus
521
+ // and its caret.
490
522
  return hx('box', {
491
523
  key,
524
+ selectable: false,
525
+ style: {
526
+ position: 'absolute',
527
+ left: port.x,
528
+ top: port.y,
529
+ width: port.width,
530
+ height: port.height,
531
+ // cut to it, and nothing itself: a press beside the widget is the
532
+ // document's
533
+ ...(rect.clip && { overflow: 'hidden', pointerEvents: 'box-none' }),
534
+ },
535
+ }, hx('box', {
492
536
  ref: ctx.widgets.refOf(el),
493
537
  style: frame,
494
538
  selectable: false,
495
- }, widget);
539
+ // a control the page keeps from assistive technology is kept from
540
+ // it here: core leaves the node, and the widget in it, out of the
541
+ // accessibility tree
542
+ ...(ariaHidden(el) && { 'aria-hidden': true }),
543
+ }, widget));
544
+ }
545
+ /**
546
+ * What an element's `tabindex` says of its widget's place in the Tab order
547
+ * (HTML 6.6.3): a negative one is focusable — by a press, by its label, by
548
+ * `autofocus` — and not reached by Tab, which is core's `tabIndex={-1}`
549
+ * too. Radix lays a native `<select tabindex="-1" aria-hidden="true">`
550
+ * beside the picker it draws, cut to nothing: it was a stop the eye could
551
+ * not find, and Space on it opened an empty menu.
552
+ *
553
+ * Nothing else is handed over. Zero is where a control already is, and a
554
+ * positive one would put a page's control ahead of the application's own,
555
+ * whose window it is: the order between a document and what is around it
556
+ * is not the document's to set.
557
+ */
558
+ function tabOrder(el) {
559
+ // the rules for parsing integers (HTML 2.3.4.1): white space, a sign,
560
+ // digits, and whatever follows them ignored
561
+ const m = /^[ \t\n\f\r]*([+-]?\d+)/.exec(attr(el, 'tabindex') ?? '');
562
+ return m && Number(m[1]) < 0 ? { tabIndex: -1 } : undefined;
563
+ }
564
+ /** Whether an element is hidden from assistive technology: `aria-hidden`
565
+ * is true on it or on an element around it (WAI-ARIA 1.2, 6.6). */
566
+ function ariaHidden(el) {
567
+ for (let at = el; at;) {
568
+ if (attr(at, 'aria-hidden')?.trim().toLowerCase() === 'true')
569
+ return true;
570
+ const parent = at.parent;
571
+ at = isElement(parent) ? parent : null;
572
+ }
573
+ return false;
496
574
  }
575
+ /** How far past its box a widget's focus ring is drawn, and then some. */
576
+ const RING_REACH = 8;
497
577
  /** A field's `maxlength`, which the widget enforces as it is typed into. */
498
578
  function maxLength(el) {
499
579
  const raw = attr(el, 'maxlength')?.trim();