Git Product home page Git Product logo

scalajs-react-components's Introduction

scalajs-react-components

Join the chat at https://gitter.im/chandu0101/scalajs-react-components

Reusable scalajs-react components.

We are trying to make the experience of using javascript components in scala.js as good as possible by adding typed wrappers.

Adding types to javascript is a lot of guesswork, and we're certain to have gotten them wrong some places. Bug reports and/or pull requests are very much welcome! :)

Wrappers for javascript components:

These components require you to provide javascript yourself.

  • Material-ui 0.18.1
  • Elemental-ui 0.6.1
  • Semantic-ui 0.68.5
  • Google maps (downloads js directly from google)
  • React GeomIcon (react-geomicons: 2.1.10)
  • React Infinite (react-infinite, 0.11.0)
  • Spinner (react-spinner, 0.2.7)
  • React Select (react-select: 1.0.0-rc.5)
  • React TagsInput (react-tagsinput, 3.16.1)
  • React Slick (react-slick: 0.14.11)

Components written in scala.js

  • DefaultSelect
  • Pager
  • ReactDraggable
  • ReactListView
  • ReactPopOver
  • ReactSearchBox
  • ReactTable
  • ReactTreeView

Gotchas

You have to call apply even when components dont have children:

MuiRaisedButton(label = "label")()

Setup

SBT

Add these dependencies to you sbt build file

libraryDependencies ++= Seq(
  "com.github.japgolly.scalajs-react" %%% "core" % "1.1.0",
  "com.github.japgolly.scalajs-react" %%% "extra" % "1.1.0",
  "com.olvind" %%% "scalajs-react-components" % "1.0.0-M2"
)

This repository includes an example project, by all means use it as a template for your own.

ScalaCSS

In order to use the scala.js components, you need to make sure you load their CSS:

GlobalRegistry.register(<component>.Style)

See here for more details

Full Demo With Code Examples

Online :

http://chandu0101.github.io/scalajs-react-components

Local : This will start a web server on http://localhost:8080

sbt 
fastOptJS::webpack
demo/compile:fastOptJS::startWebpackDevServer

Example project

We've included an example project to give you an idea how to use the components

scalajs-react-components's People

Contributors

aparo avatar atooni avatar bpressure avatar chandu0101 avatar coreyauger avatar daxten avatar enijns avatar fmcgough avatar giabao avatar gitter-badger avatar jhegedus42 avatar jonas avatar mproch avatar oganix avatar oyvindberg avatar rleibman avatar tpdi avatar williamho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scalajs-react-components's Issues

Easier JS dependencies

I'm not sure if you have plans to solve this but it would be nice if it was easier to use the javascript dependencies in this project.

Ideally it would be a webjar specified using jsDependencies. I'm not sure if that is possible or not and it may be that there would be multiple webjars for each each dependency? Other problems are, how do you even create the correct webjars? (I noticed there is material-ui webjar but it is an npm webjar, so I assume that won't work.)

This would be nice because everything would end up in scalajs -jsdeps.js

Anyway I needed something that worked now. I looked for existing sbt wrappers around javascript build tools but there doesn't really seem to be much out there.

I ended up creating a small sbt task that integrates with the sbt-web pipeline and calls out to npm (and webpack). I've only tested Material UI.

Task key

val packageReactComponents = TaskKey[Seq[File]]("packageReactComponents", "Package Scala.js React Components")

Project settings

    packageReactComponents := {
      val filename = "sjs-components.js"

      val outPath = WebKeys.webTarget.value / "sjscomponents"
      val outFile = outPath / filename
      val workingDir = baseDirectory.value

      if ( ! outFile.exists()) {
        val commandPrefix = sys.props("os.name").toLowerCase match {
          case os if os.contains("win") => Seq("cmd", "/C")
          case _ => Seq()
        }

        val installCommand = commandPrefix ++ Seq("npm", "install")
        println(s"${installCommand.mkString(" ")}")
        Process(installCommand, workingDir) !!

        val runCommand = commandPrefix ++ Seq("npm", "run", "build", "--", "--output-file", filename, "--output-path", outPath.getAbsolutePath)
        println(s"Creating $filename [${runCommand.mkString(" ")}]")
        Process(runCommand, workingDir) !!
      }

      Seq[File](outFile)
    },
    (sourceGenerators in Assets) <+= packageReactComponents

main.js

var mui = require("material-ui"),
    injectTapEventPlugin = require('react-tap-event-plugin');

injectTapEventPlugin();

window.mui = mui;

package.json

{
  "name": "",
  "version": "0.1.0",
  "description": "",
  "scripts": {
    "build": "webpack --config webpack.config.js"
  },
  "devDependencies": {
    "webpack": "^1.9.10"
  },
  "dependencies": {
    "material-ui": "^0.9.0",
    "react-geomicons": "^2.0.4",
    "react-select": "^0.5.1",
    "react-tagsinput": "^1.3.5",
    "react-tap-event-plugin": "^0.1.7",
    "svg-loader": "0.0.2"
  }
}

webpack.config.js

'use strict';

var webpack = require('webpack');
var CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin;

module.exports = {
    entry: {
        mainpage: './main.js'
    },
    output: {
    },
    externals: {
      "react": "React",
      "react/addons": "React"
    },
    plugins: [
        new webpack.NoErrorsPlugin(),
        new CommonsChunkPlugin({
            name: "mainpage"
        })
    ]
};

Note the use of externals here, that is because I am depending on the React webjar which already ends up in -jsdeps.js

I'm not sure if there will end up being any gotchas with this (ie dependency ordering issues). (Not sure if it will work long term). Maybe I'll end up not using the React webjar and bundle the one with webpack.

Finally I just include the generated js in my play template

<script src="@routes.Assets.versioned("sjs-components.js")"></script>

I don't know if there is a better way. I think the tooling in this area needs some work still if it has to be done through npm could watch this space and use something like grunt: sbt/sbt-web#27

I'm not that familiar with these tools though.

Additional type safety

Hey mate. Instead of using strings it'd be great to have types for bootstrap enums and such.

Eg. in this, one could easily mistype "prmary"

bootStrap.Button(bsStyle = "primary")("Primary")

You could add types like this:

sealed abstract class BsStyle(val name: String)
object BsStyle {
  case object Primary extends BsStyle("primary")
  case object Default extends BsStyle("default")
  // ...
}

So that usage becomes nice and type-safe like this:

bootStrap.Button(BsStyle.Primary)("Primary")

MUIDatePicker can be a controled componenet, and has an implicit property of `value`

Material-ui's DatePicker looks for value (and valueLink) in its props, even though these are not listed in its propTypes.

However, DatePicker uses props.hasOwnProperty('value') to test whether the component is controlled, so an UndefOr[Date] might not be the appropriate way to add value to MuIDatePicker.

Edit: if UndefOr are added to a js.Dynamic using foreach, it should be OK.

For what it's worth, TimePicker does not support the value property (!)

Dropdown(onSelect) of elementalui seems broken

The case class

case class Dropdown(alignRight: js.UndefOr[Boolean] = js.undefined,
                    buttonHasDisclosureArrow: js.UndefOr[Boolean] = js.undefined,
                    buttonLabel: js.UndefOr[String] = js.undefined,
                    buttonType: js.UndefOr[ButtonType] = js.undefined,
                    className: js.UndefOr[String] = js.undefined,
                    isOpen: js.UndefOr[Boolean] = js.undefined,
                    children: js.UndefOr[Boolean] = js.undefined,
                    items: js.Array[DropdownMenuItem],
                    onSelect: js.UndefOr[ReactEventFromHtml => Callback] = js.undefined)

offers an onSelect option and I would have expected that it works similar to the onChange of FormInput or the onChange of FormSelect, i.e. I can put a handler in there to change my state of items. However, if I add a handler I see that

    private def handler: ReactEventFromHtml => Callback = event => {
      println(s"event = ${event}"); submit(event)
    }

gives

event = undefined

