-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathselectors.ts
120 lines (100 loc) · 2.65 KB
/
selectors.ts
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import { createSelector } from 'reselect';
import * as parentSelectors from '../selectors';
import { defaultTheme } from './components/constants';
import { hasOSWebData } from './guards';
import { getIdFromPageParam } from './utils';
import {
archiveTreeSectionIsChapter,
findArchiveTreeNode,
findArchiveTreeNodeByPageParam,
prevNextBookPage,
} from './utils/archiveTreeUtils';
export const localState = createSelector(
parentSelectors.localState,
(parentState) => parentState.content
);
export const tocOpen = createSelector(
localState,
(state) => !state.search.query && state.tocOpen
);
export const mobileMenuOpen = createSelector(
localState,
(state) => state.mobileMenuOpen
);
export const book = createSelector(
localState,
(state) => state.book
);
export const bookTheme = createSelector(
book,
(currentBook) => hasOSWebData(currentBook) ? currentBook.theme : defaultTheme
);
export const showNudgeStudyTools = createSelector(
localState,
(state) => state.showNudgeStudyTools
);
export const contentReferences = createSelector(
localState,
(state) => state.references
);
export const page = createSelector(
localState,
(state) => state.page
);
export const loading = createSelector(
localState,
(state) => state.loading
);
export const loadingBook = createSelector(
loading,
(slugs) => slugs.book
);
export const loadingPage = createSelector(
loading,
(slugs) => slugs.page
);
export const contentParams = createSelector(
localState,
(state) => state.params
);
export const pageParam = createSelector(
contentParams,
(params) => params ? params.page : null
);
export const pageNotFound = createSelector(
localState,
pageParam,
(state, param) => getIdFromPageParam(param) === state.pageNotFoundId
);
export const pageNode = createSelector(
book,
pageParam,
(selectedBook, selectedPageParam) => selectedBook && selectedPageParam
? findArchiveTreeNodeByPageParam(selectedBook.tree, selectedPageParam)
: undefined
);
export const bookAndPage = createSelector(
book,
page,
(selectedBook, selectedPage) => ({book: selectedBook, page: selectedPage})
);
export const firstChapter = createSelector(
book,
(selectedBook) =>
selectedBook && selectedBook.tree && findArchiveTreeNode(archiveTreeSectionIsChapter, selectedBook.tree)
);
export const prevNextPage = createSelector(
book,
page,
(selectedBook, selectedPage) => selectedBook && selectedPage
? prevNextBookPage(selectedBook, selectedPage.id)
: null
);
export const textSize = createSelector(
localState,
(state) => state.textSize
);
export const bookStylesUrl = createSelector(
localState,
(state) => state.bookStylesUrl
);