## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## -----------------------------------------------------------------------------
library(shinysnap)
snap_restorers()

## ----eval = FALSE-------------------------------------------------------------
# function(id, value, binding, session) list(value = value)

## ----eval = FALSE-------------------------------------------------------------
# message <- list(value = list(
#   data = value,
#   rownames = rownames(value),
#   colnames = colnames(value)
# ))
# session$sendInputMessage(inputId, message)

## ----eval = FALSE-------------------------------------------------------------
# restore_matrix <- function(id, value, binding, session) {
#   if (is.null(value)) {
#  return(NULL)
#   }
#   if (!is.matrix(value)) value <- as.matrix(value)
#   rn <- rownames(value)
#   cn <- colnames(value)
#   data <- value
#   dimnames(data) <- NULL
#   payload <- list(value = list(data = data, rownames = rn, colnames = cn))
#   attr(payload, "expect") <- list(list(
#  data = data,
#  rownames = as.list(if (is.null(rn)) character() else rn),
#  colnames = as.list(if (is.null(cn)) character() else cn)
#   ))
#   payload
# }
# 
# snap_restorer("shinyMatrix.matrixNumeric", restore_matrix)
# snap_restorer("shinyMatrix.matrixCharacter", restore_matrix)

