1module Scroll.Hook where
5import Data.Newtype (class Newtype)
7import React.Basic.Hooks (Hook, UseLayoutEffect, UseState, coerceHook, useLayoutEffect, useState, (/\))
8import React.Basic.Hooks as React
9import Scroll.Listener as Scroll
10import Unsafe.Coerce (unsafeCoerce)
11import Web.Event.EventTarget (EventListener, eventListener)
12import Web.HTML (window)
14newtype UseScrollYPosition hooks
15 = UseScrollYPosition (UseLayoutEffect Unit (UseState Number hooks))
17derive instance ntUseScrollYPosition ∷ Newtype (UseScrollYPosition hooks) _
19useScrollYPosition ∷ Hook UseScrollYPosition Number
22 scrollY /\ modifyScrollY <- useState 0.0
23 let setScrollY = modifyScrollY <<< const
24 useLayoutEffect unit do
25 listener <- makeListener setScrollY
26 Scroll.registerListener listener
29makeListener ∷ (Number -> Effect Unit) -> Effect EventListener
30makeListener setPosition = do
31 eventListener $ const do
33 let yPos = (unsafeCoerce win).scrollY
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