@@ -137,7 +137,8 @@ textNodeInternal t = do
137137 append n
138138 return n
139139
140−-- | s and e must both be children of the same node and s must precede e
140+-- | s and e must both be children of the same node and s must precede e;
141+-- s, e and all nodes between s and e will be removed
141142{-# INLINABLE deleteBetweenInclusive #-}
142143deleteBetweenInclusive :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m ()
143144deleteBetweenInclusive s e = liftJSM $ do
@@ -153,16 +154,8 @@ deleteBetweenInclusive s e = liftJSM $ do
153154 }})" :: Text)
154155 void $ call f f (s, e)
155156
156−-- do
157−-- mCurrentParent <- getParentNode e -- May be different than it was at initial construction, e.g., because the parent may have dumped us in from a DocumentFragment
158−-- case mCurrentParent of
159−-- Nothing -> return () --TODO: Is this the right behavior?
160−-- Just currentParent -> do
161−-- deleteUpToGivenParent currentParent s e
162−-- removeChild_ currentParent $ Just e
163−-- return ()
164−
165−-- | s and e must both be children of the same node and s must precede e
157+-- | s and e must both be children of the same node and s must precede e;
158+-- all nodes between s and e will be removed, but s and e will not be removed
166159deleteBetweenExclusive :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m ()
167160deleteBetweenExclusive s e = liftJSM $ do
168161 f <- eval ("(function(s,e){ \
@@ -170,29 +163,14 @@ deleteBetweenExclusive s e = liftJSM $ do
170163 if(p !== null) { \
171164 for(;;){ \
172165 x = e.previousSibling; \
173− p.removeChild(x); \
174166 if(s===x) break; \
167+ p.removeChild(x); \
175168 } \
176− p.removeChild(e); \
177169 }})" :: Text)
178170 void $ call f f (s, e)
179171
180−-- do
181−-- mCurrentParent <- getParentNode e -- May be different than it was at initial construction, e.g., because the parent may have dumped us in from a DocumentFragment
182−-- case mCurrentParent of
183−-- Nothing -> return () --TODO: Is this the right behavior?
184−-- Just currentParent -> do
185−-- let go = do
186−-- x <- getPreviousSiblingUnchecked e -- This can't be Nothing because we should hit 's' first
187−-- removeChild_ currentParent $ Just x
188−-- liftJSM (strictEqual s x) >>= \case
189−-- True -> return ()
190−-- False -> go
191−-- go
192−-- removeChild_ currentParent $ Just e
193−-- return ()
194−
195−-- | s and e must both be children of the same node and s must precede e; s and all nodes between s and e will be removed, but e will not be removed
172+-- | s and e must both be children of the same node and s must precede e;
173+-- s and all nodes between s and e will be removed, but e will not be removed
196174{-# INLINABLE deleteUpTo #-}
197175deleteUpTo :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m ()
198176deleteUpTo s e = liftJSM $ do
@@ -206,12 +184,8 @@ deleteUpTo s e = liftJSM $ do
206184 } \
207185 }})" :: Text)
208186 void $ call f f (s, e)
209−-- do
210−-- mCurrentParent <- getParentNode e -- May be different than it was at initial construction, e.g., because the parent may have dumped us in from a DocumentFragment
211−-- case mCurrentParent of
212−-- Nothing -> return () --TODO: Is this the right behavior?
213−-- Just currentParent -> deleteUpToGivenParent currentParent s e
214187
188+-- | s and all nodes between s and e will be removed, but e will not be removed
215189{-# INLINABLE deleteUpToGivenParent #-}
216190deleteUpToGivenParent :: (MonadJSM m, IsNode parent, IsNode start, IsNode end) => parent -> start -> end -> m ()
217191deleteUpToGivenParent currentParent s e = liftJSM $ do
@@ -222,13 +196,6 @@ deleteUpToGivenParent currentParent s e = liftJSM $ do
222196 if(s===x) break; \
223197 }})" :: Text)
224198 void $ call f f (currentParent, s, e)
225−--do
226−-- fix $ \loop -> do
227−-- x <- getPreviousSiblingUnchecked e -- This can't be Nothing because we should hit 's' first
228−-- removeChild_ currentParent $ Just x
229−-- liftJSM (strictEqual s x) >>= \case
230−-- True -> return ()
231−-- False -> loop
232199
233200type SupportsImmediateDomBuilder t m = (Reflex t, MonadJSM m, MonadJSM (Performable m), MonadHold t m, MonadFix m, PerformEvent t m, MonadReflexCreateTrigger t m, MonadRef m, Ref m ~ Ref JSM, MonadAdjust t m)
234201
@@ -395,12 +362,11 @@ instance SupportsImmediateDomBuilder t m => DomBuilder t (ImmediateDomBuilderT t
395362 checkedChangedByUI <- wrapDomEvent domInputElement (`on` Element.click) $ do
396363 Input.getChecked domInputElement
397364 checkedChangedBySetChecked <- performEvent $ ffor (_inputElementConfig_setChecked cfg) $ \newChecked -> do
398−-- oldChecked <- Input.getChecked domInputElement
399−-- if newChecked /= oldChecked
400−-- then do
401− Input.setChecked domInputElement newChecked
365+ oldChecked <- Input.getChecked domInputElement
366+ if newChecked /= oldChecked
367+ then do Input.setChecked domInputElement newChecked
402368 return $ Just newChecked
403−-- else return Nothing
369+ else return Nothing
404370 c <- holdDyn (_inputElementConfig_initialChecked cfg) $ leftmost
405371 [ fmapMaybe id checkedChangedBySetChecked
406372 , checkedChangedByUI
@@ -857,7 +823,7 @@ showEventName en = case en of
857823
858824{-# INLINABLE elementOnEventName #-}
859825elementOnEventName :: IsElement e => EventName en -> e -> EventM e (EventType en) () -> JSM (JSM ())
860−elementOnEventName en e = \x -> liftIO (putStrLn $ "element event handler added " <> showEventName en) >> (case en of
826+elementOnEventName en e = case en of
861827 Abort -> on e Element.abort
862828 Blur -> on e Element.blurEvent
863829 Change -> on e Element.change
@@ -903,12 +869,11 @@ elementOnEventName en e = \x -> liftIO (putStrLn $ "element event handler added
903869 Touchstart -> on e Element.touchStart
904870 Touchmove -> on e Element.touchMove
905871 Touchend -> on e Element.touchEnd
906− Touchcancel -> on e Element.touchCancel) (liftIO (putStrLn $ "element event fired " <> showEventName en) >> x)
907− >>= \y -> return (liftIO (putStrLn $ "element event removed " <> showEventName en) >> y)
872+ Touchcancel -> on e Element.touchCancel
908873
909874{-# INLINABLE windowOnEventName #-}
910875windowOnEventName :: EventName en -> DOM.Window -> EventM DOM.Window (EventType en) () -> JSM (JSM ())
911−windowOnEventName en e = \x -> liftIO (putStrLn $ "window event handler added " <> showEventName en) >> (case en of
876+windowOnEventName en e = case en of
912877 Abort -> on e Window.abort
913878 Blur -> on e Window.blurEvent
914879 Change -> on e Window.change
@@ -954,8 +919,7 @@ windowOnEventName en e = \x -> liftIO (putStrLn $ "window event handler added "
954919 Touchstart -> on e Window.touchStart
955920 Touchmove -> on e Window.touchMove
956921 Touchend -> on e Window.touchEnd
957− Touchcancel -> on e Window.touchCancel) (liftIO (putStrLn $ "window event fired " <> showEventName en) >> x)
958− >>= \y -> return (liftIO (putStrLn $ "windo event removed " <> showEventName en) >> y)
922+ Touchcancel -> on e Window.touchCancel
959923
960924{-# INLINABLE wrapDomEvent #-}
961925wrapDomEvent :: (TriggerEvent t m, MonadJSM m) => e -> (e -> EventM e event () -> JSM (JSM ())) -> EventM e event a -> m (Event t a)