2018-12-22 03:10:49 +03:00
|
|
|
import React from 'react';
|
2020-08-31 00:49:06 +03:00
|
|
|
import PropTypes from 'prop-types';
|
2022-01-10 18:41:53 +03:00
|
|
|
import { JSONTree } from 'react-json-tree';
|
2020-08-31 00:49:06 +03:00
|
|
|
import { Action } from 'redux';
|
2018-12-22 03:10:49 +03:00
|
|
|
import getItemString from './getItemString';
|
|
|
|
import getJsonTreeTheme from './getJsonTreeTheme';
|
2020-08-31 00:49:06 +03:00
|
|
|
import { TabComponentProps } from '../ActionPreview';
|
2018-12-22 03:10:49 +03:00
|
|
|
|
2021-06-18 06:56:36 +03:00
|
|
|
const StateTab: React.FunctionComponent<
|
|
|
|
TabComponentProps<any, Action<unknown>>
|
|
|
|
> = ({
|
2019-01-10 21:51:14 +03:00
|
|
|
nextState,
|
|
|
|
styling,
|
|
|
|
base16Theme,
|
|
|
|
invertTheme,
|
|
|
|
labelRenderer,
|
|
|
|
dataTypeKey,
|
2020-08-08 23:26:39 +03:00
|
|
|
isWideLayout,
|
2019-01-10 21:51:14 +03:00
|
|
|
}) => (
|
|
|
|
<JSONTree
|
2018-12-22 03:10:49 +03:00
|
|
|
labelRenderer={labelRenderer}
|
|
|
|
theme={getJsonTreeTheme(base16Theme)}
|
|
|
|
data={nextState}
|
2019-01-10 21:51:14 +03:00
|
|
|
getItemString={(type, data) =>
|
|
|
|
getItemString(styling, type, data, dataTypeKey, isWideLayout)
|
|
|
|
}
|
2018-12-22 03:10:49 +03:00
|
|
|
invertTheme={invertTheme}
|
|
|
|
hideRoot
|
2019-01-10 21:51:14 +03:00
|
|
|
/>
|
|
|
|
);
|
2018-12-22 03:10:49 +03:00
|
|
|
|
2020-08-31 00:49:06 +03:00
|
|
|
StateTab.propTypes = {
|
|
|
|
nextState: PropTypes.any.isRequired,
|
|
|
|
styling: PropTypes.func.isRequired,
|
|
|
|
base16Theme: PropTypes.any.isRequired,
|
|
|
|
invertTheme: PropTypes.bool.isRequired,
|
|
|
|
labelRenderer: PropTypes.func.isRequired,
|
2022-01-08 05:10:50 +03:00
|
|
|
dataTypeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.symbol]),
|
2020-08-31 00:49:06 +03:00
|
|
|
isWideLayout: PropTypes.bool.isRequired,
|
|
|
|
};
|
|
|
|
|
2018-12-22 03:10:49 +03:00
|
|
|
export default StateTab;
|