mint-canvas
Config Functions
Draw Functions
let circle = Path2D.create() |> Path2D.arc(150, 75, 50, 0, 2 * `Math.PI`)let draw = () { case Dom.Canvas.fromDomElement(canvas) { Maybe::Just(el) => { el |> Canvas.setFillStyle(CanvasFillStyle::String("red")) |> Canvas.fillPath(circle) "" } Maybe::Nothing => "" } }// Listen for mouse moveslet onMouseMove = (e : Html.Event) { case Dom.Canvas.fromDomElement(canvas) { Maybe::Just(el) => { let dims = el |> Dom.Canvas.toDomElement |> Dom.getDimensions let x = e.clientX - dims.left let y = e.clientY - dims.top // Check whether point is inside circle let isPointInPath = el |> Canvas.isPointInPath(x, y, CanvasFillRule::Nonzero, Maybe::Just(circle)) let color = CanvasFillStyle::String( if isPointInPath { "green" } else { "red" }) el |> Canvas.setFillStyle(color) |> Canvas.clearRect(0, 0, dims.width, dims.height) |> Canvas.fillPath(circle) "" } Maybe::Nothing => "" } }{ await Timer.timeout(0) draw()}<canvas as canvas onMouseMove={onMouseMove}/>