so I have a hard time using that. I only can see in react dropdown examples that people are using onClick and not onSelect (like here e.g. reactstrap/reactstrap#559). Is this maybe just the wrong attribute?

JSMacro should support union types

When using union types, one must cast to js.Any, e.g.:

case class Pie(padding: js.UndefOr[Double | Shape] = js.undefined) {
  def toJs = {
    val p = js.Dynamic.literal()
    padding.foreach(x => p.updateDynamic("padding")(x.asInstanceOf[js.Any]))
    p
  }
}

JSMacro doesn't know about this, so this compiler error comes up:

type mismatch;
 found   : scala.scalajs.js.|[Double,Shape]
 required: scala.scalajs.js.Any

Document that ReactTapEventPlugin(js.undefined) is needed in JSApp body

If ReactTapEventPlugin(js.undefined) is not provided in the JsApp body the browser's console throws the following warning:

warning.js:36 Warning: Unknown prop `onTouchTap` on <button> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in button (created by EnhancedButton)
    in EnhancedButton (created by FlatButton)
    in FlatButton (created by NavToolBar)
    in div (created by ToolbarGroup)
    in ToolbarGroup (created by NavToolBar)
    in div (created by Toolbar)
    in Toolbar (created by NavToolBar)
    in NavToolBar (created by Router)
    in MuiThemeProvider (created by Router)
    in div (created by Router)
    in nav (created by Router)
    in div (created by Router)
    in Router

Just putting it in the JsApp solves the warning, just like this:

object MyApp extends JSApp {
  //TODO: dev-server complains that we load several times?
  ReactTapEventPlugin(js.undefined)

  @JSExport
  override def main(): Unit = {
    val baseTheme = Mui.Styles.LightRawTheme
    val theme: MuiTheme =
      Mui.Styles.getMuiTheme(baseTheme)

    AppCSS.load()
    val router = MuiMuiThemeProvider(muiTheme = theme)(AppRouter.router())
    router.renderIntoDOM(dom.document.getElementById("content"))

    ()
  }
}

MuiInput inside a MuiDialog

I'm trying to show an input field inside a dialog, like so:

    def dialog($: ComponentScopeU[Props, _, Backend]) = {
        val dialogActions = List(
            MuiDialog.Action( text = "CANCEL"),
            MuiDialog.Action( text = "SUBMIT" , onClick = $.backend.onSubmit)
        )

        MuiDialog(ref = theDialogRef,title = "Document name", actions = dialogActions)(
            MuiInput(placeholder = "First name", description = "your first name as DOB", name = "firstname")
        )
    }

but it doesn't compile:

...
Stack trace suppressed: run last exampleClient/compile:compile for the full output.
[error] (exampleClient/compile:compile) java.lang.IllegalArgumentException: requirement failed: <error>$f is not a valid identifier

Am I doing something wrong here?

Suggestion: Use JSImport annotations instead of requiring user to configure an 'mui' or similar variables

Currently, the raw components for material-ui are contained in the Mui Scala object, which pulls its definition from an mui Javascript object which the library user must configure, e.g., as

var mui = require("material-ui");
mui.Styles = require("material-ui/styles");
mui.SvgIcons = require('material-ui/svg-icons/index');

window.mui = mui;

However, depending on the tool chain used to manage Javascript dependencies, getting such an object into the global namespace may be inconvenient and/or finicky, and it is also not obvious that it needs to be done to begin with.

Scala.js has an @JSImport annotation which is designed for this use case, that of importing definitions from modules. @JSName("mui") can be replaced with @JSImport("material-ui",Namespace) It has the same semantics as the original Mui object, so the facade classes don't need to be changed. It also works out of the box with sbt plugins like scalajs-bundler that manage NPM dependencies. Making such a tool chain work with scalajs-react-components' current method of getting component definitions is something I haven't managed to do yet.

(the above also applies to the other libraries this library provides facades for).

scalajs-react 0.10

So, I have some questions for how to do this, figured i would make a discussion issue for it.

  • Some of the components still written in scala (ReactDraggable, ReactTable, ReactTreeView, for example) require quite a lot of attention. Are these scala ports of javascript code? Is this a good time to make them into wrappers like materialui?
  • I'm happy you made the macro thingie, it makes a lot of boilerplate go away. I'm pretty sure i can hack that into doing the Callback rewriting we will need to do (adding runNow() to all functions passed into javascript land). However, this requires a dependency upon scalajs-react, whereas the macro project doesnt have it now. Should we include that dependency there? or copy the macros into this project?

I have a few more points, but let's decide these two first.

Demo build instructions don't work on MS-Windows

Demo build instructions are:

cd demo
sbt ~fastOptJS
//open a new terminal tab/window
npm install
npm start
//open in browser
http://localhost:8090/

fastOptJS works from the parent directory, not from demo. For me it works better from interactive sbt (sbt, then fastOptJS), rather than from the command line ("sbt fastOptJS").

There are issues with webpack on MS-Windows; it runs but does not serve the directory.

Here's one possible workaround: Instead of the npm install/npm start steps, run

python -m SimpleHTTPServer

in the demo subdirectory. Of course, you must have python installed to do this.

Add support for scalajs-react 1.2.0

When I try to compile, I get linker errors like this

[error] Referring to non-existent method japgolly.scalajs.react.component.Js$.apply(scala.scalajs.js.Any,japgolly.scalajs.react.CtorType$Summoner)japgolly.scalajs.react.component.JsBaseComponentTemplate$ComponentWithRoot
[error]   called from chandu0101.scalajs.react.components.elementalui.Table.apply(scala.collection.Seq)japgolly.scalajs.react.component.Js$UnmountedWithRoot

by using

import chandu0101.scalajs.react.components.elementalui._
        Table()(),

I am not sure why apply methods of components don't work anymore. Here are the release notes https://github.com/japgolly/scalajs-react/blob/97de7d9083f2e793c456866f60d42dd3cd483e21/doc/changelog/1.2.0.md

MUI RadioButtonGroup onChange property seems to have the wrong type

When trying to use the onChange property of the radiobuttongroup I'm getting the following error:

Uncaught scala.scalajs.runtime.UndefinedBehaviorError: An undefined behavior was detected: bladiebla is not an instance of java.lang.Boolean

I'm using the following code:

MuiRadioButtonGroup(onChange = {(e: ReactEventI, b: Boolean) => ???}, ...)(children)

The documentation from http://callemall.github.io/material-ui/#/components/switches contains:
"Callback function that is fired when a radio button has been clicked. Returns the event and the value of the radio button that has been selected."

I believe 'the value of a radio button' is a String instead of a Boolean? Is that the cause of this error?

New syntax for components which needs to be controlled

There is one pattern which really, really irritates me as a user. Take MuiDialog, for example.
Per now it requires the user to specify a ref string, look up that string through your components references, and if you're lucky and get scoping and strings right, you can call open() and dismiss() on it. Like this:

val d   = MuiDialog(ref = "dialogref", ...)
val ref = Ref.toJS[MuiDialogM]("dialogref")

ref.foreach(_.show())

Try as I might, that fails to work a lot of the time. I discovered that the ref parameter to these components really has a type of js.UndefinedOr[String | MuiDialogM ⇒ Unit], and suggest we expose that.

With that type signature we can write library/client code (not sure where it belongs - input wanted) like this:

class DialogController{
  private var dialogRef: U[MuiDialogM] = uNone

  def setRef(d: MuiDialogM): Unit =
    dialogRef = d

  def invalidate(): Callback =
    Callback(dialogRef = uNone)

  val openDialog: Callback =
    Callback(dialogRef.foreach(_.show()))

  val closeDialog: Callback =
    Callback(dialogRef.foreach(_.dismiss()))
}

that you can use like this:

MuiDialog(ref = dialogCtl.setRef _, ...)
...
MuiRaisedButton(onClick = (e: ReactEvent)  dialogCtl.openDialog)

So:

  • if we do this, is there a need for the String version of the ref parameter at all?
  • The code sample relies on a mutable var, can we do better?
  • What kind of interface to things like this is best to expose to users?

Material UI Buttons ripple animations not working smoothly

Material UI buttons ripple animations not working as expected ,if you're not okay with these you can always disable them until its fixed.
here are controls

disableTouchRipple  
disableFocusRipple

Note : this is low priority for me , If anyone interested please take care of this when you have some time to kill!.

JSMacro causes StackOverflowError when compiling certain classes

If you comment-in Dropdown in SuiLibrary, you get the following:

error] [E6] core/target/scala-2.12/src_managed/main/chandu0101/scalajs/react/components/semanticui/SuiDropdown.scala
[error] exception during macro expansion: java.lang.StackOverflowError
[error] L176: val props = JSMacroSuiDropdown
[error] L176: ^

