@@ -2,13 +2,20 @@ module Yoga.FillInTheGaps.Stories where
3import Prelude hiding (add)
3import Prelude hiding (add)
4import Data.Either (Either(..))
4import Data.Either (Either(..))
5+import Data.Foldable (foldMap)
5import Data.Maybe (Maybe(..))
6import Data.Maybe (Maybe(..))
6import Data.String as String
7import Data.String as String
7−import Debug.Trace (spy)
8+import Data.Tuple.Nested ((/\))
8import Effect (Effect)
9import Effect (Effect)
10+import React.Basic.DOM (css)
11+import React.Basic.DOM as R
12+import React.Basic.Hooks (component, element, fragment, memo, useState)
13+import React.Basic.Hooks as React
9import Storybook.Decorator.FullScreen (fullScreenDecorator)
14import Storybook.Decorator.FullScreen (fullScreenDecorator)
10import Storybook.React (Storybook, add, addDecorator, storiesOf)
15import Storybook.React (Storybook, add, addDecorator, storiesOf)
16+import Yoga.Editor (mkEditor)
11import Yoga.FillInTheGaps.Component as FillInTheGaps
17import Yoga.FillInTheGaps.Component as FillInTheGaps
18+import Yoga.Highlighter.Monaco (monacoHighlighter)
12import Yoga.Highlighter.Types (HTMLString(..), Language(..))
19import Yoga.Highlighter.Types (HTMLString(..), Language(..))
14ctx ∷ { | FillInTheGaps.Ctx () }
21ctx ∷ { | FillInTheGaps.Ctx () }
@@ -30,6 +37,35 @@ stories = do
30 add "The FillInTheGaps" (FillInTheGaps.makeComponent ctx)
37 add "The FillInTheGaps" (FillInTheGaps.makeComponent ctx)
31 [ { code: codeWithHoles }
38 [ { code: codeWithHoles }
40+ add "The FillInTheGaps with highlighted code" withHighlighting
41+ [ { code: codeWithHoles }
45+ editorComponent <- memo mkEditor
46+ component "WithHighlighting" \(props ∷ { code ∷ String }) -> React.do
47+ gaps /\ updateGaps <- useState Nothing
51+ { style: css { visibility: "hidden" }
53+ [ element editorComponent
55+ , language: "purescript"
59+ newCtx = ctx { highlight = (monacoHighlighter editor).highlight }
60+ gapsi <- FillInTheGaps.makeComponent newCtx
61+ updateGaps $ pure <<< pure $ gapsi
67+ element g { code: codeWithHoles }
34codeWithHoles =
70codeWithHoles =