@@ -5,19 +5,15 @@ import Prelude
55import CSS.Safer (cssSafer)
66import Control.Promise (Promise)
77import Control.Promise as Promise
8−import Data.Maybe (Maybe(..))
9−import Data.Nullable (notNull, null)
8+import Data.Nullable (Nullable, notNull)
109import Effect (Effect)
1110import Effect.Aff (Aff)
1211import Effect.Class (liftEffect)
13−import Effect.Class.Console (warn)
1412import Effect.Uncurried (EffectFn2, mkEffectFn2)
1513import Foreign (Foreign, unsafeToForeign)
1614import Prim.Row (class Union)
1715import React.Basic (JSX, ReactComponent, element, fragment)
18−import React.Basic.DOM as R
19−import React.Basic.Events (handler_)
20−import React.Basic.Hooks (component, readRefMaybe, useRef, writeRef)
16+import React.Basic.Hooks (Ref, component, writeRef)
2117import React.Basic.Hooks as React
2218import React.Basic.Hooks.Aff (useAff)
2319import React.Helpers (wrapperDiv)
@@ -85,7 +81,7 @@ initEditor = do
8581 registerLanguageImpl monaco "purescript" # liftEffect
8682 setMonarchTokensProviderImpl monaco "purescript" purescriptSyntax # liftEffect
8783
88−mkEditor ∷ Effect (ReactComponent {})
84+mkEditor ∷ Effect (ReactComponent { editorRef ∷ Ref (Nullable _) })
8985mkEditor = do
9086 useStyles <-
9187 makeStyles \(theme ∷ CSSTheme) ->
@@ -100,25 +96,14 @@ mkEditor = do
10096 , backgroundColor: theme.backgroundColour
10197 }
10298 }
103− component "Editor" \{} -> React.do
99+ component "Editor" \{ editorRef } -> React.do
104100 classes <- useStyles
105− ref <- useRef null
106101 useAff unit initEditor
107102 theme <- useTheme
108103 let themeName = if theme.isLight then lightThemeName else darkThemeName
109104 pure
110105 $ fragment
111− [ R.button
112− { onClick:
113− handler_ do
114− maybeEditor <- readRefMaybe ref
115− case maybeEditor of
116− Nothing -> pure unit
117− Just ed -> do
118− v <- getValue ed
119− warn $ "Value: " <> v
120− }
121− , wrapperDiv { className: classes.wrapper }
106+ [ wrapperDiv { className: classes.wrapper }
122107 $ element editor
123108 { theme: themeName
124109 , options:
@@ -136,6 +121,6 @@ mkEditor = do
136121 , language: "purescript"
137122 -- https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-custom-languages
138123 , editorDidMount:
139− mkEffectFn2 \_ -> notNull >>> writeRef ref
124+ mkEffectFn2 \_ -> notNull >>> writeRef editorRef
140125 }
141126 ]