UNPKG

@magic-circle/performance

Version:

Magic Circle performance management

107 lines (106 loc) 3.98 kB
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; import { useState, useEffect, useMemo } from 'react'; import styled from 'styled-components'; import { Metric } from '@magic-circle/styles'; import { useStore } from '@magic-circle/state'; import Chart from './Chart'; var Container = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n width: 100%;\n"]))); var displayMetric = function (value, unit) { if (!value) return 'N/A'; return "".concat(Math.round(value)).concat(unit); }; var Sidebar = function (_a) { var performance = _a.performance; var loadTimes = useStore(performance.loadTimes); var fps = useStore(performance.fps); var renderTime = useStore(performance.renderTime); var memory = useStore(performance.memory); var _b = useState(0), width = _b[0], setWidth = _b[1]; var _c = useState(0), height = _c[0], setHeight = _c[1]; useEffect(function () { var setSize = function () { var frame = document.querySelector('#frame'); if (frame) { setWidth(frame.clientWidth); setHeight(frame.clientHeight); } }; setSize(); window.addEventListener('resize', setSize); return function () { window.removeEventListener('resize', setSize); }; }, []); var maxRenderTime = useMemo(function () { return Math.max.apply(Math, __spreadArray(__spreadArray([], renderTime, true), [20], false)); }, [renderTime]); return (<Container> <Metric.Container> Frames per second <Metric.Value>{displayMetric(fps[fps.length - 1], 'fps')}</Metric.Value> </Metric.Container> <Chart max={60} values={fps}/> <Metric.Container> Render time <Metric.Value> {displayMetric(renderTime[renderTime.length - 1], 'ms')} </Metric.Value> </Metric.Container> <Chart max={maxRenderTime} values={renderTime}/> <Metric.Container> Memory <Metric.Value>{displayMetric(memory, 'mb')}</Metric.Value> </Metric.Container> <Metric.Container> First paint <Metric.Value> {loadTimes.firstPaint ? displayMetric(loadTimes.firstPaint, 'ms') : '?'} </Metric.Value> </Metric.Container> <Metric.Container> First contentful paint <Metric.Value> {loadTimes.firstContentfulPaint ? displayMetric(loadTimes.firstContentfulPaint, 'ms') : '?'} </Metric.Value> </Metric.Container> <Metric.Container> Load time <Metric.Value> {loadTimes.loadingTime ? displayMetric(loadTimes.loadingTime || 0, 'ms') : '?'} </Metric.Value> </Metric.Container> <Metric.Container> Frame width <Metric.Value>{displayMetric(width, 'px')}</Metric.Value> </Metric.Container> <Metric.Container> Frame height <Metric.Value>{displayMetric(height, 'px')}</Metric.Value> </Metric.Container> <Metric.Container> Device pixel ratio <Metric.Value>{window.devicePixelRatio}</Metric.Value> </Metric.Container> </Container>); }; export default Sidebar; var templateObject_1;