subslay/
lib.rs

1mod core;
2pub use core::EmojiStylist;
3
4#[cfg(target_arch = "wasm32")]
5use wasm_bindgen::prelude::*;
6#[cfg(target_arch = "wasm32")]
7use wasm_bindgen::JsValue;
8#[cfg(target_arch = "wasm32")]
9use serde_wasm_bindgen; // Make sure this is used
10
11#[cfg(target_arch = "wasm32")]
12#[wasm_bindgen]
13pub struct WasmEmojiStylist {
14    inner: EmojiStylist,
15}
16
17#[cfg(target_arch = "wasm32")]
18#[wasm_bindgen]
19impl WasmEmojiStylist {
20    #[wasm_bindgen(constructor)]
21    pub fn new() -> Result<WasmEmojiStylist, JsValue> {
22        EmojiStylist::default()
23            .map(|inner| WasmEmojiStylist { inner })
24            // Corrected: Ensure String error is converted to &str for JsValue::from_str
25            .map_err(|e| JsValue::from_str(e.as_str()))
26    }
27
28    #[wasm_bindgen]
29    pub fn slay(&self, input: &str) -> JsValue {
30        // Corrected: Use serde_wasm_bindgen::to_value
31        serde_wasm_bindgen::to_value(&self.inner.slay(input)).unwrap()
32    }
33}
34
35#[cfg(target_arch = "wasm32")]
36#[wasm_bindgen]
37pub fn slay(input: &str) -> JsValue {
38    match EmojiStylist::default() {
39        Ok(stylist) => {
40            // Corrected: Use serde_wasm_bindgen::to_value
41            serde_wasm_bindgen::to_value(&stylist.slay(input)).unwrap()
42        },
43        // Already uses format! which creates a temporary String that can be coerced to &str
44        Err(e) => JsValue::from_str(&format!("Error: {}", e)),
45    }
46}