model.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. export type VisualRegionSample = {
  2. present: boolean
  3. visible: boolean
  4. inViewport: boolean
  5. cssHidden?: boolean
  6. top: number
  7. bottom: number
  8. layoutTop?: number
  9. layoutBottom?: number
  10. width: number
  11. height: number
  12. opacity: number
  13. count: number
  14. node: number
  15. label: string
  16. text: string
  17. }
  18. export type VisualViewportSample = {
  19. top: number
  20. bottom: number
  21. scrollTop: number
  22. scrollHeight: number
  23. clientHeight: number
  24. distanceFromBottom: number
  25. }
  26. export type VisualObservation<RegionName extends string = string> = {
  27. at: number
  28. regions: string extends RegionName
  29. ? Record<string, VisualRegionSample>
  30. : Partial<Record<RegionName, VisualRegionSample>>
  31. viewport?: VisualViewportSample
  32. }
  33. export type VisualMarker = { at: number; label: string }
  34. export type VisualStabilityTrace<RegionName extends string = string> = {
  35. markers: VisualMarker[]
  36. samples: VisualObservation<RegionName>[]
  37. }
  38. export type CapturedFrame = { at: number; data: string }
  39. export type VisualProbeResult<RegionName extends string = string> = VisualStabilityTrace<RegionName> & {
  40. frames: CapturedFrame[]
  41. }