forked from deephaven/web-client-ui
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStyleGuideInit.tsx
More file actions
57 lines (49 loc) · 1.36 KB
/
StyleGuideInit.tsx
File metadata and controls
57 lines (49 loc) · 1.36 KB
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
52
53
54
55
56
57
import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import {
type CustomizableWorkspace,
getWorkspace,
type PayloadActionCreator,
type RootState,
setWorkspace as setWorkspaceAction,
} from '@deephaven/redux';
import {
type ExportedLayout,
LocalWorkspaceStorage,
} from '@deephaven/app-utils';
import StyleGuide from './StyleGuide';
/**
* Initialize data needed for the styleguide
*/
function StyleGuideInit(props: {
workspace: CustomizableWorkspace;
setWorkspace: PayloadActionCreator<CustomizableWorkspace>;
}): JSX.Element | null {
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: CustomizableWorkspace;
} => ({
workspace: getWorkspace(state),
});
const ConnectedStyleGuideInit = connect(mapStateToProps, {
setWorkspace: setWorkspaceAction,
})(StyleGuideInit);
export default ConnectedStyleGuideInit;