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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
module Gargantext.Components.PhyloExplorer.Store
( Store
, State
, options
, context
, provide
, use
) where
import Gargantext.Prelude
import Data.Maybe (Maybe(..))
import Gargantext.Components.PhyloExplorer.Types (CorpusId, DisplayView(..), ExtractedCount, ExtractedTerm, FrameDoc, PhyloData, Source, TabView(..), Term, ListId, defaultCacheParams)
import Gargantext.Types (NodeID, SidePanelState(..))
import Gargantext.Utils (getter)
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Stores as Stores
import Reactix as R
import Toestand as T
import Unsafe.Coerce (unsafeCoerce)
here :: R2.Here
here = R2.here "Gargantext.Components.GraphExplorer.Store"
type Store =
-- Data
( phyloData :: T.Box PhyloData
, phyloId :: T.Box NodeID
, corpusId :: T.Box CorpusId
, listId :: T.Box ListId
, isBuilt :: T.Box Boolean
-- Layout
, toolBarDisplayed :: T.Box Boolean
, isIsolineDisplayed :: T.Box Boolean
, sideBarDisplayed :: T.Box SidePanelState
, sideBarTabView :: T.Box TabView
, frameDoc :: T.Box (Maybe FrameDoc)
, expandSelection :: T.Box Boolean
, expandNeighborhood :: T.Box Boolean
-- Topbar
, source :: T.Box String
, sources :: T.Box (Array Source)
, terms :: T.Box (Array Term)
, search :: T.Box String
, result :: T.Box (Maybe Term)
-- Sidebar
, extractedTerms :: T.Box (Array ExtractedTerm)
, selectedTerm :: T.Box (Maybe String)
, selectedBranch :: T.Box (Maybe String)
, selectedSource :: T.Box (Maybe String)
, extractedCount :: T.Box (Maybe ExtractedCount)
-- Toolbar
, displayView :: T.Box DisplayView
)
type State =
-- Data
( phyloData :: PhyloData
, phyloId :: NodeID
, corpusId :: CorpusId
, listId :: ListId
, isBuilt :: Boolean
-- Layout
, toolBarDisplayed :: Boolean
, isIsolineDisplayed :: Boolean
, sideBarDisplayed :: SidePanelState
, sideBarTabView :: TabView
, frameDoc :: Maybe FrameDoc
, expandSelection :: Boolean
, expandNeighborhood :: Boolean
-- Topbar
, source :: String
, sources :: Array Source
, terms :: Array Term
, search :: String
, result :: Maybe Term
-- Sidebar
, extractedTerms :: Array ExtractedTerm
, selectedTerm :: Maybe String
, selectedBranch :: Maybe String
, selectedSource :: Maybe String
, extractedCount :: Maybe ExtractedCount
-- Toolbar
, displayView :: DisplayView
)
options ::
{ isBuilt :: Boolean
-- Layout
, toolBarDisplayed :: Boolean
, isIsolineDisplayed :: Boolean
, sideBarDisplayed :: SidePanelState
, sideBarTabView :: TabView
, frameDoc :: Maybe FrameDoc
, expandSelection :: Boolean
, expandNeighborhood :: Boolean
-- Topbar
, source :: String
, sources :: Array Source
, terms :: Array Term
, search :: String
, result :: Maybe Term
-- Sidebar
, extractedTerms :: Array ExtractedTerm
, selectedTerm :: Maybe String
, selectedBranch :: Maybe String
, selectedSource :: Maybe String
, extractedCount :: Maybe ExtractedCount
-- Toolbar
, displayView :: DisplayView
}
options =
-- Data
{ isBuilt : false
-- Layout
, toolBarDisplayed : false
, isIsolineDisplayed : false
, sideBarDisplayed : InitialClosed
, sideBarTabView : DetailsTab
, frameDoc : Nothing
, expandSelection : getter _.expandSelection defaultCacheParams
, expandNeighborhood : getter _.expandNeighborhood defaultCacheParams
-- Topbar
, source : ""
, sources : mempty
, terms : mempty
, search : ""
, result : Nothing
-- Sidebar
, extractedTerms : mempty
, selectedTerm : Nothing
, selectedBranch : Nothing
, selectedSource : Nothing
, extractedCount : Nothing
-- Toolbar
, displayView : HeadingMode
}
context :: R.Context (Record Store)
context = R.createContext $ unsafeCoerce unit
provide :: Record State -> Array R.Element -> R.Element
provide values = Stores.provideStore here.name values context
use :: R.Hooks (Record Store)
use = Stores.useStore context