@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.
- package/dist/html/controls.d.ts +29 -2
- package/dist/html/controls.d.ts.map +1 -1
- package/dist/html/controls.js +70 -2
- package/dist/html/controls.js.map +1 -1
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +26 -4
- package/dist/html/css/cascade.js.map +1 -1
- package/dist/html/css/color.d.ts +18 -0
- package/dist/html/css/color.d.ts.map +1 -1
- package/dist/html/css/color.js +27 -0
- package/dist/html/css/color.js.map +1 -1
- package/dist/html/css/parse.d.ts +18 -4
- package/dist/html/css/parse.d.ts.map +1 -1
- package/dist/html/css/parse.js +66 -28
- package/dist/html/css/parse.js.map +1 -1
- package/dist/html/css/style.d.ts +128 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +561 -144
- package/dist/html/css/style.js.map +1 -1
- package/dist/html/css/transform.d.ts +85 -0
- package/dist/html/css/transform.d.ts.map +1 -0
- package/dist/html/css/transform.js +425 -0
- package/dist/html/css/transform.js.map +1 -0
- package/dist/html/css/ua.d.ts.map +1 -1
- package/dist/html/css/ua.js +14 -2
- package/dist/html/css/ua.js.map +1 -1
- package/dist/html/css/values.d.ts +4 -0
- package/dist/html/css/values.d.ts.map +1 -1
- package/dist/html/css/values.js.map +1 -1
- package/dist/html/fonts.d.ts +55 -5
- package/dist/html/fonts.d.ts.map +1 -1
- package/dist/html/fonts.js +284 -23
- package/dist/html/fonts.js.map +1 -1
- package/dist/html/layout/axes.d.ts +14 -0
- package/dist/html/layout/axes.d.ts.map +1 -0
- package/dist/html/layout/axes.js +28 -0
- package/dist/html/layout/axes.js.map +1 -0
- package/dist/html/layout/block.d.ts +93 -12
- package/dist/html/layout/block.d.ts.map +1 -1
- package/dist/html/layout/block.js +389 -39
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +59 -1
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +22 -2
- package/dist/html/layout/boxes.js.map +1 -1
- package/dist/html/layout/cache.d.ts +1 -1
- package/dist/html/layout/cache.d.ts.map +1 -1
- package/dist/html/layout/cache.js +6 -0
- package/dist/html/layout/cache.js.map +1 -1
- package/dist/html/layout/css-grid.d.ts.map +1 -1
- package/dist/html/layout/css-grid.js +90 -18
- package/dist/html/layout/css-grid.js.map +1 -1
- package/dist/html/layout/flex.d.ts.map +1 -1
- package/dist/html/layout/flex.js +570 -83
- package/dist/html/layout/flex.js.map +1 -1
- package/dist/html/layout/inline.d.ts +3 -0
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +144 -54
- package/dist/html/layout/inline.js.map +1 -1
- package/dist/html/layout/multicol.d.ts +42 -0
- package/dist/html/layout/multicol.d.ts.map +1 -0
- package/dist/html/layout/multicol.js +897 -0
- package/dist/html/layout/multicol.js.map +1 -0
- package/dist/html/layout/shaping.d.ts +7 -0
- package/dist/html/layout/shaping.d.ts.map +1 -1
- package/dist/html/layout/shaping.js +25 -20
- package/dist/html/layout/shaping.js.map +1 -1
- package/dist/html/layout/table.d.ts.map +1 -1
- package/dist/html/layout/table.js +62 -18
- package/dist/html/layout/table.js.map +1 -1
- package/dist/html/node.d.ts +3 -0
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +263 -36
- package/dist/html/node.js.map +1 -1
- package/dist/html/paint.d.ts +79 -4
- package/dist/html/paint.d.ts.map +1 -1
- package/dist/html/paint.js +1213 -141
- package/dist/html/paint.js.map +1 -1
- package/dist/html/svg.d.ts +15 -2
- package/dist/html/svg.d.ts.map +1 -1
- package/dist/html/svg.js +249 -17
- package/dist/html/svg.js.map +1 -1
- package/dist/html/widgets.js +87 -7
- package/dist/html/widgets.js.map +1 -1
- package/dist/html/woff2.d.ts +14 -0
- package/dist/html/woff2.d.ts.map +1 -0
- package/dist/html/woff2.js +608 -0
- package/dist/html/woff2.js.map +1 -0
- package/dist/maps/controller.d.ts +17 -1
- package/dist/maps/controller.d.ts.map +1 -1
- package/dist/maps/controller.js +27 -7
- package/dist/maps/controller.js.map +1 -1
- package/dist/richtext/node.d.ts +8 -1
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +5 -1
- package/dist/richtext/node.js.map +1 -1
- package/dist/richtext/runs.d.ts +25 -6
- package/dist/richtext/runs.d.ts.map +1 -1
- package/dist/richtext/runs.js +240 -24
- package/dist/richtext/runs.js.map +1 -1
- package/package.json +1 -1
- package/src/html/controls.ts +85 -2
- package/src/html/css/cascade.ts +23 -0
- package/src/html/css/color.ts +29 -0
- package/src/html/css/parse.ts +71 -31
- package/src/html/css/style.ts +664 -147
- package/src/html/css/transform.ts +459 -0
- package/src/html/css/ua.ts +15 -2
- package/src/html/css/values.ts +4 -0
- package/src/html/fonts.ts +312 -29
- package/src/html/layout/axes.ts +62 -0
- package/src/html/layout/block.ts +444 -37
- package/src/html/layout/boxes.ts +65 -3
- package/src/html/layout/cache.ts +6 -0
- package/src/html/layout/css-grid.ts +95 -22
- package/src/html/layout/flex.ts +671 -77
- package/src/html/layout/inline.ts +149 -55
- package/src/html/layout/multicol.ts +977 -0
- package/src/html/layout/shaping.ts +27 -18
- package/src/html/layout/table.ts +62 -19
- package/src/html/node.ts +300 -37
- package/src/html/paint.ts +1406 -206
- package/src/html/svg.ts +277 -19
- package/src/html/widgets.ts +95 -9
- package/src/html/woff2.ts +612 -0
- package/src/maps/controller.ts +28 -7
- package/src/richtext/node.ts +13 -2
- package/src/richtext/runs.ts +313 -35
package/dist/html/svg.d.ts
CHANGED
|
@@ -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>`. */
|
package/dist/html/svg.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
240
|
-
|
|
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
|
-
|
|
243
|
-
|
|
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
|
-
|
|
254
|
-
|
|
255
|
-
:
|
|
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
|
-
|
|
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
|
}
|
package/dist/html/svg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../src/html/svg.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,4EAA4E;AAC5E,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,0EAA0E;AAC1E,oDAAoD;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,CAAC;AAWrB,SAAS,OAAO,CAAC,EAAW,EAAE,IAAY;IACxC,gEAAgE;IAChE,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,mDAAmD;AACnD,MAAM,QAAQ,GAA2B;IACvC,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC,GAAG,CAAC;IACT,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE,GAAG,IAAI;IACb,EAAE,EAAE,EAAE,GAAG,IAAI;IACb,CAAC,EAAE,EAAE,GAAG,KAAK;CACd,CAAC;AAEF,MAAM,MAAM,GAAG,8DAA8D,CAAC;AAE9E;;qDAEqD;AACrD,SAAS,cAAc,CACrB,KAAyB,EACzB,QAAgB;IAEhB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,EAAU,CAAC;IACf,IAAI,IAAI,IAAI,QAAQ;QAAE,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;SACzC,IAAI,IAAI,KAAK,IAAI;QAAE,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC;SACrC,IAAI,IAAI,KAAK,IAAI;QAAE,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;;QAC3C,OAAO,IAAI,CAAC;IACjB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,4CAA4C,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,EAAW;IAC/B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;SACzC,IAAI,EAAE;SACN,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,MAAM,CAAC,CAAC;IACf,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,EAAW;IAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/B,4EAA4E;IAC5E,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;yDAEyD;AACzD,SAAS,YAAY,CAAC,EAAW;IAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,CACL,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACb,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACnC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,EAAW,EAAE,QAAQ,GAAG,EAAE;IACtD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,GAAG;YAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC;AAmBD,SAAS,YAAY;IACnB,MAAM,IAAI,GAAI,GAA0C,CAAC,OAAO,CAAC;IACjE,OAAO,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAE,IAA2B,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAcD,MAAM,KAAK,GAAG,gCAAgC,CAAC;AAC/C,MAAM,EAAE,GAA2B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAEhE;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACZ,UAAU,CAAgB;IAClB,KAAK,CAAU;IACxB,KAAK,GAAuB,IAAI,CAAC;IACzC;;;sCAGkC;IAC1B,KAAK,GAAG,CAAC,CAAC,CAAC;IACX,SAAS,GAAqB,IAAI,CAAC;IACnC,aAAa,GAAG,EAAE,CAAC;IAC3B;wCACoC;IAC5B,QAAQ,GAAmB,IAAI,CAAC;IAChC,OAAO,GAAG,KAAK,CAAC;IACxB,uEAAuE;IACtD,WAAW,CAAU;IACtC;yBACqB;IACb,OAAO,GAA8B,SAAS,CAAC;IAEvD,YAAY,IAAa,EAAE,UAAyB,EAAE,UAAU,GAAG,KAAK;QACtE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,GAAgB,EAChB,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,KAAa,EACb,KAAc;QAEd,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO;QAC9C,4DAA4D;QAC5D,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAO;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,kEAAkE;YAClE,oEAAoE;YACpE,mEAAmE;YACnE,eAAe;YACf,IAAI,CAAC,OAAO,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACX,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC;gBAC3D,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzB,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YACD,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,oEAAoE;YACpE,mEAAmE;YACnE,qEAAqE;YACrE,sCAAsC;QACxC,CAAC;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,uDAAuD;QACvD,MAAM,IAAI,GAAG,GAAG;YACd,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,IAAI,CAAC;YACH,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,CACP,GAAG,EACH,CAAC,EACD,CAAC,EACD,IAAI,CAAC,YAAY,GAAG,KAAK,EACzB,IAAI,CAAC,aAAa,GAAG,KAAK,EAC1B,IAAI,CACL,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAAE,CAAC;qBACrD,IAAI,EAAE;qBACN,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO;oBAAE,GAAG,CAAC,KAAK,EAAE,CAAC;gBACpC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACrE,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBACnE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,IAAI,CAAC,IAAI,CACP,GAAG,EACH,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC3B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC3B,EAAE,EACF,EAAE,EACF,IAAI,CACL,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,4DAA4D;YAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,KAAa,EAAE,MAAc;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC;QAC9D,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACtC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACxD,CAAC,CAAC,IAAI,CACT,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9D,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,YAAY;YAAE,SAAS;QACnE,oEAAoE;QACpE,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,KAAK,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;4DAC4D;AAC5D,MAAM,MAAM,GAAG,IAAI,OAAO,EAAuB,CAAC;AAElD,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAAC,EAAW;IACvC,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;qBAEqB;AACrB,MAAM,UAAU,GAAoC;IAClD,CAAC,EAAE,GAAG;IACN,KAAK,EAAE,GAAG;IACV,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,GAAG;IACX,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,CAAC,EAAE,GAAG;IACN,cAAc,EAAE,GAAG;CACpB,CAAC;AAEF;8DAC8D;AAC9D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;AAE3E,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1D,CAAC;AAED;;4BAE4B;AAC5B,SAAS,UAAU,CAAC,IAAa;IAC/B,MAAM,IAAI,GAAG,CAAC,EAAW,EAAW,EAAE;QACpC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;gBAAE,SAAS;YACnC,MAAM,GAAG,GAAG,KAAgB,CAAC;YAC7B,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/D,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,IAAa,EAAE,QAAiC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;IAClE,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CACrC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,OAAgB,EAAW,EAAE;QACtD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,IAAI,IAAI,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACpC,MAAM,EAAE,GACN,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAgB,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;iBACjE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,OACE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QACjB,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QACjB,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QACjB,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EACjB,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkB;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QAClC,MAAM,EAAE,GAAG,IAAe,CAAC;QAC3B,IAAI,SAAS,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAMD,SAAS,MAAM,CAAC,KAAiB;IAC/B,MAAM,OAAO,GAAI,UAAmD;SACjE,WAAW,CAAC;IACf,IAAI,OAAO;QAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../src/html/svg.ts"],"names":[],"mappings":"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"}
|
package/dist/html/widgets.js
CHANGED
|
@@ -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:
|
|
353
|
-
top:
|
|
354
|
-
width
|
|
355
|
-
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
|
-
|
|
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();
|