Note that I've made a lot of other changes to get other things to work before I got to this result, so you may not be able to see it immediately.

createFactory vs createElement

I'm looking at your example

 def apply(children : ReactNode*) = {
     val f = React.asInstanceOf[js.Dynamic].createFactory(js.Dynamic.Global.AwesomeJSComp) // access real js component , make sure you wrap with createFactory (this is needed from 0.13 onwards)
     f(toJS, children.toJsArray).asInstanceOf[ReactComponentU_]
    }

and compare it to the current react documentation of the createFactory function https://facebook.github.io/react/docs/react-api.html#createfactory

This helper is considered legacy, and we encourage you to either use JSX or use React.createElement() directly instead.

I'm trying out createElement https://facebook.github.io/react/docs/react-api.html#createelement

def apply(children: ReactNode*): ReactComponentU_ = {
    if (children.isEmpty)
      React.asInstanceOf[js.Dynamic].createElement(comp, propsToJs).asInstanceOf[ReactComponentU_]
    else if (children.size == 1)
      React.asInstanceOf[js.Dynamic].createElement(comp, propsToJs,children.head ).asInstanceOf[ReactComponentU_]
    else
      React.asInstanceOf[js.Dynamic].createElement(comp, propsToJs, children.toJsArray ).asInstanceOf[ReactComponentU_]
  }

and it seems to work fine.

What is your thought about this?

NoSuchMethodError thrown during macro expansion

Hello,

I was doing an experiment with scalajs-react-components, but as using material-ui is not that straight forward I wanted to run the demo locally to see the webpack piece in action, but I'm finding the following issue:

[error] /home/oswaldo/git/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiLinearProgress.scala:32: exception during macro expansion: 
[error] java.lang.NoSuchMethodError: scala.reflect.api.Internals$ReificationSupportApi.SyntacticEmptyTypeTree()Lscala/reflect/api/Internals$Reifi$$$$911bdb98bf19646f65c8f8f3866fd1b$$$$peTreeExtractor;
[error]     at chandu0101.macros.tojs.JSMacro$$anonfun$4.apply(JSMacro.scala:88)
[error]     at chandu0101.macros.tojs.JSMacro$$anonfun$4.apply(JSMacro.scala:82)
[error]     at scala.collection.immutable.List.map(List.scala:273)
[error]     at chandu0101.macros.tojs.JSMacro$.applyImpl(JSMacro.scala:81)
[error]     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[error]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]     at java.lang.reflect.Method.invoke(Method.java:498)
[error]     at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers$$anonfun$resolveJavaReflectionRuntime$2.apply(JavaReflectionRuntimes.scala:34)
[error]     at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers$$anonfun$resolveJavaReflectionRuntime$2.apply(JavaReflectionRuntimes.scala:22)
[error]     at scala.tools.nsc.typechecker.Macros$class.macroExpandWithRuntime(Macros.scala:756)
[error]     val props = JSMacro[MuiLinearProgress](this)

The error block apparently repeats for every componnent. Any idea?

Semantic UI Typings

Hi in the readme I cannot find Semantic UI but in the source codes I can. So do I need to have Semantic UI Javascript files in order to make that work?

Also in the source files they are generated. So what sort of tools are you using to generate those files? Is that Typescript to Scala?

material ui wrapper

create wrappers for materialui components

Completed So Far :

MuiAppBar,
MuiFlatButton,
MuiRaisedButton,
MuiFloatingActionButton,
MuiDropDownMenu,
MuiDatePicker,
MuiDialog,
MuiPaper,
MuiTextField,
MuiCIrcularProgress,
MuiLinearProgress,
MuiSnackBar,
MuiSlider,
MuiTimePicker,
MuiSwitches,
MuiFontIcon,
MuiIconButton,
MuiToolbar,
MuiLeftNav,
MuiMenu
...

How to use ref

Trying to replace:

input(ref := "newTask")(onchange ==> b.processTask)(placeholder := "What needs to be done?")

with bootStrap input but I can't figure out where you would add that variable? Am I missing it or it's just not there yet?

elemental-ui modal demo not working

Uncaught Error: Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component'srendermethod, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).

@rleibman can you please look into this ..

Enhance ReactTable with optional row selection

This is to optionally enable the selection of rows within the table component.
This should be enabled by a property. If enabled, it should be possible to allow multiple rows to be selected by an additional property. Also, a select all checkbox should be dis-/enabled by configuration.

onKeyDown / onKeyUp / etc missing on MuiTextField (and others?)

The material-ui library stopped documenting that onKeyDown (for instance) is on a TextField (for instance).

They have this issue: mui/material-ui#6001
Which links to this react doc page: https://facebook.github.io/react/docs/events.html#keyboard-events
And that issue says:

Yes, synthetic events are props you can attach to any React component.

I'm a little out of my knowledge area here, but after copying MuiTextField and adding a onKeyDown: js.UndefOr[ReactKeyboardEventI ⇒ Callback] = js.undefined, field, I'm able to catch keyboard events again in 0.6.0 (using material-ui 0.17.4)

(Upstream) bug in MuiTimePicker

Passing js.undefined or null as the defaultTime for an MuiTimePicker results in

Uncaught TypeError: Cannot read property 'getHours' of null

when the time picker dialog is shown, iff the TimePicker format is "ampm".

Steps to reproduce:
render any of
MuiTimePicker()(),
MuiTimePicker(defaultTime = js.undefined)(),
MuiTimePicker(defaultTime = null)()

then trigger dialog show.

Why pass defaultTime as null? To show no time display at all.

Workaround: pass new Date(),or set time format to TWENTY_FOUR_HOUR. However both workarounds show a time (x:xx or 12:00am) rather than leaving the input blank, as desired.

Material-ui 1.2.1 support issue

I am trying to upgrade material-ui to 1.2.1 version, the code generation fails with ...
scala.MatchError: {O}0 ,> {O}{U%}_exactProp.default({O}{U%}Portal.propTypes, "Portal")

Seems like the requiresjs does not support below kind of js definition.
Portal.propTypes = process.env.NODE_ENV !== "production" ? (0, _exactProp.default)(Portal.propTypes, 'Portal') : {};

Checkout js code at @material-ui/core/Portal/Portal.js

installMuiContext

Hi,

how can i install mui context.

i'm getting this error while trying to compile demo.

