/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format */ import {ImageData} from './api'; import {ImageEventWithId} from './index'; import { Component, ContextMenu, DataDescription, Text, Panel, ManagedDataInspector, FlexColumn, FlexRow, colors, styled, } from 'flipper'; import React from 'react'; import {clipboard, MenuItemConstructorOptions} from 'electron'; type ImagesSidebarProps = { image: ImageData; events: Array; }; type ImagesSidebarState = {}; const DataDescriptionKey = styled.span({ color: colors.grapeDark1, }); const WordBreakFlexColumn = styled(FlexColumn)({ wordBreak: 'break-all', }); export default class ImagesSidebar extends Component< ImagesSidebarProps, ImagesSidebarState > { render() { return (
{this.renderUri()} {this.props.events.map((e) => ( ))}
); } renderUri() { if (!this.props.image) { return null; } if (!this.props.image.uri) { return null; } const contextMenuItems: MenuItemConstructorOptions[] = [ { label: 'Copy URI', click: () => clipboard.writeText(this.props.image.uri!), }, ]; return ( URI ); } } class EventDetails extends Component<{ event: ImageEventWithId; }> { render() { const {event} = this.props; return ( } floating={false} padded={true}>

Attribution :

Time start :

Time end :

Source :

Requested on cold start :

{this.renderViewportData()}
); } renderViewportData() { const viewport = this.props.event.viewport; if (!viewport) { return null; } return (

Viewport :

); // TODO (t31947746): grey box time, n-th scan time } } class RequestHeader extends Component<{ event: ImageEventWithId; }> { dateString = (timestamp: number) => { const date = new Date(timestamp); return `${date.toTimeString().split(' ')[0]}.${( '000' + date.getMilliseconds() ).substr(-3)}`; }; render() { const {event} = this.props; const durationMs = event.endTime - event.startTime; return ( {event.viewport ? 'Request' : 'Prefetch'} at{' '} {this.dateString(event.startTime)} ({durationMs}ms) ); } }