UNPKG

moy-router

Version:

Give a solution for moy-dom router management.

62 lines (59 loc) 1.12 kB
import { Maybe, and, or, compose, assoc, __, path, } from 'moy-fp' import parseRoute from '../utils/parseRoute' const windowMonad = Maybe.of(window) export default current => and( windowMonad.map( window => window.addEventListener('popstate', compose( assoc( 'route', __, current, ), path(['state', 'route']), )) ) )({ back(){ windowMonad.map( window => window.history.back() ) }, go(index){ windowMonad.map( window => window.history.go(index) ) }, forward(){ windowMonad.map( window => window.history.forward() ) }, replace(routeConfig){ const route = parseRoute(routeConfig) windowMonad.map( window => or( window.history.replaceState(route, '', route.pathname) )( assoc('route', route, current) ) ) }, push(routeConfig){ const route = parseRoute(routeConfig) windowMonad.map( window => or( window.history.replaceState(route, '', route.pathname) )( assoc('route', route, current) ) ) } })