-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathselectors.js
44 lines (38 loc) · 1.21 KB
/
selectors.js
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
import _ from 'lodash'
export function getItem(state, itemId) {
let item = state.visibleItems[itemId]
if (!item)
throw new Error('No item with id ' + itemId + ' found in state.')
return item
}
export function getItemIdForDocId(state, docId) {
let itemId = _.findKey(state.visibleItems, item => (item.docId === docId))
if (!itemId)
throw new Error('No item with docId ' + docId + ' found in state.')
return itemId
}
export function getCenteredItem(state) {
let currentItem = state.centeredItem
if (!currentItem) {
return undefined
}
else {
return getItem(state, currentItem)
}
}
export function getConnectedItemIds(state, itemId) {
return _(state.edges)
.pickBy(edge => (edge.sourceItemId === itemId || edge.targetItemId === itemId))
.map(edge => edge.sourceItemId === itemId ? edge.targetItemId : edge.sourceItemId)
.value()
}
export function getVisibleLinksOfItem(state, itemId) {
return (_(state.edges)
.pickBy(edge => (edge.sourceItemId === itemId || edge.targetItemId === itemId))
.map('linkId')
.value()
)
}
export function isFocussed(state, itemId) {
return (state.focussedItem === itemId)
}