1use wasm_bindgen::prelude::*;
2use wasm_bindgen::JsValue;
3
4pub mod template;
5pub mod utils;
6pub mod errors;
7
8pub use errors::DocxError;
10pub use template::render_handlebars;
11
12pub fn set_panic_hook() {
15 #[cfg(feature = "console_error_panic_hook")]
16 console_error_panic_hook::set_once();
17}
18
19#[wasm_bindgen]
21pub fn render(
22 zip_bytes: Vec<u8>,
23 data_json: &str,
24) -> Result<JsValue, JsValue> {
25 let data: serde_json::Value = serde_json::from_str(data_json)
26 .map_err(|e| JsValue::from_str(&format!("JSON 解析错误: {}", e)))?;
27
28 let result = template::render_handlebars(zip_bytes, &data)
30 .map_err(|e| JsValue::from_str(&e.to_string()))?;
31
32 Ok(JsValue::from(result))
34}