( data: Record<string, unknown>, visiblePresentation: ReturnType<typeof buildMobileSnapshotPresentation> | null, displayedNodeCount: number, totalNodeCount: number, filteredCount: number = 0, )
| 199 | } |
| 200 | |
| 201 | function readSnapshotVisibility( |
| 202 | data: Record<string, unknown>, |
| 203 | visiblePresentation: ReturnType<typeof buildMobileSnapshotPresentation> | null, |
| 204 | displayedNodeCount: number, |
| 205 | totalNodeCount: number, |
| 206 | filteredCount: number = 0, |
| 207 | ): SnapshotVisibility | null { |
| 208 | const payloadVisibility = readPayloadSnapshotVisibility(data); |
| 209 | if (filteredCount === 0 && payloadVisibility) { |
| 210 | return payloadVisibility; |
| 211 | } |
| 212 | |
| 213 | const hiddenCount = (visiblePresentation?.hiddenCount ?? 0) + filteredCount; |
| 214 | const hasExplicitHiddenContentHints = visiblePresentation |
| 215 | ? visiblePresentation.nodes.some((node) => node.hiddenContentAbove || node.hiddenContentBelow) |
| 216 | : false; |
| 217 | if (hiddenCount > 0) { |
| 218 | return { |
| 219 | partial: true, |
| 220 | visibleNodeCount: displayedNodeCount, |
| 221 | totalNodeCount: Math.max(totalNodeCount, payloadVisibility?.totalNodeCount ?? totalNodeCount), |
| 222 | reasons: uniqueSnapshotVisibilityReasons([ |
| 223 | ...(payloadVisibility?.reasons ?? []), |
| 224 | 'offscreen-nodes', |
| 225 | ]), |
| 226 | }; |
| 227 | } |
| 228 | if (payloadVisibility) { |
| 229 | return payloadVisibility; |
| 230 | } |
| 231 | if (hasExplicitHiddenContentHints) { |
| 232 | return { |
| 233 | partial: true, |
| 234 | visibleNodeCount: displayedNodeCount, |
| 235 | totalNodeCount: displayedNodeCount, |
| 236 | reasons: [], |
| 237 | }; |
| 238 | } |
| 239 | return null; |
| 240 | } |
| 241 | |
| 242 | function readPayloadSnapshotVisibility(data: Record<string, unknown>): SnapshotVisibility | null { |
| 243 | const candidate = data.visibility; |
no test coverage detected
searching dependent graphs…