Skip to content

Instantly share code, notes, and snippets.

@Raynos
Created February 3, 2014 08:53
Show Gist options
  • Save Raynos/8780708 to your computer and use it in GitHub Desktop.
Save Raynos/8780708 to your computer and use it in GitHub Desktop.
var toElement = require("virtual-dom/render")
var diff = require("virtual-dom/diff")
var patch = require("virtual-dom/patch")
var raf = require("raf").polyfill
module.exports = main
function main(obs, render, elem) {
var currTree = render(obs())
var rootNode = toElement(currTree)
var nextState = false
obs(function (state) {
nextState = state
})
raf(function renderDOM() {
if (!nextState) {
return raf(renderDOM)
}
var nextTree = render(nextState)
var patches = diff(currTree, nextTree)
patch(rootNode, patches)
currTree = nextTree
nextState = false
raf(renderDOM)
})
elem.appendChild(rootNode)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment