test-tab demo

This commit is contained in:
Nathan Bierema 2022-05-15 17:05:24 -04:00
parent f63774863d
commit 0c4229d24b
5 changed files with 82 additions and 89 deletions

View File

@ -36,7 +36,6 @@
"@types/react": "^17.0.45", "@types/react": "^17.0.45",
"@types/react-dom": "^17.0.16", "@types/react-dom": "^17.0.16",
"@types/react-redux": "^7.1.24", "@types/react-redux": "^7.1.24",
"@types/react-router-dom": "^5.3.3",
"@types/redux-logger": "^3.0.9", "@types/redux-logger": "^3.0.9",
"@types/styled-components": "^5.1.25", "@types/styled-components": "^5.1.25",
"@types/webpack-env": "^1.16.4", "@types/webpack-env": "^1.16.4",

View File

@ -1,8 +1,8 @@
import React, { CSSProperties } from 'react'; import React, { CSSProperties, useRef } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Button, Toolbar, Spacer } from '@redux-devtools/ui'; import { Button, Toolbar, Spacer } from '@redux-devtools/ui';
import pkg from '@redux-devtools/inspector-monitor-test-tab/package.json'; import pkg from '@redux-devtools/inspector-monitor-test-tab/package.json';
import { RouteComponentProps, withRouter } from 'react-router-dom'; import { useLocation } from 'react-router-dom';
import getOptions from './getOptions'; import getOptions from './getOptions';
import { DemoAppState } from './reducers'; import { DemoAppState } from './reducers';
import { import {
@ -69,87 +69,84 @@ interface Props
shuffleArray: () => void; shuffleArray: () => void;
} }
class DemoApp extends React.Component<Props & RouteComponentProps> { function DemoApp(props: Props) {
timeout?: number; const timeout = useRef<number | undefined>();
const location = useLocation();
render() { const options = getOptions(location);
const options = getOptions(this.props.location);
return ( const toggleTimeoutUpdate = () => {
<div style={styles.wrapper}> const enabled = !props.timeoutUpdateEnabled;
<h3>{pkg.name || <span style={styles.muted}>Package Name</span>}</h3> props.toggleTimeoutUpdate(enabled);
<h5>
{pkg.description || (
<span style={styles.muted}>Package Description</span>
)}
</h5>
<Toolbar>
<Spacer />
<Button onClick={this.props.increment}>Increment</Button>
<Button onClick={this.props.push}>Push</Button>
<Button onClick={this.props.pop}>Pop</Button>
<Button onClick={this.props.replace}>Replace</Button>
<Button onClick={this.props.changeNested}>Change Nested</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={this.props.pushHugeArray}>Push Huge Array</Button>
<Button onClick={this.props.addHugeObject}>Add Huge Object</Button>
<Button onClick={this.props.hugePayload}>Huge Payload</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={this.props.addIterator}>Add Iterator</Button>
<Button onClick={this.props.addImmutableMap}>
Add Immutable Map
</Button>
<Button onClick={this.props.changeImmutableNested}>
Change Immutable Nested
</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={this.props.addRecursive}>Add Recursive</Button>
<Button onClick={this.props.addFunction}>Add Function</Button>
<Button onClick={this.props.addSymbol}>Add Symbol</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={this.toggleTimeoutUpdate}>
Timeout Update {this.props.timeoutUpdateEnabled ? 'On' : 'Off'}
</Button>
<Button onClick={this.props.shuffleArray}>Shuffle Array</Button>
<Spacer />
</Toolbar>
<div>
{options.useExtension ? (
<a href={`${ROOT}`} style={styles.link}>
Disable browser extension
</a>
) : (
<a href={`${ROOT}?ext`} style={styles.link}>
Use browser extension
</a>
)}
</div>
</div>
);
}
toggleTimeoutUpdate = () => {
const enabled = !this.props.timeoutUpdateEnabled;
this.props.toggleTimeoutUpdate(enabled);
if (enabled) { if (enabled) {
this.timeout = window.setInterval(this.props.timeoutUpdate, 1000); timeout.current = window.setInterval(props.timeoutUpdate, 1000);
} else { } else {
clearTimeout(this.timeout); clearTimeout(timeout.current);
} }
}; };
return (
<div style={styles.wrapper}>
<h3>{pkg.name || <span style={styles.muted}>Package Name</span>}</h3>
<h5>
{pkg.description || (
<span style={styles.muted}>Package Description</span>
)}
</h5>
<Toolbar>
<Spacer />
<Button onClick={props.increment}>Increment</Button>
<Button onClick={props.push}>Push</Button>
<Button onClick={props.pop}>Pop</Button>
<Button onClick={props.replace}>Replace</Button>
<Button onClick={props.changeNested}>Change Nested</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={props.pushHugeArray}>Push Huge Array</Button>
<Button onClick={props.addHugeObject}>Add Huge Object</Button>
<Button onClick={props.hugePayload}>Huge Payload</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={props.addIterator}>Add Iterator</Button>
<Button onClick={props.addImmutableMap}>Add Immutable Map</Button>
<Button onClick={props.changeImmutableNested}>
Change Immutable Nested
</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={props.addRecursive}>Add Recursive</Button>
<Button onClick={props.addFunction}>Add Function</Button>
<Button onClick={props.addSymbol}>Add Symbol</Button>
<Spacer />
</Toolbar>
<Toolbar>
<Spacer />
<Button onClick={toggleTimeoutUpdate}>
Timeout Update {props.timeoutUpdateEnabled ? 'On' : 'Off'}
</Button>
<Button onClick={props.shuffleArray}>Shuffle Array</Button>
<Spacer />
</Toolbar>
<div>
{options.useExtension ? (
<a href={`${ROOT}`} style={styles.link}>
Disable browser extension
</a>
) : (
<a href={`${ROOT}?ext`} style={styles.link}>
Use browser extension
</a>
)}
</div>
</div>
);
} }
export default connect((state: DemoAppState) => state, { export default connect((state: DemoAppState) => state, {
@ -180,4 +177,4 @@ export default connect((state: DemoAppState) => state, {
addFunction: (): AddFunctionAction => ({ type: 'ADD_FUNCTION' }), addFunction: (): AddFunctionAction => ({ type: 'ADD_FUNCTION' }),
addSymbol: (): AddSymbolAction => ({ type: 'ADD_SYMBOL' }), addSymbol: (): AddSymbolAction => ({ type: 'ADD_SYMBOL' }),
shuffleArray: (): ShuffleArrayAction => ({ type: 'SHUFFLE_ARRAY' }), shuffleArray: (): ShuffleArrayAction => ({ type: 'SHUFFLE_ARRAY' }),
})(withRouter(DemoApp)); })(DemoApp);

View File

@ -6,7 +6,7 @@ import {
Tab, Tab,
} from '@redux-devtools/inspector-monitor'; } from '@redux-devtools/inspector-monitor';
import { DockMonitor } from '@redux-devtools/dock-monitor'; import { DockMonitor } from '@redux-devtools/dock-monitor';
import { RouteComponentProps, withRouter } from 'react-router-dom'; import { useLocation } from 'react-router-dom';
import getOptions from './getOptions'; import getOptions from './getOptions';
import { TestTab } from '@redux-devtools/inspector-monitor-test-tab'; import { TestTab } from '@redux-devtools/inspector-monitor-test-tab';
import { Action } from 'redux'; import { Action } from 'redux';
@ -36,9 +36,8 @@ export const getDevTools = (location: { search: string }) =>
</DockMonitor> </DockMonitor>
); );
const UnconnectedDevTools = ({ location }: RouteComponentProps) => { export function ConnectedDevTools() {
const location = useLocation();
const DevTools = getDevTools(location); const DevTools = getDevTools(location);
return <DevTools />; return <DevTools />;
}; }
export const ConnectedDevTools = withRouter(UnconnectedDevTools);

