oxmpl_js/base/
so2_state.rs1use std::sync::Arc;
6
7use oxmpl::base::state::SO2State as OxmplSO2State;
8use wasm_bindgen::prelude::*;
9
10#[wasm_bindgen(js_name = SO2State)]
11pub struct JsSO2State {
12 #[wasm_bindgen(skip)]
13 pub inner: Arc<OxmplSO2State>,
14}
15
16#[wasm_bindgen(js_class = SO2State)]
17impl JsSO2State {
18 #[wasm_bindgen(constructor)]
19 pub fn new(value: f64) -> Self {
20 let state = OxmplSO2State::new(value);
21 Self {
22 inner: Arc::new(state),
23 }
24 }
25
26 #[wasm_bindgen(getter)]
27 pub fn value(&self) -> f64 {
28 self.inner.value
29 }
30
31 #[wasm_bindgen(js_name = normalise)]
32 pub fn normalise(&mut self) -> Self {
33 let normalised_value = self.inner.as_ref().clone().normalise().value;
34 Self {
35 inner: Arc::new(OxmplSO2State::new(normalised_value)),
36 }
37 }
38}