diff --git a/packages/imhotep-cdp/src/styles.ts b/packages/imhotep-cdp/src/styles.ts index 9343341..cff0f64 100644 --- a/packages/imhotep-cdp/src/styles.ts +++ b/packages/imhotep-cdp/src/styles.ts @@ -221,6 +221,7 @@ export async function extractStyles( if (part === 'style') containFlags |= 8 if (part === 'strict') containFlags |= 15 if (part === 'content') containFlags |= 7 + if (part === 'inline-size') containFlags |= 16 } } diff --git a/packages/imhotep-playwright/src/extraction.ts b/packages/imhotep-playwright/src/extraction.ts index 6ffbce8..abfe9e9 100644 --- a/packages/imhotep-playwright/src/extraction.ts +++ b/packages/imhotep-playwright/src/extraction.ts @@ -465,6 +465,7 @@ export async function extractWorldFastGeometry( overflowY: cs.overflowY, visibility: cs.visibility, pointerEvents: cs.pointerEvents, + contain: cs.contain, opacity: Number.parseFloat(cs.opacity) || 1, zIndex: cs.zIndex, lineHeight: Number.parseFloat(cs.lineHeight) || 0, @@ -626,7 +627,22 @@ export async function extractWorldFastGeometry( zIndexKind.push(s.zIndex === 'auto' ? 0 : 1) zIndexValue.push(s.zIndex === 'auto' ? 0 : Number.parseInt(s.zIndex, 10) || 0) opacity.push(s.opacity) - containFlags.push(0) + const csContain = (s as any).contain + let flags = 0 + if (typeof csContain === 'string') { + for (const part of csContain.split(/\s+/)) { + switch (part) { + case 'layout': flags |= 1; break + case 'paint': flags |= 2; break + case 'size': flags |= 4; break + case 'style': flags |= 8; break + case 'strict': flags |= 15; break + case 'content': flags |= 7; break + case 'inline-size': flags |= 16; break + } + } + } + containFlags.push(flags) lineHeight.push(s.lineHeight) fontFamilyStringId.push(intern(s.fontFamily)) fontSize.push(s.fontSize)