File tree 4 files changed +23
-4
lines changed
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
5
5
## [ Unreleased]
6
6
7
7
Breaking changes:
8
+ - Update the Monoid/Semigroup instance of ` ReactElement ` to use ` null ` for ` mempty ` instead of an empty fragment. (#187 )
8
9
9
10
New features:
10
11
Original file line number Diff line number Diff line change 1
1
let 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
3
4
4
5
in upstream
Original file line number Diff line number Diff line change @@ -153,3 +153,11 @@ function createContext(defaultValue) {
153
153
} ;
154
154
}
155
155
export { 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
81
81
-- | A virtual DOM node, or component.
82
82
foreign import data ReactElement :: Type
83
83
84
+ foreign import emptyReactElement :: ReactElement
85
+
86
+ foreign import isEmptyReactElement :: ReactElement -> Boolean
87
+
84
88
instance 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 ]
86
93
87
94
instance monoidReactElement :: Monoid ReactElement where
88
- mempty = toElement ( [] :: Array ReactElement )
95
+ mempty = emptyReactElement
89
96
90
97
-- | A mounted react component
91
98
foreign import data ReactComponent :: Type
@@ -493,7 +500,9 @@ instance isReactElementReactElement :: IsReactElement ReactElement where
493
500
toElement = identity
494
501
495
502
instance isReactElementArray :: IsReactElement (Array ReactElement ) where
496
- toElement = createElement fragment {}
503
+ toElement = case _ of
504
+ [] -> mempty
505
+ children -> createElement fragment {} children
497
506
498
507
-- | Creates a keyed fragment.
499
508
fragmentWithKey :: String -> Array ReactElement -> ReactElement
You can’t perform that action at this time.
0 commit comments