diff --git a/index.js b/index.js index e0da53d..f395265 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,13 @@ var documentReady = require('document-ready') +var nanohistory = require('nanohistory') var nanorouter = require('nanorouter') var nanomount = require('nanomount') var nanomorph = require('nanomorph') +var nanohref = require('nanohref') var nanoraf = require('nanoraf') var nanobus = require('nanobus') var assert = require('assert') -var onHistoryChange = require('./lib/history') -var onHref = require('./lib/href') - module.exports = Choo function Choo (opts) { @@ -66,7 +65,7 @@ function Choo (opts) { bus.on('render', rerender) if (opts.history !== false) { - onHistoryChange(function (href) { + nanohistory(function (href) { bus.emit('pushState') }) @@ -79,7 +78,7 @@ function Choo (opts) { }) if (opts.href !== false) { - onHref(function (location) { + nanohref(function (location) { var href = location.href var currHref = window.location.href if (href === currHref) return @@ -103,7 +102,7 @@ function Choo (opts) { var newTree = start() documentReady(function () { var root = document.querySelector(selector) - assert.ok(root, 'could not query selector: ' + selector) + assert.ok(root, 'choo.mount: could not query selector: ' + selector) nanomount(root, newTree) tree = root }) diff --git a/lib/history.js b/lib/history.js deleted file mode 100644 index a01805e..0000000 --- a/lib/history.js +++ /dev/null @@ -1,19 +0,0 @@ -var assert = require('assert') - -module.exports = history - -// listen to html5 pushstate events -// and update router accordingly -// fn(str) -> null -function history (cb) { - assert.equal(typeof cb, 'function', 'sheet-router/history: cb must be a function') - window.onpopstate = function () { - var obj = { - pathname: document.location.pathname, - search: document.location.search, - href: document.location.href, - hash: document.location.hash - } - cb(obj) - } -} diff --git a/lib/href.js b/lib/href.js deleted file mode 100644 index ef004ef..0000000 --- a/lib/href.js +++ /dev/null @@ -1,33 +0,0 @@ -var assert = require('assert') - -module.exports = href - -var noRoutingAttrName = 'data-no-routing' - -// handle a click if is anchor tag with an href -// and url lives on the same domain. Replaces -// trailing '#' so empty links work as expected. -// (fn(str), obj?) -> undefined -function href (cb, root) { - assert.equal(typeof cb, 'function', 'sheet-router/href: cb must be a function') - - window.onclick = function (e) { - if ((e.button && e.button !== 0) || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey) return - - var node = (function traverse (node) { - if (!node || node === root) return - if (node.localName !== 'a') return traverse(node.parentNode) - if (node.href === undefined) return traverse(node.parentNode) - if (window.location.host !== node.host) return traverse(node.parentNode) - return node - })(e.target) - - if (!node) return - - var isRoutingDisabled = node.hasAttribute(noRoutingAttrName) - if (isRoutingDisabled) return - - e.preventDefault() - cb(node) - } -} diff --git a/package.json b/package.json index a167940..6958ad4 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "bel": "^4.5.1", "document-ready": "^2.0.1", "nanobus": "^3.0.0", + "nanohistory": "^1.0.0", + "nanohref": "^1.0.0", "nanomorph": "^4.0.0", "nanomount": "^1.0.0", "nanoraf": "^3.0.0",