Skip to content

Commit 309f617

Browse files
committed
Add .mapRaw
1 parent 8e378f3 commit 309f617

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

core/src/main/scala/japgolly/scalajs/react/component/Generic.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package japgolly.scalajs.react.component
22

3-
import org.scalajs.dom
43
import scala.scalajs.js
54
import japgolly.scalajs.react.internal._
6-
import japgolly.scalajs.react.{Callback, CallbackTo, CtorType, ComponentDom, Key, PropsChildren, StateAccess, vdom, raw => RAW}
7-
import scala.scalajs.js.|
5+
import japgolly.scalajs.react.{Callback, CallbackTo, CtorType, ComponentDom, Key, PropsChildren, StateAccess, vdom}
6+
import japgolly.scalajs.react.{raw => RAW}
87

98
object Generic {
109

@@ -15,6 +14,7 @@ object Generic {
1514
type Raw <: js.Any
1615
val raw: Raw
1716
def displayName: String
17+
def mapRaw(f: Raw => Raw): ComponentRaw
1818
}
1919

2020
trait ComponentSimple[P, CT[-p, +u] <: CtorType[p, u], U] extends ComponentRaw {
@@ -28,6 +28,7 @@ object Generic {
2828
val ctor: CT[P, U]
2929
implicit def ctorPF: Profunctor[CT]
3030

31+
override def mapRaw(f: Raw => Raw): ComponentSimple[P, CT, U]
3132

3233
/** Create a new JS component that wraps this component and its mappings.
3334
*
@@ -43,6 +44,7 @@ object Generic {
4344
type Root <: ComponentRoot[P0, CT0, U0]
4445
def root: Root
4546

47+
override def mapRaw(f: Raw => Raw): ComponentWithRoot[P1, CT1, U1, P0, CT0, U0]
4648
override def cmapCtorProps[P2](f: P2 => P1): ComponentWithRoot[P2, CT1, U1, P0, CT0, U0]
4749
override def mapUnmounted[U2](f: U1 => U2): ComponentWithRoot[P1, CT1, U2, P0, CT0, U0]
4850
override def mapCtorType[CT2[-p, +u] <: CtorType[p, u]](f: CT1[P1, U1] => CT2[P1, U1])(implicit pf: Profunctor[CT2]): ComponentWithRoot[P1, CT2, U1, P0, CT0, U0]

core/src/main/scala/japgolly/scalajs/react/component/JsBaseComponentTemplate.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ trait JsBaseComponentTemplate[RawComponent[_ <: js.Object] <: js.Any] {
1616
override final def displayName = rawComponentDisplayName(raw)
1717

1818
override type Raw <: RawComponent[_ <: js.Object]
19+
override def mapRaw(f: Raw => Raw): ComponentSimple[P, CT, U]
1920
override def cmapCtorProps[P2](f: P2 => P): ComponentSimple[P2, CT, U]
2021
override def mapUnmounted[U2](f: U => U2): ComponentSimple[P, CT, U2]
2122
override def mapCtorType[CT2[-p, +u] <: CtorType[p, u]](f: CT[P, U] => CT2[P, U])(implicit pf: Profunctor[CT2]): ComponentSimple[P, CT2, U]
@@ -29,6 +30,7 @@ trait JsBaseComponentTemplate[RawComponent[_ <: js.Object] <: js.Any] {
2930
override final type Raw = RawComponent[P0]
3031
override final type Root = ComponentRoot[P0, CT0, U0]
3132

33+
override def mapRaw(f: Raw => Raw): ComponentWithRoot[P1, CT1, U1, P0, CT0, U0]
3234
override def cmapCtorProps[P2](f: P2 => P1): ComponentWithRoot[P2, CT1, U1, P0, CT0, U0]
3335
override def mapUnmounted[U2](f: U1 => U2): ComponentWithRoot[P1, CT1, U2, P0, CT0, U0]
3436
override def mapCtorType[CT2[-p, +u] <: CtorType[p, u]](f: CT1[P1, U1] => CT2[P1, U1])(implicit pf: Profunctor[CT2]): ComponentWithRoot[P1, CT2, U1, P0, CT0, U0]
@@ -44,6 +46,7 @@ trait JsBaseComponentTemplate[RawComponent[_ <: js.Object] <: js.Any] {
4446
override val raw = rc
4547
override val ctor = c
4648
override implicit def ctorPF = pf
49+
override def mapRaw(f: Raw => Raw) = componentRoot(f(rc), c)(pf)
4750
override def cmapCtorProps[P2](f: P2 => P) = mappedC(this)(f, identityFn, identityFn, pf)
4851
override def mapUnmounted[U2](f: U => U2) = mappedC(this)(identityFn, identityFn, f, pf)
4952
override def mapCtorType[CT2[-p, +u] <: CtorType[p, u]](f: CT[P, U] => CT2[P, U])(implicit pf: Profunctor[CT2]) =
@@ -62,6 +65,7 @@ trait JsBaseComponentTemplate[RawComponent[_ <: js.Object] <: js.Any] {
6265
override val raw = from.raw
6366
override val ctor = mc(from.ctor).dimap(cp, mu)
6467
override implicit def ctorPF = pf
68+
override def mapRaw(f: Raw => Raw) = mappedC(from.mapRaw(f))(cp, mc, mu, pf)
6569
override def cmapCtorProps[P3](f: P3 => P2) = mappedC(from)(cp compose f, mc, mu, pf)
6670
override def mapUnmounted[U3](f: U2 => U3) = mappedC(from)(cp, mc, f compose mu, pf)
6771
override def mapCtorType[CT3[-p, +u] <: CtorType[p, u]](f: CT2[P2, U2] => CT3[P2, U2])(implicit pf3: Profunctor[CT3]) =

core/src/main/scala/japgolly/scalajs/react/component/JsForwardRef.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ object JsForwardRef {
4242
override final def displayName = rawComponentDisplayName(raw)
4343

4444
override type Raw <: Raw.React.ForwardRefComponent[_ <: js.Object, R]
45+
override def mapRaw(f: Raw => Raw): ComponentSimple[P, R, CT, U]
4546
override def cmapCtorProps[P2](f: P2 => P): ComponentSimple[P2, R, CT, U]
4647
override def mapUnmounted[U2](f: U => U2): ComponentSimple[P, R, CT, U2]
4748
override def mapCtorType[CT2[-p, +u] <: CtorType[p, u]](f: CT[P, U] => CT2[P, U])(implicit pf: Profunctor[CT2]): ComponentSimple[P, R, CT2, U]
@@ -57,6 +58,7 @@ object JsForwardRef {
5758
override final type Raw = Raw.React.ForwardRefComponent[P0, R]
5859
override final type Root = ComponentRoot[P0, R, CT0, U0]
5960

61+
override def mapRaw(f: Raw => Raw): ComponentWithRoot[P1, R, CT1, U1, P0, CT0, U0]
6062
override def cmapCtorProps[P2](f: P2 => P1): ComponentWithRoot[P2, R, CT1, U1, P0, CT0, U0]
6163
override def mapUnmounted[U2](f: U1 => U2): ComponentWithRoot[P1, R, CT1, U2, P0, CT0, U0]
6264
override def mapCtorType[CT2[-p, +u] <: CtorType[p, u]](f: CT1[P1, U1] => CT2[P1, U1])(implicit pf: Profunctor[CT2]): ComponentWithRoot[P1, R, CT2, U1, P0, CT0, U0]
@@ -74,6 +76,7 @@ object JsForwardRef {
7476
override val raw = rc
7577
override val ctor = c
7678
override implicit def ctorPF = pf
79+
override def mapRaw(f: Raw => Raw) = componentRoot(f(rc), c)(pf)
7780
override def cmapCtorProps[P2](f: P2 => P) = mappedC(this)(f, identityFn, identityFn, pf)
7881
override def mapUnmounted[U2](f: U => U2) = mappedC(this)(identityFn, identityFn, f, pf)
7982
override def mapCtorType[CT2[-p, +u] <: CtorType[p, u]](f: CT[P, U] => CT2[P, U])(implicit pf: Profunctor[CT2]) =
@@ -98,6 +101,7 @@ object JsForwardRef {
98101
override val raw = from.raw
99102
override val ctor = mc(from.ctor).dimap(cp, mu)
100103
override implicit def ctorPF = pf
104+
override def mapRaw(f: Raw => Raw) = mappedC(from.mapRaw(f))(cp, mc, mu, pf)
101105
override def cmapCtorProps[P3](f: P3 => P2) = mappedC(from)(cp compose f, mc, mu, pf)
102106
override def mapUnmounted[U3](f: U2 => U3) = mappedC(from)(cp, mc, f compose mu, pf)
103107
override def mapCtorType[CT3[-p, +u] <: CtorType[p, u]](f: CT2[P2, U2] => CT3[P2, U2])(implicit pf3: Profunctor[CT3]) =

doc/changelog/1.4.0.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656

5757
* Removed methods deprecated < 1.2.0
5858

59+
* Add `.mapRaw(Raw => Raw)` to components
60+
5961
* Dependency upgrades:
6062
* Cats 1.5.0
6163
* Scala 2.12.8

0 commit comments

Comments
 (0)