feat: parse CSS contain values in geometry normalization

- Add CONTAIN_MAP with bitfield flags matching CDP extractor schema
  (layout=1, paint=2, size=4, style=8, strict=15, content=7, inline-size=16)
- Parse space-separated contain keywords in normalizeStyles()
- Replace containFlags[i]=0 TODO with actual value lookup
- Unknown contain keywords map to 0 gracefully
This commit is contained in:
John Dvorak
2026-05-21 13:20:57 -07:00
parent a222a9fa8a
commit a75c3be9e0
+15 -1
View File
@@ -322,6 +322,16 @@ const VISIBILITY_MAP: Record<string, VisibilityValue> = {
collapse: VisibilityValue.Collapse,
}
const CONTAIN_MAP: Record<string, number> = {
none: 0,
layout: 1,
paint: 2,
size: 4,
style: 8,
strict: 15,
content: 7,
'inline-size': 16,
}
const CLIP_KIND_MAP: Record<string, ClipKind> = {
overflow: ClipKind.Overflow,
clipPath: ClipKind.ClipPath,
@@ -648,7 +658,11 @@ export function normalizeStyles(raw: RawStyle[], strings: StringTable): Styles {
overflowY[i] = OVERFLOW_MAP[s.overflowY] ?? OverflowValue.Visible
opacity[i] = s.opacity
visibility[i] = VISIBILITY_MAP[s.visibility] ?? VisibilityValue.Visible
containFlags[i] = 0 // TODO: parse contain values
if (s.contain) {
for (const part of s.contain.split(/\s+/)) {
containFlags[i] |= CONTAIN_MAP[part.toLowerCase()] ?? 0
}
}
pointerEvents[i] = internString(strings, s.pointerEvents)
lineHeight[i] = s.lineHeight
fontFamilyStringId[i] = internString(strings, s.fontFamily)