{-# LANGUAGE CPP #-} module Glazier.React.Component ( ReactComponent , mkComponent ) where import qualified Control.Disposable as CD import qualified GHCJS.Types as J import qualified GHCJS.Marshal.Pure as J import qualified JavaScript.Extras.Cast as JE -- | A newtype wrapper to give a noop disposable instance to React components -- This allows generic deriving of model Adaptors. newtype ReactComponent = ReactComponent J.JSVal instance CD.Disposing ReactComponent where disposing _ = CD.DisposeNone instance J.IsJSVal ReactComponent instance J.PToJSVal ReactComponent where pToJSVal = J.jsval instance JE.ToJS ReactComponent mkComponent :: IO ReactComponent mkComponent = ReactComponent <$> js_mkComponent #ifdef __GHCJS__ foreign import javascript unsafe "$r = hgr$mkClass();" js_mkComponent :: IO J.JSVal #else js_mkComponent :: IO J.JSVal js_mkComponent = pure J.nullRef #endif