Skip to content

Latest commit

 

History

History

runtime-browser

@transclusion/runtime-browser

Usage

import {run} from '@transclusion/runtime-browser'

run(
  {
    element: document.getElementById('root'),
    props: {},
    worker: new Worker('worker.js')
  },
  context => {
    context.ports.history.subscribe(msg => {
      switch (msg.type) {
        case 'PUSH_STATE':
          history.pushState(msg.state, msg.title, msg.path)
          break

        case 'REPLACE_STATE':
          history.replaceState(msg.state, msg.title, msg.path)
          break
      }
    })

    window.addEventListener('popstate', event => {
      context.ports.history.send({
        type: 'POP_STATE',
        state: event.state,
        path: location.pathname
      })
    })
  }
)