sketch/redraw

Types

Cache required to initialise Sketch Redraw. Use it in conjuction with provider.

pub opaque type Cache

Values

pub fn create_cache() -> Cache

Creates the Sketch Context and initialises the Sketch cache. Use it in conjuction with provider to setup Sketch Redraw, otherwise nothing will work.

import redraw
import redraw/dom/client
import sketch/redraw as sketch_redraw

pub fn main() {
  let app = app()
  let cache = sketch_redraw.create_cache()
  let root = client.create_root("root")
  client.render(root, {
    redraw.strict_mode([
      sketch_redraw.provider(cache, [
        app(),
      ]),
    ])
  })
}
pub fn initialise_cache(
  prepare: fn(sketch.StyleSheet) -> sketch.StyleSheet,
) -> Cache

Creates the Sketch Context and initialises the Sketch cache. Use it in conjuction with provider to setup Sketch Redraw, otherwise nothing will work. initialise_cache acts like create_cache, but provides a customisation function to modify the stylesheet at initialisation (to inject custom styles, keyframes, etc.).

import redraw
import redraw/dom/client
import sketch/redraw as sketch_redraw

pub fn main() {
  let app = app()
  let cache = initialise_cache()
  let root = client.create_root("root")
  client.render(root, {
    redraw.strict_mode([
      sketch_redraw.provider(cache, [
        app(),
      ]),
    ])
  })
}

pub fn initialise_cache() {
  use stylesheet <- sketch_redraw.initialise_cache()
  stylesheet
  |> sketch.at_rule(keyframes.wave(), _)
  |> sketch.at_rule(keyframes.pulse(), _)
}
pub fn provider(
  setup: Cache,
  children: List(redraw.Component),
) -> redraw.Component

Create the Sketch provider used to manage the StyleSheet.
This makes sure identical styles will never be computed twice.
Use it at root of your render function.

import redraw
import redraw/dom/client
import sketch/redraw as sketch_redraw

pub fn main() {
  let app = app()
  let cache = sketch_redraw.create_cache()
  let root = client.create_root("root")
  client.render(root, {
    redraw.strict_mode([
      sketch_redraw.provider(cache, [
        app(),
      ]),
    ])
  })
}
pub fn use_class_name(styles: @internal Class) -> String

Generates the corresponding class name to styles.

import redraw
import redraw/dom/attribute
import redraw/dom/client
import redraw/dom/html
import sketch/redraw as sketch_redraw

pub fn my_component() {
  use <- redraw.standalone("MyComponent")
  let class_name = sketch_redraw.use_class_name(my_class())
  html.div([attribute.class_name(class_name)], [
    html.text("Styled!"),
  ])
}
Search Document