All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalacss.js.PlatformJsEnv.scala Maven / Gradle / Ivy

The newest version!
package scalacss.js

import scalajs.js.UndefOr
import scalacss.internal.Env
import Env._

/**
 * Uses [[PlatformJs]] to derive an [[Env]] instance.
 *
 * == Platform Values ==
 *
 * Platform(Some(PhantomJS),Some(WebKit),Some(2.0.0),Some(PhantomJS 2.0.0 (like Safari 8.x) on Linux 64-bit),None,None,Some(Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.0.0 Safari/538.1),Some(OS(Some(Bits64),Some(Linux),None)))
 * Platform(Some(Chrome),Some(Blink),Some(40.0.2214.115),Some(Chrome 40.0.2214.115 on Linux 64-bit),None,None,Some(Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36),Some(OS(Some(Bits64),Some(Linux),None)))
 * Platform(Some(Firefox),Some(Gecko),Some(36.0),Some(Firefox 36.0 on Linux 64-bit),None,None,Some(Mozilla/5.0 (X11; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0),Some(OS(Some(Bits64),Some(Linux),None)))
 */
object PlatformJsEnv {

  private implicit def undefToOption[A](a: UndefOr[A]): Option[A] =
    a.toOption.flatMap(Option(_))

  def value: Option[Env] =
    PlatformJs.value.map(p =>
      Env(platform(p), Media.empty(None)))

  def platform(p: PlatformJs): Platform[Option] = {
    val envOs =
      p.os.map(i => OS[Option](
        arch    = i.architecture flatMap OS.archFromInt,
        family  = i.family,
        version = i.version))

    Platform[Option](
      name         = p.name,
      layout       = p.layout,
      version      = p.version,
      desc         = p.description,
      manufacturer = p.manufacturer,
      product      = p.product,
      userAgent    = p.ua,
      os           = envOs)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy