@react-x11/components 0.14.1 → 0.16.1

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 (96) hide show
  1. package/dist/code-editor/node.d.ts +13 -0
  2. package/dist/code-editor/node.d.ts.map +1 -1
  3. package/dist/code-editor/node.js +23 -5
  4. package/dist/code-editor/node.js.map +1 -1
  5. package/dist/html/css/cascade.d.ts +171 -26
  6. package/dist/html/css/cascade.d.ts.map +1 -1
  7. package/dist/html/css/cascade.js +616 -216
  8. package/dist/html/css/cascade.js.map +1 -1
  9. package/dist/html/css/color.d.ts +25 -0
  10. package/dist/html/css/color.d.ts.map +1 -1
  11. package/dist/html/css/color.js +307 -19
  12. package/dist/html/css/color.js.map +1 -1
  13. package/dist/html/css/content.d.ts +11 -6
  14. package/dist/html/css/content.d.ts.map +1 -1
  15. package/dist/html/css/content.js +171 -12
  16. package/dist/html/css/content.js.map +1 -1
  17. package/dist/html/css/parse.d.ts.map +1 -1
  18. package/dist/html/css/parse.js +62 -9
  19. package/dist/html/css/parse.js.map +1 -1
  20. package/dist/html/css/shapes.d.ts +18 -0
  21. package/dist/html/css/shapes.d.ts.map +1 -1
  22. package/dist/html/css/shapes.js +21 -1
  23. package/dist/html/css/shapes.js.map +1 -1
  24. package/dist/html/css/style.d.ts +42 -5
  25. package/dist/html/css/style.d.ts.map +1 -1
  26. package/dist/html/css/style.js +74 -12
  27. package/dist/html/css/style.js.map +1 -1
  28. package/dist/html/css/ua.js +27 -8
  29. package/dist/html/css/ua.js.map +1 -1
  30. package/dist/html/css/values.d.ts +5 -0
  31. package/dist/html/css/values.d.ts.map +1 -1
  32. package/dist/html/css/values.js +18 -9
  33. package/dist/html/css/values.js.map +1 -1
  34. package/dist/html/index.d.ts.map +1 -1
  35. package/dist/html/index.js +7 -0
  36. package/dist/html/index.js.map +1 -1
  37. package/dist/html/layout/block.d.ts +29 -9
  38. package/dist/html/layout/block.d.ts.map +1 -1
  39. package/dist/html/layout/block.js +141 -52
  40. package/dist/html/layout/block.js.map +1 -1
  41. package/dist/html/layout/boxes.d.ts +29 -2
  42. package/dist/html/layout/boxes.d.ts.map +1 -1
  43. package/dist/html/layout/boxes.js +172 -23
  44. package/dist/html/layout/boxes.js.map +1 -1
  45. package/dist/html/layout/css-grid.d.ts.map +1 -1
  46. package/dist/html/layout/css-grid.js +11 -9
  47. package/dist/html/layout/css-grid.js.map +1 -1
  48. package/dist/html/layout/flex.d.ts.map +1 -1
  49. package/dist/html/layout/flex.js +1759 -238
  50. package/dist/html/layout/flex.js.map +1 -1
  51. package/dist/html/layout/inline.d.ts +15 -3
  52. package/dist/html/layout/inline.d.ts.map +1 -1
  53. package/dist/html/layout/inline.js +64 -19
  54. package/dist/html/layout/inline.js.map +1 -1
  55. package/dist/html/layout/table.d.ts +27 -1
  56. package/dist/html/layout/table.d.ts.map +1 -1
  57. package/dist/html/layout/table.js +886 -324
  58. package/dist/html/layout/table.js.map +1 -1
  59. package/dist/html/node.d.ts +35 -4
  60. package/dist/html/node.d.ts.map +1 -1
  61. package/dist/html/node.js +122 -26
  62. package/dist/html/node.js.map +1 -1
  63. package/dist/html/paint.d.ts.map +1 -1
  64. package/dist/html/paint.js +558 -178
  65. package/dist/html/paint.js.map +1 -1
  66. package/dist/html/resources.js +14 -1
  67. package/dist/html/resources.js.map +1 -1
  68. package/dist/html/svg.d.ts +23 -7
  69. package/dist/html/svg.d.ts.map +1 -1
  70. package/dist/html/svg.js +264 -59
  71. package/dist/html/svg.js.map +1 -1
  72. package/dist/html/widgets.d.ts.map +1 -1
  73. package/dist/html/widgets.js +57 -4
  74. package/dist/html/widgets.js.map +1 -1
  75. package/package.json +3 -3
  76. package/src/code-editor/node.ts +24 -5
  77. package/src/html/css/cascade.ts +697 -221
  78. package/src/html/css/color.ts +345 -18
  79. package/src/html/css/content.ts +173 -15
  80. package/src/html/css/parse.ts +60 -8
  81. package/src/html/css/shapes.ts +35 -1
  82. package/src/html/css/style.ts +122 -17
  83. package/src/html/css/ua.ts +27 -8
  84. package/src/html/css/values.ts +23 -9
  85. package/src/html/index.ts +7 -0
  86. package/src/html/layout/block.ts +149 -58
  87. package/src/html/layout/boxes.ts +211 -27
  88. package/src/html/layout/css-grid.ts +12 -9
  89. package/src/html/layout/flex.ts +1975 -231
  90. package/src/html/layout/inline.ts +70 -16
  91. package/src/html/layout/table.ts +961 -332
  92. package/src/html/node.ts +155 -27
  93. package/src/html/paint.ts +692 -234
  94. package/src/html/resources.ts +13 -1
  95. package/src/html/svg.ts +299 -56
  96. package/src/html/widgets.ts +61 -4
