monowind 0.1.0 → 0.1.2
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/ascii.d.ts.map +1 -1
- package/dist/cdn.js +37 -25
- package/dist/cdn.js.map +1 -1
- package/dist/element.d.ts +5 -2
- package/dist/element.d.ts.map +1 -1
- package/dist/flex.d.ts +47 -0
- package/dist/flex.d.ts.map +1 -0
- package/dist/grid.d.ts +104 -0
- package/dist/grid.d.ts.map +1 -0
- package/dist/index.js +1893 -477
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +75 -24
- package/dist/layout.d.ts.map +1 -1
- package/dist/metrics.d.ts +10 -2
- package/dist/metrics.d.ts.map +1 -1
- package/dist/positioning.d.ts +10 -0
- package/dist/positioning.d.ts.map +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/style.d.ts +32 -2
- package/dist/style.d.ts.map +1 -1
- package/dist/tree.d.ts +19 -15
- package/dist/tree.d.ts.map +1 -1
- package/dist/types.d.ts +253 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/wrap.d.ts +62 -12
- package/dist/wrap.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/styles.css +137 -10
package/dist/layout.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LineSpan } from "./wrap.ts";
|
|
2
|
+
import type { CellLength, CellStyle, LayoutNode, NullableInsets, PerSide, Size, SizeLimit } from "./types.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Core layout: the per-node sizing pipeline, block flow, and the shared
|
|
5
|
+
* sizing/intrinsic machinery. Flex lives in flex.ts, the positioning pass
|
|
6
|
+
* in positioning.ts, each mirroring its spec file. The modules are
|
|
7
|
+
* mutually recursive (children lay out through layoutNode), so the import
|
|
8
|
+
* cycle between them is deliberate — safe because they contain only
|
|
9
|
+
* hoisted function declarations with no top-level cross-module execution.
|
|
10
|
+
*/
|
|
2
11
|
/**
|
|
3
12
|
* Layout entry point: mutates localRect on the root and each descendant.
|
|
4
13
|
* Coordinates are parent-relative (root's rect is at 0,0).
|
|
@@ -6,31 +15,73 @@ import type { LayoutNode } from "./types.ts";
|
|
|
6
15
|
export declare function layoutRoot(root: LayoutNode, availableWidth: number): {
|
|
7
16
|
height: number;
|
|
8
17
|
};
|
|
18
|
+
/** absolute / fixed boxes are out of normal flow. */
|
|
19
|
+
export declare function isOutOfFlow(style: CellStyle): boolean;
|
|
20
|
+
/** A containing block for absolute descendants, per CSS. */
|
|
21
|
+
export declare function isPositioned(style: CellStyle): boolean;
|
|
22
|
+
export type SizingMode = "fill" | "shrink";
|
|
23
|
+
export interface IntrinsicCache {
|
|
24
|
+
maxContent: WeakMap<LayoutNode, number>;
|
|
25
|
+
minContent: WeakMap<LayoutNode, number>;
|
|
26
|
+
/** Grid containers compute both intrinsic widths in one placement +
|
|
27
|
+
* sizing pass — cached here so the min and max lookups share it. */
|
|
28
|
+
gridIntrinsic: WeakMap<LayoutNode, {
|
|
29
|
+
min: number;
|
|
30
|
+
max: number;
|
|
31
|
+
}>;
|
|
32
|
+
}
|
|
33
|
+
export declare function makeIntrinsicCache(): IntrinsicCache;
|
|
9
34
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* redistribution rounds, an item clamped up to `min-w-*` would keep space
|
|
16
|
-
* its neighbors were already told they could use, and boxes would overlap.
|
|
17
|
-
*
|
|
18
|
-
* `min`/`max` are outer main sizes in cells, already resolved from percent.
|
|
19
|
-
* When clamps bind, the returned sizes may sum to less or more than
|
|
20
|
-
* `available` — that's CSS (`justify-content` sees the underfill; overflow
|
|
21
|
-
* handles the excess).
|
|
35
|
+
* `forced` carries flex-assigned ("used") sizes from a parent flex pass —
|
|
36
|
+
* they are authoritative and skip resolution/clamping entirely (the flex
|
|
37
|
+
* loop already applied min/max). With sizes forced, `availableWidth` stays
|
|
38
|
+
* the CONTAINING BLOCK's content width, which percent padding, margins,
|
|
39
|
+
* and min/max resolve against — never the assigned size itself.
|
|
22
40
|
*/
|
|
23
|
-
export declare function
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
export declare function layoutNode(node: LayoutNode, availableWidth: number, availableHeight: number | undefined, parentX: number, parentY: number, widthMode: SizingMode, cache: IntrinsicCache, forced?: {
|
|
42
|
+
width?: number | undefined;
|
|
43
|
+
height?: number | undefined;
|
|
44
|
+
}): void;
|
|
45
|
+
export declare function clampSize(value: number, min: number, max: number | undefined): number;
|
|
46
|
+
/**
|
|
47
|
+
* A text leaf's wrapped lines with their vertical geometry. Lines are one
|
|
48
|
+
* row tall unless an atomic inline box on the line is taller — the line
|
|
49
|
+
* grows to the tallest box (per CSS line-box growth), and later lines
|
|
50
|
+
* shift down. `lineGap` rows separate lines as usual. Requires the leaf's
|
|
51
|
+
* inline boxes to be laid out already (their rect heights are read here);
|
|
52
|
+
* marker advances must be resolved.
|
|
53
|
+
*/
|
|
54
|
+
export declare function leafLineGeometry(node: LayoutNode, contentWidth: number): {
|
|
55
|
+
spans: LineSpan[];
|
|
56
|
+
lineY: number[];
|
|
57
|
+
totalRows: number;
|
|
58
|
+
};
|
|
59
|
+
/** Resolve a spacing length to cells against its containing-block basis.
|
|
60
|
+
* An indefinite basis (percent gap in an unbounded axis) resolves to 0. */
|
|
61
|
+
export declare function resolveLength(length: CellLength, basis: number | undefined): number;
|
|
62
|
+
/** Resolve all four margin sides (preserving `auto` as null) against the
|
|
63
|
+
* parent's content width — the CSS basis for every side. */
|
|
64
|
+
export declare function resolveMargin(margin: PerSide<CellLength | null>, basis: number): NullableInsets;
|
|
65
|
+
/** Resolve a height limit to cells: percent needs a definite available
|
|
66
|
+
* size; intrinsic keywords behave as "no constraint" on heights. `"auto"`
|
|
67
|
+
* resolves to none here (0 in block flow) — flex main-axis code
|
|
68
|
+
* substitutes the item's content-based automatic minimum itself. */
|
|
69
|
+
export declare function resolveLimit(limit: SizeLimit | "auto" | undefined, available: number | undefined): number | undefined;
|
|
70
|
+
/** Resolve a WIDTH limit to cells — like resolveLimit, but intrinsic
|
|
71
|
+
* keywords (`max-w-max` = max-content, …) resolve against the node's
|
|
72
|
+
* content. */
|
|
73
|
+
export declare function resolveWidthLimit(limit: SizeLimit | "auto" | undefined, available: number, node: LayoutNode, cache: IntrinsicCache): number | undefined;
|
|
74
|
+
/** Resolve a definite Size against an available extent (`auto` falls back
|
|
75
|
+
* to max-content — callers handle the auto/fill distinction themselves). */
|
|
76
|
+
export declare function resolveSizeAgainst(size: Size, available: number, node: LayoutNode, cache: IntrinsicCache): number;
|
|
77
|
+
/** Max-content intrinsic outer width (border + padding + unwrapped content). */
|
|
78
|
+
export declare function intrinsicOuterWidth(node: LayoutNode, cache: IntrinsicCache): number;
|
|
30
79
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
80
|
+
* Min-content intrinsic outer width: the narrowest the box can get without
|
|
81
|
+
* overflow. For a text leaf that's the longest unbreakable unit — a word
|
|
82
|
+
* under normal wrapping, a whole hard line under `nowrap`. A nowrap flex
|
|
83
|
+
* row sums its items (they sit side by side no matter what); wrapping rows
|
|
84
|
+
* and block/column containers take the widest child.
|
|
34
85
|
*/
|
|
35
|
-
export declare function
|
|
86
|
+
export declare function minContentOuterWidth(node: LayoutNode, cache: IntrinsicCache): number;
|
|
36
87
|
//# sourceMappingURL=layout.d.ts.map
|
package/dist/layout.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
|
package/dist/metrics.d.ts
CHANGED
|
@@ -5,7 +5,15 @@ export declare function roundHalfAwayFromZero(value: number): number;
|
|
|
5
5
|
export declare function pxToCells(px: number, rootFontSizePx: number): number;
|
|
6
6
|
/** Convert a percentage of an integer container to whole cells, ties away from zero. */
|
|
7
7
|
export declare function percentToCells(percent: number, containerCells: number): number;
|
|
8
|
-
/** Measure the
|
|
9
|
-
|
|
8
|
+
/** Measure the root's cell from the host's PERSISTENT shadow probe (100
|
|
9
|
+
* "M"s inheriting the host's font): the advance of a monospace character
|
|
10
|
+
* (with the root's own letter-spacing) and the line-box height. Root
|
|
11
|
+
* leading/tracking thus size the grid; descendants' are quantized to it
|
|
12
|
+
* (specs/cell-model.md). The probe must be long-lived: a throwaway node
|
|
13
|
+
* created at measure time can transiently resolve the FALLBACK font even
|
|
14
|
+
* after the real font has loaded (observed on CI Chromium), whereas a
|
|
15
|
+
* persistent node is re-font-matched by the same machinery as real
|
|
16
|
+
* content. */
|
|
17
|
+
export declare function measureCellMetrics(host: HTMLElement, probe: HTMLElement): CellMetrics;
|
|
10
18
|
export declare function getRootFontSizePx(): number;
|
|
11
19
|
//# sourceMappingURL=metrics.d.ts.map
|
package/dist/metrics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;;;;cAQc;AACd,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW,CAIrF;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IntrinsicCache } from "./layout.ts";
|
|
2
|
+
import type { LayoutNode } from "./types.ts";
|
|
3
|
+
interface Frame {
|
|
4
|
+
node: LayoutNode;
|
|
5
|
+
absX: number;
|
|
6
|
+
absY: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function walkPositioned(node: LayoutNode, absX: number, absY: number, ancestors: Frame[], cache: IntrinsicCache): void;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=positioning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positioning.d.ts","sourceRoot":"","sources":["../src/positioning.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAyB,UAAU,EAAQ,MAAM,YAAY,CAAC;AAmB1E,UAAU,KAAK;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,KAAK,EAAE,EAClB,KAAK,EAAE,cAAc,GACpB,IAAI,CA0CN"}
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,YAAY,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,GAAG,IAAI,CAc3E"}
|
package/dist/style.d.ts
CHANGED
|
@@ -1,10 +1,40 @@
|
|
|
1
|
-
import type { CellStyle } from "./types.ts";
|
|
1
|
+
import type { CellMetrics, CellStyle, GridAreas, GridLine, GridTemplate } from "./types.ts";
|
|
2
2
|
/**
|
|
3
3
|
* Read the interpreted CellStyle for an element from its computed CSS.
|
|
4
4
|
*
|
|
5
5
|
* The host must have the `measuring` attribute set while this runs so the
|
|
6
6
|
* engine's own geometry rules (from styles.css) don't feed their outputs back
|
|
7
7
|
* into what we read.
|
|
8
|
+
*
|
|
9
|
+
* `metrics` (the host's measured cell) is the basis for leading and
|
|
10
|
+
* tracking; absent in headless tests, where the cell height defaults to
|
|
11
|
+
* the font size and the root letter-spacing to 0.
|
|
12
|
+
*/
|
|
13
|
+
export declare function readCellStyle(el: Element, rootFontSizePx: number, metrics?: CellMetrics): CellStyle;
|
|
14
|
+
/** Extra cells after each character: floor((letter-spacing − root
|
|
15
|
+
* letter-spacing) ÷ 0.025em), never negative (specs/cell-model.md). The
|
|
16
|
+
* root's own letter-spacing is part of the cell, so only the excess over
|
|
17
|
+
* it (inherited by default) counts. */
|
|
18
|
+
export declare function trackingCells(letterSpacing: string, fontSizePx: number, rootLetterSpacingPx: number): number;
|
|
19
|
+
/**
|
|
20
|
+
* Parse a computed `grid-template-columns` / `grid-template-rows` value
|
|
21
|
+
* (specs/grid.md). Expected on a NON-grid element (see the degrid read in
|
|
22
|
+
* readCellStyle), so the authored structure survives: lengths are computed
|
|
23
|
+
* to px, but `fr`, `minmax()`, and `repeat()` keep their form. Fixed
|
|
24
|
+
* repeats expand here; `auto-fill` / `auto-fit` stay symbolic for layout.
|
|
25
|
+
* Line names would appear in `[bracket]` groups — deferred, dropped.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseTrackTemplate(value: string, rootFontSizePx: number): GridTemplate;
|
|
28
|
+
/**
|
|
29
|
+
* Parse `grid-template-areas` (specs/grid.md): one quoted string per row,
|
|
30
|
+
* whitespace-separated cell tokens, `.` (any run of dots) for an empty
|
|
31
|
+
* cell. Per CSS the whole value is invalid — and reads as `none` — when
|
|
32
|
+
* rows have different lengths or a name's cells don't form one
|
|
33
|
+
* filled-in rectangle.
|
|
8
34
|
*/
|
|
9
|
-
export declare function
|
|
35
|
+
export declare function parseGridTemplateAreas(value: string): GridAreas | null;
|
|
36
|
+
/** Parse a `grid-column-start`-family longhand: `auto`, an integer line
|
|
37
|
+
* (possibly negative), `span <n>`, or the named forms — `foo`, `<n> foo`,
|
|
38
|
+
* `span foo`, `span <n> foo` (specs/grid.md "Named lines and areas"). */
|
|
39
|
+
export declare function parseGridLine(value: string): GridLine;
|
|
10
40
|
//# sourceMappingURL=style.d.ts.map
|
package/dist/style.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAIV,WAAW,EACX,SAAS,EAGT,SAAS,EAET,QAAQ,EACR,YAAY,EASb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,OAAO,EACX,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,SAAS,CA4JX;AAuHD;;;uCAGuC;AACvC,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAKR;AAsLD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,YAAY,CAsDtF;AAgCD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAoCtE;AA8GD;;yEAEyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CA0BrD"}
|
package/dist/tree.d.ts
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import type { LayoutNode } from "./types.ts";
|
|
1
|
+
import type { CellMetrics, LayoutNode } from "./types.ts";
|
|
2
2
|
/**
|
|
3
3
|
* Build a LayoutNode tree from an element subtree.
|
|
4
4
|
*
|
|
5
|
-
* Rules:
|
|
6
|
-
* - Elements with computed `display: none` are skipped entirely
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
5
|
+
* Rules (specs/cell-model.md "Inline detection"):
|
|
6
|
+
* - Elements with computed `display: none` are skipped entirely (their
|
|
7
|
+
* text never joins a run).
|
|
8
|
+
* - An element is a **leaf** when it has no IN-FLOW block-level element
|
|
9
|
+
* children: in-flow inline children (computed `inline`/`inline-*`/
|
|
10
|
+
* `contents`) are part of the text run, and out-of-flow children
|
|
11
|
+
* (absolute/fixed — blockified per CSS) hang off the leaf as layout
|
|
12
|
+
* nodes for the positioning pass. The leaf's `text` is its combined
|
|
13
|
+
* in-flow text, so text nodes interleaved with inline elements
|
|
14
|
+
* (`<div>hello <span>world</span></div>`) participate in the wrap
|
|
15
|
+
* calculation and render correctly.
|
|
16
|
+
* - Elements with at least one in-flow block-level element child become
|
|
17
|
+
* **containers** and recurse. Direct text nodes on containers (uncommon
|
|
18
|
+
* in utility-first markup) are not laid out — a documented deviation.
|
|
19
|
+
*
|
|
20
|
+
* `cellMetrics` (measured by the host) is the basis for leading and
|
|
21
|
+
* tracking; absent in headless tests (see readCellStyle).
|
|
18
22
|
*/
|
|
19
|
-
export declare function buildTree(root: Element, rootFontSizePx: number): LayoutNode | null;
|
|
23
|
+
export declare function buildTree(root: Element, rootFontSizePx: number, cellMetrics?: CellMetrics): LayoutNode | null;
|
|
20
24
|
//# sourceMappingURL=tree.d.ts.map
|
package/dist/tree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAW,MAAM,YAAY,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,WAAW,GACxB,UAAU,GAAG,IAAI,CAsEnB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -41,12 +41,24 @@ export type Size = {
|
|
|
41
41
|
export type Display = "block" | "flex" | "grid" | "none";
|
|
42
42
|
export type FlexDirection = "row" | "column";
|
|
43
43
|
export type FlexWrap = "nowrap" | "wrap";
|
|
44
|
-
export type JustifyContent = "start" | "center" | "end" | "space-between" | "space-around" | "space-evenly"
|
|
44
|
+
export type JustifyContent = "start" | "center" | "end" | "space-between" | "space-around" | "space-evenly"
|
|
45
|
+
/** CSS `normal` / `stretch`. In flex both behave as `start` (per
|
|
46
|
+
* css-align); in grid they stretch auto-sized tracks over leftover space
|
|
47
|
+
* (CSS Grid §11.8) and otherwise behave as `start`. */
|
|
48
|
+
| "stretch";
|
|
45
49
|
export type AlignItems = "start" | "center" | "end" | "stretch";
|
|
50
|
+
/** Multi-line cross distribution (`content-*`); `stretch` (the CSS
|
|
51
|
+
* default `normal`) grows flex lines / grid tracks instead of offsetting
|
|
52
|
+
* them. */
|
|
53
|
+
export type AlignContent = JustifyContent;
|
|
46
54
|
export type AlignSelf = "auto" | "start" | "center" | "end" | "stretch";
|
|
47
55
|
export type BorderStyle = "solid" | "double" | "dashed" | "dotted";
|
|
48
56
|
export type Overflow = "visible" | "clip";
|
|
49
|
-
export type
|
|
57
|
+
export type Position = "static" | "relative" | "absolute" | "fixed" | "sticky";
|
|
58
|
+
/** `nowrap` disables soft wrapping; `pre` additionally preserves the
|
|
59
|
+
* source's spaces and newlines (specs/cell-model.md). Everything else
|
|
60
|
+
* (`pre-wrap` included) behaves as `normal`. */
|
|
61
|
+
export type WhiteSpace = "normal" | "nowrap" | "pre";
|
|
50
62
|
/** A length in whole cells, or a percentage kept symbolic until layout.
|
|
51
63
|
* Percentages resolve against the CSS-appropriate basis at layout time:
|
|
52
64
|
* the available extent for min/max (`max-w-full` = 100%), the containing
|
|
@@ -55,7 +67,123 @@ export type WhiteSpace = "normal" | "nowrap";
|
|
|
55
67
|
export type CellLength = number | {
|
|
56
68
|
percent: number;
|
|
57
69
|
};
|
|
70
|
+
/** A min/max constraint: a CellLength, or an intrinsic sizing keyword
|
|
71
|
+
* (`max-w-max` = `max-width: max-content`, …). Keywords are honored on
|
|
72
|
+
* width limits and behave as "no constraint" on height limits (content
|
|
73
|
+
* height already is the intrinsic height). */
|
|
74
|
+
export type SizeLimit = CellLength | "min-content" | "max-content" | "fit-content";
|
|
58
75
|
export type TextOverflow = "clip" | "ellipsis";
|
|
76
|
+
/** One bound of a grid track size (specs/grid.md). `fr` is only valid as a
|
|
77
|
+
* max (the reader normalizes bare `<n>fr` to `minmax(auto, <n>fr)`, per
|
|
78
|
+
* CSS); percent resolves against the container's content box in the
|
|
79
|
+
* track's axis (indefinite axis → treated as `auto`). */
|
|
80
|
+
export type TrackBreadth = {
|
|
81
|
+
kind: "cells";
|
|
82
|
+
value: number;
|
|
83
|
+
} | {
|
|
84
|
+
kind: "percent";
|
|
85
|
+
value: number;
|
|
86
|
+
} | {
|
|
87
|
+
kind: "fr";
|
|
88
|
+
value: number;
|
|
89
|
+
} | {
|
|
90
|
+
kind: "auto";
|
|
91
|
+
} | {
|
|
92
|
+
kind: "min-content";
|
|
93
|
+
} | {
|
|
94
|
+
kind: "max-content";
|
|
95
|
+
}
|
|
96
|
+
/** `min()` / `max()` over fixed breadths — the canonical responsive
|
|
97
|
+
* auto-fill pattern `minmax(min(8rem, 100%), 1fr)`. Resolvable only
|
|
98
|
+
* when every argument is (a percent argument needs a definite axis);
|
|
99
|
+
* otherwise the whole function behaves as `auto`. `calc()` arithmetic
|
|
100
|
+
* stays unsupported (specs/grid.md deviations). */
|
|
101
|
+
| {
|
|
102
|
+
kind: "math";
|
|
103
|
+
fn: "min" | "max";
|
|
104
|
+
args: TrackBreadth[];
|
|
105
|
+
};
|
|
106
|
+
/** A grid track as a normalized minmax pair — every track-size form reads
|
|
107
|
+
* as one (`8rem` → minmax(cells, cells), `1fr` → minmax(auto, fr), …). */
|
|
108
|
+
export interface TrackSize {
|
|
109
|
+
min: TrackBreadth;
|
|
110
|
+
max: TrackBreadth;
|
|
111
|
+
}
|
|
112
|
+
/** A parsed `grid-template-columns` / `grid-template-rows`. Fixed repeats
|
|
113
|
+
* are expanded at read time; an `auto-fill` / `auto-fit` repetition stays
|
|
114
|
+
* symbolic (`autoRepeat`, spliced in at `tracks[autoRepeat.index]`) and
|
|
115
|
+
* resolves its count at layout time against the definite axis size. */
|
|
116
|
+
export type GridTemplate = {
|
|
117
|
+
kind: "none";
|
|
118
|
+
} | {
|
|
119
|
+
kind: "subgrid";
|
|
120
|
+
} | {
|
|
121
|
+
kind: "tracks";
|
|
122
|
+
tracks: TrackSize[];
|
|
123
|
+
/** `[name …]` groups: `lineNames[i]` names line i (0 … tracks.length).
|
|
124
|
+
* Absent when the template names no lines. */
|
|
125
|
+
lineNames?: string[][];
|
|
126
|
+
autoRepeat?: {
|
|
127
|
+
index: number;
|
|
128
|
+
tracks: TrackSize[];
|
|
129
|
+
/** Names inside the repetition (tracks.length + 1 entries); the
|
|
130
|
+
* edge groups merge with neighbors at every iteration boundary. */
|
|
131
|
+
lineNames?: string[][];
|
|
132
|
+
/** Names authored just before the `repeat()` — they attach to the
|
|
133
|
+
* first repeated line once the count is known. */
|
|
134
|
+
leadingNames?: string[];
|
|
135
|
+
mode: "auto-fill" | "auto-fit";
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
/** One side of a grid item's placement (`grid-column-start`, …): a line
|
|
139
|
+
* number (negative counts from the explicit grid's end, per CSS), a span
|
|
140
|
+
* (optionally counting only lines with a name), a named line (`foo`, or
|
|
141
|
+
* `<n> foo` — `nth` absent for the bare form, whose area-edge lookup
|
|
142
|
+
* comes first, specs/grid.md), or auto. */
|
|
143
|
+
export type GridLine = {
|
|
144
|
+
kind: "auto";
|
|
145
|
+
} | {
|
|
146
|
+
kind: "line";
|
|
147
|
+
value: number;
|
|
148
|
+
} | {
|
|
149
|
+
kind: "span";
|
|
150
|
+
value: number;
|
|
151
|
+
name?: string;
|
|
152
|
+
} | {
|
|
153
|
+
kind: "name";
|
|
154
|
+
name: string;
|
|
155
|
+
nth?: number;
|
|
156
|
+
};
|
|
157
|
+
/** A named area from `grid-template-areas`, as 0-based line indices
|
|
158
|
+
* (`colEnd` / `rowEnd` exclusive of the last cell's track). */
|
|
159
|
+
export interface GridArea {
|
|
160
|
+
colStart: number;
|
|
161
|
+
colEnd: number;
|
|
162
|
+
rowStart: number;
|
|
163
|
+
rowEnd: number;
|
|
164
|
+
}
|
|
165
|
+
/** `grid-template-areas`: the row/column count it defines and its
|
|
166
|
+
* (rectangular) named areas. */
|
|
167
|
+
export interface GridAreas {
|
|
168
|
+
columns: number;
|
|
169
|
+
rows: number;
|
|
170
|
+
areas: Map<string, GridArea>;
|
|
171
|
+
}
|
|
172
|
+
export interface GridAutoFlow {
|
|
173
|
+
direction: "row" | "column";
|
|
174
|
+
dense: boolean;
|
|
175
|
+
}
|
|
176
|
+
/** Tracks a subgrid inherits from its parent grid in a subgridded axis
|
|
177
|
+
* (specs/grid.md), projected into the subgrid's CONTENT-box coordinates:
|
|
178
|
+
* the first and last tracks are shrunk by the subgrid's own margin,
|
|
179
|
+
* border, and padding on that side, so its items still land on the
|
|
180
|
+
* parent's lines. `gap` is the parent's gutter. */
|
|
181
|
+
export interface InheritedTracks {
|
|
182
|
+
positions: number[];
|
|
183
|
+
sizes: number[];
|
|
184
|
+
gapBefore: number[];
|
|
185
|
+
gap: number;
|
|
186
|
+
}
|
|
59
187
|
/** One value per box edge (border style, border color, …). */
|
|
60
188
|
export interface PerSide<T> {
|
|
61
189
|
top: T;
|
|
@@ -82,30 +210,69 @@ export interface CellStyle {
|
|
|
82
210
|
/** CSS `order` — flex items sort by it (stable, document order ties). */
|
|
83
211
|
order: number;
|
|
84
212
|
justifyContent: JustifyContent;
|
|
213
|
+
/** Flex: multi-line (wrap-enabled) containers only, per CSS. Grid: row
|
|
214
|
+
* track distribution. */
|
|
215
|
+
alignContent: AlignContent;
|
|
85
216
|
alignItems: AlignItems;
|
|
86
217
|
alignSelf: AlignSelf;
|
|
218
|
+
/** Grid container inline-axis item alignment (`justify-items`); the CSS
|
|
219
|
+
* default `normal` behaves as `stretch` in grid. */
|
|
220
|
+
justifyItems: AlignItems;
|
|
221
|
+
/** Grid item inline-axis self-alignment override (`justify-self`). */
|
|
222
|
+
justifySelf: AlignSelf;
|
|
223
|
+
/** Parsed track templates (specs/grid.md). `none` for non-grid elements. */
|
|
224
|
+
gridTemplateColumns: GridTemplate;
|
|
225
|
+
gridTemplateRows: GridTemplate;
|
|
226
|
+
/** Sizes for implicit tracks (`grid-auto-columns` / `grid-auto-rows`),
|
|
227
|
+
* cycled across the implicit tracks in each axis. Never empty — the CSS
|
|
228
|
+
* initial value is a single `auto`. */
|
|
229
|
+
gridAutoColumns: TrackSize[];
|
|
230
|
+
gridAutoRows: TrackSize[];
|
|
231
|
+
gridAutoFlow: GridAutoFlow;
|
|
232
|
+
/** Parsed `grid-template-areas`; `null` for `none` or an invalid value
|
|
233
|
+
* (per CSS the whole property then doesn't apply). */
|
|
234
|
+
gridTemplateAreas: GridAreas | null;
|
|
235
|
+
/** Grid item placement longhands. `auto` on non-grid-item elements. */
|
|
236
|
+
gridColumnStart: GridLine;
|
|
237
|
+
gridColumnEnd: GridLine;
|
|
238
|
+
gridRowStart: GridLine;
|
|
239
|
+
gridRowEnd: GridLine;
|
|
87
240
|
width: Size | undefined;
|
|
88
241
|
height: Size | undefined;
|
|
89
242
|
/** `"auto"` is CSS `min-width/height: auto`: 0 in block flow, but a flex
|
|
90
243
|
* item's automatic minimum (its min-content size, when overflow is
|
|
91
244
|
* visible) on the flex main axis — the reason text in a flex row stops
|
|
92
245
|
* shrinking instead of vanishing, and why `min-w-0` exists. */
|
|
93
|
-
minWidth:
|
|
94
|
-
minHeight:
|
|
95
|
-
maxWidth:
|
|
96
|
-
maxHeight:
|
|
246
|
+
minWidth: SizeLimit | "auto";
|
|
247
|
+
minHeight: SizeLimit | "auto";
|
|
248
|
+
maxWidth: SizeLimit | undefined;
|
|
249
|
+
maxHeight: SizeLimit | undefined;
|
|
97
250
|
padding: PerSide<CellLength>;
|
|
98
251
|
/** `null` = `auto`. Percentages resolve against the parent's content
|
|
99
252
|
* width where the margin is consumed. */
|
|
100
253
|
margin: PerSide<CellLength | null>;
|
|
254
|
+
/** See specs/positioning.md: fixed behaves as absolute anchored to the
|
|
255
|
+
* host; sticky behaves as relative until the scrolling milestone. */
|
|
256
|
+
position: Position;
|
|
257
|
+
/** `top/right/bottom/left`; `null` = `auto`. Percentages resolve against
|
|
258
|
+
* the containing block (width for left/right, height for top/bottom). */
|
|
259
|
+
insets: PerSide<CellLength | null>;
|
|
101
260
|
gapX: CellLength;
|
|
102
261
|
gapY: CellLength;
|
|
103
262
|
border: Insets;
|
|
104
263
|
borderStyle: PerSide<BorderStyle>;
|
|
105
264
|
borderColor: PerSide<string | undefined>;
|
|
106
265
|
overflow: Overflow;
|
|
107
|
-
/** `nowrap` disables soft wrapping (hard `<br>` breaks still apply). */
|
|
108
266
|
whiteSpace: WhiteSpace;
|
|
267
|
+
/** CSS `tab-size` in cells — tab stops for preserved (`pre`) text,
|
|
268
|
+
* expanded by the tree builder from each hard line's start. */
|
|
269
|
+
tabSize: number;
|
|
270
|
+
/** Empty rows between wrapped lines (`leading-*` re-quantized to the
|
|
271
|
+
* grid: rows per line − 1). See specs/cell-model.md. */
|
|
272
|
+
lineGap: number;
|
|
273
|
+
/** Extra cells after every character (`tracking-*` re-quantized:
|
|
274
|
+
* floor((letter-spacing − root letter-spacing) ÷ 0.025em)). */
|
|
275
|
+
tracking: number;
|
|
109
276
|
/** Paint-only: with `nowrap` + clipping, the browser draws the ellipsis.
|
|
110
277
|
* The engine only needs it for the ASCII renderer's mirror of that. */
|
|
111
278
|
textOverflow: TextOverflow;
|
|
@@ -126,13 +293,82 @@ export interface LayoutNode {
|
|
|
126
293
|
source: Element;
|
|
127
294
|
style: CellStyle;
|
|
128
295
|
children: LayoutNode[];
|
|
129
|
-
/**
|
|
130
|
-
* for
|
|
131
|
-
* element has mixed text+element children. */
|
|
296
|
+
/** The leaf's text run (inline descendants included, `<br>` as `\n`).
|
|
297
|
+
* Empty for containers — their direct text nodes are not laid out. */
|
|
132
298
|
text: string;
|
|
133
299
|
intrinsicWidth: number;
|
|
134
300
|
intrinsicHeight: number;
|
|
135
301
|
localRect: Rect;
|
|
302
|
+
/** Where an out-of-flow (absolute) box would have sat in normal flow —
|
|
303
|
+
* its CSS "static position", parent-relative, recorded by the parent's
|
|
304
|
+
* flow pass and consumed by the absolute-positioning pass for inset-less
|
|
305
|
+
* axes. Flex parents record the container's content box plus alignment
|
|
306
|
+
* so the "as if sole flex item" rule can apply once the box is sized. */
|
|
307
|
+
staticSlot?: {
|
|
308
|
+
kind: "block";
|
|
309
|
+
x: number;
|
|
310
|
+
y: number;
|
|
311
|
+
} | {
|
|
312
|
+
kind: "flex";
|
|
313
|
+
direction: FlexDirection;
|
|
314
|
+
originX: number;
|
|
315
|
+
originY: number;
|
|
316
|
+
innerWidth: number;
|
|
317
|
+
innerHeight: number;
|
|
318
|
+
}
|
|
319
|
+
/** Grid parents (specs/grid.md §10.1): `area` is the child's grid
|
|
320
|
+
* area (its containing block when the grid container is positioned)
|
|
321
|
+
* and `staticArea` the sole-item area for inset-less axes — both
|
|
322
|
+
* parent-relative border-box rects. */
|
|
323
|
+
| {
|
|
324
|
+
kind: "grid";
|
|
325
|
+
area: Rect;
|
|
326
|
+
staticArea: Rect;
|
|
327
|
+
};
|
|
328
|
+
/** Per-character cell advances for tracked leaf text (`1 + tracking` of
|
|
329
|
+
* the character's innermost element, specs/cell-model.md); absent when
|
|
330
|
+
* every character is a plain 1-cell advance. */
|
|
331
|
+
advances?: number[];
|
|
332
|
+
/** Inline descendants of a leaf. The renderer writes each one's grid
|
|
333
|
+
* tracking, its quantized horizontal padding (the run reserves the
|
|
334
|
+
* cells as INLINE_PAD markers; the browser applies the same cells as
|
|
335
|
+
* real padding via engine-owned vars), and — for the positioned ones —
|
|
336
|
+
* its relative insets rewritten to whole cells (specs/positioning.md);
|
|
337
|
+
* `null` insets = not positioned. */
|
|
338
|
+
inlineElements?: {
|
|
339
|
+
element: Element;
|
|
340
|
+
tracking: number;
|
|
341
|
+
padLeft: number;
|
|
342
|
+
padRight: number;
|
|
343
|
+
insets: PerSide<number | null> | null;
|
|
344
|
+
}[];
|
|
345
|
+
/** True on an atomic inline-level box (`inline-flex`/`inline-block`/
|
|
346
|
+
* `inline-grid`) riding its parent leaf's text run as a single
|
|
347
|
+
* unbreakable unit: the leaf's run holds an OBJECT REPLACEMENT
|
|
348
|
+
* CHARACTER (U+FFFC) for it whose advance is the box's laid-out width.
|
|
349
|
+
* The box stays IN FLOW in the browser (sized to whole cells by the
|
|
350
|
+
* companion stylesheet) so the browser's own line layout places it —
|
|
351
|
+
* engine and browser agree because both treat it as an atomic unit of
|
|
352
|
+
* the same width (specs/cell-model.md). */
|
|
353
|
+
inlineBox?: boolean;
|
|
354
|
+
/** Set by a grid parent on a child whose template is `subgrid` in at
|
|
355
|
+
* least one axis: the child's span in each axis (its explicit track
|
|
356
|
+
* count there — placement clamps to it) and, once the parent has sized
|
|
357
|
+
* that axis, the inherited tracks. Rows arrive in the parent's second
|
|
358
|
+
* pass: the first pass lays the subgrid out provisionally (its own
|
|
359
|
+
* items' heights feed the parent's row sizing). Absent on everything
|
|
360
|
+
* else — a `subgrid` template then behaves as `none`, per CSS. */
|
|
361
|
+
subgrid?: {
|
|
362
|
+
colSpan: number;
|
|
363
|
+
rowSpan: number;
|
|
364
|
+
cols?: InheritedTracks | undefined;
|
|
365
|
+
rows?: InheritedTracks | undefined;
|
|
366
|
+
} | undefined;
|
|
367
|
+
/** True on a container whose direct text nodes were dropped (mixed
|
|
368
|
+
* text + in-flow block children — cell-model deviation). The renderer
|
|
369
|
+
* hides that text and warns instead of letting the browser paint it
|
|
370
|
+
* unpositioned. */
|
|
371
|
+
droppedText?: boolean;
|
|
136
372
|
/** Outer height before min/max clamping — written by layoutNode; the
|
|
137
373
|
* column flex algorithm's base main size (CSS distributes from unclamped
|
|
138
374
|
* bases; limits apply via its freeze loop). */
|
|
@@ -142,10 +378,17 @@ export interface LayoutNode {
|
|
|
142
378
|
* layout knows); the renderers read this, never `style.padding`. */
|
|
143
379
|
resolvedPadding: Insets;
|
|
144
380
|
}
|
|
381
|
+
/** The root's cell, in px: width = glyph advance + the root's
|
|
382
|
+
* letter-spacing, height = the root's line box (specs/cell-model.md).
|
|
383
|
+
* `letterSpacing` is the root's, kept so descendant tracking can be read
|
|
384
|
+
* relative to it. */
|
|
145
385
|
export interface CellMetrics {
|
|
146
386
|
width: number;
|
|
147
387
|
height: number;
|
|
388
|
+
letterSpacing: number;
|
|
148
389
|
}
|
|
149
390
|
export declare function defaultCellStyle(): CellStyle;
|
|
150
391
|
export declare function zeroInsets(): Insets;
|
|
392
|
+
/** The CSS initial implicit-track size: `minmax(auto, auto)`. */
|
|
393
|
+
export declare function autoTrack(): TrackSize;
|
|
151
394
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;AAClB;;;;8CAI8C;GAC5C;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC7C,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AACzC,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,QAAQ,GACR,KAAK,GACL,eAAe,GACf,cAAc,GACd,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|