@react-x11/components 0.12.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 (150) hide show
  1. package/dist/html/controls.d.ts +41 -5
  2. package/dist/html/controls.d.ts.map +1 -1
  3. package/dist/html/controls.js +85 -57
  4. package/dist/html/controls.js.map +1 -1
  5. package/dist/html/css/cascade.d.ts +134 -20
  6. package/dist/html/css/cascade.d.ts.map +1 -1
  7. package/dist/html/css/cascade.js +545 -126
  8. package/dist/html/css/cascade.js.map +1 -1
  9. package/dist/html/css/color.d.ts +18 -0
  10. package/dist/html/css/color.d.ts.map +1 -1
  11. package/dist/html/css/color.js +27 -0
  12. package/dist/html/css/color.js.map +1 -1
  13. package/dist/html/css/parse.d.ts +47 -6
  14. package/dist/html/css/parse.d.ts.map +1 -1
  15. package/dist/html/css/parse.js +336 -30
  16. package/dist/html/css/parse.js.map +1 -1
  17. package/dist/html/css/style.d.ts +142 -15
  18. package/dist/html/css/style.d.ts.map +1 -1
  19. package/dist/html/css/style.js +563 -147
  20. package/dist/html/css/style.js.map +1 -1
  21. package/dist/html/css/transform.d.ts +85 -0
  22. package/dist/html/css/transform.d.ts.map +1 -0
  23. package/dist/html/css/transform.js +425 -0
  24. package/dist/html/css/transform.js.map +1 -0
  25. package/dist/html/css/ua.d.ts +11 -1
  26. package/dist/html/css/ua.d.ts.map +1 -1
  27. package/dist/html/css/ua.js +73 -9
  28. package/dist/html/css/ua.js.map +1 -1
  29. package/dist/html/css/values.d.ts +4 -0
  30. package/dist/html/css/values.d.ts.map +1 -1
  31. package/dist/html/css/values.js.map +1 -1
  32. package/dist/html/dom.d.ts.map +1 -1
  33. package/dist/html/dom.js +3 -1
  34. package/dist/html/dom.js.map +1 -1
  35. package/dist/html/fonts.d.ts +78 -4
  36. package/dist/html/fonts.d.ts.map +1 -1
  37. package/dist/html/fonts.js +373 -19
  38. package/dist/html/fonts.js.map +1 -1
  39. package/dist/html/form.d.ts +200 -0
  40. package/dist/html/form.d.ts.map +1 -0
  41. package/dist/html/form.js +801 -0
  42. package/dist/html/form.js.map +1 -0
  43. package/dist/html/index.d.ts +12 -0
  44. package/dist/html/index.d.ts.map +1 -1
  45. package/dist/html/index.js +30 -301
  46. package/dist/html/index.js.map +1 -1
  47. package/dist/html/layout/axes.d.ts +14 -0
  48. package/dist/html/layout/axes.d.ts.map +1 -0
  49. package/dist/html/layout/axes.js +28 -0
  50. package/dist/html/layout/axes.js.map +1 -0
  51. package/dist/html/layout/block.d.ts +93 -12
  52. package/dist/html/layout/block.d.ts.map +1 -1
  53. package/dist/html/layout/block.js +393 -39
  54. package/dist/html/layout/block.js.map +1 -1
  55. package/dist/html/layout/boxes.d.ts +90 -2
  56. package/dist/html/layout/boxes.d.ts.map +1 -1
  57. package/dist/html/layout/boxes.js +74 -10
  58. package/dist/html/layout/boxes.js.map +1 -1
  59. package/dist/html/layout/cache.d.ts +1 -1
  60. package/dist/html/layout/cache.d.ts.map +1 -1
  61. package/dist/html/layout/cache.js +6 -0
  62. package/dist/html/layout/cache.js.map +1 -1
  63. package/dist/html/layout/css-grid.d.ts.map +1 -1
  64. package/dist/html/layout/css-grid.js +90 -18
  65. package/dist/html/layout/css-grid.js.map +1 -1
  66. package/dist/html/layout/flex.d.ts.map +1 -1
  67. package/dist/html/layout/flex.js +574 -84
  68. package/dist/html/layout/flex.js.map +1 -1
  69. package/dist/html/layout/inline.d.ts +3 -0
  70. package/dist/html/layout/inline.d.ts.map +1 -1
  71. package/dist/html/layout/inline.js +154 -54
  72. package/dist/html/layout/inline.js.map +1 -1
  73. package/dist/html/layout/multicol.d.ts +42 -0
  74. package/dist/html/layout/multicol.d.ts.map +1 -0
  75. package/dist/html/layout/multicol.js +897 -0
  76. package/dist/html/layout/multicol.js.map +1 -0
  77. package/dist/html/layout/shaping.d.ts +7 -0
  78. package/dist/html/layout/shaping.d.ts.map +1 -1
  79. package/dist/html/layout/shaping.js +25 -20
  80. package/dist/html/layout/shaping.js.map +1 -1
  81. package/dist/html/layout/table.d.ts.map +1 -1
  82. package/dist/html/layout/table.js +62 -18
  83. package/dist/html/layout/table.js.map +1 -1
  84. package/dist/html/node.d.ts +90 -15
  85. package/dist/html/node.d.ts.map +1 -1
  86. package/dist/html/node.js +771 -186
  87. package/dist/html/node.js.map +1 -1
  88. package/dist/html/paint.d.ts +101 -5
  89. package/dist/html/paint.d.ts.map +1 -1
  90. package/dist/html/paint.js +1502 -160
  91. package/dist/html/paint.js.map +1 -1
  92. package/dist/html/svg.d.ts +15 -2
  93. package/dist/html/svg.d.ts.map +1 -1
  94. package/dist/html/svg.js +249 -17
  95. package/dist/html/svg.js.map +1 -1
  96. package/dist/html/widgets.d.ts +29 -0
  97. package/dist/html/widgets.d.ts.map +1 -0
  98. package/dist/html/widgets.js +700 -0
  99. package/dist/html/widgets.js.map +1 -0
  100. package/dist/html/woff2.d.ts +14 -0
  101. package/dist/html/woff2.d.ts.map +1 -0
  102. package/dist/html/woff2.js +608 -0
  103. package/dist/html/woff2.js.map +1 -0
  104. package/dist/index.d.ts +1 -1
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js.map +1 -1
  107. package/dist/maps/controller.d.ts +17 -1
  108. package/dist/maps/controller.d.ts.map +1 -1
  109. package/dist/maps/controller.js +27 -7
  110. package/dist/maps/controller.js.map +1 -1
  111. package/dist/richtext/node.d.ts +8 -1
  112. package/dist/richtext/node.d.ts.map +1 -1
  113. package/dist/richtext/node.js +5 -1
  114. package/dist/richtext/node.js.map +1 -1
  115. package/dist/richtext/runs.d.ts +25 -6
  116. package/dist/richtext/runs.d.ts.map +1 -1
  117. package/dist/richtext/runs.js +240 -24
  118. package/dist/richtext/runs.js.map +1 -1
  119. package/package.json +2 -2
  120. package/src/html/controls.ts +114 -51
  121. package/src/html/css/cascade.ts +614 -140
  122. package/src/html/css/color.ts +29 -0
  123. package/src/html/css/parse.ts +388 -33
  124. package/src/html/css/style.ts +688 -150
  125. package/src/html/css/transform.ts +459 -0
  126. package/src/html/css/ua.ts +77 -10
  127. package/src/html/css/values.ts +4 -0
  128. package/src/html/dom.ts +3 -1
  129. package/src/html/fonts.ts +417 -24
  130. package/src/html/form.ts +962 -0
  131. package/src/html/index.ts +49 -338
  132. package/src/html/layout/axes.ts +62 -0
  133. package/src/html/layout/block.ts +447 -37
  134. package/src/html/layout/boxes.ts +143 -14
  135. package/src/html/layout/cache.ts +6 -0
  136. package/src/html/layout/css-grid.ts +95 -22
  137. package/src/html/layout/flex.ts +675 -78
  138. package/src/html/layout/inline.ts +159 -55
  139. package/src/html/layout/multicol.ts +977 -0
  140. package/src/html/layout/shaping.ts +27 -18
  141. package/src/html/layout/table.ts +62 -19
  142. package/src/html/node.ts +798 -172
  143. package/src/html/paint.ts +1742 -241
  144. package/src/html/svg.ts +277 -19
  145. package/src/html/widgets.ts +821 -0
  146. package/src/html/woff2.ts +612 -0
  147. package/src/index.ts +1 -0
  148. package/src/maps/controller.ts +28 -7
  149. package/src/richtext/node.ts +13 -2
  150. package/src/richtext/runs.ts +313 -35