View File

@ -10,7 +10,7 @@ import {
StoreEnhancerStoreCreator, StoreEnhancerStoreCreator,
} from 'redux'; } from 'redux';
import logger from 'redux-logger'; import logger from 'redux-logger';
import { BrowserRouter, Route } from 'react-router-dom'; import { BrowserRouter, Route, Routes } from 'react-router-dom';
import { persistState } from '@redux-devtools/core'; import { persistState } from '@redux-devtools/core';
import DemoApp from './DemoApp'; import DemoApp from './DemoApp';
import { rootReducer } from './reducers'; import { rootReducer } from './reducers';
@ -60,9 +60,9 @@ render(
colorPreference: 'auto', colorPreference: 'auto',
}} }}
> >
<Route path={ROOT}> <Routes>
<DemoApp /> <Route path={ROOT} element={<DemoApp />} />
</Route> </Routes>
{!useDevtoolsExtension && <ConnectedDevTools />} {!useDevtoolsExtension && <ConnectedDevTools />}
</Container> </Container>
</BrowserRouter> </BrowserRouter>

View File

@ -1375,7 +1375,6 @@ importers:
'@types/react': ^17.0.45 '@types/react': ^17.0.45
'@types/react-dom': ^17.0.16 '@types/react-dom': ^17.0.16
'@types/react-redux': ^7.1.24 '@types/react-redux': ^7.1.24
'@types/react-router-dom': ^5.3.3
'@types/redux-logger': ^3.0.9 '@types/redux-logger': ^3.0.9
'@types/styled-components': ^5.1.25 '@types/styled-components': ^5.1.25
'@types/webpack-env': ^1.16.4 '@types/webpack-env': ^1.16.4
@ -1432,7 +1431,6 @@ importers:
'@types/react': 17.0.45 '@types/react': 17.0.45
'@types/react-dom': 17.0.16 '@types/react-dom': 17.0.16
'@types/react-redux': 7.1.24 '@types/react-redux': 7.1.24
'@types/react-router-dom': 5.3.3
'@types/redux-logger': 3.0.9 '@types/redux-logger': 3.0.9
'@types/styled-components': 5.1.25 '@types/styled-components': 5.1.25
'@types/webpack-env': 1.16.4 '@types/webpack-env': 1.16.4