router.ts 446 B
Newer Older
Andrei Eres's avatar
Andrei Eres committed
import { atom, onStart } from 'nanostores'
Andrei Eres's avatar
Andrei Eres committed
import { getParam, getPath } from '../utils/routing'
Andrei Eres's avatar
Andrei Eres committed

type Page = {
  path: string
  param: string
}

function parse() {
  const path = getPath()
  const param = getParam(path)
  router.set({ path, param })
}

Andrei Eres's avatar
Andrei Eres committed
export const router = atom<Page>()

onStart(router, () => {
Andrei Eres's avatar
Andrei Eres committed
  parse()
  window.addEventListener('hashchange', parse)
  return () => {
    window.removeEventListener('hashchange', parse)
  }
})