UNPKG

787 BJavaScriptView Raw
1import { h } from 'preact'
2
3const findA = (el) => {
4 if (el.tagName === 'A') {
5 return el
6 }
7 if (el.parentElement) {
8 return findA(el.parentElement)
9 }
10 return null
11}
12
13const getLocalPathname = (a) => {
14 if (a && a.origin === window.location.origin) {
15 return a.href.replace(window.location.origin, '')
16 }
17 return null
18}
19
20export default ({onInternalNav, children, className}) => (
21 h('div', {
22 className,
23 onClick: (e) => {
24 const aTag = findA(e.target)
25 if (aTag && aTag.target !== '_blank') {
26 const url = getLocalPathname(aTag)
27 const meta = e.ctrlKey || e.shiftKey || e.altKey || e.metaKey || e.button !== 0
28 if (url && !meta) {
29 e.preventDefault()
30 onInternalNav(url)
31 }
32 }
33 }
34 }, children)
35)