5import CSSBaseline (mkCssBaseline)
6import CompileEditor.Component (mkCompileEditor)
7import Data.Array as Array
8import Data.Maybe (Maybe(..), fromMaybe)
9import Data.Nullable (Nullable)
10import Data.Nullable as Nullable
11import Data.String as String
13import Milkis.Impl (FetchImpl)
14import React.Basic (JSX, ReactComponent)
15import React.Basic.DOM (unsafeCreateDOMComponent)
16import React.Basic.DOM as R
17import React.Basic.Hooks (ReactChildren, componentWithChildren, element)
18import Theme (fromTheme)
19import Theme.Default (darkTheme)
20import Theme.Provider (mkThemeProvider)
21import Typography.Header (HeadingLevel(..), mkH)
22import Typography.Paragraph (mkP)
23import Unsafe.Coerce (unsafeCoerce)
26 = { site ∷ { siteMetadata ∷ { title ∷ String } } }
33 { children ∷ ReactChildren children
34 , siteInfo ∷ SiteQueryResult
37mkLayout fetchImpl = do
38 themeProvider <- mkThemeProvider
39 cssBaseline <- mkCssBaseline
40 editor <- mkCompileEditor fetchImpl
43 componentWithChildren "MDXLayout" \{ children, siteInfo } -> React.do
45 baseline child = element cssBaseline { kids: child }
52 , text: siteInfo.site.siteMetadata.title
55 , R.div_ (unsafeCoerce children)
62 element h { level: H2, text: props.children, className: Nothing }
65 element h { level: H3, text: props.children, className: Nothing }
68 element h { level: H4, text: props.children, className: Nothing }
71 element p { text: props.children }
78 { mdxType ∷ Nullable String
79 , children ∷ Nullable String
80 , className ∷ Nullable String
86 childrenQ = Nullable.toMaybe props.children
88 propsQ = (_.props >>> Nullable.toMaybe) =<< childrenQ
90 mdxTypeQ = (_.mdxType >>> Nullable.toMaybe) =<< propsQ
92 childrenQ2 = (_.children >>> Nullable.toMaybe) =<< propsQ
94 classNameQ = (_.className >>> Nullable.toMaybe) =<< propsQ
96 isCode = fromMaybe false (mdxTypeQ <#> eq "code")
100 height = (fromMaybe 200 >>> show >>> (_ <> "px")) do
102 pure (String.split (String.Pattern "\n") code
104 # \x -> (x * 12) + 100
106 language = fromMaybe "" (classNameQ >>= String.stripPrefix (String.Pattern "language-"))
109 { initialCode: fromMaybe "" codeQ
114 element (unsafeCreateDOMComponent "pre") props
117 $ element themeProvider
118 { theme: fromTheme darkTheme
121 [ element mdxProvider
122 { children: [ siteInfoJSX ]
123 , components: mdxComponents
129foreign import mdxProvider ∷
132 { components ∷ { | r } -- TODO Don't lie
133 , children ∷ Array JSX
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list