diff --git a/src/editor_view.rs b/src/editor_view.rs index 111e502..afccbde 100644 --- a/src/editor_view.rs +++ b/src/editor_view.rs @@ -2,11 +2,12 @@ use std::{ops::Deref, rc::Rc}; use crate::{FrameId, GlobalLayoutState, GlobalMemoCell, PanelDirection, SplitPanel}; use anyhow::Error; +use create_script_dialog::CreateScriptDialog; use editor_area::EditorArea; use editor_nav::EditorNav; use storage::fetch_initial_editor_state; use wasm_bindgen::{closure::Closure, JsCast}; -use web_sys::{window, HtmlInputElement, KeyboardEvent}; +use web_sys::KeyboardEvent; use yew::{ function_component, html, use_effect_with, use_node_ref, use_state, use_state_eq, AttrValue, Callback, Html, Properties, UseStateHandle, @@ -14,6 +15,7 @@ use yew::{ use self::storage::load_file_contents; +mod create_script_dialog; mod editor_area; mod editor_nav; mod storage; @@ -96,29 +98,6 @@ fn close_modals(state: &UseStateHandle>) { state.set(new_state.into()); } -fn create_script(state: &UseStateHandle>) { - let mut scriptname = window() - .and_then(|w| w.document()) - .and_then(|d| d.get_element_by_id("newscriptname")) - .map(|el| el.unchecked_into::().value()) - .unwrap_or_default(); - if scriptname.is_empty() { - scriptname = "untitled.lua".to_owned(); - } - - let mut new_state = (*state.deref().deref()).clone(); - - let scriptname: AttrValue = scriptname.into(); - if new_state.available_files.contains(&scriptname) { - new_state.error_msg = Some("A script with that name already exists".into()); - } - - new_state.available_files.push(scriptname.clone()); - new_state.open_file = scriptname; - new_state.show_create_dialog = false; - state.set(new_state.into()); -} - #[function_component(CodeEditorView)] pub fn editor_view(props: &EditorViewProps) -> Html { let editor_state: UseStateHandle> = @@ -172,35 +151,10 @@ pub fn editor_view(props: &EditorViewProps) -> Html { Box::new(|| {}) }); - let state_modalclose1 = editor_state.clone(); - let state_modalclose2 = editor_state.clone(); - let state_createscript = editor_state.clone(); html! {
{if editor_state.show_create_dialog { - html! { <> -