Получение ширины и высоты 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
  }


0 ответов

Другие вопросы по тегам