Packages
tableau
0.4.0
0.30.0
0.29.0
0.28.0
0.27.1
0.27.0
0.26.1
0.26.0
0.25.1
0.25.0
0.24.1
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.1
0.17.0
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Static site generator for elixir
Current section
Files
Jump to
Current section
Files
lib/tableau/components.ex
defmodule Tableau.Components do
@moduledoc """
Builtin components.
"""
require EEx
import Tableau.Strung
@doc """
A component for triggering live reloading.
Include this in your root layout to have your site live reload when using `mix tableau.server`.
"""
EEx.function_from_string(
:def,
:live_reload,
~g'''
<script defer>
function connect() {
try {
window.socket = new WebSocket('ws://' + location.host + '/ws');
window.socket.onmessage = function(e) {
if (e.data === "reload") {
location.reload();
}
}
window.socket.onopen = () => {
waitForConnection(() => window.socket.send("subscribe"), 300);
};
window.socket.onclose = () => {
setTimeout(() => connect(), 500);
};
function waitForConnection(callback, interval) {
console.log("Waiting for connection!")
if (window.socket.readyState === 1) {
callback();
} else {
console.log("setting a timeout")
setTimeout(() => waitForConnection(callback, interval), interval);
}
}
} catch (e) {
setTimeout(() => connect(), 500);
}
}
connect();
</script>
'''html,
[:_]
)
end