diff --git a/packages/imhotep-geometry/src/normalize.ts b/packages/imhotep-geometry/src/normalize.ts index 06ecf19..3412aea 100644 --- a/packages/imhotep-geometry/src/normalize.ts +++ b/packages/imhotep-geometry/src/normalize.ts @@ -322,6 +322,16 @@ const VISIBILITY_MAP: Record = { collapse: VisibilityValue.Collapse, } +const CONTAIN_MAP: Record = { + none: 0, + layout: 1, + paint: 2, + size: 4, + style: 8, + strict: 15, + content: 7, + 'inline-size': 16, +} const CLIP_KIND_MAP: Record = { 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)