diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-12-03 22:46:04 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-12-03 22:46:04 -0800 |
commit | bac53bef685f4e00e7061923dcd57dea4f9e229b (patch) | |
tree | 01f891d69c0535aba2b0ad3baeb9278301e230fc /examples | |
parent | df33a5cabf8692110f81c9ef60015bea51fbf2dc (diff) | |
download | hands-on-scala-js-bac53bef685f4e00e7061923dcd57dea4f9e229b.tar.gz hands-on-scala-js-bac53bef685f4e00e7061923dcd57dea4f9e229b.tar.bz2 hands-on-scala-js-bac53bef685f4e00e7061923dcd57dea4f9e229b.zip |
scalatex broken out into separate project which needs to be published separately
Diffstat (limited to 'examples')
-rw-r--r-- | examples/demos/build.sbt | 4 | ||||
-rw-r--r-- | examples/demos/src/main/scala/scrollmenu/ScrollSpy.scala (renamed from examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala) | 42 |
2 files changed, 24 insertions, 22 deletions
diff --git a/examples/demos/build.sbt b/examples/demos/build.sbt index 5b55829..aa801b0 100644 --- a/examples/demos/build.sbt +++ b/examples/demos/build.sbt @@ -1,4 +1,6 @@ -import scala.scalajs.sbtplugin.ScalaJSPlugin.ScalaJSKeys.jsDependencies +import scala.scalajs.sbtplugin.ScalaJSPlugin.ScalaJSKeys._ + +(emitSourceMaps in fullOptJS) := false scalaJSSettings diff --git a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala b/examples/demos/src/main/scala/scrollmenu/ScrollSpy.scala index ce3f07f..736f9b3 100644 --- a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala +++ b/examples/demos/src/main/scala/scrollmenu/ScrollSpy.scala @@ -15,7 +15,7 @@ case class MenuNode(frag: dom.HTMLElement, id: String, start: Int, end: Int) */ class ScrollSpy(structure: Tree[String], main: dom.HTMLElement){ - val (headers, domTrees) = { + lazy val domTrees = { var i = -1 def recurse(t: Tree[String], depth: Int): Tree[MenuNode] = { val curr = @@ -40,26 +40,26 @@ class ScrollSpy(structure: Tree[String], children ) } - def offset(el: dom.HTMLElement, parent: dom.HTMLElement): Double = { - if (el == parent) 0 - else el.offsetTop + offset(el.offsetParent.asInstanceOf[dom.HTMLElement], parent) - } - val headers = { - val menuItems = { - def rec(current: Tree[String]): Seq[String] = { - current.value +: current.children.flatMap(rec) - } - rec(structure).tail - } - js.Array( - menuItems.map(Controller.munge) - .map(dom.document.getElementById) - .map(offset(_, main)):_* - ) - } val domTrees = recurse(structure, 0) - (headers, domTrees) + domTrees + } + def offset(el: dom.HTMLElement, parent: dom.HTMLElement): Double = { + if (el == parent) 0 + else el.offsetTop + offset(el.offsetParent.asInstanceOf[dom.HTMLElement], parent) + } + lazy val headers = { + val menuItems = { + def rec(current: Tree[String]): Seq[String] = { + current.value +: current.children.flatMap(rec) + } + rec(structure).tail + } + + js.Array( + menuItems.map(name => dom.document.getElementById(Controller.munge(name))) + .map((el) => () => offset(el, main)):_* + ) } var open = false @@ -113,8 +113,8 @@ class ScrollSpy(structure: Tree[String], val t @ Tree(m, children) = tree val win = if(m.start == -1) true else { - val before = headers(m.start) <= scrollTop - val after = (m.end >= headers.length) || headers(m.end) > scrollTop + val before = headers(m.start)() <= scrollTop + val after = (m.end >= headers.length) || headers(m.end)() > scrollTop before && after } val childIndexes = children.map(walkIndex) |