@@ -21,6 +21,14 @@ export interface ControlRect {
21
21
  y: number;
22
22
  width: number;
23
23
  height: number;
24
+ /**
25
+ * The element's computed face and size: what `measureControl` measured
26
+ * its box in, and so what the widget sets its text in. The palette's,
27
+ * from the UA sheet, unless the page set its own — `font: inherit`, which
28
+ * a CSS reset gives every control, for one.
29
+ */
30
+ fontFamily: string;
31
+ fontSize: number;
24
32
  /**
25
33
  * Set on a text field or a `<select>` whose own box the author styled —
26
34
  * gave it a border or a background (`styledField`). The document draws
@@ -37,6 +45,23 @@ export interface ControlRect {
37
45
  * invisible, over its label.
38
46
  */
39
47
  opacity?: number;
48
+ /**
49
+ * The part of the document the element shows through, where that is not
50
+ * all of its box: what its own `clip` and `clip-path` leave of it, and
51
+ * what the boxes that clip their overflow around it, and every
52
+ * `clip-path` above it, do (`clipAround`). The widget is cut to it, as
53
+ * the element's own drawing is. With no area, none of the element shows
54
+ * — a control a page hides for a screen reader alone, 1px square under
55
+ * `clip: rect(0, 0, 0, 0)` or `clip-path: inset(50%)`, beside the one it
56
+ * draws itself — and the widget is not seen and takes no press, and
57
+ * still takes the keyboard's focus, as the element does in a browser.
58
+ */
59
+ clip?: {
60
+ x: number;
61
+ y: number;
62
+ width: number;
63
+ height: number;
64
+ };
40
65
  }
41
66
  /** Where a styled field's widget goes, and how its text looks. */
