// Generated by scripts/generate.mjs from bindings/api.mjs. Do not edit.

///|
#external
pub type Font

///|
extern "js" fn Font::ffi_generate_shapes(
  self : Font,
  text : String,
  size : Double,
  direction : TextDirection,
) -> JsResult[FixedArray[Shape]] =
  #| (self, text, size, direction) => { try { return { ok: true, value: (() => self.generateShapes(text, size, ["ltr", "rtl", "tb"][direction]))() }; } catch (error) { return { ok: false, error: String(error) }; } }

///|
pub fn Font::generate_shapes(
  self : Font,
  text : String,
  size : Double,
  direction : TextDirection,
) -> FixedArray[Shape] raise ModelingError {
  match self.ffi_generate_shapes(text, size, direction).into_result() {
    Ok(value) => value
    Err(message) => raise ModelingError(message)
  }
}

///|
extern "js" fn Font::ffi_family_name(self : Font) -> Nullable[String] =
  #| (self) => self.data.familyName

///|
pub fn Font::family_name(self : Font) -> String? {
  self.ffi_family_name().to_option()
}