-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
40 lines (35 loc) · 1.06 KB
/
index.js
File metadata and controls
40 lines (35 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var shell = require('electron').shell
module.exports = function (options) {
options = options || {}
var openExternal = options.openExternal || false
return {
namespace: 'location',
state: {
pathname: '/'
},
reducers: {
pathname: function (data, state) {
return { pathname: data.pathname }
}
},
subscriptions: [
function catchLinks (send, done) {
window.onclick = function (e) {
var node = (function traverse (node) {
if (!node) return
if (node.localName !== 'a') return traverse(node.parentNode)
if (node.href === undefined) return traverse(node.parentNode)
return node
})(e.target)
if (!node || !node.href) return
e.preventDefault()
if (openExternal && node.href.indexOf('http') > -1) {
return shell.openExternal(node.href)
}
var href = node.href.replace('file://', '')
send('location:pathname', { pathname: href.replace(/#$/, '') }, done)
}
}
]
}
}