xeerpe

Gleam binding for xeerpe, JavaScript target only.

Names follow xeerpe, in snake_case. Optional fields are Options, and every options type has a *_options default to update: LinearGradientOptions(..linear_gradient_options, from: Some("#fff")). A Builder is plain data; xeerpe itself runs in to_style.

Types

pub type AnimationDirection {
  Normal
  Reverse
  Alternate
  AlternateReverse
}

Constructors

  • Normal
  • Reverse
  • Alternate
  • AlternateReverse
pub type AnimationOptions {
  AnimationOptions(
    duration: option.Option(String),
    easing: option.Option(String),
    direction: option.Option(AnimationDirection),
    iteration_count: option.Option(IterationCount),
  )
}

Constructors

pub type AnimationType {
  Pulse
  Rotate
  Breathe
  Aurora
  Shimmer
  Liquid
  Plasma
  Float
  Drift
}

Constructors

  • Pulse
  • Rotate
  • Breathe
  • Aurora
  • Shimmer
  • Liquid
  • Plasma
  • Float
  • Drift
pub type BlurOptions {
  BlurOptions(
    amount: option.Option(String),
    type_: option.Option(BlurType),
  )
}

Constructors

backdrop-filter, or a plain filter.

pub type BlurType {
  BackdropBlur
  PlainBlur
}

Constructors

  • BackdropBlur
  • PlainBlur

xeerpe’s Builder, and Preset (a Builder that starts from a preset). Plain data: nothing runs until to_style, so it can sit in a Lustre model and be compared with ==.

pub opaque type Builder
pub type BuilderLayer {
  BuilderLayer(type_: LayerType, properties: CssProperties)
}

Constructors

pub type ConicGradientOptions {
  ConicGradientOptions(
    from: option.Option(String),
    to: option.Option(String),
    background_size: option.Option(String),
    colors: option.Option(List(GradientColorStop)),
    angle: option.Option(String),
    position: option.Option(String),
  )
}

Constructors

pub type CssLength {
  CssLength(value: Float, unit: String)
}

Constructors

  • CssLength(value: Float, unit: String)
pub type CssProperties {
  CssProperties(
    background: option.Option(String),
    background_image: option.Option(String),
    background_color: option.Option(String),
    background_size: option.Option(String),
    filter: option.Option(String),
    backdrop_filter: option.Option(String),
    box_shadow: option.Option(String),
    animation: option.Option(String),
  )
}

Constructors

Includes the fields xeerpe inherits from its base pattern options.

pub type DotsOptions {
  DotsOptions(
    color: option.Option(String),
    background: option.Option(String),
    size: option.Option(String),
    spacing: option.Option(String),
    style: option.Option(String),
    opacity: option.Option(Float),
    stroke_width: option.Option(String),
    background_size: option.Option(String),
  )
}

Constructors

pub type EffectOptions {
  NoiseEffect(NoiseOptions)
  VignetteEffect(VignetteOptions)
  GrainEffect(GrainOptions)
  GlowEffect(GlowOptions)
}

Constructors

pub type EffectType {
  Noise
  Vignette
  Grain
  Glow
}

Constructors

  • Noise
  • Vignette
  • Grain
  • Glow
pub type FilterOptions =
  BlurOptions
pub type FilterType {
  Blur
}

Constructors

  • Blur
pub type GlowOptions {
  GlowOptions(
    amount: option.Option(String),
    spread: option.Option(String),
    x: option.Option(String),
    y: option.Option(String),
    color: option.Option(String),
    type_: option.Option(GlowType),
  )
}

Constructors

pub type GlowType {
  Outer
  Inner
}

Constructors

  • Outer
  • Inner

A color, optionally with a stop position.

pub type GradientColorStop {
  Color(String)
  PositionedColor(
    color: String,
    position: option.Option(LinearGradientPosition),
  )
}

Constructors

pub type GradientOptions {
  LinearGradient(LinearGradientOptions)
  RadialGradient(RadialGradientOptions)
  ConicGradient(ConicGradientOptions)
  MeshGradient(MeshGradientOptions)
}

Constructors

pub type GradientType {
  Linear
  Radial
  Conic
  Mesh
}

Constructors

  • Linear
  • Radial
  • Conic
  • Mesh
pub type GrainOptions {
  GrainOptions(
    intensity: option.Option(Float),
    size: option.Option(String),
    animated: option.Option(Bool),
    background_size: option.Option(String),
  )
}

Constructors

pub type GridOptions {
  GridOptions(
    color: option.Option(String),
    background: option.Option(String),
    size: option.Option(String),
    opacity: option.Option(Float),
    stroke_width: option.Option(String),
    background_size: option.Option(String),
  )
}

Constructors

A number of iterations, or forever.

pub type IterationCount {
  Count(Int)
  Infinite
}

Constructors

  • Count(Int)
  • Infinite

One recorded call.