42
67
  export interface BareField {
@@ -45,7 +70,9 @@ export interface BareField {
45
70
  width: number;
46
71
  height: number;
47
72
  color: string;
73
+ /** @deprecated The rect's own `fontFamily`, which every rect carries. */
48
74
  fontFamily: string;
75
+ /** @deprecated The rect's own `fontSize`, which every rect carries. */
49
76
  fontSize: number;
50
77
  /**
51
78
  * A `<select>`'s: whether it draws its arrow. It does unless the page set
@@ -54,8 +81,17 @@ export interface BareField {
54
81
  */
55
82
  chevron?: boolean;
56
83
  }
57
- /** The rectangles every control in a laid-out document landed on. */
58
- export declare function controlRectsOf(tree: BoxTree): ControlRect[];
84
+ /** The rectangles every control in a laid-out document landed on. `scale`
85
+ * is the document's device pixels to a CSS one. */
86
+ export declare function controlRectsOf(tree: BoxTree, scale?: number): ControlRect[];
87
+ type Rect = {
88
+ x: number;
89
+ y: number;
90
+ width: number;
91
+ height: number;
92
+ };
93
+ /** What two rectangles share, of no area where they share nothing. */
94
+ export declare function between(a: Rect, b: Rect): Rect;
59
95
  /**
60
96
  * Whether a field's box is the author's to draw: one given a border or a
61
97
  * background of its own, which the UA sheet gives no control, or set to
@@ -91,8 +127,8 @@ export declare function optionsOf(el: Element): {
91
127
  value: string;
92
128
  label: string;
93
129
  }[];
94
- /** Which option a `<select>` starts on: `selected`, else the first. */
130
+ /** Which option a `<select>` shows: the one it has selected, which is the
131
+ * first where none is marked (`selectedOptions`). */
95
132
  export declare function selectedOption(el: Element): string | null;
96
- /** A `<textarea>`'s initial text — its content, not an attribute. */
97
- export declare function textareaValue(el: Element): string;
133
+ export {};
98
134
  //# sourceMappingURL=controls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/html/controls.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAO,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;qCAGqC;AACrC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,EAAE,CAqC3D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAe7E;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,SAAS,GAAG,IAAI,EACvB,IAAI,EAAE,aAAa,GAClB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6EnC;AAED,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAe/C;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAoBzE;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkBzD;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAQjD"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/html/controls.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  import { attr, tagOf } from './dom.js';
2
+ import { optionElements, optionLabel, optionValue, selectedOptions, } from './form.js';
3
+ import { invert } from './css/transform.js';
2
4
  import { isTransparent } from './css/values.js';
3
- /** The rectangles every control in a laid-out document landed on. */
4
- export function controlRectsOf(tree) {
5
+ import { placedMatrix } from './layout/block.js';
6
+ import { clipAround } from './paint.js';
7
+ /** The rectangles every control in a laid-out document landed on. `scale`
8
+ * is the document's device pixels to a CSS one. */
9
+ export function controlRectsOf(tree, scale = 1) {
5
10
  const out = [];
6
11
  for (const box of tree.controls) {
7
12
  if (!box.el)
@@ -18,13 +23,35 @@ export function controlRectsOf(tree) {
18
23
  y: box.y,
19
24
  width: box.width,
20
25
  height: box.height,
26
+ fontFamily: box.style.fontFamily,
27
+ fontSize: box.style.fontSize,
21
28
  };
22
29
  let opacity = 1;
30
+ // A box scaled to nothing draws nothing of what it holds (CSS
31
+ // Transforms 1, 6), which is how a page keeps a menu it has not opened.
32
+ // A widget in it is not mounted; one in a box turned or scaled to
33
+ // anything else is mounted where the box was laid out, as it is — a
34
+ // widget is a node of its own, which no matrix of the document's reaches.
35
+ let flattened = false;
23
36
  for (let at = box; at; at = at.parent) {
24
37
  opacity *= at.style.opacity;
38
+ const matrix = placedMatrix(at);
39
+ if (matrix && !invert(matrix))
40
+ flattened = true;
25
41
  }
42
+ if (flattened)
43
+ continue;
26
44
  if (opacity < 1)
27
45
  rect.opacity = Math.max(0, opacity);
46
+ // cut by the clips around it where they do not leave it whole, and by
47
+ // its own box where it clips itself
48
+ const shown = pixelsOf(box);
49
+ const around = clipAround(box, scale);
50
+ if (clipsItself(box)) {
51
+ rect.clip = around ? between(around, shown) : shown;
52
+ }
53
+ else if (around && !covers(around, shown))
54
+ rect.clip = around;
28
55
  if (styledField(box.replaced, box.style)) {
29
56
  rect.bare = {
30
57
  x: box.contentX,
@@ -43,6 +70,50 @@ export function controlRectsOf(tree) {
43
70
  }
44
71
  return out;
45
72
  }
73
+ /**
74
+ * Whether a control is cut to its own box: one the page gave an `overflow`
75
+ * other than `visible`, as an inline block's content is cut (CSS 2.1
76
+ * 11.1.1). A browser paints no control past its border box whatever its
77
+ * `overflow` says, scaling a checkbox into a box a pixel square; a widget
78
+ * has a size of its own, and is cut where the page said its box cuts. At
79
+ * the border box, which the widget's own frame is drawn in. A text field is
80
+ * left out: it cuts its own text, and a sheet that gives every `<textarea>`
81
+ * `overflow: auto`, as normalize.css does, asks for nothing here.
82
+ */
83
+ function clipsItself(box) {
84
+ if (box.replaced === 'input' || box.replaced === 'textarea')
85
+ return false;
86
+ return box.style.overflowX !== 'visible' || box.style.overflowY !== 'visible';
87
+ }
88
+ /** A box's border box on the pixels it is drawn on. */
89
+ function pixelsOf(box) {
90
+ const x = Math.round(box.x);
91
+ const y = Math.round(box.y);
92
+ return {
93
+ x,
94
+ y,
95
+ width: Math.round(box.x + box.width) - x,
96
+ height: Math.round(box.y + box.height) - y,
97
+ };
98
+ }
99
+ /** What two rectangles share, of no area where they share nothing. */
100
+ export function between(a, b) {
101
+ const x = Math.max(a.x, b.x);
102
+ const y = Math.max(a.y, b.y);
103
+ return {
104
+ x,
105
+ y,
106
+ width: Math.max(0, Math.min(a.x + a.width, b.x + b.width) - x),
107
+ height: Math.max(0, Math.min(a.y + a.height, b.y + b.height) - y),
108
+ };
109
+ }
110
+ /** Whether a clip leaves a rectangle whole. */
111
+ function covers(clip, rect) {
112
+ return (clip.x <= rect.x &&
113
+ clip.y <= rect.y &&
114
+ clip.x + clip.width >= rect.x + rect.width &&
115
+ clip.y + clip.height >= rect.y + rect.height);
116
+ }
46
117
  /**
47
118
  * Whether a field's box is the author's to draw: one given a border or a
48
119
  * background of its own, which the UA sheet gives no control, or set to
@@ -164,10 +235,13 @@ export function buttonLabel(el) {
164
235
  if (trimmed)
165
236
  return trimmed;
166
237
  }
238
+ const type = (attr(el, 'type') ?? '').trim().toLowerCase();
239
+ // an image button with no image yet says what the image would have
240
+ if (type === 'image')
241
+ return attr(el, 'alt') || attr(el, 'value') || 'Submit';
167
242
  const value = attr(el, 'value');
168
243
  if (value)
169
244
  return value;
170
- const type = (attr(el, 'type') ?? '').toLowerCase();
171
245
  if (type === 'submit')
172
246
  return 'Submit';
173
247
  if (type === 'reset')
@@ -176,62 +250,16 @@ export function buttonLabel(el) {
176
250
  }
177
251
  /** A `<select>`'s options, as the widget's item list. */
178
252
  export function optionsOf(el) {
179
- const out = [];
180
- const walk = (node) => {
181
- for (const child of node.children) {
182
- if (child.type !== 'tag')
183
- continue;
184
- const tag = tagOf(child);
185
- if (tag === 'option') {
186
- let label = '';
187
- for (const kid of child.children) {
188
- if (kid.type === 'text')
189
- label += kid.data;
190
- }
191
- const trimmed = label.trim();
192
- out.push({ value: attr(child, 'value') ?? trimmed, label: trimmed });
193
- }
194
- else if (tag === 'optgroup') {
195
- walk(child);
196
- }
197
- }
198
- };
199
- walk(el);
200
- return out;
253
+ return optionElements(el).map((option) => ({
254
+ value: optionValue(option),
255
+ label: optionLabel(option),
256
+ }));
201
257
  }
202
- /** Which option a `<select>` starts on: `selected`, else the first. */
258
+ /** Which option a `<select>` shows: the one it has selected, which is the
259
+ * first where none is marked (`selectedOptions`). */
203
260
  export function selectedOption(el) {
204
- const options = optionsOf(el);
205
- const walk = (node) => {
206
- for (const child of node.children) {
207
- if (child.type !== 'tag')
208
- continue;
209
- if (tagOf(child) === 'option' && attr(child, 'selected') !== undefined) {
210
- let label = '';
211
- for (const kid of child.children) {
212
- if (kid.type === 'text')
213
- label += kid.data;
214
- }
215
- return attr(child, 'value') ?? label.trim();
216
- }
217
- const nested = walk(child);
218
- if (nested !== null)
219
- return nested;
220
- }
221
- return null;
222
- };
223
- return walk(el) ?? options[0]?.value ?? null;
224
- }
225
- /** A `<textarea>`'s initial text — its content, not an attribute. */
226
- export function textareaValue(el) {
227
- let text = '';
228
- for (const child of el.children) {
229
- if (child.type === 'text')
230
- text += child.data;
231
- }
232
- // HTML drops one leading newline after the open tag, which is why a
233
- // pretty-printed `<textarea>` does not start with a blank line.
234
- return text.replace(/^\r?\n/, '');
261
+ const [option] = selectedOptions(el);
262
+ return option ? optionValue(option) : null;
235
263
  }
236
264
  function numberAttr(el, name) {
237
265
  const raw = attr(el, name);
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/html/controls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/html/controls.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EACL,cAAc,EACd,WAAW,EACX,WAAW,EACX,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA+ExC;oDACoD;AACpD,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,KAAK,GAAG,CAAC;IACrD,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,SAAS;QACtB,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;YAAE,SAAS;QAChD,mEAAmE;QACnE,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;YAAE,SAAS;QACjD,MAAM,IAAI,GAAgB;YACxB,OAAO,EAAE,GAAG,CAAC,EAAE;YACf,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;YAChC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;SAC7B,CAAC;QACF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,8DAA8D;QAC9D,wEAAwE;QACxE,kEAAkE;QAClE,oEAAoE;QACpE,0EAA0E;QAC1E,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,IAAI,EAAE,GAAe,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;YAClD,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,SAAS;YAAE,SAAS;QACxB,IAAI,OAAO,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,sEAAsE;QACtE,oCAAoC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACtD,CAAC;aAAM,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QAChE,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,GAAG;gBACV,CAAC,EAAE,GAAG,CAAC,QAAQ;gBACf,CAAC,EAAE,GAAG,CAAC,QAAQ;gBACf,KAAK,EAAE,GAAG,CAAC,YAAY;gBACvB,MAAM,EAAE,GAAG,CAAC,aAAa;gBACzB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;gBACtB,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;gBAChC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;gBAC5B,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI;oBAC/B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM;iBACzC,CAAC;aACH,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAID;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,GAAQ;IAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;AAChF,CAAC;AAED,uDAAuD;AACvD,SAAS,QAAQ,CAAC,GAAQ;IACxB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO;QACL,CAAC;QACD,CAAC;QACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,OAAO,CAAC,CAAO,EAAE,CAAO;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO;QACL,CAAC;QACD,CAAC;QACD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,SAAS,MAAM,CAAC,IAAU,EAAE,IAAU;IACpC,OAAO,CACL,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;QAC1C,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAC7C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB,EAAE,KAAoB;IAClE,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,KAAK,CAAC,UAAU,KAAK,MAAM;QAC3B,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC;QACrC,CAAC,CAAC,KAAK,CAAC,eAAe;QACvB,CAAC,CAAC,KAAK,CAAC,kBAAkB;QAC1B,CAAC,CAAC,KAAK,CAAC,gBAAgB;QACxB,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC;QACjD,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC;QACrD,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC;QACvD,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,KAAsC,EAAE,KAAa;IAClE,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAW,EACX,IAAkB,EAClB,KAAoB,EACpB,KAAuB,EACvB,IAAmB;IAEnB,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACrC,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAE7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;YAClC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACrC,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YAC9B,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,EACpD,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CACnB;gBACD,MAAM,EAAE,UAAU,GAAG,MAAM;aAC5B,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YAChC,mEAAmE;YACnE,qCAAqC;YACrC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CACf,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACrD;oBACD,MAAM,EAAE,UAAU;iBACnB,CAAC;YACJ,CAAC;YACD,oEAAoE;YACpE,kEAAkE;YAClE,wBAAwB;YACxB,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EACnD,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CACnB;gBACD,MAAM,EAAE,UAAU,GAAG,MAAM;aAC5B,CAAC;QACJ,CAAC;QACD,mEAAmE;QACnE,sEAAsE;QACtE,KAAK,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;oBAC5B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;iBACtC,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC;gBACnD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;aAC/C,CAAC;QACJ,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAC9D,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC;gBACnD,MAAM,EAAE,UAAU,GAAG,MAAM;aAC5B,CAAC;QACJ,CAAC;QACD;YACE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,WAAW,CAAC,EAAW;IACrC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;QAChD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,mEAAmE;IACnE,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACvC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACrC,OAAO,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC;AACrC,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,SAAS,CAAC,EAAW;IACnC,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;KAC3B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;sDACsD;AACtD,MAAM,UAAU,cAAc,CAAC,EAAW;IACxC,MAAM,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,EAAW,EAAE,IAAY;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,SAAS,YAAY,CAAC,EAAW;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;+CAE+C;AAC/C,SAAS,SAAS,CAAC,KAAoB,EAAE,KAAuB;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;YACzC,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,MAAM,EAAE,KAAK,CAAC,UAAU;YACxB,KAAK,EAAE,KAAK,CAAC,SAAS;SACvB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,uEAAuE;QACvE,gCAAgC;QAChC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -9,25 +9,73 @@ export interface SharedStyle {
9
9
  style: ComputedStyle;
10
10
  key: number;
11
11
  }
12
+ /**
13
+ * The styles of the build before, for a build that only some elements'
14
+ * styles can differ in (`Cascade.beginSharing`): what each element's came
15
+ * to, and the elements to style again — `restyle`, each with everything in
16
+ * it, since a style is its parent's and the rules', and a rule reads an
17
+ * element's ancestors.
18
+ */
19
+ export interface KeptStyles {
20
+ styles: ReadonlyMap<Element, {
21
+ style: ComputedStyle;
22
+ inFlex: boolean;
23
+ }>;
24
+ restyle: ReadonlySet<Element>;
25
+ }
26
+ /** What the pointer entering or leaving an element can change
27
+ * (`Cascade.hoverTouches`): nothing, the element and what is in it, or
28
+ * those and the siblings after it. */
29
+ export type HoverTouch = 0 | 1 | 2;
30
+ export declare const HOVER_UNTOUCHED = 0;
31
+ export declare const HOVER_TOUCHED = 1;
32
+ export declare const HOVER_FOLLOWED = 2;
33
+ /** Which pseudo-elements' rules test the pointer (`Cascade.hoverPseudo`). */
34
+ export declare const HOVER_PSEUDO_NONE = 0;
35
+ export declare const HOVER_PSEUDO_GENERATED = 1;
36
+ export declare const HOVER_PSEUDO_OTHER = 2;
37
+ /**
38
+ * What a `::selection` makes of the text it covers (CSS Pseudo 4, 3.2): the
39
+ * colour the text is drawn in, null for its own, and the band under it,
40
+ * null for none.
41
+ */
42
+ export interface SelectionStyle {
43
+ color: string | null;
44
+ background: string | null;
45
+ }
12
46
  /**
13
47
  * The compounds of a selector that test `:hover`, each without it (and
14
48
  * without an `:active` beside it), and whether one is followed by a sibling
15
- * combinator, which reaches the element's later siblings. `nested` where a
16
- * `:hover` sits inside a functional pseudo-class — `:not(:hover)`,
17
- * `:is(:hover)` — and reaches elements no compound names.
49
+ * combinator, which reaches the element's later siblings.
50
+ *
51
+ * A `:hover` inside `:is()`, `:where()` or `:not()` is found where it is:
52
+ * each takes a selector list and matches the element it is written on, so
53
+ * a list entry of one compound tests that element — `a:not(:hover)` is a
54
+ * compound of `a`'s that tests the pointer — and an entry with combinators
55
+ * in it names an ancestor or an earlier sibling, as it would outside.
56
+ * Tailwind 4 writes every `group-hover:` that way, `:is(:where(.group):hover
57
+ * *)`, and a page of them built its document again on every move. Whatever
58
+ * the nesting, the element whose hover changed is one a compound found here
59
+ * matches, and what changes with it is itself, what is in it, and what
60
+ * follows it where a sibling combinator is in play: a selector reads an
61
+ * element, its ancestors and the siblings before each of them, and nothing
62
+ * else. `nested` is left for a function this cannot read a selector list
63
+ * in — `:nth-child(… of :hover)`, `:host()` — which reaches elements no
64
+ * compound names.
18
65
  *
19
- * A `:hover` in a compound's `:has()` is the one exception, since what it
20
- * reaches is known: the compound, without its `:has()`, is an ancestor of
66
+ * A `:hover` in a compound's `:has()` is the other way about, since what
67
+ * it tests is below: the compound, without its `:has()`, is an ancestor of
21
68
  * the element the pointer is over — or an earlier sibling of it or of an
22
69
  * ancestor, where the argument starts at a sibling (Selectors 4, 4.5). So
23
- * it is given as an anchor (`has`) rather than making the rule `nested`.
70
+ * it is given as an anchor (`has`).
24
71
  *
25
72
  * `:active` is not the pointer's here: nothing sets it (`setPointer` is
26
73
  * handed none), so a selector that tests only it never changes as the
27
74
  * pointer moves — Wikipedia's buttons' `:focus:not(:active)` among them.
28
75
  * A press that sets it would have to be counted here too.
29
76
  */
30
- export declare function pointerCompounds(selector: string): {
77
+ export declare function pointerCompounds(selector: string): PointerCompounds;
78
+ export interface PointerCompounds {
31
79
  compounds: string[];
32
80
  siblings: boolean;
33
81
  nested: boolean;
@@ -35,7 +83,10 @@ export declare function pointerCompounds(selector: string): {
35
83
  anchor: string;
36
84
  siblings: boolean;
37
85
  }[];
38
- };
86
+ /** The compounds and anchors a sibling combinator follows: the ones
87
+ * whose elements' later siblings change with them. */
88
+ followed: string[];
89
+ }
39
90
  /** What `Cascade.firstLetterRules` found for an element. */
40
91
  export interface FirstLetterRules {
41
92
  readonly el: Element;
@@ -81,11 +132,9 @@ export declare class Cascade {
81
132
  * pointer inside a functional pseudo-class, which reaches elements no
82
133
  * compound names. */
83
134
  hoverLocal: boolean;
84
- /** Whether a compound that tests the pointer is followed by a sibling
85
- * combinator, so an element's later siblings restyle with it. */
86
- hoverSiblings: boolean;
87
- /** The compounds whose `:has()` tests the pointer, each without it, and
88
- * whether its argument starts at a sibling (`hoverAnchors`). */
135
+ /** The compounds whose `:has()` tests the pointer, each without it,
136
+ * whether its argument starts at a sibling, and whether a sibling
137
+ * combinator follows it (`hoverAnchors`). */
89
138
  private _hoverAnchors;
90
139
  private _anchorMatchers;
91
140
  private _pointer;
@@ -125,6 +174,12 @@ export declare class Cascade {
125
174
  /** The families the document loads itself (`fonts.ts`), or null for a
126
175
  * document with no `@font-face`. */
127
176
  private _families;
177
+ /** The root element's computed style: its `font-size` is what a `rem`
178
+ * is and its line height what an `rlh` is (CSS Values 4, 6.1.1), in
179
+ * every element but the root, whose own declarations measure them from
180
+ * the initial values. Set as the root's style is computed, which a build
181
+ * does ahead of every element under it. */
182
+ private _root;
128
183
  private _mapFamilies;
129
184
  /** Whether any declaration has a length in `lh` or `rlh`: only then is
130
185
  * the line height settled ahead of the declarations that read it. */
@@ -136,21 +191,35 @@ export declare class Cascade {
136
191
  /** Whether a pointer move can change what this cascade produces. */
137
192
  get hoverSensitive(): boolean;
138
193
  setPointer(pointer: PointerState): void;
194
+ /**
195
+ * Which pseudo-elements' rules test the pointer: none's
196
+ * (`HOVER_PSEUDO_NONE`); a `::before`'s or an `::after`'s only
197
+ * (`HOVER_PSEUDO_GENERATED`), whose boxes a move restyles where they are
198
+ * as it does an element's; or a `::first-line`'s, a `::first-letter`'s
199
+ * or a `::marker`'s (`HOVER_PSEUDO_OTHER`), which layout styles and a
200
+ * move cannot.
201
+ */
202
+ get hoverPseudo(): 0 | 1 | 2;
139
203
  /**
140
204
  * Whether the pointer entering or leaving `el` can change a style: one of
141
205
  * the compounds a selector tests the pointer in matches it, the pointer
142
206
  * aside. A move between two paragraphs of a page whose only such rule is
143
- * `a:hover` touches nothing, and restyles nothing.
207
+ * `a:hover` touches nothing, and restyles nothing. `HOVER_FOLLOWED`
208
+ * where a sibling combinator follows one that matches, so the element's
209
+ * later siblings can change with it — those rules' elements alone: a
210
+ * sheet with one `.peer:hover ~ *` in it does not make every row of a
211
+ * table restyle the rows after it.
144
212
  */
145
- hoverTouches(el: Element): boolean;
213
+ hoverTouches(el: Element): HoverTouch;
146
214
  /**
147
215
  * The elements whose `:has()` may have changed its answer as `el` was
148
216
  * hovered or left: the ancestors of it a compound whose `:has()` tests
149
217
  * the pointer names, and their earlier siblings and its own where the
150
218
  * argument starts at a sibling — a superset, which is restyled and found
151
- * the same where it did not. Into `into`.
219
+ * the same where it did not. Into `into`, each with whether its later
220
+ * siblings can change with it (`hoverTouches`).
152
221
  */
153
- hoverAnchors(el: Element, into: Element[]): void;
222
+ hoverAnchors(el: Element, into: Map<Element, HoverTouch>): void;
154
223
  private _noteHover;
155
224
  /** A selector compiled as a rule's is, or null where css-select refuses
156
225
  * it, as a rule it refuses drops out of the cascade. */
@@ -169,9 +238,23 @@ export declare class Cascade {
169
238
  private _customs;
170
239
  private _ids;
171
240
  private _nextId;
172
- /** A box tree is about to be built: the styles shared in the last build
173
- * were computed against a pointer and a viewport that may have moved. */
174
- beginSharing(): void;
241
+ /** The styles kept from the build before, while a build that keeps them
242
+ * runs, and what each kept element shares under in this one. */
243
+ private _kept;
244
+ private _keptShared;
245
+ /**
246
+ * A box tree is about to be built: the styles shared in the last build
247
+ * were computed against a pointer and a viewport that may have moved.
248
+ *
249
+ * With `kept`, only its `restyle` elements are matched: a build the
250
+ * pointer asked for — a hover that moved something — changes the styles
251
+ * of the elements the move reached, and every other element's is what it
252
+ * was. Matching them all again was most of such a build: a frame of 550 ms
253
+ * on a page with a Tailwind sheet, and 150 without it.
254
+ */
255
+ beginSharing(kept?: KeptStyles | null): void;
256
+ /** The build is over: nothing later is answered from what it kept. */
257
+ endSharing(): void;
175
258
  /**
176
259
  * An element's custom properties: its parent's, or its own over them —
177
260
  * shared by every element whose parent has the same ones and whose own
@@ -249,6 +332,24 @@ export declare class Cascade {
249
332
  * a number is set in, and a `content` it is set as instead.
250
333
  */
251
334
  markerStyle(el: Element, style: ComputedStyle): ComputedStyle | null;
335
+ /** Whether any rule styles a `::selection`: a document with none draws
336
+ * a selection in the palette's colour, and asks nothing. */
337
+ get hasSelection(): boolean;
338
+ /**
339
+ * An element's `::selection`, over its parent's (`parent`, null for the
340
+ * palette's own): the colour and the background the rules that reach it
341
+ * set, and its parent's for either they leave alone. Both inherit along
342
+ * the chain of highlights rather than the elements' (CSS Pseudo 4, 3.5,
343
+ * "highlight inheritance"), which is what Chrome draws: a `<span>` in a
344
+ * `div::selection { background: red }` is selected in red, and a `<p>`
345
+ * whose own rule sets only a colour keeps the red under it.
346
+ *
347
+ * The palette's highlight is taken only where no rule has set either
348
+ * (3.6, "paired defaults"): one that sets a colour and no background is
349
+ * selected over none, as Chrome has it. A rule that sets neither — a
350
+ * `text-shadow` only — leaves the element where its parent was.
351
+ */
352
+ selectionStyle(el: Element, style: ComputedStyle, parent: SelectionStyle | null): SelectionStyle | null;
252
353
  /**
253
354
  * An element's `::first-line` style, inheriting from its own, or null
254
355
  * when no rule reaches it (CSS 2.1 5.12.1).
@@ -302,6 +403,19 @@ export declare class Cascade {
302
403
  style: ComputedStyle;
303
404
  html: ComputedStyle | null;
304
405
  };
406
+ /**
407
+ * Whether the pointer's move from `was` to where it is changed which
408
+ * rules match `el`, or its `::before`, `::after` or another of its
409
+ * pseudo-elements: the rules that test `:hover` asked under both, and
410
+ * nothing else, since no other rule's answer is the pointer's. An element
411
+ * they answer the same for, under a parent whose style is what it was, has
412
+ * the style it had — which is most of what a move reaches: the rows of a
413
+ * hovered table body, what is in a hovered card.
414
+ */
415
+ pointerChanged(el: Element, was: PointerState): boolean;
416
+ /** The ids of the rules testing the pointer that match `el` as things
417
+ * stand, the element's and each pseudo-element's. */
418
+ private _pointerAnswers;
305
419
  /** The rules of `index` that match `el`, pushed onto `out` as candidates,
306
420
  * and their ids onto `matched` in the order they were tried. */
307
421
  private _matchInto;
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../../src/html/css/cascade.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAW1C,OAAO,KAAK,EAA0B,UAAU,EAAE,MAAM,YAAY,CAAC;AAcrE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAwCtE;sEACsE;AACtE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AA4ID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAClD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC9C,CA8GA;AAwID,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;CACzC;AAED;6EAC6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAID;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACnC;AAED,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;AA0B7D;;;GAGG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAmB;IACjC;yEACqE;IACrE,OAAO,CAAC,OAAO,CAMb;IACF,OAAO,CAAC,QAAQ,CAAmB;IACnC;;oEAEgE;IAChE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAA6C;IACnE;;;0BAGsB;IACtB,UAAU,UAAQ;IAClB;sEACkE;IAClE,aAAa,UAAS;IACtB;qEACiE;IACjE,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,eAAe,CACkD;IACzE,OAAO,CAAC,QAAQ,CAA4B;IAC5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB;wCACoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB;+EAC2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;sDACkD;IAClD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEtC,4DAA4D;IAC5D,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,SAAS,CAA6B;IAC9C,uDAAuD;IACvD,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,WAAW,CAA6B;IAChD;oBACgB;IAChB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAA6B;IACjD;mDAC+C;IAC/C,OAAO,CAAC,KAAK,CAAS;IACtB;;;+DAG2D;IAC3D,kBAAkB,UAAS;IAC3B,mBAAmB,UAAS;IAC5B;yCACqC;IACrC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,YAAY,CAAyC;IAC7D;0EACsE;IACtE,OAAO,CAAC,GAAG,CAAS;IAEpB,YACE,MAAM,EAAE,UAAU,EAAE,EACpB,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,KAAK,SAAI,EACT,OAAO,GAAE,UAAU,GAAG,IAAW,EACjC,SAAS,GAAE,UAAU,GAAG,IAAW,EACnC,UAAU,GAAE,UAAU,GAAG,IAAW,EACpC,QAAQ,GAAE,YAAY,GAAG,IAAW,EAsDrC;IAED;uDACmD;IACnD,OAAO,CAAC,kBAAkB;IAY1B,oEAAoE;IACpE,IAAI,cAAc,IAAI,OAAO,CAS5B;IAED,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAEtC;IAED;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAOjC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAgC/C;IAED,OAAO,CAAC,UAAU;IAclB;6DACyD;IACzD,OAAO,CAAC,QAAQ;IAQhB;;qBAEiB;IACjB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ/B;IAED;;uCAEmC;IACnC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,aAAa,CAAK;IAC1B,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,OAAO,CAAK;IAEpB;8EAC0E;IAC1E,YAAY,IAAI,IAAI,CAInB;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IAuBlB,kDAAkD;IAClD,OAAO,CAAC,UAAU;IAUlB,kDAAkD;IAClD,OAAO,CAAC,KAAK;IASb;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,cAAc,CACZ,EAAE,EAAE,OAAO,EACX,WAAW,EAAE,aAAa,EAC1B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,GACvB,WAAW,CAyCb;IAED;0CACsC;IACtC,OAAO,CAAC,UAAU;IAqBlB;;;;OAIG;IACH,QAAQ,CACN,EAAE,EAAE,OAAO,EACX,WAAW,EAAE,aAAa,EAC1B,eAAe,EAAE,OAAO,GACvB,aAAa,CAOf;IAED;;;;;;;;OAQG;IACH,cAAc,CACZ,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,QAAQ,GAAG,OAAO,EACzB,YAAY,EAAE,aAAa,GAC1B,aAAa,GAAG,IAAI,CAoBtB;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAQrD;IAED;sCACkC;IAClC,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAenE;IAED;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAQtE;IAED;;;;OAIG;IACH,gBAAgB,CACd,KAAK,EAAE,gBAAgB,EACvB,WAAW,EAAE,aAAa,GACzB,aAAa,CAUf;IAED;yBACqB;IACrB,OAAO,CAAC,KAAK;IAWb;+BAC2B;IAC3B,OAAO,CAAC,KAAK;IAWb;yDACqD;IACrD,OAAO,CAAC,aAAa;IAerB,sEAAsE;IACtE,OAAO,CAAC,aAAa;IAkJrB;;sEAEkE;IAClE,OAAO,CAAC,MAAM;IAuBd;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CACP,OAAO,EAAE,OAAO,EAChB,OAAO,UAAO,GACb;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAA;KAAE,CAiBtD;IAED;qEACiE;IACjE,OAAO,CAAC,UAAU;IA4ClB;;sBAEkB;IAClB,OAAO,CAAC,WAAW;CAiDpB"}
1
+ {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../../src/html/css/cascade.ts"],"names":[],"mappings":"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"}