use wasm_bindgen::prelude::*;
#[cfg(feature = "pdf")]
#[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()))
}
#[cfg(feature = "pdf")]
#[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(js_name = mermaidToKymoJson)]
pub fn mermaid_to_kymojson(src: &str) -> Result<String, JsError> {
crate::mermaid_to_kymojson(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = mermaidToD2)]
pub fn mermaid_to_d2(src: &str) -> Result<String, JsError> {
crate::mermaid_to_d2(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = mermaidToDot)]
pub fn mermaid_to_dot(src: &str) -> Result<String, JsError> {
crate::mermaid_to_dot(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = mermaidToMermaid)]
pub fn mermaid_to_mermaid(src: &str) -> Result<String, JsError> {
crate::mermaid_to_mermaid(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = mermaidToDrawio)]
pub fn mermaid_to_drawio(src: &str) -> Result<String, JsError> {
crate::mermaid_to_drawio(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = mermaidToSvg)]
pub fn mermaid_to_svg(src: &str) -> Result<String, JsError> {
crate::mermaid_to_svg(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = mermaidSequenceToSvg)]
pub fn mermaid_sequence_to_svg(src: &str) -> Result<String, JsError> {
crate::mermaid_to_sequence_svg(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = mermaidStateToSvg)]
pub fn mermaid_state_to_svg(src: &str) -> Result<String, JsError> {
crate::mermaid_state_to_svg(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = d2ToSvg)]
pub fn d2_to_svg(src: &str) -> Result<String, JsError> {
crate::d2_to_svg(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = d2ToKymoJson)]
pub fn d2_to_kymojson(src: &str) -> Result<String, JsError> {
crate::d2_to_kymojson(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = dotToSvg)]
pub fn dot_to_svg(src: &str) -> Result<String, JsError> {
crate::dot_to_svg(src).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = dotToKymoJson)]
pub fn dot_to_kymojson(src: &str) -> Result<String, JsError> {
crate::dot_to_kymojson(src).map_err(|e| JsError::new(&e.to_string()))
}
#[cfg(feature = "bpmn")]
#[wasm_bindgen(js_name = drawioFromKymoJson)]
pub fn drawio_from_kymojson(json: &str) -> Result<String, JsError> {
crate::drawio_from_kymojson(json).map_err(|e| JsError::new(&e))
}
#[wasm_bindgen(js_name = registerFont)]
pub fn register_font(bytes: Vec<u8>) {
crate::register_font(bytes);
}
#[wasm_bindgen]
pub fn version() -> String {
env!("CARGO_PKG_VERSION").to_string()
}