forked from deephaven/web-client-ui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
StyleGuideInit.tsx
51 lines (43 loc) · 1.29 KB
/
StyleGuideInit.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import {
getWorkspace,
PayloadActionCreator,
RootState,
setWorkspace as setWorkspaceAction,
Workspace,
} from '@deephaven/redux';
import StyleGuide from './StyleGuide';
import LocalWorkspaceStorage from '../storage/LocalWorkspaceStorage';
import { ExportedLayout } from '../storage/LayoutStorage';
/**
* Initialize data needed for the styleguide
*/
function StyleGuideInit(props: {
workspace: Workspace;
setWorkspace: PayloadActionCreator<Workspace>;
}) {
const { workspace, setWorkspace } = props;
useEffect(() => {
LocalWorkspaceStorage.makeDefaultWorkspace({
getLayouts: async () => [] as string[],
getLayout: async () => ({} as ExportedLayout),
}).then(setWorkspace);
}, [setWorkspace]);
return workspace != null ? <StyleGuide /> : null;
}
StyleGuideInit.propTypes = {
workspace: PropTypes.shape({}),
setWorkspace: PropTypes.func.isRequired,
};
StyleGuideInit.defaultProps = {
workspace: null,
};
const mapStateToProps = (state: RootState) => ({
workspace: getWorkspace(state),
});
const ConnectedStyleGuideInit = connect(mapStateToProps, {
setWorkspace: setWorkspaceAction,
})(StyleGuideInit);
export default ConnectedStyleGuideInit;