use wasm_bindgen::prelude::*;
use super::helpers::*;
#[wasm_bindgen]
pub fn is_convex(ring_flat: &[i64]) -> Result<bool, JsValue> {
let ring = parse_flat_ring(ring_flat)?;
Ok(crate::validation::is_convex(&ring))
}
#[wasm_bindgen(skip_typescript)]
pub fn validate_edge_lengths(
ring_flat: &[i64],
config: Option<JsValue>,
) -> Result<Option<String>, JsValue> {
let ring = parse_flat_ring(ring_flat)?;
let config = parse_config(config)?;
Ok(crate::validation::validate_edge_lengths(&ring, &config))
}
#[wasm_bindgen]
pub fn perimeter_l1(ring_flat: &[i64]) -> Result<String, JsValue> {
let ring = parse_flat_ring(ring_flat)?;
Ok(crate::validation::perimeter_l1(&ring).to_string())
}
#[wasm_bindgen(skip_typescript)]
pub fn validate_compactness(
twice_area: &str,
perimeter: &str,
config: Option<JsValue>,
) -> Result<Option<String>, JsValue> {
let twice_area = parse_u128_str(twice_area, "twice_area")?;
let perimeter = parse_u128_str(perimeter, "perimeter")?;
let config = parse_config(config)?;
Ok(crate::validation::validate_compactness(
twice_area, perimeter, &config,
))
}
#[wasm_bindgen(skip_typescript)]
pub fn validate_part(
ring_flat: &[i64],
config: Option<JsValue>,
) -> Result<Option<String>, JsValue> {
let ring = parse_flat_ring(ring_flat)?;
let config = parse_config(config)?;
Ok(crate::validation::validate_part(&ring, &config))
}