summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-12-03 22:46:04 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-12-03 22:46:04 -0800
commitbac53bef685f4e00e7061923dcd57dea4f9e229b (patch)
tree01f891d69c0535aba2b0ad3baeb9278301e230fc /examples
parentdf33a5cabf8692110f81c9ef60015bea51fbf2dc (diff)
downloadhands-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.sbt4
-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)