pub type Layer {
  GradientCall(GradientType, GradientOptions)
  LinearGradientCall(LinearGradientOptions)
  RadialGradientCall(RadialGradientOptions)
  ConicGradientCall(ConicGradientOptions)
  MeshGradientCall(MeshGradientOptions)
  EffectCall(EffectType, EffectOptions)
  FilterCall(FilterType, BlurOptions)
  PatternCall(PatternType, PatternOptions)
  AnimationCall(AnimationType, AnimationOptions)
  NoiseCall(NoiseOptions)
  VignetteCall(VignetteOptions)
  GrainCall(GrainOptions)
  GlowCall(GlowOptions)
  BlurCall(BlurOptions)
  DotsCall(DotsOptions)
  GridCall(GridOptions)
  PulseCall(AnimationOptions)
  RotateCall(AnimationOptions)
  BreatheCall(AnimationOptions)
  AuroraCall(AnimationOptions)
  ShimmerCall(AnimationOptions)
  LiquidCall(AnimationOptions)
  PlasmaCall(AnimationOptions)
  FloatCall(AnimationOptions)
  DriftCall(AnimationOptions)
}

Constructors

pub type LayerType {
  GradientLayer
  FilterLayer
  EffectLayer
  PatternLayer
  AnimationLayer
}

Constructors

  • GradientLayer
  • FilterLayer
  • EffectLayer
  • PatternLayer
  • AnimationLayer

An angle with its unit.

pub type LinearGradientAngle {
  Deg(Float)
  Rad(Float)
  Grad(Float)
  Turn(Float)
}

Constructors

  • Deg(Float)
  • Rad(Float)
  • Grad(Float)
  • Turn(Float)
pub type LinearGradientDirection {
  ToTop
  ToBottom
  ToLeft
  ToRight
  ToTopRight
  ToBottomRight
  ToTopLeft
  ToBottomLeft
}

Constructors

  • ToTop
  • ToBottom
  • ToLeft
  • ToRight
  • ToTopRight
  • ToBottomRight
  • ToTopLeft
  • ToBottomLeft
pub type LinearGradientOptions {
  LinearGradientOptions(
    from: option.Option(String),
    to: option.Option(String),
    background_size: option.Option(String),
    colors: option.Option(List(GradientColorStop)),
    angle: option.Option(LinearGradientAngle),
    direction: option.Option(LinearGradientDirection),
    size: option.Option(String),
  )
}

Constructors

A length or percentage, or a calc() (pass what goes inside the parentheses).

pub type LinearGradientPosition {
  Unit(LinearGradientPositionUnit)
  Calc(String)
}

Constructors

pub type LinearGradientPositionUnit {
  Percent(Float)
  Px(Float)
  Rem(Float)
  Em(Float)
  Vh(Float)
  Vw(Float)
  Vmin(Float)
  Vmax(Float)
}

Constructors

  • Percent(Float)
  • Px(Float)
  • Rem(Float)
  • Em(Float)
  • Vh(Float)
  • Vw(Float)
  • Vmin(Float)
  • Vmax(Float)

background and layers are required: build it with mesh_gradient_options.

pub type MeshGradientOptions {
  MeshGradientOptions(
    from: option.Option(String),
    to: option.Option(String),
    background_size: option.Option(String),
    background: String,
    layers: List(RadialGradientOptions),
  )
}

Constructors

pub type NoiseOptions {
  NoiseOptions(
    opacity: option.Option(Float),
    scale: option.Option(Float),
    type_: option.Option(NoiseType),
    octaves: option.Option(Int),
    background_size: option.Option(String),
  )
}

Constructors

pub type NoiseType {
  Turbulence
  FractalNoise
}

Constructors

  • Turbulence
  • FractalNoise
pub type PatternOptions {
  DotsPattern(DotsOptions)
  GridPattern(GridOptions)
}

Constructors

pub type PatternType {
  Dots
  Grid
}

Constructors

  • Dots
  • Grid

xeerpe’s PresetConfig.

pub type PresetConfig =
  fn(Builder) -> Builder
pub type RadialGradientOptions {
  RadialGradientOptions(
    from: option.Option(String),
    to: option.Option(String),
    background_size: option.Option(String),
    shape: option.Option(RadialGradientShape),
    position: option.Option(String),
    size: option.Option(RadialGradientSize),
    color_from_position: option.Option(String),
    color_to_position: option.Option(String),
  )
}

Constructors

circle, ellipse, or no shape keyword at all (null in xeerpe).

pub type RadialGradientShape {
  Circle
  Ellipse
  NullShape
}

Constructors

  • Circle
  • Ellipse
  • NullShape

A size keyword, or any CSS size.

pub type RadialGradientSize {
  ClosestSide
  ClosestCorner
  FarthestSide
  FarthestCorner
  CustomSize(String)
}

Constructors

  • ClosestSide
  • ClosestCorner
  • FarthestSide
  • FarthestCorner
  • CustomSize(String)
