module React.Element where import Control.Monad.Except import Control.Monad.Reader import Data.Map (Map) import Data.Text (Text) import Language.Javascript.JSaddle hiding (Ref) import React.Misc import React.Types createElement :: Tag -> Map Text JSVal -> [Element] -> Element createElement :: Tag -> Map Text JSVal -> [Element] -> Element createElement Tag etag Map Text JSVal props [Element] children = ReaderT React JSM JSVal -> Element Element (ReaderT React JSM JSVal -> Element) -> ReaderT React JSM JSVal -> Element forall a b. (a -> b) -> a -> b $ do React react <- ReaderT React JSM React forall r (m :: * -> *). MonadReader r m => m r ask [JSVal] createdChildren <- (Element -> ReaderT React JSM JSVal) -> [Element] -> ReaderT React JSM [JSVal] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM Element -> ReaderT React JSM JSVal unElement [Element] children JSM JSVal -> ReaderT React JSM JSVal forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (JSM JSVal -> ReaderT React JSM JSVal) -> JSM JSVal -> ReaderT React JSM JSVal forall a b. (a -> b) -> a -> b $ React react React -> Text -> [JSM JSVal] -> JSM JSVal forall this name args. (MakeObject this, ToJSString name, MakeArgs args) => this -> name -> args -> JSM JSVal # Text -> Text t Text "createElement" ([JSM JSVal] -> JSM JSVal) -> [JSM JSVal] -> JSM JSVal forall a b. (a -> b) -> a -> b $ [JSVal -> JSM JSVal forall (f :: * -> *) a. Applicative f => a -> f a pure (JSVal -> JSM JSVal) -> JSVal -> JSM JSVal forall a b. (a -> b) -> a -> b $ Tag -> JSVal unTag Tag etag, Map Text JSVal -> JSM JSVal forall a. ToJSVal a => a -> JSM JSVal toJSVal Map Text JSVal props] [JSM JSVal] -> [JSM JSVal] -> [JSM JSVal] forall a. Semigroup a => a -> a -> a <> (JSVal -> JSM JSVal) -> [JSVal] -> [JSM JSVal] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap JSVal -> JSM JSVal forall (f :: * -> *) a. Applicative f => a -> f a pure [JSVal] createdChildren createFragment :: [Element] -> Element createFragment :: [Element] -> Element createFragment = Map Text JSVal -> [Element] -> Element createFragmentWithProps Map Text JSVal forall a. Monoid a => a mempty createFragmentWithProps :: Map Text JSVal -> [Element] -> Element createFragmentWithProps :: Map Text JSVal -> [Element] -> Element createFragmentWithProps Map Text JSVal props [Element] children = ReaderT React JSM JSVal -> Element Element (ReaderT React JSM JSVal -> Element) -> ReaderT React JSM JSVal -> Element forall a b. (a -> b) -> a -> b $ do React react <- ReaderT React JSM React forall r (m :: * -> *). MonadReader r m => m r ask Tag fragmentTag <- JSM Tag -> ReaderT React JSM Tag forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (JSM Tag -> ReaderT React JSM Tag) -> JSM Tag -> ReaderT React JSM Tag forall a b. (a -> b) -> a -> b $ (JSVal -> Tag) -> JSM JSVal -> JSM Tag forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap JSVal -> Tag Tag (JSM JSVal -> JSM Tag) -> JSM JSVal -> JSM Tag forall a b. (a -> b) -> a -> b $ React react React -> Text -> JSM JSVal forall this name. (MakeObject this, ToJSString name) => this -> name -> JSM JSVal ! Text -> Text t Text "Fragment" Element -> ReaderT React JSM JSVal unElement (Element -> ReaderT React JSM JSVal) -> Element -> ReaderT React JSM JSVal forall a b. (a -> b) -> a -> b $ Tag -> Map Text JSVal -> [Element] -> Element createElement Tag fragmentTag Map Text JSVal props [Element] children