* fix error about pop * location-history: add optional callbacks * set handler on first tick discovered by @dcposch * Show error when media format is unsupported Before this change, the player would just get stuck on the loading screen forever without notifying the user.
37 lines
917 B
JavaScript
37 lines
917 B
JavaScript
module.exports = {
|
|
setDispatch,
|
|
dispatch,
|
|
dispatcher
|
|
}
|
|
|
|
// Memoize most of our event handlers, which are functions in the form
|
|
// () => dispatch(<args>)
|
|
// ... this prevents virtual-dom from updating every listener on every update()
|
|
var _dispatchers = {}
|
|
var _dispatch = () => {}
|
|
|
|
function setDispatch (dispatch) {
|
|
_dispatch = dispatch
|
|
}
|
|
|
|
// Get a _memoized event handler that calls dispatch()
|
|
// All args must be JSON-able
|
|
function dispatcher (...args) {
|
|
var json = JSON.stringify(args)
|
|
var handler = _dispatchers[json]
|
|
if (!handler) {
|
|
handler = _dispatchers[json] = (e) => {
|
|
// Don't click on whatever is below the button
|
|
e.stopPropagation()
|
|
// Don't regisiter clicks on disabled buttons
|
|
if (e.currentTarget.classList.contains('disabled')) return
|
|
_dispatch.apply(null, args)
|
|
}
|
|
}
|
|
return handler
|
|
}
|
|
|
|
function dispatch (...args) {
|
|
_dispatch.apply(null, args)
|
|
}
|