pub type RgbColor {
  RgbColor(red: Float, green: Float, blue: Float)
}

Constructors

  • RgbColor(red: Float, green: Float, blue: Float)
pub type RgbaColor {
  RgbaColor(
    red: Float,
    green: Float,
    blue: Float,
    alpha: option.Option(Float),
  )
}

Constructors

  • RgbaColor(
      red: Float,
      green: Float,
      blue: Float,
      alpha: option.Option(Float),
    )
pub type VignetteOptions {
  VignetteOptions(
    color: option.Option(String),
    intensity: option.Option(Float),
    spread: option.Option(Float),
    background_size: option.Option(String),
  )
}

Constructors

Values

pub fn animation(
  b: Builder,
  type_: AnimationType,
  options: AnimationOptions,
) -> Builder
pub const animation_options: AnimationOptions
pub fn aurora(b: Builder, options: AnimationOptions) -> Builder
pub fn blur(b: Builder, options: BlurOptions) -> Builder
pub const blur_options: BlurOptions
pub fn breathe(b: Builder, options: AnimationOptions) -> Builder
pub const bundled_version: String

The version of the xeerpe copy inside this package. Only a label: the code does not read it, and scripts/update-xeerpe.sh keeps it up to date.

pub fn conic_gradient(
  b: Builder,
  options: ConicGradientOptions,
) -> Builder
pub const conic_gradient_options: ConicGradientOptions
pub fn dots(b: Builder, options: DotsOptions) -> Builder
pub const dots_options: DotsOptions
pub fn drift(b: Builder, options: AnimationOptions) -> Builder
pub fn effect(
  b: Builder,
  type_: EffectType,
  options: EffectOptions,
) -> Builder
pub fn filter(
  b: Builder,
  type_: FilterType,
  options: BlurOptions,
) -> Builder
pub fn float(b: Builder, options: AnimationOptions) -> Builder
pub fn glow(b: Builder, options: GlowOptions) -> Builder
pub const glow_options: GlowOptions
pub fn gradient(
  b: Builder,
  type_: GradientType,
  options: GradientOptions,
) -> Builder
pub fn grain(b: Builder, options: GrainOptions) -> Builder
pub const grain_options: GrainOptions
pub fn grid(b: Builder, options: GridOptions) -> Builder
pub const grid_options: GridOptions
pub fn layers(b: Builder) -> List(Layer)

The calls recorded so far, in order.

pub fn linear_gradient(
  b: Builder,
  options: LinearGradientOptions,
) -> Builder
pub const linear_gradient_options: LinearGradientOptions
pub fn liquid(b: Builder, options: AnimationOptions) -> Builder
pub fn mesh_gradient(
  b: Builder,
  options: MeshGradientOptions,
) -> Builder
pub fn mesh_gradient_options(
  background: String,
  layers: List(RadialGradientOptions),
) -> MeshGradientOptions
pub fn new() -> Builder

new Builder().

pub fn noise(b: Builder, options: NoiseOptions) -> Builder
pub const noise_options: NoiseOptions
pub fn pattern(
  b: Builder,
  type_: PatternType,
  options: PatternOptions,
) -> Builder
pub fn plasma(b: Builder, options: AnimationOptions) -> Builder
pub fn preset(name: String) -> Result(Builder, String)

new Preset(name). An unknown name is an Error instead of an exception. The bundled xeerpe has "sunrise" and "northern-lights".

pub fn pulse(b: Builder, options: AnimationOptions) -> Builder
pub fn radial_gradient(
  b: Builder,
  options: RadialGradientOptions,
) -> Builder
pub const radial_gradient_options: RadialGradientOptions
pub fn rotate(b: Builder, options: AnimationOptions) -> Builder
pub fn shimmer(b: Builder, options: AnimationOptions) -> Builder
pub fn to_style(b: Builder) -> dict.Dict(String, String)

toStyle(). Keys stay camelCase, as in xeerpe.

pub fn to_text_style(b: Builder) -> dict.Dict(String, String)

toTextStyle().

pub fn use_bundled() -> Nil

Back to the bundled xeerpe.

pub fn use_module(module: dynamic.Dynamic) -> Result(Nil, String)

Use another xeerpe instead of the bundled one, for example a newer npm release. Pass the module (it needs Builder and Preset) once, when the app starts. Only the behaviour changes: the types still describe bundled_version.

// my_xeerpe.mjs, after `npm install xeerpe@<version>`
import * as xeerpe from "xeerpe";
export const module = () => xeerpe;
@external(javascript, "./my_xeerpe.mjs", "module")
fn my_xeerpe() -> Dynamic

let assert Ok(Nil) = xeerpe.use_module(my_xeerpe())
pub fn vignette(b: Builder, options: VignetteOptions) -> Builder
pub const vignette_options: VignetteOptions
✨ Search Document