git.iko.soy/rowtype-yoga/psfp
on cf0f24c help sign in
46 lines 1.3 kB history raw
1module Example (main) where
3import Prelude
4import Container.Component (mkContainer)
5import Data.Maybe (fromJust)
6import Effect (Effect)
7import Effect.Console (log)
8import Partial.Unsafe (unsafePartial)
9import React.Basic (JSX, element)
10import Theme (fromTheme)
11import Theme.Default (darkTheme)
12import Web.DOM (Element)
13import Web.DOM.NonElementParentNode (getElementById) as DOM
14import Web.HTML (window) as DOM
15import Web.HTML.HTMLDocument (toNonElementParentNode) as DOM
16import Web.HTML.Window (document) as DOM
18main ∷ Effect Unit
19main = do
20 container <- mkContainer
21 let
22 appEl = element container { theme: fromTheme darkTheme, children: [] }
23 if isServerSide then
24 void (log (renderToString appEl))
25 else
26 void do
27 window <- DOM.window
28 document <- DOM.document window
29 let
30 node = DOM.toNonElementParentNode document
31 elem <- DOM.getElementById "app" node
32 let
33 element' = unsafePartial (fromJust elem)
34 root <- createRoot element'
35 renderRoot appEl root
37-- ReactDOM.render appEl element'
38foreign import isServerSide ∷ Boolean
40foreign import renderToString ∷ JSX -> String
42foreign import data ReactRoot ∷ Type
44foreign import createRoot ∷ Element -> Effect ReactRoot
46foreign import renderRoot ∷ JSX -> ReactRoot -> Effect Unit