value hackSpec is not a member of japgolly.scalajs.react.ReactComponentB.PSBN[chandu0101.scalajs.react.components.demo.pages.MuiPage.Props,Unit,Unit]
[error] possible cause: maybe a semicolon is missing before `value hackSpec'?
[error] .hackSpec(materialui.installMuiContext)

Rudolf

Geomicons demo throws exception in browser

I do this:

Jozsefs-MBP:influences joco$ git clone https://github.com/chandu0101/scalajs-react-components.git
Cloning into 'scalajs-react-components'...
remote: Counting objects: 6567, done.
remote: Total 6567 (delta 0), reused 0 (delta 0), pack-reused 6567
Receiving objects: 100% (6567/6567), 3.09 MiB | 914.00 KiB/s, done.
Resolving deltas: 100% (3443/3443), done.
Checking connectivity... done.
Jozsefs-MBP:influences joco$ mc

bash-3.2$ sbt demo/fastOptJS
[info] Loading global plugins from /Users/joco/.sbt/0.13/plugins
[info] Updating {file:/Users/joco/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.scala-android#sbt-android;1.6.13-SNAPSHOT ...
[warn] Choosing local for org.scala-android#sbt-android;1.6.13-SNAPSHOT
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Loading project definition from /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/project
[info] Updating {file:/Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/project/}scalajs-react-components-build...
[info] Resolving org.scala-android#sbt-android;1.6.13-SNAPSHOT ...
[warn] Choosing local for org.scala-android#sbt-android;1.6.13-SNAPSHOT
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 2 Scala sources to /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/project/target/scala-2.10/sbt-0.13/classes...
[info] Set current project to root (in build file:/Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/)
[info] Updating {file:/Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/}macros...
[info] Resolving org.scala-js#scalajs-test-interface_2.11;0.6.11 ...
[info] downloading https://repo1.maven.org/maven2/org/scala-js/scalajs-library_2.11/0.6.1/scalajs-library_2.11-0.6.1.jar ...
[info]  [SUCCESSFUL ] org.scala-js#scalajs-library_2.11;0.6.1!scalajs-library_2.11.jar (1000ms)
[info] Resolving org.scala-js#scalajs-test-interface_2.11;0.6.11 ...
[info] downloading https://repo1.maven.org/maven2/org/scalatest/scalatest_sjs0.6_2.11/3.0.0-M12/scalatest_sjs0.6_2.11-3.0.0-M12.jar ...
[info]  [SUCCESSFUL ] org.scalatest#scalatest_sjs0.6_2.11;3.0.0-M12!scalatest_sjs0.6_2.11.jar(bundle) (1905ms)
[info] downloading https://repo1.maven.org/maven2/org/scalactic/scalactic_sjs0.6_2.11/3.0.0-M12/scalactic_sjs0.6_2.11-3.0.0-M12.jar ...
[info]  [SUCCESSFUL ] org.scalactic#scalactic_sjs0.6_2.11;3.0.0-M12!scalactic_sjs0.6_2.11.jar(bundle) (365ms)
[info] Done updating.
[info] Updating {file:/Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/}core...
[info] Resolving com.github.japgolly.scalajs-react#core_sjs0.6_2.11;0.11.1 ...
[info] downloading https://repo1.maven.org/maven2/com/github/japgolly/scalacss/extreact_sjs0.6_2.11/0.5.0/extreact_sjs0.6_2.11-0.5.0.jar ...
[info]  [SUCCESSFUL ] com.github.japgolly.scalacss#extreact_sjs0.6_2.11;0.5.0!extreact_sjs0.6_2.11.jar (190ms)
[info] Done updating.
[info] Updating {file:/Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/}demo...
[info] Done updating.
[info] Compiling 3 Scala sources to /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/macros/target/scala-2.11/classes...
[info] Compiling 140 Scala sources to /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/target/scala-2.11/classes...
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/JsComponent.scala:11: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/JsComponent.scala:13: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/package.scala:15: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("We need to find a better solution here")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiAutoComplete.scala:71: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, use openOnFocus. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiAutoComplete.scala:114: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiCheckBox.scala:39: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Use uncheckedIcon instead. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiChip.scala:58: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("LinkButton is no longer required when the `href` property is provided.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiDatePicker.scala:82: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, use `cancelLabel` and `okLabel`.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiDatePicker.scala:134: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFlatButton.scala:61: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("LinkButton is no longer required when the `href` property is provided.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFloatingActionButton.scala:64: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("LinkButton is no longer required when the `href` property is provided.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconButton.scala:60: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("LinkButton is no longer required when the `href` property is provided.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconMenu.scala:103: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, use a [Popover](/#/components/popover).\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:14: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Refer to the `subheader` property. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:19: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, nest the `Subheader` component directly inside the `List`. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:22: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Refer to the `subheader` property. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiListItem.scala:96: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("LinkButton is no longer required when the `href` property is provided.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:16: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, use a [Popover](/#/components/popover).\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:51: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, use a [Popover](/#/components/popover).\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:73: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Refer to the `subheader` property. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:77: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, nest the `Subheader` component directly inside the `List`. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:81: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Refer to the `subheader` property. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiRaisedButton.scala:75: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("LinkButton is no longer required when the `href` property is provided.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiSelectField.scala:51: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Instead, use `menuStyle`. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTab.scala:58: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("LinkButton is no longer required when the `href` property is provided.\n      It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTextField.scala:52: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTimePicker.scala:105: @deprecated now takes two arguments; see the scaladoc.
[warn]   @deprecated("Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.")
[warn]    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/JsCollection.scala:31: chandu0101.scalajs.react.components.JsCollection[T] and scala.scalajs.js.UndefOr[Nothing] are unrelated: they will most likely never compare equal
[warn]       if (c == js.undefined) u
[warn]             ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/ReactDraggable.scala:160: method conditionally in class CallbackTo is deprecated: Use when() or unless().
[warn]       mouseDown << (onStart >> startDrag).conditionally(DomUtil.isLeftClick(e) && matches).void
[warn]                                           ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/ReactDraggable.scala:268: method conditionally in class CallbackTo is deprecated: Use when() or unless().
[warn]         _$.setState(newStateFrom(nextProps)).conditionally(nextProps.moveOnStartChange).void
[warn]                                              ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/ReactTable.scala:255: method ifTrue in object Callback is deprecated: Use when() or unless().
[warn]     .componentWillReceiveProps(e => Callback.ifTrue(e.$.props.data != e.nextProps.data, e.$.backend.onTextChange(e.nextProps)(e.$.state.filterText)))
[warn]                                              ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/ReactTreeView.scala:99: method conditionally in class CallbackTo is deprecated: Use when() or unless().
[warn]         .conditionally(P.root.children.nonEmpty)
[warn]          ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/ReactTreeView.scala:180: method conditionally in class CallbackTo is deprecated: Use when() or unless().
[warn]           .conditionally(newProps.filterMode)
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/elementalui/FormInput.scala:29: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[FormInput](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/elementalui/Modal.scala:17: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[Modal](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiAutoComplete.scala:150: value triggerUpdateOnFocus in class MuiAutoComplete is deprecated: Instead, use openOnFocus. It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiAutoComplete](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiAutoComplete.scala:72: value triggerUpdateOnFocus in class MuiAutoComplete is deprecated: Instead, use openOnFocus. It will be removed with v0.16.0.
[warn]   triggerUpdateOnFocus:    js.UndefOr[Boolean]                                               = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiAutoComplete.scala:115: value onEnterKeyDown in class MuiAutoComplete is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn]   onEnterKeyDown:          js.UndefOr[ReactKeyboardEventI => Callback]                       = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiAutoComplete.scala:10: value triggerUpdateOnFocus in class MuiAutoComplete is deprecated: Instead, use openOnFocus. It will be removed with v0.16.0.
[warn] case class MuiAutoComplete(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiCheckBox.scala:92: value unCheckedIcon in class MuiCheckbox is deprecated: Use uncheckedIcon instead. It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiCheckbox[T]](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiCheckBox.scala:40: value unCheckedIcon in class MuiCheckbox is deprecated: Use uncheckedIcon instead. It will be removed with v0.16.0.
[warn]   unCheckedIcon:        js.UndefOr[ReactElement]                       = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiCheckBox.scala:10: value unCheckedIcon in class MuiCheckbox is deprecated: Use uncheckedIcon instead. It will be removed with v0.16.0.
[warn] case class MuiCheckbox[T](
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiChip.scala:76: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiChip](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiChip.scala:59: value linkButton in class MuiChip is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn]   linkButton:           js.UndefOr[Boolean]                                   = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiChip.scala:10: value linkButton in class MuiChip is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiChip(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiDatePicker.scala:170: value wordings in class MuiDatePicker is deprecated: Instead, use `cancelLabel` and `okLabel`.
[warn]       It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiDatePicker](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiDatePicker.scala:83: value wordings in class MuiDatePicker is deprecated: Instead, use `cancelLabel` and `okLabel`.
[warn]       It will be removed with v0.16.0.
[warn]   wordings:                js.UndefOr[js.Object]                                  = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiDatePicker.scala:135: value onEnterKeyDown in class MuiDatePicker is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn]   onEnterKeyDown:          js.UndefOr[ReactKeyboardEventI => Callback]            = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiDatePicker.scala:10: value wordings in class MuiDatePicker is deprecated: Instead, use `cancelLabel` and `okLabel`.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiDatePicker(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFlatButton.scala:99: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiFlatButton](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFlatButton.scala:62: value linkButton in class MuiFlatButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn]   linkButton:           js.UndefOr[Boolean]                         = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFlatButton.scala:10: value linkButton in class MuiFlatButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiFlatButton(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFloatingActionButton.scala:92: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiFloatingActionButton](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFloatingActionButton.scala:65: value linkButton in class MuiFloatingActionButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn]   linkButton:           js.UndefOr[Boolean]                         = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiFloatingActionButton.scala:10: value linkButton in class MuiFloatingActionButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiFloatingActionButton(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiGridTile.scala:45: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiGridTile](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconButton.scala:90: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiIconButton](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconButton.scala:61: value linkButton in class MuiIconButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn]   linkButton:           js.UndefOr[Boolean]                         = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconButton.scala:10: value linkButton in class MuiIconButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiIconButton(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconMenu.scala:131: value openDirection in class MuiIconMenu is deprecated: Instead, use a [Popover](/#/components/popover).
[warn]       It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiIconMenu[T]](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconMenu.scala:104: value openDirection in class MuiIconMenu is deprecated: Instead, use a [Popover](/#/components/popover).
[warn]       It will be removed with v0.16.0.
[warn]   openDirection:            js.UndefOr[Corners]                                      = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiIconMenu.scala:10: value openDirection in class MuiIconMenu is deprecated: Instead, use a [Popover](/#/components/popover).
[warn]       It will be removed with v0.16.0.
[warn] case class MuiIconMenu[T](
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:32: value insetSubheader in class MuiList is deprecated: Refer to the `subheader` property. It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiList](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:15: value insetSubheader in class MuiList is deprecated: Refer to the `subheader` property. It will be removed with v0.16.0.
[warn]   insetSubheader: js.UndefOr[Boolean]       = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:20: value subheader in class MuiList is deprecated: Instead, nest the `Subheader` component directly inside the `List`. It will be removed with v0.16.0.
[warn]   subheader:      js.UndefOr[ReactNode]     = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:23: value subheaderStyle in class MuiList is deprecated: Refer to the `subheader` property. It will be removed with v0.16.0.
[warn]   subheaderStyle: js.UndefOr[CssProperties] = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiList.scala:10: value insetSubheader in class MuiList is deprecated: Refer to the `subheader` property. It will be removed with v0.16.0.
[warn] case class MuiList(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiListItem.scala:126: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiListItem](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiListItem.scala:97: value linkButton in class MuiListItem is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn]   linkButton:                  js.UndefOr[Boolean]                         = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiListItem.scala:10: value linkButton in class MuiListItem is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiListItem(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:89: value animated in class MuiMenu is deprecated: Instead, use a [Popover](/#/components/popover).
[warn]       It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiMenu[T]](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:17: value animated in class MuiMenu is deprecated: Instead, use a [Popover](/#/components/popover).
[warn]       It will be removed with v0.16.0.
[warn]   animated:                 js.UndefOr[Boolean]                                                            = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:52: value openDirection in class MuiMenu is deprecated: Instead, use a [Popover](/#/components/popover).
[warn]       It will be removed with v0.16.0.
[warn]   openDirection:            js.UndefOr[Corners]                                                            = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:74: value insetSubheader in class MuiMenu is deprecated: Refer to the `subheader` property. It will be removed with v0.16.0.
[warn]   insetSubheader:           js.UndefOr[Boolean]                                                            = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:78: value subheader in class MuiMenu is deprecated: Instead, nest the `Subheader` component directly inside the `List`. It will be removed with v0.16.0.
[warn]   subheader:                js.UndefOr[ReactNode]                                                          = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:82: value subheaderStyle in class MuiMenu is deprecated: Refer to the `subheader` property. It will be removed with v0.16.0.
[warn]   subheaderStyle:           js.UndefOr[CssProperties]                                                      = js.undefined){
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiMenu.scala:10: value animated in class MuiMenu is deprecated: Instead, use a [Popover](/#/components/popover).
[warn]       It will be removed with v0.16.0.
[warn] case class MuiMenu[T](
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiRaisedButton.scala:105: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiRaisedButton](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiRaisedButton.scala:76: value linkButton in class MuiRaisedButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn]   linkButton:              js.UndefOr[Boolean]                         = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiRaisedButton.scala:10: value linkButton in class MuiRaisedButton is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiRaisedButton(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiSelectField.scala:85: value selectFieldRoot in class MuiSelectField is deprecated: Instead, use `menuStyle`. It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiSelectField[T]](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiSelectField.scala:52: value selectFieldRoot in class MuiSelectField is deprecated: Instead, use `menuStyle`. It will be removed with v0.16.0.
[warn]   selectFieldRoot:        js.UndefOr[CssProperties]                     = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiSelectField.scala:10: value selectFieldRoot in class MuiSelectField is deprecated: Instead, use `menuStyle`. It will be removed with v0.16.0.
[warn] case class MuiSelectField[T](
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiStepButton.scala:77: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiStepButton](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiStepLabel.scala:28: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiStepLabel](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTab.scala:97: method UnionEvidence in package components is deprecated: We need to find a better solution here
[warn]     val props = JSMacro[MuiTab[T]](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTab.scala:59: value linkButton in class MuiTab is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn]   linkButton:           js.UndefOr[Boolean]                         = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTab.scala:10: value linkButton in class MuiTab is deprecated: LinkButton is no longer required when the `href` property is provided.
[warn]       It will be removed with v0.16.0.
[warn] case class MuiTab[T](
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTextField.scala:89: value onEnterKeyDown in class MuiTextField is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiTextField](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTextField.scala:53: value onEnterKeyDown in class MuiTextField is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn]   onEnterKeyDown:          js.UndefOr[ReactKeyboardEventI => Callback] = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTextField.scala:10: value onEnterKeyDown in class MuiTextField is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn] case class MuiTextField(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTimePicker.scala:141: value onEnterKeyDown in class MuiTimePicker is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn]     val props = JSMacro[MuiTimePicker](this)
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTimePicker.scala:106: value onEnterKeyDown in class MuiTimePicker is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn]   onEnterKeyDown:          js.UndefOr[ReactKeyboardEventI => Callback]            = js.undefined,
[warn]   ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/materialui/MuiTimePicker.scala:10: value onEnterKeyDown in class MuiTimePicker is deprecated: Use onKeyDown and check for keycode instead. It will be removed with v0.16.0.
[warn] case class MuiTimePicker(
[warn]            ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/reactselect/Async.scala:74: type FUNC in object TODO is deprecated
[warn]   filterOption: js.UndefOr[FUNC] = js.undefined,
[warn]                    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/reactselect/Async.scala:76: type ANY in object TODO is deprecated
[warn]   filterOptions: js.UndefOr[ANY] = js.undefined,
[warn]                     ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/reactselect/Async.scala:96: type FUNC in object TODO is deprecated
[warn]   newOptionCreator: js.UndefOr[FUNC] = js.undefined,
[warn]                        ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/reactselect/Select.scala:35: type FUNC in object TODO is deprecated
[warn]   filterOption: js.UndefOr[FUNC] = js.undefined,
[warn]                    ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/reactselect/Select.scala:37: type ANY in object TODO is deprecated
[warn]   filterOptions: js.UndefOr[ANY] = js.undefined,
[warn]                     ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/reactselect/Select.scala:43: type ANY in object TODO is deprecated
[warn]   inputProps: js.UndefOr[ANY] = js.undefined,
[warn]                  ^
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/core/src/main/scala/chandu0101/scalajs/react/components/reactselect/Select.scala:65: type FUNC in object TODO is deprecated
[warn]   newOptionCreator: js.UndefOr[FUNC] = js.undefined,
[warn]                        ^
[warn] 101 warnings found
[info] Compiling 113 Scala sources to /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/target/scala-2.11/classes...
[warn] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/src/main/scala/demo/components/materialui/MuiDrawerDemo.scala:78: scala.scalajs.js.UndefOr[String] and String are unrelated: they will most likely never compare equal
[warn]                   checked     = S.selected == c.id,
[warn]                                            ^
[warn] one warning found
[info] Fast optimizing demo/assets/demo-opt.js
[success] Total time: 96 s, completed Oct 4, 2016 10:21:32 AM
bash-3.2$ cd demo
bash-3.2$ ls
assets                  images                  package.json            target                  webpack.config.prod.js
bundles                 index.html              src                     webpack.config.js
bash-3.2$ npm install

> [email protected] install /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/node_modules/fsevents
> node-pre-gyp install --fallback-to-build

[fsevents] Success: "/Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/node_modules/fsevents/lib/binding/Release/node-v48-darwin-x64/fse.node" is installed via remote

> [email protected] postinstall /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/node_modules/gifsicle
> node lib/install.js

  ✔ gifsicle pre-build test passed successfully

> [email protected] postinstall /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/node_modules/jpegtran-bin
> node lib/install.js

  ✔ jpegtran pre-build test passed successfully

> [email protected] postinstall /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/node_modules/optipng-bin
> node lib/install.js

  ✔ optipng pre-build test passed successfully

> [email protected] postinstall /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo/node_modules/pngquant-bin
> node lib/install.js

  ✔ pngquant pre-build test passed successfully
[email protected] /Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   ├── [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ └── [email protected]
│ │ │   └─┬ [email protected]
│ │ │     └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └─┬ [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ ├── [email protected]
│ │ │   │ └─┬ [email protected]
│ │ │   │   └── [email protected]
│ │ │   └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └─┬ [email protected]
│ │ │   └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └─┬ [email protected]
│ │ │   ├── [email protected]
│ │ │   └── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   ├── [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ └── [email protected]
│ │ │   └─┬ [email protected]
│ │ │     └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   └─┬ [email protected]
│ │ │     └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   ├─┬ [email protected]
│ │   │ └── [email protected]
│ │   └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   └─┬ [email protected]
│ │     ├── [email protected]
│ │     ├── [email protected]
│ │     └─┬ [email protected]
│ │       └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │   └── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │   └── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │   └── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   ├── [email protected]
│ │ │   └─┬ [email protected]
│ │ │     └── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ └── [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ ├─┬ [email protected]
│ │ │   │ │ └── [email protected]
│ │ │   │ └── [email protected]
│ │ │   ├── [email protected]
│ │ │   ├── [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ ├── [email protected]
│ │ │   │ ├─┬ [email protected]
│ │ │   │ │ └── [email protected]
│ │ │   │ ├── [email protected]
│ │ │   │ └─┬ [email protected]
│ │ │   │   ├─┬ [email protected]
│ │ │   │   │ └── [email protected]
│ │ │   │   └── [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ ├─┬ [email protected]
│ │ │   │ │ └── [email protected]
│ │ │   │ └─┬ [email protected]
│ │ │   │   ├─┬ [email protected]
│ │ │   │   │ └── [email protected]
│ │ │   │   └── [email protected]
│ │ │   ├─┬ [email protected]
│ │ │   │ ├─┬ [email protected]
│ │ │   │ │ └─┬ [email protected]
│ │ │   │ │   └─┬ [email protected]
│ │ │   │ │     └── [email protected]
│ │ │   │ └── [email protected]
│ │ │   └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ └─┬ [email protected]
│ │ │   └─┬ [email protected]
│ │ │     └── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ └─┬ [email protected]
│   ├── [email protected]
│   ├── [email protected]
│   ├── [email protected]
│   ├── [email protected]
│   ├── [email protected]
│   └── [email protected]
├── [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│   ├── [email protected]
│   ├─┬ [email protected]
│   │ ├─┬ [email protected]
│   │ │ ├─┬ [email protected]
│   │ │ │ ├─┬ [email protected]
│   │ │ │ │ ├─┬ [email protected]
│   │ │ │ │ │ └─┬ [email protected]
│   │ │ │ │ │   ├── [email protected]
│   │ │ │ │ │   ├── [email protected]
│   │ │ │ │ │   ├── [email protected]
│   │ │ │ │ │   └── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ └── [email protected]
│   │ │ │ ├─┬ [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ └── [email protected]
│   │ │ │ ├─┬ [email protected]
│   │ │ │ │ ├─┬ [email protected]
│   │ │ │ │ │ └── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ ├─┬ [email protected]
│   │ │ │ │ │ └─┬ [email protected]
│   │ │ │ │ │   └── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ ├── [email protected]
│   │ │ │ │ └── [email protected]
│   │ │ │ ├── [email protected]
│   │ │ │ ├── [email protected]
│   │ │ │ └─┬ [email protected]
│   │ │ │   └─┬ [email protected]
│   │ │ │     └── [email protected]
│   │ │ ├─┬ [email protected]
│   │ │ │ └── [email protected]
│   │ │ └─┬ [email protected]
│   │ │   └── [email protected]
│   │ ├─┬ [email protected]
│   │ │ ├─┬ [email protected]
│   │ │ │ └── [email protected]
│   │ │ ├─┬ [email protected]
│   │ │ │ ├─┬ [email protected]
│   │ │ │ │ └─┬ [email protected]
│   │ │ │ │   └── [email protected]
│   │ │ │ ├── [email protected]
│   │ │ │ ├── [email protected]
│   │ │ │ └── [email protected]
│   │ │ ├─┬ [email protected]
│   │ │ │ └── [email protected]
│   │ │ ├── [email protected]
│   │ │ └── [email protected]
│   │ └─┬ [email protected]
│   │   ├── [email protected]
│   │   └─┬ [email protected]
│   │     ├── [email protected]
│   │     └─┬ [email protected]
│   │       ├── [email protected]
│   │       └── [email protected]
│   └─┬ [email protected]
│     └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │   └─┬ [email protected]
│ │     └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │   └── [email protected]
│ │ │ └─┬ [email protected]
│ │ │   └── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ └── [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├── [email protected]
│ │ │ └── [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│   ├─┬ [email protected]
│   │ ├─┬ [email protected]
│   │ │ └─┬ [email protected]
│   │ │   └── [email protected]
│   │ └── [email protected]
│   ├─┬ [email protected]
│   │ ├── [email protected]
│   │ ├─┬ [email protected]
│   │ │ ├── [email protected]
│   │ │ ├─┬ [email protected]
│   │ │ │ └─┬ [email protected]
│   │ │ │   └── [email protected]
│   │ │ └── [email protected]
│   │ ├── [email protected]
│   │ ├─┬ [email protected]
│   │ │ └── [email protected]
│   │ ├─┬ [email protected]
│   │ │ └── [email protected]
│   │ └─┬ [email protected]
│   │   └─┬ [email protected]
│   │     └── [email protected]
│   ├─┬ [email protected]
│   │ ├── [email protected]
│   │ └─┬ [email protected]
│   │   └── [email protected]
│   ├── [email protected]
│   ├── [email protected]
│   ├── [email protected]
│   ├── [email protected]
│   ├─┬ [email protected]
│   │ └── [email protected]
│   ├─┬ [email protected]
│   │ └── [email protected]
│   ├─┬ [email protected]
│   │ └── [email protected]
│   ├─┬ [email protected]
│   │ └─┬ [email protected]
│   │   └── [email protected]
│   └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│   └── [email protected]
├─┬ UNMET PEER DEPENDENCY [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │   └── [email protected]
│ │ │ └── [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│   └── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│   └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ ├─┬ [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├─┬ [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ ├─┬ [email protected]
│ │ │ │ │ │ └── [email protected]
│ │ │ │ │ ├── [email protected]
│ │ │ │ │ └─┬ [email protected]
│ │ │ │ │   ├── [email protected]
│ │ │ │ │   ├── [email protected]
│ │ │ │ │   └── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── [email protected]
│ │ │ └── [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│   └── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│   └── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │   ├── [email protected]
│ │   ├─┬ [email protected]
│ │   │ ├─┬ [email protected]
│ │   │ │ ├─┬ [email protected]
│ │   │ │ │ └── [email protected]
│ │   │ │ └── [email protected]
│ │   │ ├── [email protected]
│ │   │ └── [email protected]
│ │   └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │   ├─┬ [email protected]
│ │   │ └── [email protected]
│ │   ├── [email protected]
│ │   ├─┬ [email protected]
│ │   │ ├── [email protected]
│ │   │ └─┬ [email protected]
│ │   │   ├─┬ [email protected]
│ │   │   │ └── [email protected]
│ │   │   ├─┬ [email protected]
│ │   │   │ └── [email protected]
│ │   │   ├─┬ [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├─┬ [email protected]
│ │   │   │ │ │ ├─┬ [email protected]
│ │   │   │ │ │ │ └── [email protected]
│ │   │   │ │ │ └── [email protected]
│ │   │   │ │ ├─┬ [email protected]
│ │   │   │ │ │ └── [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ └── [email protected]
│ │   │   ├─┬ [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ └── [email protected]
│ │   │   ├─┬ [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ ├─┬ [email protected]
│ │   │   │ │ │ ├── [email protected]
│ │   │   │ │ │ ├── [email protected]
│ │   │   │ │ │ ├── [email protected]
│ │   │   │ │ │ └── [email protected]
│ │   │   │ │ ├─┬ [email protected]
│ │   │   │ │ │ └── [email protected]
│ │   │   │ │ ├─┬ [email protected]
│ │   │   │ │ │ ├── [email protected]
│ │   │   │ │ │ ├─┬ [email protected]
│ │   │   │ │ │ │ └── [email protected]
│ │   │   │ │ │ ├── [email protected]
│ │   │   │ │ │ └── [email protected]
│ │   │   │ │ └─┬ [email protected]
│ │   │   │ │   └── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ ├── [email protected]
│ │   │   │ │ ├─┬ [email protected]
│ │   │   │ │ │ ├── [email protected]
│ │   │   │ │ │ ├── [email protected]
│ │   │   │ │ │ └── [email protected]
│ │   │   │ │ └─┬ [email protected]
│ │   │   │ │   ├── [email protected]
│ │   │   │ │   ├── [email protected]
│ │   │   │ │   ├─┬ [email protected]
│ │   │   │ │   │ └── [email protected]
│ │   │   │ │   ├── [email protected]
│ │   │   │ │   ├─┬ [email protected]
│ │   │   │ │   │ └── [email protected]
│ │   │   │ │   ├── [email protected]
│ │   │   │ │   ├── [email protected]
│ │   │   │ │   └── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ └── [email protected]
│ │   │   ├─┬ [email protected]
│ │   │   │ └─┬ [email protected]
│ │   │   │   ├── [email protected]
│ │   │   │   ├── [email protected]
│ │   │   │   ├─┬ [email protected]
│ │   │   │   │ └─┬ [email protected]
│ │   │   │   │   ├── [email protected]
│ │   │   │   │   └── [email protected]
│ │   │   │   └── [email protected]
│ │   │   ├── [email protected]
│ │   │   ├─┬ [email protected]
│ │   │   │ ├── [email protected]
│ │   │   │ ├─┬ [email protected]
│ │   │   │ │ └── [email protected]
│ │   │   │ └── [email protected]
│ │   │   └─┬ [email protected]
│ │   │     ├─┬ [email protected]
│ │   │     │ └── [email protected]
│ │   │     ├── [email protected]
│ │   │     ├─┬ [email protected]
│ │   │     │ └── [email protected]
│ │   │     ├─┬ [email protected]
│ │   │     │ ├── [email protected]
│ │   │     │ ├── [email protected]
│ │   │     │ ├── [email protected]
│ │   │     │ ├── [email protected]
│ │   │     │ ├── [email protected]
│ │   │     │ └── [email protected]
│ │   │     └── [email protected]
│ │   ├── [email protected]
│ │   ├─┬ [email protected]
│ │   │ └── [email protected]
│ │   ├─┬ [email protected]
│ │   │ └── [email protected]
│ │   └─┬ [email protected]
│ │     └── [email protected]
│ └── [email protected]
└─┬ [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ ├── [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ ├── [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├─┬ [email protected]
  │ │ ├── [email protected]
  │ │ └── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├─┬ [email protected]
  │ │ ├── [email protected]
  │ │ └── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ ├── [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ └── [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ ├── [email protected]
  │ │ └── [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ └─┬ [email protected]
  │   ├─┬ [email protected]
  │   │ └── [email protected]
  │   ├── [email protected]
  │   ├─┬ [email protected]
  │   │ ├─┬ [email protected]
  │   │ │ └─┬ [email protected]
  │   │ │   ├── [email protected]
  │   │ │   ├── [email protected]
  │   │ │   └── [email protected]
  │   │ ├── [email protected]
  │   │ └── [email protected]
  │   ├─┬ [email protected]
  │   │ └── [email protected]
  │   ├─┬ [email protected]
  │   │ └── [email protected]
  │   ├── [email protected]
  │   ├── [email protected]
  │   ├── [email protected]
  │   ├─┬ [email protected]
  │   │ └── [email protected]
  │   ├── [email protected]
  │   ├─┬ [email protected]
  │   │ ├─┬ [email protected]
  │   │ │ └── [email protected]
  │   │ └── [email protected]
  │   ├─┬ [email protected]
  │   │ ├─┬ [email protected]
  │   │ │ ├── [email protected]
  │   │ │ └─┬ [email protected]
  │   │ │   └── [email protected]
  │   │ ├── [email protected]
  │   │ ├── [email protected]
  │   │ └── [email protected]
  │   └─┬ [email protected]
  │     ├── [email protected]
  │     └── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ ├── [email protected]
  │ ├─┬ [email protected]
  │ │ ├── [email protected]
  │ │ └── [email protected]
  │ └── [email protected]
  ├─┬ [email protected]
  │ └─┬ [email protected]
  │   └─┬ [email protected]
  │     └── [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ └─┬ [email protected]
  │ │   └── [email protected]
  │ ├── [email protected]
  │ ├── [email protected]
  │ └─┬ [email protected]
  │   └── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  └─┬ [email protected]
    └── [email protected]

npm WARN [email protected] requires a peer of react@^0.13.0 || ^0.14.0 but none was installed.
npm WARN [email protected] No license field.
bash-3.2$  ls
assets                  images                  node_modules            src                     webpack.config.js
bundles                 index.html              package.json            target                  webpack.config.prod.js
bash-3.2$ pwd
/Users/joco/dev/scala.js/react/sjs-playaround/influences/scalajs-react-components/demo
bash-3.2$ cat README
bash-3.2$ cd ../README.md
bash: cd: ../README.md: Not a directory
bash-3.2$ cat ../README.md
scalajs-react-components
========================

[![Join the chat at https://gitter.im/chandu0101/scalajs-react-components](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/chandu0101/scalajs-react-components?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Reusable [scalajs-react] (https://github.com/japgolly/scalajs-react) components.

We are trying to make the experience of using javascript components in scala.js
 as good as possible by adding typed wrappers.

Adding types to javascript is a lot of guesswork, and we're certain to have gotten them wrong
 some places. Bug reports and/or pull requests are very much welcome! :)


### Wrappers for javascript components:
These components require you to provide javascript yourself.

- Material-ui 0.15.2
- Elemental-ui 0.5.4
- Google maps (downloads js directly from google)
- React GeomIcon (react-geomicons: 2.0.4)
- React Infinite (react-infinite, 0.7.1)
- Spinner (react-spinner, 0.2.3)
- React Select (react-select: 1.0.0-beta)
- React TagsInput (react-tagsinput, 3.0.3)
- React Slick (react-slick: 0.9.3)

### Components written in scala.js
- DefaultSelect
- Pager
- ReactDraggable
- ReactListView
- ReactPopOver
- ReactSearchBox
- ReactTable
- ReactTreeView

## Gotchas

#### You have to call `apply` even when components dont have children:
```scala
MuiRaisedButton(label = "label")()

