| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import { useStateDesigner } from '@state-designer/react'
- import state from 'state'
- import styled from 'styles'
- import { useRef } from 'react'
-
- export default function StatusBar() {
- const local = useStateDesigner(state)
- const { count, time } = useRenderCount()
-
- const active = local.active.slice(1).map((s) => s.split('root.')[1])
- const log = local.log[0]
-
- return (
- <StatusBarContainer
- size={{
- '@sm': 'small',
- }}
- >
- <Section>{active.join(' | ')}</Section>
- <Section>| {log}</Section>
- {/* <Section
- title="Renders | Time"
- >
- {count} | {time.toString().padStart(3, '0')}
- </Section> */}
- </StatusBarContainer>
- )
- }
-
- const StatusBarContainer = styled('div', {
- position: 'absolute',
- bottom: 0,
- left: 0,
- width: '100%',
- zIndex: 300,
- height: 40,
- userSelect: 'none',
- borderTop: '1px solid black',
- gridArea: 'status',
- display: 'grid',
- gridTemplateColumns: 'auto 1fr auto',
- alignItems: 'center',
- backgroundColor: 'white',
- gap: 8,
- fontSize: '$0',
- padding: '0 16px',
-
- variants: {
- size: {
- small: {
- fontSize: '$1',
- },
- },
- },
- })
-
- const Section = styled('div', {
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- })
-
- function useRenderCount() {
- const rTime = useRef(Date.now())
- const rCounter = useRef(0)
-
- rCounter.current++
- const now = Date.now()
- let time = now - rTime.current
- if (time > 100) {
- time = 0
- }
- rTime.current = now
-
- return { count: rCounter.current, time }
- }
|