diff --git a/src/app.rs b/src/components/app.rs
similarity index 93%
rename from src/app.rs
rename to src/components/app.rs
index 5da0a50..1721939 100644
--- a/src/app.rs
+++ b/src/components/app.rs
@@ -1,6 +1,6 @@
use yew::prelude::*;
-use crate::home::Home;
+use crate::components::Home;
pub struct App {}
diff --git a/src/home.rs b/src/components/home.rs
similarity index 70%
rename from src/home.rs
rename to src/components/home.rs
index a2a1088..e609129 100644
--- a/src/home.rs
+++ b/src/components/home.rs
@@ -1,7 +1,7 @@
-use crate::canvas::Canvas;
-use crate::controls::Controls;
use yew::prelude::*;
+use crate::components::waveform::WaveformContainer;
+
pub struct Home {}
impl Component for Home {
@@ -21,11 +21,6 @@ impl Component for Home {
}
fn view(&self) -> Html {
- html! {
-
-
-
-
- }
+ html! { }
}
}
diff --git a/src/components/mod.rs b/src/components/mod.rs
new file mode 100644
index 0000000..8c9045a
--- /dev/null
+++ b/src/components/mod.rs
@@ -0,0 +1,8 @@
+pub mod app;
+pub mod home;
+pub mod player;
+pub mod waveform;
+
+pub use app::App;
+pub use home::Home;
+pub use player::Player;
diff --git a/src/player.rs b/src/components/player.rs
similarity index 100%
rename from src/player.rs
rename to src/components/player.rs
diff --git a/src/canvas.rs b/src/components/waveform/canvas.rs
similarity index 99%
rename from src/canvas.rs
rename to src/components/waveform/canvas.rs
index 02e5618..8164564 100644
--- a/src/canvas.rs
+++ b/src/components/waveform/canvas.rs
@@ -4,7 +4,6 @@ use std::sync::Arc;
use wasm_bindgen::prelude::*;
use wasm_bindgen::JsCast;
use web_sys::HtmlCanvasElement;
-use yew::agent::Bridged;
use yew::prelude::*;
use yew::services::ConsoleService;
use yew::Bridge;
diff --git a/src/controls.rs b/src/components/waveform/container.rs
similarity index 65%
rename from src/controls.rs
rename to src/components/waveform/container.rs
index 9f684f7..bb9991a 100644
--- a/src/controls.rs
+++ b/src/components/waveform/container.rs
@@ -1,12 +1,12 @@
-use super::player::Player;
+use super::canvas::Canvas;
use crate::agents::audio_agent::{self, AudioAgent};
+use crate::components::Player;
use web_sys::HtmlInputElement;
-use yew::agent::Dispatched;
use yew::agent::Dispatcher;
use yew::prelude::*;
use yew::services::ConsoleService;
-pub struct Controls {
+pub struct Container {
link: ComponentLink,
file_input: NodeRef,
audio_agent: Dispatcher,
@@ -16,7 +16,7 @@ pub enum Msg {
SubmitForm,
}
-impl Component for Controls {
+impl Component for Container {
type Message = Msg;
type Properties = ();
@@ -31,7 +31,7 @@ impl Component for Controls {
fn update(&mut self, msg: Self::Message) -> ShouldRender {
match msg {
Msg::SubmitForm => {
- if let Err(e) = self.handle_submit_form() {
+ if let Err(e) = self.handle_upload() {
ConsoleService::error(&e);
};
}
@@ -43,24 +43,27 @@ impl Component for Controls {
false
}
- fn rendered(&mut self, _: bool) {}
-
fn view(&self) -> Html {
html! {
-
-
-
+
}
}
}
-impl Controls {
- fn handle_submit_form(&mut self) -> Result<(), String> {
+impl Container {
+ fn handle_upload(&mut self) -> Result<(), String> {
let file_input = self
.file_input
.cast::()
diff --git a/src/components/waveform/mod.rs b/src/components/waveform/mod.rs
new file mode 100644
index 0000000..4bea6b4
--- /dev/null
+++ b/src/components/waveform/mod.rs
@@ -0,0 +1,4 @@
+mod canvas;
+mod container;
+
+pub use container::Container as WaveformContainer;
diff --git a/src/lib.rs b/src/lib.rs
index 829180d..e3cc1b7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,3 +1,5 @@
+#![recursion_limit = "256"]
+
extern crate console_error_panic_hook;
extern crate js_sys;
@@ -6,11 +8,7 @@ use wasm_bindgen::prelude::*;
use yew::prelude::*;
mod agents;
-mod app;
-mod canvas;
-mod controls;
-mod home;
-mod player;
+mod components;
mod utils;
#[wasm_bindgen(start)]
@@ -18,5 +16,5 @@ pub fn run_app() {
#[cfg(debug_assertions)]
panic::set_hook(Box::new(console_error_panic_hook::hook));
- App::::new().mount_to_body();
+ App::::new().mount_to_body();
}