File size: 1,121 Bytes
3e05655
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
export type VisualRegionSample = {
  present: boolean
  visible: boolean
  inViewport: boolean
  cssHidden?: boolean
  top: number
  bottom: number
  layoutTop?: number
  layoutBottom?: number
  width: number
  height: number
  opacity: number
  count: number
  node: number
  label: string
  text: string
}

export type VisualViewportSample = {
  top: number
  bottom: number
  scrollTop: number
  scrollHeight: number
  clientHeight: number
  distanceFromBottom: number
}

export type VisualObservation<RegionName extends string = string> = {
  at: number
  regions: string extends RegionName
    ? Record<string, VisualRegionSample>
    : Partial<Record<RegionName, VisualRegionSample>>
  viewport?: VisualViewportSample
}

export type VisualMarker = { at: number; label: string }

export type VisualStabilityTrace<RegionName extends string = string> = {
  markers: VisualMarker[]
  samples: VisualObservation<RegionName>[]
}

export type CapturedFrame = { at: number; data: string }

export type VisualProbeResult<RegionName extends string = string> = VisualStabilityTrace<RegionName> & {
  frames: CapturedFrame[]
}