File tree Expand file tree Collapse file tree 4 files changed +23
-4
lines changed Expand file tree Collapse file tree 4 files changed +23
-4
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ Notable changes to this project are documented in this file. The format is based
55## [ Unreleased]
66
77Breaking changes:
8+ - Update the Monoid/Semigroup instance of ` ReactElement ` to use ` null ` for ` mempty ` instead of an empty fragment. (#187 )
89
910New features:
1011
Original file line number Diff line number Diff line change 11let upstream =
2- https:// raw. githubusercontent. com/ purescript/ package- sets/ prepare- 0.15 / src/ packages. dhall
2+ https:// github. com/ purescript/ package- sets/ releases/ download/ psc- 0.15 . 4 - 20221208 / packages. dhall
3+ sha256: e3549e48d0170e14838d8f0c44172253947dcb6117b51a763f33dca34f00ba43
34
45in upstream
Original file line number Diff line number Diff line change @@ -153,3 +153,11 @@ function createContext(defaultValue) {
153153 } ;
154154}
155155export { createContext } ;
156+
157+ export var emptyReactElement = null ;
158+
159+ function isEmptyReactElement ( a ) {
160+ return a === emptyReactElement ;
161+ } ;
162+
163+ export { isEmptyReactElement } ;
Original file line number Diff line number Diff line change @@ -81,11 +81,18 @@ type TagName = String
8181-- | A virtual DOM node, or component.
8282foreign import data ReactElement :: Type
8383
84+ foreign import emptyReactElement :: ReactElement
85+
86+ foreign import isEmptyReactElement :: ReactElement -> Boolean
87+
8488instance semigroupReactElement :: Semigroup ReactElement where
85- append a b = toElement [ a, b ]
89+ append a b
90+ | isEmptyReactElement a = b
91+ | isEmptyReactElement b = a
92+ | otherwise = toElement [ a, b ]
8693
8794instance monoidReactElement :: Monoid ReactElement where
88- mempty = toElement ( [] :: Array ReactElement )
95+ mempty = emptyReactElement
8996
9097-- | A mounted react component
9198foreign import data ReactComponent :: Type
@@ -493,7 +500,9 @@ instance isReactElementReactElement :: IsReactElement ReactElement where
493500 toElement = identity
494501
495502instance isReactElementArray :: IsReactElement (Array ReactElement ) where
496- toElement = createElement fragment {}
503+ toElement = case _ of
504+ [] -> mempty
505+ children -> createElement fragment {} children
497506
498507-- | Creates a keyed fragment.
499508fragmentWithKey :: String -> Array ReactElement -> ReactElement
You can’t perform that action at this time.
0 commit comments