|
1 | | -import type { RootState, Storage, WorkspaceSettings } from './store'; |
| 1 | +import type { RootState } from './store'; |
2 | 2 |
|
3 | 3 | const EMPTY_OBJECT = Object.freeze({}); |
4 | 4 |
|
5 | 5 | const EMPTY_MAP: ReadonlyMap<unknown, unknown> = new Map(); |
6 | 6 |
|
7 | 7 | export type Selector<State extends RootState, R> = (store: State) => R; |
| 8 | + |
| 9 | +type Settings<State extends RootState> = State['workspace']['data']['settings']; |
| 10 | + |
8 | 11 | // User |
9 | | -export const getUser = <State extends RootState = RootState>( |
10 | | - store: State |
11 | | -): State['user'] => store.user; |
| 12 | +export const getUser = <State extends RootState>(store: State): State['user'] => |
| 13 | + store.user; |
12 | 14 |
|
13 | | -export const getUserName = <State extends RootState = RootState>( |
| 15 | +export const getUserName = <State extends RootState>( |
14 | 16 | store: State |
15 | 17 | ): State['user']['name'] => getUser(store).name; |
16 | 18 |
|
17 | | -export const getUserGroups = <State extends RootState = RootState>( |
| 19 | +export const getUserGroups = <State extends RootState>( |
18 | 20 | store: State |
19 | 21 | ): State['user']['groups'] => getUser(store).groups; |
20 | 22 |
|
21 | 23 | // Storage |
22 | | -export const getStorage = <State extends RootState = RootState>( |
| 24 | +export const getStorage = <State extends RootState>( |
23 | 25 | store: State |
24 | 26 | ): State['storage'] => store.storage; |
25 | 27 |
|
26 | | -export const getCommandHistoryStorage = <State extends RootState = RootState>( |
| 28 | +export const getCommandHistoryStorage = <State extends RootState>( |
27 | 29 | store: State |
28 | 30 | ): State['storage']['commandHistoryStorage'] => |
29 | 31 | getStorage(store).commandHistoryStorage; |
30 | 32 |
|
31 | | -export const getFileStorage = <State extends RootState = RootState>( |
| 33 | +export const getFileStorage = <State extends RootState>( |
32 | 34 | store: State |
33 | 35 | ): State['storage']['fileStorage'] => getStorage(store).fileStorage; |
34 | 36 |
|
35 | | -export const getWorkspaceStorage = <State extends RootState = RootState>( |
| 37 | +export const getWorkspaceStorage = <State extends RootState>( |
36 | 38 | store: State |
37 | | -): Storage['workspaceStorage'] => getStorage(store).workspaceStorage; |
| 39 | +): State['storage']['workspaceStorage'] => getStorage(store).workspaceStorage; |
38 | 40 |
|
39 | 41 | // Workspace |
40 | | -export const getWorkspace = <State extends RootState = RootState>( |
| 42 | +export const getWorkspace = <State extends RootState>( |
41 | 43 | store: State |
42 | | -): RootState['workspace'] => store.workspace; |
| 44 | +): State['workspace'] => store.workspace; |
43 | 45 |
|
44 | 46 | // Settings |
45 | | -export const getSettings = <State extends RootState = RootState>( |
| 47 | +export const getSettings = <State extends RootState>( |
46 | 48 | store: State |
47 | | -): RootState['workspace']['data']['settings'] => |
48 | | - getWorkspace(store).data.settings; |
| 49 | +): Settings<State> => getWorkspace(store).data.settings; |
49 | 50 |
|
50 | | -export const getDefaultDateTimeFormat = <State extends RootState = RootState>( |
| 51 | +export const getDefaultDateTimeFormat = <State extends RootState>( |
51 | 52 | store: State |
52 | | -): WorkspaceSettings['defaultDateTimeFormat'] => |
| 53 | +): Settings<State>['defaultDateTimeFormat'] => |
53 | 54 | getSettings(store).defaultDateTimeFormat; |
54 | 55 |
|
55 | 56 | export const getDefaultDecimalFormatOptions = < |
56 | 57 | State extends RootState = RootState |
57 | 58 | >( |
58 | 59 | store: State |
59 | | -): WorkspaceSettings['defaultDecimalFormatOptions'] => |
| 60 | +): Settings<State>['defaultDecimalFormatOptions'] => |
60 | 61 | getSettings(store).defaultDecimalFormatOptions ?? EMPTY_OBJECT; |
61 | 62 |
|
62 | 63 | export const getDefaultIntegerFormatOptions = < |
63 | 64 | State extends RootState = RootState |
64 | 65 | >( |
65 | 66 | store: State |
66 | | -): WorkspaceSettings['defaultIntegerFormatOptions'] => |
| 67 | +): Settings<State>['defaultIntegerFormatOptions'] => |
67 | 68 | getSettings(store).defaultIntegerFormatOptions ?? EMPTY_OBJECT; |
68 | 69 |
|
69 | | -export const getFormatter = <State extends RootState = RootState>( |
| 70 | +export const getFormatter = <State extends RootState>( |
70 | 71 | store: State |
71 | | -): WorkspaceSettings['formatter'] => getSettings(store).formatter; |
| 72 | +): Settings<State>['formatter'] => getSettings(store).formatter; |
72 | 73 |
|
73 | | -export const getTimeZone = <State extends RootState = RootState>( |
| 74 | +export const getTimeZone = <State extends RootState>( |
74 | 75 | store: State |
75 | | -): WorkspaceSettings['timeZone'] => getSettings(store).timeZone; |
| 76 | +): Settings<State>['timeZone'] => getSettings(store).timeZone; |
76 | 77 |
|
77 | | -export const getShowTimeZone = <State extends RootState = RootState>( |
| 78 | +export const getShowTimeZone = <State extends RootState>( |
78 | 79 | store: State |
79 | | -): WorkspaceSettings['showTimeZone'] => getSettings(store).showTimeZone; |
| 80 | +): Settings<State>['showTimeZone'] => getSettings(store).showTimeZone; |
80 | 81 |
|
81 | | -export const getShowTSeparator = <State extends RootState = RootState>( |
| 82 | +export const getShowTSeparator = <State extends RootState>( |
82 | 83 | store: State |
83 | | -): WorkspaceSettings['showTSeparator'] => getSettings(store).showTSeparator; |
| 84 | +): Settings<State>['showTSeparator'] => getSettings(store).showTSeparator; |
84 | 85 |
|
85 | 86 | export const getTruncateNumbersWithPound = < |
86 | 87 | State extends RootState = RootState |
87 | 88 | >( |
88 | 89 | store: State |
89 | | -): WorkspaceSettings['truncateNumbersWithPound'] => |
| 90 | +): Settings<State>['truncateNumbersWithPound'] => |
90 | 91 | getSettings(store).truncateNumbersWithPound; |
91 | 92 |
|
92 | | -export const getDisableMoveConfirmation = <State extends RootState = RootState>( |
| 93 | +export const getDisableMoveConfirmation = <State extends RootState>( |
93 | 94 | store: State |
94 | | -): WorkspaceSettings['disableMoveConfirmation'] => |
| 95 | +): Settings<State>['disableMoveConfirmation'] => |
95 | 96 | getSettings(store).disableMoveConfirmation || false; |
96 | 97 |
|
97 | | -export const getShortcutOverrides = <State extends RootState = RootState>( |
| 98 | +export const getShortcutOverrides = <State extends RootState>( |
98 | 99 | store: State |
99 | | -): WorkspaceSettings['shortcutOverrides'] => |
100 | | - getSettings(store).shortcutOverrides; |
| 100 | +): Settings<State>['shortcutOverrides'] => getSettings(store).shortcutOverrides; |
101 | 101 |
|
102 | | -export const getDefaultNotebookSettings = <State extends RootState = RootState>( |
| 102 | +export const getDefaultNotebookSettings = <State extends RootState>( |
103 | 103 | store: State |
104 | | -): WorkspaceSettings['defaultNotebookSettings'] => |
| 104 | +): Settings<State>['defaultNotebookSettings'] => |
105 | 105 | getSettings(store).defaultNotebookSettings ?? EMPTY_OBJECT; |
106 | 106 |
|
107 | | -export const getActiveTool = <State extends RootState = RootState>( |
| 107 | +export const getActiveTool = <State extends RootState>( |
108 | 108 | store: State |
109 | | -): RootState['activeTool'] => store.activeTool; |
| 109 | +): State['activeTool'] => store.activeTool; |
110 | 110 |
|
111 | | -export const getPlugins = <State extends RootState = RootState>( |
| 111 | +export const getPlugins = <State extends RootState>( |
112 | 112 | store: State |
113 | | -): RootState['plugins'] => store.plugins ?? EMPTY_MAP; |
| 113 | +): State['plugins'] => store.plugins ?? EMPTY_MAP; |
0 commit comments