Skip to content

Commit 026377e

Browse files
committed
Merge pull request #1 from slamdata/ready/setup
Add setup option to constructor
2 parents bb1b31f + 9d0be2a commit 026377e

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/Ace/Halogen/Component.purs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,23 @@ import Control.Monad.Eff.Class (MonadEff)
1212

1313
import Data.Maybe (Maybe(..))
1414

15-
import Halogen (Natural(), Component(), ComponentHTML(), ComponentDSL(), SlotConstructor(..), component, action, liftEff', modify, gets)
15+
import Halogen (Natural(), Component(), ComponentHTML(), ComponentDSL(), SlotConstructor(..), component, action, liftEff', liftH, modify, gets)
1616
import Halogen.HTML.Indexed as H
1717
import Halogen.HTML.Properties.Indexed as P
1818

19-
import Ace.Types (ACE())
19+
import Ace.Types (ACE(), Editor())
2020
import Ace.Editor as Editor
2121
import Ace.Halogen.Component.Query
2222
import Ace.Halogen.Component.State
2323

2424
-- | The Ace component.
25-
aceComponent :: forall g eff. (MonadEff (ace :: ACE | eff) g) => Maybe String -> Component AceState AceQuery g
26-
aceComponent initialText = component render eval
25+
aceComponent
26+
:: forall g eff
27+
. (MonadEff (ace :: ACE | eff) g)
28+
=> (Editor -> g Unit)
29+
-> Maybe String
30+
-> Component AceState AceQuery g
31+
aceComponent setup initialText = component render eval
2732
where
2833

2934
render :: AceState -> ComponentHTML AceQuery
@@ -36,6 +41,7 @@ aceComponent initialText = component render eval
3641
case initialText of
3742
Nothing -> pure unit
3843
Just text -> void $ liftEff' $ Editor.setValue text Nothing editor
44+
liftH $ setup editor
3945
pure next
4046
eval (GetText k) = do
4147
state <- gets runAceState
@@ -55,5 +61,15 @@ aceComponent initialText = component render eval
5561

5662
-- | A convenience function for creating a `SlotConstructor` for an Ace
5763
-- | component.
58-
aceConstructor :: forall g p eff. (MonadEff (ace :: ACE | eff) g) => p -> Maybe String -> SlotConstructor AceState AceQuery g p
59-
aceConstructor p initialText = SlotConstructor p \_ -> { component: aceComponent initialText, initialState: initialAceState }
64+
aceConstructor
65+
:: forall g p eff
66+
. (MonadEff (ace :: ACE | eff) g)
67+
=> (Editor -> g Unit)
68+
-> p
69+
-> Maybe String
70+
-> SlotConstructor AceState AceQuery g p
71+
aceConstructor setup p initialText =
72+
SlotConstructor p \_ ->
73+
{ component: aceComponent setup initialText
74+
, initialState: initialAceState
75+
}

0 commit comments

Comments
 (0)