let draw =
() {
case Dom.Canvas.fromDomElement(canvas) {
Maybe::Just(el) =>
{
let dims =
el
|> Dom.Canvas.toDomElement
|> Dom.getDimensions
// Create circular clipping region
el
|> Canvas.beginPath
|> Canvas.arc(100, 75, 50, 0, `Math.PI` * 2)
|> Canvas.clip
// Draw stuff that gets clipped
el
|> Canvas.setFillStyle(CanvasFillStyle::String("blue"))
|> Canvas.fillRect(0, 0, dims.width, dims.height)
|> Canvas.setFillStyle(CanvasFillStyle::String("orange"))
|> Canvas.fillRect(0, 0, 100, 100)
""
}
Maybe::Nothing =>
""
}
}
{
await Timer.timeout(0)
draw()
}
<canvas as canvas/>