use wasm_bindgen::prelude::*;
#[wasm_bindgen(js_name = svgToPng)]
pub fn svg_to_png(svg: &[u8], scale: Option<f32>) -> Result<Vec<u8>, JsError> {
crate::svg_to_png(svg, scale.unwrap_or(1.0)).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = svgToPdf)]
pub fn svg_to_pdf(svg: &[u8]) -> Result<Vec<u8>, JsError> {
crate::svg_to_pdf(svg).map_err(|e| JsError::new(&e.to_string()))
}
#[cfg(feature = "bpmn")]
#[wasm_bindgen(js_name = bpmnImport)]
pub fn bpmn_import(xml: &str) -> Result<String, JsError> {
let d = crate::bpmn::import(xml).map_err(|e| JsError::new(&e))?;
Ok(crate::bpmn::model_json(&d).to_string())
}
#[cfg(feature = "bpmn")]
#[wasm_bindgen(js_name = bpmnLayout)]
pub fn bpmn_layout(blocks_json: &str) -> Result<String, JsError> {
let d = crate::bpmn::bpmn_layout::layout_json(blocks_json).map_err(|e| JsError::new(&e))?;
Ok(crate::bpmn::model_json(&d).to_string())
}
#[cfg(feature = "bpmn")]
#[wasm_bindgen(js_name = bpmnExport)]
pub fn bpmn_export(model_json: &str) -> Result<String, JsError> {
let d = crate::bpmn::from_json(model_json).map_err(|e| JsError::new(&e))?;
Ok(crate::bpmn::export(&d))
}
#[cfg(feature = "bpmn")]
#[wasm_bindgen(js_name = bpmnRender)]
pub fn bpmn_render(
model_json: &str,
animate: Option<bool>,
background: Option<String>,
) -> Result<String, JsError> {
let d = crate::bpmn::from_json(model_json).map_err(|e| JsError::new(&e))?;
let opts = crate::bpmn::RenderOpts {
animate: animate.unwrap_or(false),
background,
};
Ok(crate::bpmn::render_opts(&d, &opts))
}
#[wasm_bindgen]
pub fn version() -> String {
env!("CARGO_PKG_VERSION").to_string()
}