/excalidrawr

Excalidraw for R

Primary LanguageR

excalidrawr

Quick experiment to wrap Excalidraw for use in R.

Installation

remotes::install_github("timelyportfolio/excalidrawr")

Example

Currently, the package does very little except open an Excalidraw instance ready for your creative adventures.

library(excalidrawr)

excalidraw()

We can also use the onChange prop to communicate with Shiny.

library(htmltools)
library(shiny)
library(excalidrawr)

ui <- excalidraw(
  onChange = htmlwidgets::JS(
"
function(elements, state) {
  if(Shiny && Shiny.setInputValue) {
    Shiny.setInputValue('excal1', {elements})
  }
}
"
  ),
  elementId = "excal1"
)

server <- function(input, output, session) {
  draw <- reactive({
    input$excal1
  })
  draw_d <- debounce(draw, 1000)
  observe({
    str(draw_d())
  })
}

shinyApp(ui, server)