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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user