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
|
import { Webview } from 'react-electron-web-view';
import PropTypes from 'prop-types';
import { createActionsFromDefinitions } from '../../actions/lib/actions';
export interface TodoClientMessage {
action: string;
data: object;
}
interface TodoActionsType {
resize: (width: number) => void;
toggleTodosPanel: () => void;
toggleTodosFeatureVisibility: () => void;
setTodosWebview: (webview: Webview) => void;
handleHostMessage: (action: string, data: object) => void;
handleClientMessage: (channel: string, message: TodoClientMessage) => void;
openDevTools: () => void;
reload: () => void;
}
export const todoActions = createActionsFromDefinitions<TodoActionsType>(
{
resize: {
width: PropTypes.number.isRequired,
},
toggleTodosPanel: {},
toggleTodosFeatureVisibility: {},
setTodosWebview: {
webview: PropTypes.instanceOf(Element).isRequired,
},
handleHostMessage: {
action: PropTypes.string.isRequired,
data: PropTypes.object,
},
handleClientMessage: {
channel: PropTypes.string.isRequired,
message: PropTypes.shape({
action: PropTypes.string.isRequired,
data: PropTypes.object,
}),
},
openDevTools: {},
reload: {},
},
PropTypes.checkPropTypes,
);
export default todoActions;
|