diff --git a/bower.json b/bower.json index 825f539..d73afe6 100644 --- a/bower.json +++ b/bower.json @@ -16,8 +16,8 @@ "url": "git://github.com/purescript-contrib/purescript-react-dom.git" }, "dependencies": { - "purescript-dom": "^4.5.0", - "purescript-react": "^5.0.0", - "purescript-eff": "^3.1.0" + "purescript-web-dom": "^1.0.0", + "purescript-react": "https://github.com/natefaubion/purescript-react.git#compiler/0.12", + "purescript-effect": "^2.0.0" } } diff --git a/package.json b/package.json index 09ca905..991760f 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "build": "pulp build" }, "devDependencies": { - "pulp": "^11.0.0", - "purescript-psa": "^0.5.0", - "purescript": "^0.11.1", + "pulp": "^12.0.0", + "purescript-psa": "^0.6.0", + "purescript": "^0.12.0", "rimraf": "^2.5.4" }, "peerDependencies": { diff --git a/src/ReactDOM.purs b/src/ReactDOM.purs index 0ead509..f990b74 100644 --- a/src/ReactDOM.purs +++ b/src/ReactDOM.purs @@ -4,35 +4,30 @@ module ReactDOM , findDOMNode , renderToString , renderToStaticMarkup - , refToNode ) where -import Control.Monad.Eff (Eff) -import Control.Monad.Eff.Uncurried (runEffFn1, EffFn4, EffFn1, runEffFn4) -import DOM (DOM) -import DOM.Node.Types (Element, Node) +import Effect (Effect) +import Effect.Uncurried (runEffectFn1, EffectFn4, EffectFn1, runEffectFn4) import Data.Function.Uncurried (runFn1, Fn1) import Data.Maybe (Maybe(..)) -import Data.Nullable (Nullable, toMaybe) -import React (ReactElement, ReactComponent, Ref) -import Unsafe.Coerce (unsafeCoerce) +import React (ReactElement, ReactComponent) +import Web.DOM.Element (Element) -- | Render a React element in a document element. Returns Nothing for stateless components. render - :: forall eff - . ReactElement + :: ReactElement -> Element - -> Eff (dom :: DOM | eff) (Maybe ReactComponent) -render = runEffFn4 renderImpl Nothing Just + -> Effect (Maybe ReactComponent) +render = runEffectFn4 renderImpl Nothing Just -- | Removes a mounted React element in a document element. -- | Returns true if it was unmounted, false otherwise. -unmountComponentAtNode :: forall eff. Element -> Eff (dom :: DOM | eff) Boolean -unmountComponentAtNode = runEffFn1 unmountComponentAtNodeImpl +unmountComponentAtNode :: Element -> Effect Boolean +unmountComponentAtNode = runEffectFn1 unmountComponentAtNodeImpl -- | Finds the DOM node rendered by the component. -findDOMNode :: forall eff. ReactComponent -> Eff (dom :: DOM | eff) Element -findDOMNode = runEffFn1 findDOMNodeImpl +findDOMNode :: ReactComponent -> Effect Element +findDOMNode = runEffectFn1 findDOMNodeImpl -- | Render a React element as a string. renderToString :: ReactElement -> String @@ -43,9 +38,7 @@ renderToStaticMarkup :: ReactElement -> String renderToStaticMarkup = runFn1 renderToStaticMarkupImpl foreign import renderImpl - :: forall eff - . EffFn4 - (dom :: DOM | eff) + :: EffectFn4 (Maybe ReactComponent) (ReactComponent -> Maybe ReactComponent) ReactElement @@ -53,25 +46,15 @@ foreign import renderImpl (Maybe ReactComponent) foreign import unmountComponentAtNodeImpl - :: forall eff - . EffFn1 - (dom :: DOM | eff) + :: EffectFn1 Element Boolean foreign import findDOMNodeImpl - :: forall eff - . EffFn1 - (dom :: DOM | eff) + :: EffectFn1 ReactComponent Element foreign import renderToStringImpl :: Fn1 ReactElement String foreign import renderToStaticMarkupImpl :: Fn1 ReactElement String - -refToNode :: Nullable Ref -> Maybe Node -refToNode ref = toMaybe (coerce ref) - where - coerce :: Nullable Ref -> Nullable Node - coerce = unsafeCoerce