diff --git a/example_project/assets/svelte/LightControllers.svelte b/example_project/assets/svelte/LightControllers.svelte
new file mode 100644
index 0000000..ecb5959
--- /dev/null
+++ b/example_project/assets/svelte/LightControllers.svelte
@@ -0,0 +1,60 @@
+
+
+
diff --git a/example_project/assets/svelte/LightStatusBar.svelte b/example_project/assets/svelte/LightStatusBar.svelte
new file mode 100644
index 0000000..aac948b
--- /dev/null
+++ b/example_project/assets/svelte/LightStatusBar.svelte
@@ -0,0 +1,52 @@
+
+
+
+
+
+ {brightness > 0 ? `${brightness}%` : "OFF"}
+
+
+
+
diff --git a/example_project/lib/example/application.ex b/example_project/lib/example/application.ex
index c44835f..1d14433 100644
--- a/example_project/lib/example/application.ex
+++ b/example_project/lib/example/application.ex
@@ -8,7 +8,8 @@ defmodule Example.Application do
@impl true
def start(_type, _args) do
children = [
- {NodeJS.Supervisor, [path: Application.app_dir(:example, "/priv/static/assets"), pool_size: 4]},
+ {NodeJS.Supervisor,
+ [path: Application.app_dir(:example, "/priv/static/assets"), pool_size: 4]},
# Start the Telemetry supervisor
ExampleWeb.Telemetry,
# Start the Ecto repository
diff --git a/example_project/lib/example_web/components/layouts/app.html.heex b/example_project/lib/example_web/components/layouts/app.html.heex
index 0c4cbe0..05a06de 100644
--- a/example_project/lib/example_web/components/layouts/app.html.heex
+++ b/example_project/lib/example_web/components/layouts/app.html.heex
@@ -27,41 +27,47 @@
2
3
4
5
6
7
8
+
+ 9
+
+ """
+ end
+
+ def handle_event("up", _, socket) do
+ brightness = socket.assigns.brightness
+ Logger.info(brightness)
+
+ case brightness do
+ 100 ->
+ {:noreply, socket}
+
+ _ ->
+ new_brightness = brightness + 10
+ {:noreply, assign(socket, %{brightness: new_brightness, previous: brightness})}
+ end
+ end
+
+ def handle_event("down", _, socket) do
+ brightness = socket.assigns.brightness
+ Logger.info(brightness)
+
+ case brightness do
+ 0 ->
+ {:noreply, socket}
+
+ _ ->
+ new_brightness = brightness - 10
+ {:noreply, assign(socket, %{brightness: new_brightness, previous: brightness})}
+ end
+ end
+
+ def handle_event("on", _, socket) do
+ previous = socket.assigns.previous
+ brightness = socket.assigns.brightness
+ {:noreply, assign(socket, %{brightness: previous, previous: brightness})}
+ end
+
+ def handle_event("off", _, socket) do
+ previous = socket.assigns.brightness
+ {:noreply, assign(socket, %{brightness: 0, previous: previous})}
+ end
+
+ defp isOn?(brightness) do
+ brightness > 0
+ end
+end
diff --git a/example_project/lib/example_web/router.ex b/example_project/lib/example_web/router.ex
index 88d630b..68ceb3f 100644
--- a/example_project/lib/example_web/router.ex
+++ b/example_project/lib/example_web/router.ex
@@ -26,6 +26,7 @@ defmodule ExampleWeb.Router do
live "/log-list", LiveExample4
live "/breaking-news", LiveExample5
live "/chat", LiveExample6
+ live "/lights", LiveLights
end
# Other scopes may use custom stacks.