@@ -33,6 +33,7 @@ import Data.Dependent.Sum (DSum (..))
3333import Data.IORef
3434import Data.Maybe
3535import Data.Monoid ((<>))
36+import Data.Text (Text)
3637import qualified Data.Text as T
3738import Data.Text.Encoding
3839import GHCJS.DOM hiding (runWebGUI)
@@ -103,6 +104,13 @@ attachWidget' rootElement wv w = do
103104 _ <- appendChild rootElement $ Just df
104105 return (result, fc)
105106
107+-- | Run a reflex-dom application inside of an existing DOM element with the given ID
108+mainWidgetInElementById :: Text -> (forall x. Widget x ()) -> IO ()
109+mainWidgetInElementById eid w = runWebGUI $ \webView -> withWebViewSingleton webView $ \webViewSing -> do
110+ Just doc <- fmap DOM.castToHTMLDocument <$> webViewGetDomDocument webView
111+ Just root <- getElementById doc eid
112+ attachWidget root webViewSing w
113+
106114data AppInput t = AppInput
107115 { _appInput_window :: Window t
108116 }