@@ -128,10 +128,10 @@ type SupportsImmediateDomBuilder t m = (Reflex t, MonadIO m, MonadHold t m, Mona
128newtype EventFilterTriggerRef t er (en :: EventTag) = EventFilterTriggerRef (IORef (Maybe (EventTrigger t (er en))))
128newtype EventFilterTriggerRef t er (en :: EventTag) = EventFilterTriggerRef (IORef (Maybe (EventTrigger t (er en))))
130{-# INLINABLE makeElement #-}
130{-# INLINABLE makeElement #-}
131−makeElement :: forall er t m a. SupportsImmediateDomBuilder t m => Text -> ElementConfig er t (ImmediateDomBuilderT t m) -> ImmediateDomBuilderT t m a -> ImmediateDomBuilderT t m ((Element er GhcjsDomSpace t, a), DOM.Element)
131+makeElement :: forall er t m a. SupportsImmediateDomBuilder t m => Text -> ElementConfig er t (ImmediateDomBuilderT t m) -> ImmediateDomBuilderT t m a -> ImmediateDomBuilderT t m ((Element er GhcjsDomSpace t, a), DOM.HTMLElement)
132makeElement elementTag cfg child = do
132makeElement elementTag cfg child = do
133 doc <- askDocument
133 doc <- askDocument
134− Just e <- ImmediateDomBuilderT $ case cfg ^. namespace of
134+ Just e <- ImmediateDomBuilderT $ fmap DOM.castToHTMLElement <$> case cfg ^. namespace of
135 Nothing -> createElement doc (Just elementTag)
135 Nothing -> createElement doc (Just elementTag)
136 Just ens -> createElementNS doc (Just ens) (Just elementTag)
136 Just ens -> createElementNS doc (Just ens) (Just elementTag)
137 ImmediateDomBuilderT $ iforM_ (cfg ^. initialAttributes) $ \(mAttrNamespace, n) v -> case mAttrNamespace of
137 ImmediateDomBuilderT $ iforM_ (cfg ^. initialAttributes) $ \(mAttrNamespace, n) v -> case mAttrNamespace of
@@ -191,7 +191,9 @@ instance DomSpace GhcjsDomSpace where
191 type DomHandler1 GhcjsDomSpace = GhcjsDomHandler1
191 type DomHandler1 GhcjsDomSpace = GhcjsDomHandler1
192 type RawEvent GhcjsDomSpace = GhcjsDomEvent
192 type RawEvent GhcjsDomSpace = GhcjsDomEvent
193 type RawTextNode GhcjsDomSpace = DOM.Text
193 type RawTextNode GhcjsDomSpace = DOM.Text
194− type RawElement GhcjsDomSpace = DOM.Element
194+ type RawElement GhcjsDomSpace = DOM.HTMLElement
195+ type RawInputElement GhcjsDomSpace = DOM.HTMLInputElement
196+ type RawTextAreaElement GhcjsDomSpace = DOM.HTMLTextAreaElement
195 {-# INLINABLE defaultEventHandler #-}
197 {-# INLINABLE defaultEventHandler #-}
196 defaultEventHandler _ = GhcjsDomHandler1 $ \(Pair1 en (GhcjsDomEvent evt)) -> do
198 defaultEventHandler _ = GhcjsDomHandler1 $ \(Pair1 en (GhcjsDomEvent evt)) -> do
197 Just t <- withIsEvent en $ Event.getTarget evt
199 Just t <- withIsEvent en $ Event.getTarget evt
@@ -258,6 +260,7 @@ instance SupportsImmediateDomBuilder t m => DomBuilder t (ImmediateDomBuilderT t
258 , _inputElement_input = valueChangedByUI
260 , _inputElement_input = valueChangedByUI
259 , _inputElement_hasFocus = hasFocus
261 , _inputElement_hasFocus = hasFocus
260 , _inputElement_element = e
262 , _inputElement_element = e
263+ , _inputElement_raw = domInputElement
262 {-# INLINABLE textAreaElement #-}
265 {-# INLINABLE textAreaElement #-}
263 textAreaElement cfg = do --TODO
266 textAreaElement cfg = do --TODO
@@ -278,7 +281,13 @@ instance SupportsImmediateDomBuilder t m => DomBuilder t (ImmediateDomBuilderT t
278 [ False <$ Reflex.select (_element_events e) (WrapArg Blur)
281 [ False <$ Reflex.select (_element_events e) (WrapArg Blur)
279 , True <$ Reflex.select (_element_events e) (WrapArg Focus)
282 , True <$ Reflex.select (_element_events e) (WrapArg Focus)
281− return $ TextAreaElement v valueChangedByUI hasFocus e
284+ return $ TextAreaElement
285+ { _textAreaElement_value = v
286+ , _textAreaElement_input = valueChangedByUI
287+ , _textAreaElement_hasFocus = hasFocus
288+ , _textAreaElement_element = e
289+ , _textAreaElement_raw = domTextAreaElement
283{-# INLINABLE insertImmediateAbove #-}
292{-# INLINABLE insertImmediateAbove #-}
284insertImmediateAbove :: (Reflex t, IsNode placeholder, PerformEvent t m, MonadIO (Performable m)) => placeholder -> Event t (ImmediateDomBuilderT t (Performable m) a) -> ImmediateDomBuilderT t m (Event t a)
293insertImmediateAbove :: (Reflex t, IsNode placeholder, PerformEvent t m, MonadIO (Performable m)) => placeholder -> Event t (ImmediateDomBuilderT t (Performable m) a) -> ImmediateDomBuilderT t m (Event t a)