@@ -1,5 +1,6 @@
1
1
  import type { Element } from 'domhandler';
2
2
  import type { TextRun } from '../../richtext/index.js';
3
+ import { ShapeCopies } from '../css/cascade.js';
3
4
  import type { Cascade, KeptStyles, SelectionStyle } from '../css/cascade.js';
4
5
  import type { CollapsedTable } from './collapse.js';
5
6
  import type { ShapeStyles } from '../css/shapes.js';
@@ -17,12 +18,16 @@ export interface Marker {
17
18
  /** Its own style where a `::marker` rule gives it one; the item's where
18
19
  * none does. */
19
20
  style: ComputedStyle | null;
20
- /** The image it is, `list-style-image`'s, at its size in device pixels,
21
- * where that has arrived; its text is then not drawn. */
21
+ /** The image it is, `list-style-image`'s, where that has arrived, at its
22
+ * size in device pixels — its own, or the one a marker image with none
23
+ * is given (`Builder._markerImageSize`); its text is then not drawn.
24
+ * `gap` is the room between it and the content, in device pixels
25
+ * (`MARKER_IMAGE_GAP`). */
22
26
  image?: {
23
27
  url: string;
24
28
  width: number;
25
29
  height: number;
30
+ gap: number;
26
31
  };
27
32
  /** Its text is its own — a string `list-style-type`, a `::marker`'s
28
33
  * `content` — and ends at the content's edge, with no gap a number
@@ -426,6 +431,15 @@ export type ReplacedKind = 'none' | 'image' | 'input' | 'textarea' | 'select' |
426
431
  | 'frame'
427
432
  /** An inline `<svg>`: a drawing, sized by what it says of its size. */
428
433
  | 'svg';
434
+ /**
435
+ * Where a control sits on the line, as Chrome sets it: a field, a select
436
+ * or an input button on the baseline of the text it shows, its line in its
437
+ * face centred in its content box — that face's ascent and descent — and a
438
+ * checkbox, a radio button or a range on its border box's bottom, its
439
+ * bottom margin under the line. A `<textarea>` is none of these, and sits
440
+ * on its bottom margin edge as a box that scrolls does.
441
+ */
442
+ export declare const CONTROL_BASELINES: WeakMap<Box, "border" | InlineDecoration>;
429
443
  /** A replaced box's intrinsic dimensions, in device pixels. */
430
444
  export interface Intrinsic {
431
445
  /** Its size — or, on an axis `missing` names, the default object size of
@@ -657,6 +671,11 @@ export interface BoxTree {
657
671
  * could reach one: worked out as a drawing is first painted, since a
658
672
  * page of icons shows few of them at once. */
659
673
  shapeStyler: ShapeStyler | null;
674
+ /** What the drawings of this build share in `Cascade.shapeStyles`: the
675
+ * document's elements by their ids, indexed when first asked, where a
676
+ * `<use>` finds the icon a sprite has for it; and what the rules matched
677
+ * in each copy a `<use>` makes. Null where `shapeStyler` is. */
678
+ shapeCopies: ShapeCopies | null;
660
679
  /** Whether a float or an out-of-flow box sits in an inline box: where
661
680
  * none does, layout looks for them among a block's own children and
662
681
  * goes through no inline box to find them. */
@@ -693,6 +712,14 @@ export interface BuildOptions {
693
712
  imageSize(el: Element): IntrinsicSize | null;
694
713
  /** The same for an image named by url — generated content's. */
695
714
  urlSize?(url: string): IntrinsicSize | null;
715
+ /** How far a style's first face reaches above its baseline, in device
716
+ * pixels: what a list marker's image with no size of its own is sized
717
+ * by (`_markerImageSize`). Where it is not known, 0.8em. */
718
+ faceAscent?(style: ComputedStyle): number | undefined;
719
+ /** How far a style's first face reaches above and below its baseline,
720
+ * in device pixels: where a control sets its text, which is where its
721
+ * baseline is (`CONTROL_BASELINES`). */
722
+ faceExtent?(style: ComputedStyle): InlineDecoration | undefined;
696
723
  /** The size a real widget wants, so the box in the flow is the size the
697
724
  * control will be drawn at. */
698
725
  controlSize(el: Element, kind: ReplacedKind, style: ComputedStyle): {
@@ -1 +1 @@
1
- {"version":3,"file":"boxes.d.ts","sourceRoot":"","sources":["../../../src/html/layout/boxes.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAUvD,OAAO,KAAK,EACV,OAAO,EAEP,UAAU,EACV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAWpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,OAAO,GACf,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,GACN,OAAO,GACP,iBAAiB,GACjB,WAAW,GACX,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,OAAO,CAAC;AAOZ;6BAC6B;AAC7B,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;qBACiB;IACjB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B;8DAC0D;IAC1D,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD;;uCAEmC;IACnC,KAAK,CAAC,EAAE,IAAI,CAAC;CACd;AAED;kDACkD;AAClD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,GAAG,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV;;;;;OAKG;IACH,MAAM,CAAC,EAAE;QACP,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,2DAA2D;AAC3D,MAAM,WAAW,OAAO;IACtB,uEAAuE;IACvE,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf;sCACkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;0CACsC;IACtC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB;iEAC6D;IAC7D,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,GAAG,gBAAgB,CAAC;IACzD;;oEAEgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd;iBACa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB;+EAC2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB;;kDAE8C;IAC9C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClD;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;0CAGsC;IACtC,KAAK,EAAE;QACL,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QACnC,gEAAgE;QAChE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,GAAG,CAAC;IACT,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;8DAE0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;iEAEiE;AACjE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd;;iFAEyE;QACzE,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE;YACJ,CAAC,EAAE,MAAM,CAAC;YACV,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,GAAG,EAAE,MAAM,CAAC;YACZ;;;;qDAIyC;YACzC,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,GAAG,CAAC,EAAE;gBACJ,IAAI,EAAE;oBAAE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG;wBAAE,MAAM,EAAE,MAAM,CAAC;wBAAC,OAAO,EAAE,MAAM,CAAA;qBAAE,CAAA;iBAAE,CAAC;gBACrE,IAAI,EAAE,MAAM,CAAC;gBACb,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;aAC3B,CAAC;SACH,EAAE,CAAC;KACL,EAAE,CAAC;IACJ,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;QAC5B,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;wEACoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,GAAG;IACd,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,GAAG,GAAG,IAAI,CAAQ;IAC1B,QAAQ,EAAE,GAAG,EAAE,CAAM;IAErB,yDAAyD;IACzD,CAAC,SAAK;IACN,CAAC,SAAK;IACN,KAAK,SAAK;IACV,MAAM,SAAK;IAEX;6EACyE;IACzE,GAAG,SAAK;IAER,mDAAmD;IACnD,SAAS,SAAK;IACd,WAAW,SAAK;IAChB,YAAY,SAAK;IACjB,UAAU,SAAK;IACf,MAAM,SAAK;IACX,QAAQ,SAAK;IACb,SAAS,SAAK;IACd,OAAO,SAAK;IACZ,SAAS,SAAK;IACd,WAAW,SAAK;IAChB,YAAY,SAAK;IACjB,UAAU,SAAK;IACf;;;uEAGmE;IACnE,WAAW,EAAE,WAAW,GAAG,IAAI,CAAQ;IACvC;;+DAE2D;IAC3D,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC3C;;;kDAG8C;IAC9C,iBAAiB,SAAO;IACxB;;oDAEgD;IAChD,eAAe,UAAS;IACxB;;;;;;;;+BAQ2B;IAC3B,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAK;IAE/B,4EAA4E;IAC5E,IAAI,SAAM;IACV,mDAAmD;IACnD,SAAS,SAAK;IACd,OAAO,SAAK;IAEZ,sEAAsE;IACtE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAQ;IAC/B;;8BAE0B;IAC1B,QAAQ,SAAK;IAEb;4EACwE;IACxE,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IACnC;;;;;;;;;;OAUG;IACH,mBAAmB,SAAM;IACzB,mBAAmB,SAAM;IACzB;;2BAEuB;IACvB,YAAY,SAAK;IACjB;sDACkD;IAClD,QAAQ,EAAE,YAAY,CAAU;IAEhC;;;yCAGqC;IACrC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B;;;gBAGY;IACZ,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,IAAI,CAAQ;IAE1D;;;;;;OAMG;IACH,OAAO,SAAK;IACZ,OAAO,SAAK;IACZ,WAAW,SAAK;IAChB,YAAY,SAAK;IAEjB;;;;;;;;OAQG;IACH,UAAU,EAAE;QACV,KAAK,EAAE,GAAG,EAAE,CAAC;QACb,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,GAAG,IAAI,CAAQ;IAChB;6EACyE;IACzE,eAAe,EAAE,GAAG,EAAE,GAAG,IAAI,CAAQ;IACrC;;oEAEgE;IAChE,WAAW,UAAS;IACpB;2EACuE;IACvE,aAAa,SAAK;IAElB;;;;;OAKG;IACH,gBAAgB,SAAK;IACrB,cAAc,SAAK;IAEnB;2DACuD;IACvD,SAAS,UAAS;IAClB,2CAA2C;IAC3C,OAAO,UAAS;IAChB;+DAC2D;IAC3D,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE7C;4EACwE;IACxE,UAAU,SAAK;IACf,aAAa,SAAK;IAClB;8DAC0D;IAC1D,SAAS,EAAE,cAAc,GAAG,IAAI,CAAQ;IACxC;;oDAEgD;IAChD,gBAAgB,UAAS;IAEzB,YAAY,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,aAAa,EAIlE;IAED,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAGvB;IAED,sDAAsD;IACtD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,YAAY,IAAI,MAAM,CASzB;IACD,IAAI,aAAa,IAAI,MAAM,CAS1B;IACD;uDACmD;IACnD,IAAI,eAAe,IAAI,MAAM,CAE5B;IACD,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF;AAED,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,OAAO,GACP,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,IAAI;AACN;;aAEa;GACX,OAAO;AACT,uEAAuE;GACrE,KAAK,CAAC;AAEV,+DAA+D;AAC/D,MAAM,WAAW,SAAS;IACxB;;mBAEe;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB;mDAC+C;IAC/C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;2EAC2E;AAC3E,eAAO,MAAM,UAAU,6BAAoC,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,aAAa,KAClB,aAAa,CAAC;AAEnB;sDACsD;AACtD,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC;AAEzE;uDACuD;AACvD,eAAO,MAAM,cAAc,sBAA6B,CAAC;AAEzD;;;;;8BAK8B;AAC9B,eAAO,MAAM,cAAc;OAAyB,MAAM;OAAK,MAAM;EAAK,CAAC;AAC3E,eAAO,MAAM,WAAW;OAA8B,MAAM;OAAK,MAAM;EAAK,CAAC;AAC7E,eAAO,MAAM,aAAa,kBAAyB,CAAC;AAEpD;;;;;2EAK2E;AAC3E,eAAO,MAAM,eAAe,kCAAyC,CAAC;AAEtE;;;yEAGyE;AACzE,eAAO,MAAM,WAAW,2BAAkC,CAAC;AAE3D;oDACoD;AACpD,eAAO,MAAM,aAAa,cAAqB,CAAC;AAChD,eAAO,MAAM,UAAU,sBAA6B,CAAC;AAErD;;;iEAGiE;AACjE,eAAO,MAAM,eAAe,oCAA2C,CAAC;AAExE;;;gEAGgE;AAChE,eAAO,MAAM,YAAY,gCAAuC,CAAC;AAEjE;;;kCAGkC;AAClC,eAAO,MAAM,eAAe,cAAqB,CAAC;AAClD;;qBAEqB;AACrB,eAAO,MAAM,aAAa,cAAqB,CAAC;AAEhD;;;;kCAIkC;AAClC,eAAO,MAAM,OAAO,cAAqB,CAAC;AAE1C;;;;;;yBAMyB;AACzB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;CACnB;AACD,eAAO,MAAM,WAAW,0BAAiC,CAAC;AAE1D;;gEAEgE;AAChE,eAAO,MAAM,WAAW,qBAA4B,CAAC;AAErD;;;wCAGwC;AACxC,eAAO,MAAM,UAAU,qBAA4B,CAAC;AAEpD;;;4EAG4E;AAC5E,eAAO,MAAM,YAAY,sBAA6B,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;wCAEwC;AACxC,eAAO,MAAM,aAAa,6BAAoC,CAAC;AAE/D;;eAEe;AACf,eAAO,MAAM,YAAY,oBAA2B,CAAC;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;SAEf,MAAM;YAAU,MAAM;EAC5B,CAAC;AAEJ;kEACkE;AAClE,eAAO,MAAM,QAAQ;IAAK,GAAG;CAAS,CAAC;AAEvC;0DAC0D;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,WAAW,GAAG,IAAI,CAAC;AAE3D;;gEAEgE;AAChE,eAAO,MAAM,YAAY,kCAAyC,CAAC;AAEnE;;uCAEuC;AACvC,eAAO,MAAM,cAAc,uBAA8B,CAAC;AAE1D;;;;+DAI+D;AAC/D,eAAO,MAAM,YAAY,sBAA6B,CAAC;AAEvD,yEAAyE;AACzE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,GAAG,CAAC;IACV;yDACqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB;;mCAE+B;IAC/B,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;2EAEuE;IACvE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChE,sEAAsE;IACtE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,yDAAyD;IACzD,KAAK,EAAE,GAAG,EAAE,CAAC;IACb;;iFAE6E;IAC7E,SAAS,EAAE,cAAc,CAAC;IAC1B;;;6BAGyB;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB;;iDAE6C;IAC7C,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACnE;oCACgC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB;qDACiD;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB;2CACuC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB;sCACkC;IAClC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC;;kEAE8D;IAC9D,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC;;;mDAG+C;IAC/C,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC;;mDAE+C;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB;;0CAEsC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB;0EACsE;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;mCAG+B;IAC/B,WAAW,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC;;iDAE6C;IAC7C,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB;2DACuD;IACvD,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;oCAEgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;kCAE8B;IAC9B,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAAC;IAC7C,gEAAgE;IAChE,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IAC5C;oCACgC;IAChC,WAAW,CACT,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,GACnB;QACD,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,yCAAyC;AACzC,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,EACrC,OAAO,EAAE,YAAY,GACpB,OAAO,CAGT;AAo1CD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,EACzC,QAAQ,UAAQ,GACf,MAAM,CAWR;AAoED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAyBtE;AAieD;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,KAC9B,aAAa,CAAC;AA0InB;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7C;AAYD;;;+DAG+D;AAC/D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAQtD"}
1
+ {"version":3,"file":"boxes.d.ts","sourceRoot":"","sources":["../../../src/html/layout/boxes.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,22 @@
1
1
  import { attr, childrenOf, isElement, isText, inImpliedHead, NON_RENDERED, tagOf, } from '../dom.js';
2
+ import { ShapeCopies, languageOf, metaColorScheme } from '../css/cascade.js';
2
3
  import { quoteAt } from '../css/content.js';
3
4
  import { CONTAIN_STYLE, FIRST_LINE_INHERITED, NO_MASK, copyStyle, firstLineParent, inherit, } from '../css/style.js';
4
5
  import { AUTO } from '../css/values.js';
5
- import { svgIntrinsics } from '../svg.js';
6
+ import { concreteSize, svgIntrinsics } from '../svg.js';
7
+ /**
8
+ * The room between a list marker's image and the item's content, in CSS
9
+ * pixels: between the image and the content's edge outside the item, and
10
+ * after the image inside it. CSS 2.1 (12.5.1) leaves where a marker goes
11
+ * to the user agent, and this is Blink's `kCMarkerPaddingPx`
12
+ * (`ListMarker::InlineMarginsForOutside` and `…ForInside`), which WebKit
13
+ * has too. Outside, ours was the gap a bullet has, 0.4em — 16 pixels at
14
+ * 40px text where Chrome has 7 — and inside the space a marker's text ends
15
+ * in, a space's width. Blink writes it into the marker's margins unzoomed,
16
+ * so at a device scale of 2 Chrome's is 7 device pixels; here it is 7 CSS
17
+ * pixels at any scale, so that a page at 2x is the page at 1x doubled.
18
+ */
19
+ const MARKER_IMAGE_GAP = 7;
6
20
  /**
7
21
  * One box. Fields are assigned rather than passed so the shape stays
8
22
  * monomorphic — every box has every field, which is what keeps the property
@@ -205,6 +219,31 @@ export class Box {
205
219
  return this.borderTop + this.borderBottom + this.padTop + this.padBottom;
206
220
  }
207
221
  }
222
+ /**
223
+ * Where a control sits on the line, as Chrome sets it: a field, a select
224
+ * or an input button on the baseline of the text it shows, its line in its
225
+ * face centred in its content box — that face's ascent and descent — and a
226
+ * checkbox, a radio button or a range on its border box's bottom, its
227
+ * bottom margin under the line. A `<textarea>` is none of these, and sits
228
+ * on its bottom margin edge as a box that scrolls does.
229
+ */
230
+ export const CONTROL_BASELINES = new WeakMap();
231
+ function controlBaseline(el, kind, style, options) {
232
+ if (kind === 'checkbox' || kind === 'radio')
233
+ return 'border';
234
+ if (kind === 'input' && (attr(el, 'type') ?? '').toLowerCase() === 'range') {
235
+ return 'border';
236
+ }
237
+ if (kind !== 'input' && kind !== 'select' && kind !== 'button')
238
+ return null;
239
+ // a list box shows rows, and sits on its bottom edge
240
+ if (kind === 'select' && Number(attr(el, 'size') ?? 1) > 1)
241
+ return null;
242
+ return (options.faceExtent?.(style) ?? {
243
+ ascent: style.fontSize * 0.8,
244
+ descent: style.fontSize * 0.2,
245
+ });
246
+ }
208
247
  /** The `::first-line` style of each block container a rule gives one to,
209
248
  * kept beside the boxes: few documents have any (`BoxTree.firstLine`). */
210
249
  export const FIRST_LINE = new WeakMap();
@@ -314,6 +353,29 @@ export function buildBoxes(root, options) {
314
353
  const builder = new Builder(options);
315
354
  return builder.run(root);
316
355
  }
356
+ /** A document's first element with an id: one walk of it, the first time
357
+ * an id is asked for (`ShapeCopies`). */
358
+ function idIndex(root) {
359
+ let index = null;
360
+ return (id) => {
361
+ if (!index) {
362
+ index = new Map();
363
+ const stack = [...root.children].reverse();
364
+ for (let node = stack.pop(); node; node = stack.pop()) {
365
+ if (!isElement(node))
366
+ continue;
367
+ const own = node.attribs.id;
368
+ if (own && !index.has(own))
369
+ index.set(own, node);
370
+ const children = node.children;
371
+ for (let i = children.length - 1; i >= 0; i -= 1) {
372
+ stack.push(children[i]);
373
+ }
374
+ }
375
+ }
376
+ return index.get(id) ?? null;
377
+ };
378
+ }
317
379
  /**
318
380
  * How deep the box tree may go. Everything downstream of the builder — the
319
381
  * fix-up pass, layout, paint, the accessor walks — recurses on box depth, so
@@ -321,8 +383,17 @@ export function buildBoxes(root, options) {
321
383
  * output, a runaway template) from a stack overflow five phases later.
322
384
  * Blink's parser flattens at 512 for the same reason; content past the cap
323
385
  * is dropped, which beats the alternative of crashing the application.
386
+ *
324
387
  * The parser keeps a document to 256 elements (`dom.ts`), so what reaches
325
- * this now is the anonymous boxes a table builds round each of them.
388
+ * this is the anonymous boxes a table builds round them, which the builder
389
+ * counts as it goes (`wrappersAround`), since the fix-up makes them after
390
+ * it. Counted as elements, a `display: table-cell` box in another was one
391
+ * level where it is four boxes — a table, a row group, a row and the cell
392
+ * — and every pass pays for a box: painting one takes some 800 bytes of
393
+ * the stack. Two hundred and fifty cells deep, a thousand boxes, layout
394
+ * and paint each ran out of the 984 KB V8 gives the main thread, and the
395
+ * document came out blank. 512 boxes paint in under half of it, and are a
396
+ * cell in a cell 128 deep.
326
397
  */
327
398
  const MAX_DEPTH = 512;
328
399
  /** The sharing key the root box's children share under: one root style per
@@ -372,8 +443,13 @@ class Builder {
372
443
  run(root) {
373
444
  const cascade = this._options.cascade;
374
445
  cascade.beginSharing(this._options.kept ?? null);
446
+ cascade.pageColorScheme = metaColorScheme(root);
375
447
  const { style: rootStyle, html: impliedHtml } = cascade.rootStyle(hasBody(root), hasHtml(root));
376
448
  const rootBox = new Box('block', null, rootStyle);
449
+ // the root standing in for a `<body>` has its background clipped to
450
+ // the document's text as the body's would be
451
+ if (rootStyle.backgroundClipText)
452
+ this._clipText = true;
377
453
  // a fragment's root stands in for a `<body>`, counters and all
378
454
  this._scopes.open();
379
455
  this._counterChanges(rootStyle, {
@@ -391,6 +467,7 @@ class Builder {
391
467
  const anonymous = anonymousStyles(cascade.initial);
392
468
  fixUp(rootBox, anonymous);
393
469
  assignSubtreeRanges(rootBox);
470
+ const copies = cascade.stylesShapes ? new ShapeCopies(idIndex(root)) : null;
394
471
  return {
395
472
  root: rootBox,
396
473
  anonymous,
@@ -407,7 +484,8 @@ class Builder {
407
484
  firstLine: this._firstLine,
408
485
  firstLineStyler: this._firstLine ? this._firstLineStyler() : null,
409
486
  selectionStyler: cascade.hasSelection ? this._selectionStyler() : null,
410
- shapeStyler: cascade.stylesShapes ? this._shapeStyler() : null,
487
+ shapeStyler: copies ? this._shapeStyler(copies) : null,
488
+ shapeCopies: copies,
411
489
  nestedOutOfLine: this._nestedOutOfLine,
412
490
  movedInline: this._movedInline,
413
491
  clipText: this._clipText,
@@ -442,12 +520,12 @@ class Builder {
442
520
  }
443
521
  /** `BoxTree.shapeStyler`, over this build's cascade: each drawing's
444
522
  * once, from its box's style as it is when first asked. */
445
- _shapeStyler() {
523
+ _shapeStyler(copies) {
446
524
  const cascade = this._options.cascade;
447
525
  return (box) => {
448
526
  let shapes = SHAPE_STYLES.get(box);
449
527
  if (shapes === undefined) {
450
- shapes = box.el ? cascade.shapeStyles(box.el, box.style) : null;
528
+ shapes = box.el ? cascade.shapeStyles(box.el, box.style, copies) : null;
451
529
  SHAPE_STYLES.set(box, shapes);
452
530
  }
453
531
  return shapes;
@@ -617,9 +695,11 @@ class Builder {
617
695
  this._replaced(el, tag, replaced, style, into);
618
696
  return;
619
697
  }
620
- if (this._depth >= MAX_DEPTH)
621
- return;
622
698
  const kind = boxKindFor(style.display);
699
+ // the box, and the anonymous boxes the fix-up will put round it
700
+ const depth = 1 + wrappersAround(into.kind, kind, style);
701
+ if (this._depth + depth > MAX_DEPTH)
702
+ return;
623
703
  const box = new Box(kind, el, style);
624
704
  into.append(box);
625
705
  if ((kind === 'block' || kind === 'table-cell' || kind === 'table-caption') &&
@@ -681,21 +761,19 @@ class Builder {
681
761
  flush = true;
682
762
  }
683
763
  if (markerImage && !ownMarker) {
764
+ const [width, height] = this._markerImageSize(markerImage.size, markerStyle ?? style);
765
+ const gap = MARKER_IMAGE_GAP * (this._options.scale ?? 1);
766
+ const image = { url: markerImage.url, width, height, gap };
684
767
  if (style.listStylePosition === 'inside')
685
- insideImage = markerImage.url;
768
+ insideImage = image;
686
769
  else {
687
- const scale = this._options.scale ?? 1;
688
770
  box.marker = {
689
771
  text: '',
690
772
  layout: null,
691
773
  x: 0,
692
774
  y: 0,
693
775
  style: markerStyle,
694
- image: {
695
- url: markerImage.url,
696
- width: (markerImage.size.width ?? 0) * scale,
697
- height: (markerImage.size.height ?? 0) * scale,
698
- },
776
+ image,
699
777
  };
700
778
  }
701
779
  }
@@ -735,12 +813,18 @@ class Builder {
735
813
  const ownLetter = ownRules ? { rules: ownRules, punctuation: [] } : null;
736
814
  if (ownLetter)
737
815
  this._firstLetter = ownLetter;
738
- this._depth += 1;
816
+ this._depth += depth;
739
817
  if (insideImage) {
740
818
  // an inline image at the start of the first line, as a generated
741
- // image is, and the space a marker's text ends in
742
- this._contentImage(insideImage, box, style, el);
743
- this._textNode(' ', box, style, el);
819
+ // image is, and the room after it Blink gives it rather than a
820
+ // space: the content's own white space after it is kept, as it is
821
+ // after an image (`MARKER_IMAGE_GAP`)
822
+ const { url, gap } = insideImage;
823
+ const image = this._contentImage(url, box, style, el, insideImage);
824
+ if (style.direction === 'rtl')
825
+ image.style.marginLeft = gap;
826
+ else
827
+ image.style.marginRight = gap;
744
828
  }
745
829
  else if (insideMarker) {
746
830
  this._insideMarker(insideMarker, style, markerStyle, box, el);
@@ -748,7 +832,7 @@ class Builder {
748
832
  this._pseudo(el, 'before', style, box);
749
833
  this._children(el, box, style, childInFlex, el, key);
750
834
  this._pseudo(el, 'after', style, box);
751
- this._depth -= 1;
835
+ this._depth -= depth;
752
836
  this._letterAfter(flow, skipped, outerLetter, ownLetter);
753
837
  if (flow !== 'inline')
754
838
  this._endLine();
@@ -847,6 +931,9 @@ class Builder {
847
931
  ratio: 0,
848
932
  };
849
933
  this._controls.push(box);
934
+ const baseline = controlBaseline(el, replaced, style, this._options);
935
+ if (baseline)
936
+ CONTROL_BASELINES.set(box, baseline);
850
937
  // A control's value is the widget's, not the document's: putting it in
851
938
  // the selection index would make Ctrl+A copy the contents of every text
852
939
  // field, which no document viewer does.
@@ -1135,14 +1222,14 @@ class Builder {
1135
1222
  .join(item.separator);
1136
1223
  break;
1137
1224
  case 'open-quote':
1138
- text += quoteAt(style.quotes, this._quoteDepth, 0);
1225
+ text += quoteAt(style.quotes, this._quoteDepth, 0, languageOf(el));
1139
1226
  this._quoteDepth += 1;
1140
1227
  break;
1141
1228
  case 'close-quote':
1142
1229
  // a close with nothing open writes nothing and closes nothing
1143
1230
  if (this._quoteDepth > 0) {
1144
1231
  this._quoteDepth -= 1;
1145
- text += quoteAt(style.quotes, this._quoteDepth, 1);
1232
+ text += quoteAt(style.quotes, this._quoteDepth, 1, languageOf(el));
1146
1233
  }
1147
1234
  break;
1148
1235
  case 'no-open-quote':
@@ -1164,7 +1251,10 @@ class Builder {
1164
1251
  * the image's size once the host has it and none before. An image that
1165
1252
  * never arrives takes no room, as no image does.
1166
1253
  */
1167
- _contentImage(url, into, style, owner) {
1254
+ _contentImage(url, into, style, owner,
1255
+ /** Its size where it is a list marker's, which has one whatever the
1256
+ * image says (`_markerImageSize`). */
1257
+ marker) {
1168
1258
  const box = new Box('replaced', null, {
1169
1259
  ...inherit(style, this._options.cascade.initial),
1170
1260
  display: 'inline',
@@ -1174,13 +1264,39 @@ class Builder {
1174
1264
  CONTENT_IMAGES.set(box, url);
1175
1265
  const size = this._options.urlSize?.(url) ?? null;
1176
1266
  this._contentImages.push({ url, element: owner, sized: !!size });
1177
- if (size)
1267
+ if (marker) {
1268
+ const { width, height } = marker;
1269
+ const ratio = width > 0 && height > 0 ? width / height : 0;
1270
+ box.intrinsic = { width, height, missing: 0, ratio };
1271
+ }
1272
+ else if (size)
1178
1273
  setIntrinsics(box, size, this._options.scale ?? 1);
1179
1274
  else
1180
1275
  box.intrinsic = { width: 0, height: 0, missing: 0, ratio: 0 };
1181
1276
  this._ws = after('atomic', this._ws, this._ws);
1182
1277
  this._lettered = false;
1183
1278
  this._abandonLetter();
1279
+ return box;
1280
+ }
1281
+ /**
1282
+ * A list marker image's size, in device pixels: its own where it has one,
1283
+ * and where it lacks some — an SVG with only a `viewBox`, or with no size
1284
+ * and no ratio — CSS Images' default sizing in a square half its face's
1285
+ * ascent across. CSS Lists 3 (3.3) makes the square 1em, which both
1286
+ * engines find too large (w3c/csswg-drafts#4207): Blink's is half the
1287
+ * ascent, rounded to a whole pixel first
1288
+ * (`LayoutListMarkerImage::DefaultSize`), Gecko's 0.4em, and this is
1289
+ * Blink's. A `viewBox` alone came to 0 by 0 and drew no marker at all,
1290
+ * and inside the item to the 300 by 150 a generated image defaults to.
1291
+ */
1292
+ _markerImageSize(size, style) {
1293
+ let side = 0;
1294
+ // CoreText reads a size of 0 as its default twelve points
1295
+ if ((size.width === null || size.height === null) && style.fontSize > 0) {
1296
+ const ascent = this._options.faceAscent?.(style) ?? style.fontSize * 0.8;
1297
+ side = Math.round(ascent) / 2;
1298
+ }
1299
+ return concreteSize(size, side, side, this._options.scale ?? 1);
1184
1300
  }
1185
1301
  /** A text node, whitespace-processed per the inherited `white-space`. */
1186
1302
  _textNode(data, into, style, owner) {
@@ -1765,6 +1881,39 @@ function after(flow, inside, before) {
1765
1881
  return 'start';
1766
1882
  }
1767
1883
  }
1884
+ /**
1885
+ * How many anonymous boxes the fix-up will put between a box of `kind` and
1886
+ * the box it is appended to, `parent` (`fixUpTable`, `wrapOrphans`,
1887
+ * `wrapTableParts`): a table part outside a table is given what it is
1888
+ * missing of one, and what is in a table and no part of it is given a
1889
+ * cell, a row and a row group. A cell in a block is in a table, a row group
1890
+ * and a row of its own, and a block in a row is in a cell. Counted against
1891
+ * `MAX_DEPTH`, which bounds the boxes and not the elements.
1892
+ */
1893
+ function wrappersAround(parent, kind, style) {
1894
+ const column = style.display === 'table-column' || style.display === 'table-column-group';
1895
+ switch (parent) {
1896
+ case 'table':
1897
+ if (kind === 'table-row-group' || kind === 'table-caption' || column) {
1898
+ return 0;
1899
+ }
1900
+ return kind === 'table-row' ? 1 : kind === 'table-cell' ? 2 : 3;
1901
+ case 'table-row-group':
1902
+ return kind === 'table-row' ? 0 : kind === 'table-cell' ? 1 : 2;
1903
+ case 'table-row':
1904
+ return kind === 'table-cell' ? 0 : 1;
1905
+ }
1906
+ // a part out of flow is no part (`isTablePart`)
1907
+ if (style.position === 'absolute' ||
1908
+ style.position === 'fixed' ||
1909
+ style.float !== 'none') {
1910
+ return 0;
1911
+ }
1912
+ if (kind === 'table-row-group' || kind === 'table-caption' || column) {
1913
+ return 1;
1914
+ }
1915
+ return kind === 'table-row' ? 2 : kind === 'table-cell' ? 3 : 0;
1916
+ }
1768
1917
  function boxKindFor(display) {
1769
1918
  switch (display) {
1770
1919
  case 'inline':