Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion packages.dhall
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
let upstream =
https://raw.githubusercontent.com/purescript/package-sets/prepare-0.15/src/packages.dhall
https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20221208/packages.dhall
sha256:e3549e48d0170e14838d8f0c44172253947dcb6117b51a763f33dca34f00ba43

in upstream
8 changes: 8 additions & 0 deletions src/React.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,11 @@ function createContext(defaultValue) {
};
}
export {createContext};

export var emptyReactElement = null;

function isEmptyReactElement(a) {
return a === emptyReactElement;
};

export {isEmptyReactElement};
15 changes: 12 additions & 3 deletions src/React.purs
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,18 @@ type TagName = String
-- | A virtual DOM node, or component.
foreign import data ReactElement :: Type

foreign import emptyReactElement :: ReactElement

foreign import isEmptyReactElement :: ReactElement -> Boolean

instance semigroupReactElement :: Semigroup ReactElement where
append a b = toElement [ a, b ]
append a b
| isEmptyReactElement a = b
| isEmptyReactElement b = a
| otherwise = toElement [ a, b ]

instance monoidReactElement :: Monoid ReactElement where
mempty = toElement ([] :: Array ReactElement)
mempty = emptyReactElement

-- | A mounted react component
foreign import data ReactComponent :: Type
Expand Down Expand Up @@ -493,7 +500,9 @@ instance isReactElementReactElement :: IsReactElement ReactElement where
toElement = identity

instance isReactElementArray :: IsReactElement (Array ReactElement) where
toElement = createElement fragment {}
toElement = case _ of
[] -> mempty
children -> createElement fragment {} children

-- | Creates a keyed fragment.
fragmentWithKey :: String -> Array ReactElement -> ReactElement
Expand Down