Bad implicit inference for js.UndefOr[T]

Scala will only run one implicit to convert a type to another,
which means that in order to convert a String to js.UndefOr[ReactNode]
it needs to be done in two steps:

(1) String => ReactNode

(2) ReactNode => js.UndefOr[ReactNode]

We provide special versions of a few such implicits in
chandu0101.scalajs.react.components.Implicits.
To use:

import chandu0101.scalajs.react.components.Implicits._

or to put them in scope for your whole application:

package object mypackage extends chandu0101.scalajs.react.components.Implicits

Uncaught TypeError: Cannot read property 'RaisedButton' of undefined

If you try to use a javascript wrapper like material-ui and
you get an error like this, make sure the corresponding javascript library
is loaded in the global namespace where the wrapper expects to find it.

Sbt does not by itself understand these module systems, so unless you're prepared
to talk it into supporting it, please rather have a look at the
webpack configuration for the demo project to
see an example of how this can be solved.

Setup

SBT

Add these dependencies to you sbt build file

libraryDependencies ++= Seq(
  "com.github.japgolly.scalajs-react" %%% "core" % "0.11.1",
  "com.github.japgolly.scalajs-react" %%% "extra" % "0.11.1",
  "com.github.chandu0101.scalajs-react-components" %%% "core" % "0.5.0"
)

