Получение ширины и высоты HTML-элемента с помощью Reflex-DOM
Каков идиоматический способ получения некоторых свойств элемента HTML с помощью Reflex-DOM? У меня есть контейнер DIV со списком сообщений внутри. Мне нужно прокрутить список с помощью Haskell до определенных позиций, чтобы показать выбранные сообщения. Как я могу узнать размер каждого элемента списка? Модуль элемента списка теперь выглядит так:
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE RecursiveDo #-}
module Message (widget, Input(..), Output(..), State(..)) where
import qualified Data.Text as T
import Reflex.Dom.Core
data Input t = Input {
inputText :: Dynamic t T.Text
}
data Output t = Output {
outputClick :: Event t (State)
}
data State = State {
stateText :: T.Text,
stateWidth :: Int,
stateHeight :: Int
}
widget :: MonadWidget t m => Input t -> m (Output t)
widget input = do
(dinamicElement, _) <- elClass' "div" "" $ do
elClass "span" "tag is-primary" $ dynText (inputText input)
state <- createState dinamicElement
return $ Output {
outputClick = state <$ domEvent Click dinamicElement
}
createState :: DomBuilder t m => Element EventResult (DomBuilderSpace m) t -> m State
createState dinamicElement = do
let rawElement = _element_raw dinamicElement
return $ State {
stateText = "???",
stateWidth = 150,
stateHeight = 50
}