/
SlinkyNativeFlavour.scala
39 lines (28 loc) · 1.72 KB
/
SlinkyNativeFlavour.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package org.scalablytyped.converter.internal
package scalajs
package flavours
import org.scalablytyped.converter.internal.scalajs.flavours.CastConversion.TypeRewriterCast
import org.scalablytyped.converter.internal.scalajs.transforms.{Adapter, CleanIllegalNames}
case class SlinkyNativeFlavour(outputPkg: Name) extends FlavourImplReact {
override val dependencies: Set[Dep] =
Set(Versions.runtime, Versions.slinkyNative, Versions.scalaJsDom)
val rewriter = new TypeRewriterCast(SlinkyTypeConversions(scalaJsDomNames, reactNames, isWeb = false))
val memberToProp = new MemberToProp.Default(Some(rewriter))
val findProps = new FindProps(new CleanIllegalNames(outputPkg), memberToProp, parentsResolver)
val genStBuildingComponent = new SlinkyGenStBuildingComponent(outputPkg)
val gen = new SlinkyGenComponents(SlinkyGenComponents.Native(()), findProps, genStBuildingComponent, reactNames)
val genCompanions = new GenCompanions(findProps)
final override def rewrittenTree(scope: TreeScope, tree: PackageTree): PackageTree = {
val withCompanions = genCompanions.visitPackageTree(scope)(tree)
val withComponents = if (involvesReact(scope)) {
val components: IArray[Component] =
identifyComponents.oneOfEach(scope / withCompanions, withCompanions)
val ret = Adapter(scope)((t, s) => gen(s, t, components))(withCompanions)
if (isReact(scope))
ret.copy(members = ret.members ++ IArray(genStBuildingComponent.Trait, genStBuildingComponent.Object))
else ret
} else withCompanions
rewriter.visitPackageTree(scope)(withComponents)
}
override val rewritesOpt: Option[CastConversion.TypeRewriterCast] = Some(rewriter)
}