hyperbole-0.5.0: client/util/live-reload.js
// This isn't magic. If you want custom behavior, copy and modify this however you like.
//
// As with any custom js, add to a single page via the `script` combinator
// page = do
// pure $ do
// el "This is my page"
// script "custom.js"
//
// or to the entire app by adding a script tag to your document function. See Example.App.toDocument
//
// Consider conditionally adding it based on ENV
console.log("Live Reload enabled")
function showNotification(message) {
const notification = document.createElement('div');
notification.classList.add("live-reload")
notification.innerHTML = message;
jackIn(notification.style)
notification.addEventListener('click', function() {
notification.remove()
})
document.body.appendChild(notification);
}
document.addEventListener("hyp-socket-disconnect", () => {
showNotification("DISCONNECTED - will reload on reconnect")
})
document.addEventListener("hyp-socket-reconnect", () => {
setTimeout(() => {
location.reload()
}, 0)
})
// duplicate cyber style stuff here so the default live reload is fun
function jackIn(style) {
style.position = 'fixed';
style.bottom = '15px';
style.left = '15px';
style.right = '15px';
style.backgroundColor = 'rgba(160, 63, 56, 1.0)';
style.color = '#fff';
style.borderTop = 'solid #EC6458 4px';
style.padding = '15px';
style.zIndex = '1000';
style.clipPath = 'polygon(0 0, 100% 0, 100% calc(100% - 16px), calc(100% - 16px) 100%, 0 100%)';
}