Skip to content

Instantly share code, notes, and snippets.

@Raynos
Created August 27, 2012 02:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Raynos/3485064 to your computer and use it in GitHub Desktop.
Save Raynos/3485064 to your computer and use it in GitHub Desktop.
Widget

Widget

For when you need a widget interface

With sorta

var sorta = require("sorta")
, Element = require("fragment").Element
, string = "<span data-foo></span>"
, DeltaStream = require("delta-stream")
, databind = require("data-bind")
, SpliceStream = require("splice-stream")
var spliceStream = SpliceStream()
, list = spliceStream.createList()
, deltaStream = DeltaStream()
, delta = deltaStream.createDelta()
, sort = sorta({ list: "ul", item: "li" }, createWidget)
spliceStream.pipe(sort)
list.push(deltaStream)
delta.set("foo", "bar")
sort.appendTo(document.body)
/*
<body>
<ul>
<li>
<span data-foo>bar</span>
</li>
</ul>
</body>
*/
function createWidget(stream, element) {
var elem = Element(string)
, widget = Widget(elem)
stream.pipe(databind(elem))
widget.appendTo(element)
}
module.exports = Widget
function Widget(elem) {
return {
appendTo: appendTo
}
function appendTo(parent) {
parent.appendChild(elem)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment