@@ -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
|
||||
})
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
-33
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user