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