git.iko.soy/rowtype-yoga/psfp
on master help sign in
Revealing like a friend
5dfb687Mark Eibes
blog/src/components/PSLayout.purs+16−15
@@ -1,7 +1,6 @@
1module PSLayout where
1module PSLayout where
2
2
3import Prelude
3import Prelude
4−
5import Data.Array as A
4import Data.Array as A
6import Data.Array as Array
5import Data.Array as Array
7import Data.Array.NonEmpty as NEA
6import Data.Array.NonEmpty as NEA
@@ -142,8 +141,21 @@ mkMdxProviderComponent compiler = do
142
141
143 kids = reactChildrenToArray children
142 kids = reactChildrenToArray children
144
143
145− visibleKids =
144+ foldVisible ∷ { i ∷ Int, acc ∷ Array JSX } -> JSX -> { i ∷ Int, acc ∷ Array JSX }
146− TODO
145+ foldVisible { i, acc } a =
146+ if i >= visibleThrough then
147+ { i, acc }
148+ else
149+ if (unsafeCoerce a).props.mdxType == "pre"
150+ && ((unsafeCoerce a).props.children.props.className == "language-purescript")
151+ && ((unsafeCoerce a).props.children.props.mdxType == "code")
152+ && ((unsafeCoerce a).props.children.props.children # parseSegments # isJust) then
153+ { i: i + 1, acc: A.snoc acc a }
154+ else
155+ { i, acc: A.snoc acc a }
156+
157+ visibleKids = kids # A.foldl foldVisible { i: 0, acc: [] ∷ Array JSX } # _.acc
158+
147 siteInfoJSX =
159 siteInfoJSX =
148 R.div
160 R.div
149 { children:
161 { children:
@@ -210,7 +222,7 @@ mkMdxProviderComponent compiler = do
210 \segs ->
222 \segs ->
211 when (complete segs)
223 when (complete segs)
212 $ updateVisible
224 $ updateVisible
213− (\_ -> spy "setting key to" (unsafeCoerce props).key)
225+ (_ + 1)
214 }
226 }
215 ]
227 ]
216 true, _, _ ->
228 true, _, _ ->
@@ -221,17 +233,6 @@ mkMdxProviderComponent compiler = do
221 }
233 }
222 false, _, _ -> element (unsafeCreateDOMComponent "pre") props
234 false, _, _ -> element (unsafeCreateDOMComponent "pre") props
223 }
235 }
224− useEffect (A.length kids) do
225− let
226− firstGaps = kids # A.find (\x -> (unsafeCoerce x).props.mdxType == "pre" &&
227− ((unsafeCoerce x).props.children.props.className == "language-purescript") &&
228− ((unsafeCoerce x).props.children.props.mdxType == "code") &&
229− ((unsafeCoerce x).props.children.props.children # parseSegments # isJust)
230− ) <#> (\x -> spy "first boy" $ (unsafeCoerce x).key)
231−
232− lastKey = kids # A.last # unsafeCoerce # _.key
233− updateVisible (const (firstGaps ?|| lastKey))
234− pure mempty
235 pure
236 pure
236 $ baseline
237 $ baseline
237 [ element mdxProvider
238 [ element mdxProvider