glazier-react-1.0.0.0: src/Glazier/React/ReactId/Internal.hs
-- {-# LANGUAGE ConstraintKinds #-}
-- {-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Glazier.React.ReactId.Internal where
import qualified Data.JSString as J
import qualified GHCJS.Marshal.Pure as J
import qualified GHCJS.Types as J
import qualified JavaScript.Extras as JE
import Data.String
-- type MkId m = MonadState Int m
-- mkId :: MonadState Int m => J.JSString -> m J.JSString
-- mkId n = do
-- i <- get
-- let i' = JE.safeIncrement i
-- put i'
-- pure . J.append n . J.cons ':' . J.pack $ show i'
-- This id can also be used as the react @key@
newtype ReactId = ReactId { unReactId :: J.JSString }
deriving (Read, Show, Eq, Ord, JE.ToJS, IsString, J.IsJSVal, J.PToJSVal)
-- mkElementalId :: MonadState Int m => J.JSString -> m ElementalId
-- mkElementalId n = ElementalId <$> mkId n