ScalaCSS

In order to use the scala.js components, you need to make sure you load their CSS:

GlobalRegistry.register(<component>.Style)

See here for more details

Provide javascript

In the case of material-ui at least you generally need to use javascript tools to
generate a bundle of the javascript dependencies, because sbt and the scala.js
plugin do not understand require().

See the demo to see how it can be done.

Demo With Code Examples

Online :

http://chandu0101.github.io/sjrc/

Local :

sbt demo/fastOptJS
cd demo
//open a new terminal tab/window
npm install
npm start
//open in browser
http://localhost:8090/

```bash-3.2$
bash-3.2$ sbt fastOptJS
[info] Loading global plugins from /Users/joco/.sbt/0.13/plugins
[info] Updating {file:/Users/joco/.sbt/0.13/plugins/}global-plugins...
 [1959] ./~/react-slick/lib/inner-slider.js 5.83 kB {6} [built]
 [1960] ./~/react-slick/lib/mixins/event-handlers.js 5.68 kB {6} [built]
 [1961] ./~/react-slick/lib/mixins/trackHelper.js 4.12 kB {6} [built]
 [1962] ./~/react-slick/lib/mixins/ReactDOM.js 519 bytes {6} [built]
 [1963] ./~/react-slick/~/object-assign/index.js 484 bytes {6} [built]
 [1964] ./~/react-slick/lib/mixins/helpers.js 9.64 kB {6} [built]
 [1965] ./~/react-slick/lib/initial-state.js 906 bytes {6} [built]
 [1966] ./~/react-slick/lib/default-props.js 988 bytes {6} [built]
 [1967] ./~/react-slick/lib/track.js 4.38 kB {6} [built]
 [1968] ./~/react-slick/lib/dots.js 2 kB {6} [built]
 [1969] ./~/react-slick/lib/arrows.js 3.28 kB {6} [built]
 [1970] ./~/json2mq/index.js 1.16 kB {6} [built]
 [1971] ./~/string-convert/camel2hyphen.js 216 bytes {6} [built]
 [1972] ./~/react-responsive-mixin/index.js 826 bytes {6} [built]
 [1973] ./~/can-use-dom/index.js 139 bytes {6} [built]
 [1974] ./~/enquire.js/dist/enquire.js 9.46 kB {6} [built]
chunk    {7} react_spinner-bundle.js (react_spinner) 5.26 kB {1} [rendered]
    [0] ./bundles/react-spinner.js 110 bytes {7} [built]
 [1975] ./~/react-spinner/build/index.js 3.41 kB {7} [built]
 [1976] ./~/react-spinner/react-spinner.css 879 bytes {7} [built]
 [1977] ./~/css-loader!./~/react-spinner/react-spinner.css 856 bytes {7} [built]
chunk    {8} react_tags_input-bundle.js (react_tags_input) 19.1 kB {1} [rendered]
    [0] ./bundles/react-tags-input.js 138 bytes {8} [built]
 [1978] ./~/react-tagsinput/react-tagsinput.js 17.1 kB {8} [built]
 [1979] ./~/react-tagsinput/react-tagsinput.css 885 bytes {8} [built]
 [1980] ./~/css-loader!./~/react-tagsinput/react-tagsinput.css 1.02 kB {8} [built]
webpack: bundle is now VALID.
^C
bash-3.2$

and get this:

index-bundle.js:968 Uncaught Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method ofReactGeomIconDemo.invariant @ index-bundle.js:968instantiateReactComponent @ index-bundle.js:15198instantiateChild @ index-bundle.js:15013(anonymous function) @ index-bundle.js:15040traverseAllChildrenImpl @ index-bundle.js:1589traverseAllChildrenImpl @ index-bundle.js:1605traverseAllChildren @ index-bundle.js:1684instantiateChildren @ index-bundle.js:15039_reconcilerInstantiateChildren @ index-bundle.js:14649mountChildren @ index-bundle.js:14688_createInitialChildren @ index-bundle.js:11709mountComponent @ index-bundle.js:11534mountComponent @ index-bundle.js:8020mountChildren @ index-bundle.js:14700_createInitialChildren @ index-bundle.js:11709mountComponent @ index-bundle.js:11534mountComponent @ index-bundle.js:8020mountChildren @ index-bundle.js:14700_createInitialChildren @ index-bundle.js:11709mountComponent @ index-bundle.js:11534mountComponent @ index-bundle.js:8020mountChildren @ index-bundle.js:14700_createInitialChildren @ index-bundle.js:11709mountComponent @ index-bundle.js:11534mountComponent @ index-bundle.js:8020performInitialMount @ index-bundle.js:15623mountComponent @ index-bundle.js:15510mountComponent @ index-bundle.js:8020mountChildren @ index-bundle.js:14700_createInitialChildren @ index-bundle.js:11709mountComponent @ index-bundle.js:11534mountComponent @ index-bundle.js:8020performInitialMount @ index-bundle.js:15623mountComponent @ index-bundle.js:15510mountComponent @ index-bundle.js:8020updateChildren @ index-bundle.js:15090_reconcilerUpdateChildren @ index-bundle.js:14670_updateChildren @ index-bundle.js:14774updateChildren @ index-bundle.js:14761_updateDOMChildren @ index-bundle.js:11952updateComponent @ index-bundle.js:11770receiveComponent @ index-bundle.js:11728receiveComponent @ index-bundle.js:8099updateChildren @ index-bundle.js:15078_reconcilerUpdateChildren @ index-bundle.js:14670_updateChildren @ index-bundle.js:14774updateChildren @ index-bundle.js:14761_updateDOMChildren @ index-bundle.js:11952updateComponent @ index-bundle.js:11770receiveComponent @ index-bundle.js:11728receiveComponent @ index-bundle.js:8099_updateRenderedComponent @ index-bundle.js:16004_performComponentUpdate @ index-bundle.js:15974updateComponent @ index-bundle.js:15895receiveComponent @ index-bundle.js:15797receiveComponent @ index-bundle.js:8099_updateRenderedComponent @ index-bundle.js:16004_performComponentUpdate @ index-bundle.js:15974updateComponent @ index-bundle.js:15895receiveComponent @ index-bundle.js:15797receiveComponent @ index-bundle.js:8099_updateRenderedComponent @ index-bundle.js:16004_performComponentUpdate @ index-bundle.js:15974updateComponent @ index-bundle.js:15895receiveComponent @ index-bundle.js:15797receiveComponent @ index-bundle.js:8099updateChildren @ index-bundle.js:15078_reconcilerUpdateChildren @ index-bundle.js:14670_updateChildren @ index-bundle.js:14774updateChildren @ index-bundle.js:14761_updateDOMChildren @ index-bundle.js:11952updateComponent @ index-bundle.js:11770receiveComponent @ index-bundle.js:11728receiveComponent @ index-bundle.js:8099_updateRenderedComponent @ index-bundle.js:16004_performComponentUpdate @ index-bundle.js:15974updateComponent @ index-bundle.js:15895performUpdateIfNecessary @ index-bundle.js:15811performUpdateIfNecessary @ index-bundle.js:8131runBatchedUpdates @ index-bundle.js:7728perform @ index-bundle.js:9013perform @ index-bundle.js:9013perform @ index-bundle.js:7667flushBatchedUpdates @ index-bundle.js:7750closeAll @ index-bundle.js:9079perform @ index-bundle.js:9026batchedUpdates @ index-bundle.js:17748batchedUpdates @ index-bundle.js:7675dispatchEvent @ index-bundle.js:17908

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.