diff --git a/client/web/src/components/widgets/options/ToolOptions.vue b/client/web/src/components/widgets/options/ToolOptions.vue index 7bfd0b0cad..fc68687002 100644 --- a/client/web/src/components/widgets/options/ToolOptions.vue +++ b/client/web/src/components/widgets/options/ToolOptions.vue @@ -56,6 +56,7 @@ interface NumberOption { kind: "number"; initial: number; step: number; + min?: number; callback?: Function; } @@ -116,7 +117,7 @@ export default defineComponent({ ], ], ["Shape", [{ kind: "number", initial: 6, step: 1, min: 3, callback: this.setToolSettings }]], - ]), + ]) as ToolOptionsMap, SeparatorType, }; }, diff --git a/client/web/wasm/src/document.rs b/client/web/wasm/src/document.rs index 9114704496..38f4dfa02e 100644 --- a/client/web/wasm/src/document.rs +++ b/client/web/wasm/src/document.rs @@ -27,11 +27,13 @@ pub fn select_tool(tool: String) -> Result<(), JsValue> { /// Update the settings for a given tool #[wasm_bindgen] pub fn set_tool_settings(tool: String, settings: &JsValue) -> Result<(), JsValue> { - let settings: ToolSettings = settings.into_serde().expect("Invalid JSON for ToolSettings"); - EDITOR_STATE.with(|editor| match translate_tool(&tool) { - Some(tool) => editor.borrow_mut().handle_message(ToolMessage::SetToolSettings(tool, settings)).map_err(convert_error), - None => Err(Error::new(&format!("Couldn't select {} because it was not recognized as a valid tool", tool)).into()), - }) + match settings.into_serde::() { + Ok(settings) => EDITOR_STATE.with(|editor| match translate_tool(&tool) { + Some(tool) => editor.borrow_mut().handle_message(ToolMessage::SetToolSettings(tool, settings)).map_err(convert_error), + None => Err(Error::new(&format!("Couldn't select {} because it was not recognized as a valid tool", tool)).into()), + }), + Err(err) => Err(Error::new(&format!("Invalud JSON for ToolSettings: {}", err)).into()), + } } #[wasm_bindgen]