diff --git a/DESCRIPTION b/DESCRIPTION index a6327fbb1..100fa1263 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: shiny Type: Package Title: Web Application Framework for R -Version: 1.0.5.9000 +Version: 1.1.0.9001 Authors@R: c( person("Winston", "Chang", role = c("aut", "cre"), email = "winston@rstudio.com"), person("Joe", "Cheng", role = "aut", email = "joe@rstudio.com"), @@ -65,7 +65,7 @@ Depends: Imports: utils, grDevices, - httpuv (>= 1.4.0), + httpuv (>= 1.4.3.9001), mime (>= 0.3), jsonlite (>= 0.9.16), xtable, @@ -89,7 +89,10 @@ Suggests: magrittr URL: http://shiny.rstudio.com BugReports: https://github.com/rstudio/shiny/issues -Collate: +Remotes: + tidyverse/ggplot2, + rstudio/httpuv +Collate: 'app.R' 'bookmark-state-local.R' 'stack.R' @@ -100,7 +103,10 @@ Collate: 'map.R' 'utils.R' 'bootstrap.R' - 'cache.R' + 'cache-context.R' + 'cache-disk.R' + 'cache-memory.R' + 'cache-utils.R' 'diagnose.R' 'fileupload.R' 'graph.R' @@ -139,6 +145,7 @@ Collate: 'priorityqueue.R' 'progress.R' 'react.R' + 'render-cached-plot.R' 'render-plot.R' 'render-table.R' 'run-url.R' @@ -155,4 +162,4 @@ Collate: 'test-export.R' 'timer.R' 'update-input.R' -RoxygenNote: 6.0.1.9000 +RoxygenNote: 6.1.0 diff --git a/NAMESPACE b/NAMESPACE index 24aaaa6b2..6372e3209 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -25,6 +25,7 @@ S3method(as.tags,shiny.render.function) S3method(format,reactiveExpr) S3method(format,reactiveVal) S3method(names,reactivevalues) +S3method(print,key_missing) S3method(print,reactive) S3method(print,shiny.appobj) S3method(str,reactivevalues) @@ -67,6 +68,7 @@ export(dateRangeInput) export(dblclickOpts) export(debounce) export(dialogViewer) +export(diskCache) export(div) export(downloadButton) export(downloadHandler) @@ -90,6 +92,7 @@ export(fluidRow) export(formatStackTrace) export(freezeReactiveVal) export(freezeReactiveValue) +export(getCurrentOutputInfo) export(getDefaultReactiveDomain) export(getQueryString) export(getShinyOption) @@ -121,6 +124,7 @@ export(insertTab) export(insertUI) export(installExprFunction) export(invalidateLater) +export(is.key_missing) export(is.reactive) export(is.reactivevalues) export(is.shiny.appobj) @@ -128,6 +132,7 @@ export(is.singleton) export(isRunning) export(isTruthy) export(isolate) +export(key_missing) export(knit_print.html) export(knit_print.reactive) export(knit_print.shiny.appobj) @@ -138,6 +143,7 @@ export(mainPanel) export(makeReactiveBinding) export(markRenderFunction) export(maskReactiveContext) +export(memoryCache) export(modalButton) export(modalDialog) export(navbarMenu) @@ -189,6 +195,7 @@ export(removeModal) export(removeNotification) export(removeTab) export(removeUI) +export(renderCachedPlot) export(renderDataTable) export(renderImage) export(renderPlot) @@ -226,6 +233,7 @@ export(showTab) export(sidebarLayout) export(sidebarPanel) export(singleton) +export(sizeGrowthRatio) export(sliderInput) export(snapshotExclude) export(snapshotPreprocessInput) @@ -268,9 +276,13 @@ export(updateSliderInput) export(updateTabsetPanel) export(updateTextAreaInput) export(updateTextInput) +export(updateVarSelectInput) +export(updateVarSelectizeInput) export(urlModal) export(validate) export(validateCssUnit) +export(varSelectInput) +export(varSelectizeInput) export(verbatimTextOutput) export(verticalLayout) export(wellPanel) diff --git a/NEWS.md b/NEWS.md index ed4dadabb..092069ef8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,39 @@ -shiny 1.1 -================ +shiny 1.1.0.9001 +=========== + +## Full changelog + +### Minor new features and improvements + +* Added `renderCachedPlot()`, which stores plots in a cache so that they can be served up almost instantly. ([#1997](https://github.com/rstudio/shiny/pull/1997)) + +* Address [#174](https://github.com/rstudio/shiny/issues/174): Added `datesdisabled` and `daysofweekdisabled` as new parameters to `dateInput()`. This resolves [#174](https://github.com/rstudio/shiny/issues/174) and exposes the underlying arguments of [Bootstrap Datepicker](http://bootstrap-datepicker.readthedocs.io/en/latest/options.html#datesdisabled). `datesdisabled` expects a character vector with values in `yyyy/mm/dd` format and `daysofweekdisabled` expects an integer vector with day interger ids (Sunday=0, Saturday=6). The default value for both is `NULL`, which leaves all days selectable. Thanks, @nathancday! ([#2147](https://github.com/rstudio/shiny/pull/2147)) + +* Support for selecting variables of a data frame with the output values to be used within tidy evaluation. Added functions: `varSelectInput`, `varSelectizeInput`, `updateVarSelectInput`, `updateVarSelectizeInput`. ([#2091](https://github.com/rstudio/shiny/pull/2091)) + +* Addressed [#2042](https://github.com/rstudio/shiny/issues/2042): dates outside of `min`/`max` date range are now a lighter shade of grey to highlight the allowed range. ([#2087](https://github.com/rstudio/shiny/pull/2087)) + +* Added support for plot interaction when the plot is scaled. ([#2125](https://github.com/rstudio/shiny/pull/2125)) + +* Fixed [#1933](https://github.com/rstudio/shiny/issues/1933): extended server-side selectize to lists and optgroups. ([#2102](https://github.com/rstudio/shiny/pull/2102)) + +* Fixed [#1935](https://github.com/rstudio/shiny/issues/1935): correctly returns plot coordinates when using outer margins. ([#2108](https://github.com/rstudio/shiny/pull/2108)) + +* Resolved [#2019](https://github.com/rstudio/shiny/issues/2019): `updateSliderInput` now changes the slider formatting if the input type changes. ([#2099](https://github.com/rstudio/shiny/pull/2099)) + +* Added namespace support when freezing reactiveValue keys. [#2080](https://github.com/rstudio/shiny/pull/2080) + +* Fixed [#2138](https://github.com/rstudio/shiny/issues/2138): Inputs that are part of a `renderUI` were no longer restoring correctly from bookmarked state. [#2139](https://github.com/rstudio/shiny/pull/2139) + +* Fixed [#2093](https://github.com/rstudio/shiny/issues/2093): Make sure bookmark scope directory does not exist before trying to create it. [#2168](https://github.com/rstudio/shiny/pull/2168) + +### Documentation Updates + +* Addressed [#1864](https://github.com/rstudio/shiny/issues/1864) by changing `optgroup` documentation to use `list` instead of `c`. ([#2084](https://github.com/rstudio/shiny/pull/2084)) + + +shiny 1.1.0 +=========== This is a significant release for Shiny, with a major new feature that was nearly a year in the making: support for asynchronous operations! Until now, R's single-threaded nature meant that performing long-running calculations or tasks from Shiny would bring your app to a halt for other users of that process. This release of Shiny deeply integrates the [promises](https://rstudio.github.io/promises/) package to allow you to execute some tasks asynchronously, including as part of reactive expressions and outputs. See the [promises](https://rstudio.github.io/promises/) documentation to learn more. @@ -67,6 +101,12 @@ This is a significant release for Shiny, with a major new feature that was nearl * Updated to ion.rangeSlider 2.2.0. ([#1955](https://github.com/rstudio/shiny/pull/1955)) + +## Known issues + +In some rare cases, interrupting an application (by pressing Ctrl-C or Esc) may result in the message `Error in execCallbacks(timeoutSecs) : c++ exception (unknown reason)`. Although this message sounds alarming, it is harmless, and will go away in a future version of the later package (more information [here](https://github.com/r-lib/later/issues/55)). + + shiny 1.0.5 =========== @@ -278,7 +318,7 @@ Now there's an official way to slow down reactive values and expressions that in ### Minor new features and improvements * Addressed [#1486](https://github.com/rstudio/shiny/issues/1486) by adding a new argument to `observeEvent` and `eventReactive`, called `ignoreInit` (defaults to `FALSE` for backwards compatibility). When set to `TRUE`, the action (i.e. the second argument: `handlerExpr` and `valueExpr`, respectively) will not be triggered when the observer/reactive is first created/initialized. In other words, `ignoreInit = TRUE` ensures that the `observeEvent` (or `eventReactive`) is *never* run right away. For more info, see the documentation (`?observeEvent`). ([#1494](https://github.com/rstudio/shiny/pull/1494)) - + * Added a new argument to `observeEvent` called `once`. When set to `TRUE`, it results in the observer being destroyed (stop observing) after the first time that `handlerExpr` is run (i.e. `once = TRUE` guarantees that the observer only runs, at most, once). For more info, see the documentation (`?observeEvent`). ([#1494](https://github.com/rstudio/shiny/pull/1494)) * Addressed [#1358](https://github.com/rstudio/shiny/issues/1358): more informative error message when calling `runApp()` inside of an app's app.R (or inside ui.R or server.R). ([#1482](https://github.com/rstudio/shiny/pull/1482)) @@ -677,7 +717,7 @@ shiny 0.12.1 shiny 0.12.0 ============ -In addition to the changes listed below (in the *Full Changelog* section), there is an infrastructure change that could affect existing Shiny apps. +In addition to the changes listed below (in the *Full Changelog* section), there is an infrastructure change that could affect existing Shiny apps. ### JSON serialization @@ -768,13 +808,13 @@ Shiny 0.11 switches away from the Bootstrap 2 web framework to the next version, ### Known issues for migration * In Bootstrap 3, images in `` tags are no longer automatically scaled to the width of their container. If you use `img()` in your UI code, or `` tags in your raw HTML source, it's possible that they will be too large in the new version of Shiny. To address this you can add the `img-responsive` class: - + ```r img(src = "picture.png", class = "img-responsive") ``` - + The R code above will generate the following HTML: - + ```html ``` diff --git a/R/bookmark-state.R b/R/bookmark-state.R index 73e52c754..724ae2cf3 100644 --- a/R/bookmark-state.R +++ b/R/bookmark-state.R @@ -448,7 +448,13 @@ withRestoreContext <- function(ctx, expr) { # Is there a current restore context? hasCurrentRestoreContext <- function() { - restoreCtxStack$size() > 0 + if (restoreCtxStack$size() > 0) + return(TRUE) + domain <- getDefaultReactiveDomain() + if (!is.null(domain) && !is.null(domain$restoreContext)) + return(TRUE) + + return(FALSE) } # Call to access the current restore context. First look on the restore diff --git a/R/bootstrap.R b/R/bootstrap.R index 2224f599e..445ee9b0c 100644 --- a/R/bootstrap.R +++ b/R/bootstrap.R @@ -1489,8 +1489,9 @@ downloadLink <- function(outputId, label="Download", class=NULL, ...) { #' \code{\link{navbarPage}}. #' #' @param name Name of icon. Icons are drawn from the -#' \href{http://fontawesome.io/icons/}{Font Awesome} and -#' \href{http://getbootstrap.com/components/#glyphicons}{Glyphicons"} +#' \href{https://fontawesome.com/v4.7.0/}{Font Awesome} (currently icons from +#' the v4.7.0 set are supported) and +#' \href{http://getbootstrap.com/components/#glyphicons}{Glyphicons} #' libraries. Note that the "fa-" and "glyphicon-" prefixes should not be used #' in icon names (i.e. the "fa-calendar" icon should be referred to as #' "calendar") diff --git a/R/cache.R b/R/cache-context.R similarity index 100% rename from R/cache.R rename to R/cache-context.R diff --git a/R/cache-disk.R b/R/cache-disk.R new file mode 100644 index 000000000..de456e401 --- /dev/null +++ b/R/cache-disk.R @@ -0,0 +1,561 @@ +#' Create a disk cache object +#' +#' A disk cache object is a key-value store that saves the values as files in a +#' directory on disk. Objects can be stored and retrieved using the \code{get()} +#' and \code{set()} methods. Objects are automatically pruned from the cache +#' according to the parameters \code{max_size}, \code{max_age}, \code{max_n}, +#' and \code{evict}. +#' +#' +#' @section Missing Keys: +#' +#' The \code{missing} and \code{exec_missing} parameters controls what happens +#' when \code{get()} is called with a key that is not in the cache (a cache +#' miss). The default behavior is to return a \code{\link{key_missing}} +#' object. This is a \emph{sentinel value} that indicates that the key was not +#' present in the cache. You can test if the returned value represents a +#' missing key by using the \code{\link{is.key_missing}} function. You can +#' also have \code{get()} return a different sentinel value, like \code{NULL}. +#' If you want to throw an error on a cache miss, you can do so by providing a +#' function for \code{missing} that takes one argument, the key, and also use +#' \code{exec_missing=TRUE}. +#' +#' When the cache is created, you can supply a value for \code{missing}, which +#' sets the default value to be returned for missing values. It can also be +#' overridden when \code{get()} is called, by supplying a \code{missing} +#' argument. For example, if you use \code{cache$get("mykey", missing = +#' NULL)}, it will return \code{NULL} if the key is not in the cache. +#' +#' If your cache is configured so that \code{get()} returns a sentinel value +#' to represent a cache miss, then \code{set} will also not allow you to store +#' the sentinel value in the cache. It will throw an error if you attempt to +#' do so. +#' +#' Instead of returning the same sentinel value each time there is cache miss, +#' the cache can execute a function each time \code{get()} encounters missing +#' key. If the function returns a value, then \code{get()} will in turn return +#' that value. However, a more common use is for the function to throw an +#' error. If an error is thrown, then \code{get()} will not return a value. +#' +#' To do this, pass a one-argument function to \code{missing}, and use +#' \code{exec_missing=TRUE}. For example, if you want to throw an error that +#' prints the missing key, you could do this: +#' +#' \preformatted{ +#' diskCache( +#' missing = function(key) { +#' stop("Attempted to get missing key: ", key) +#' }, +#' exec_missing = TRUE +#' ) +#' } +#' +#' If you use this, the code that calls \code{get()} should be wrapped with +#' \code{\link{tryCatch}()} to gracefully handle missing keys. +#' +#' @section Cache pruning: +#' +#' Cache pruning occurs when \code{set()} is called, or it can be invoked +#' manually by calling \code{prune()}. +#' +#' The disk cache will throttle the pruning so that it does not happen on +#' every call to \code{set()}, because the filesystem operations for checking +#' the status of files can be slow. Instead, it will prune once in every 20 +#' calls to \code{set()}, or if at least 5 seconds have elapsed since the last +#' prune occurred, whichever is first. These parameters are currently not +#' customizable, but may be in the future. +#' +#' When a pruning occurs, if there are any objects that are older than +#' \code{max_age}, they will be removed. +#' +#' The \code{max_size} and \code{max_n} parameters are applied to the cache as +#' a whole, in contrast to \code{max_age}, which is applied to each object +#' individually. +#' +#' If the number of objects in the cache exceeds \code{max_n}, then objects +#' will be removed from the cache according to the eviction policy, which is +#' set with the \code{evict} parameter. Objects will be removed so that the +#' number of items is \code{max_n}. +#' +#' If the size of the objects in the cache exceeds \code{max_size}, then +#' objects will be removed from the cache. Objects will be removed from the +#' cache so that the total size remains under \code{max_size}. Note that the +#' size is calculated using the size of the files, not the size of disk space +#' used by the files -- these two values can differ because of files are +#' stored in blocks on disk. For example, if the block size is 4096 bytes, +#' then a file that is one byte in size will take 4096 bytes on disk. +#' +#' Another time that objects can be removed from the cache is when +#' \code{get()} is called. If the target object is older than \code{max_age}, +#' it will be removed and the cache will report it as a missing value. +#' +#' @section Eviction policies: +#' +#' If \code{max_n} or \code{max_size} are used, then objects will be removed +#' from the cache according to an eviction policy. The available eviction +#' policies are: +#' +#' \describe{ +#' \item{\code{"lru"}}{ +#' Least Recently Used. The least recently used objects will be removed. +#' This uses the filesystem's mtime property. When "lru" is used, each +#' \code{get()} is called, it will update the file's mtime. +#' } +#' \item{\code{"fifo"}}{ +#' First-in-first-out. The oldest objects will be removed. +#' } +#' } +#' +#' Both of these policies use files' mtime. Note that some filesystems (notably +#' FAT) have poor mtime resolution. (atime is not used because support for +#' atime is worse than mtime.) +#' +#' +#' @section Sharing among multiple processes: +#' +#' The directory for a DiskCache can be shared among multiple R processes. To +#' do this, each R process should have a DiskCache object that uses the same +#' directory. Each DiskCache will do pruning independently of the others, so if +#' they have different pruning parameters, then one DiskCache may remove cached +#' objects before another DiskCache would do so. +#' +#' Even though it is possible for multiple processes to share a DiskCache +#' directory, this should not be done on networked file systems, because of +#' slow performance of networked file systems can cause problems. If you need +#' a high-performance shared cache, you can use one built on a database like +#' Redis, SQLite, mySQL, or similar. +#' +#' When multiple processes share a cache directory, there are some potential +#' race conditions. For example, if your code calls \code{exists(key)} to check +#' if an object is in the cache, and then call \code{get(key)}, the object may +#' be removed from the cache in between those two calls, and \code{get(key)} +#' will throw an error. Instead of calling the two functions, it is better to +#' simply call \code{get(key)}, and use \code{tryCatch()} to handle the error +#' that is thrown if the object is not in the cache. This effectively tests for +#' existence and gets the object in one operation. +#' +#' It is also possible for one processes to prune objects at the same time that +#' another processes is trying to prune objects. If this happens, you may see +#' a warning from \code{file.remove()} failing to remove a file that has +#' already been deleted. +#' +#' +#' @section Methods: +#' +#' A disk cache object has the following methods: +#' +#' \describe{ +#' \item{\code{get(key, missing, exec_missing)}}{ +#' Returns the value associated with \code{key}. If the key is not in the +#' cache, then it returns the value specified by \code{missing} or, +#' \code{missing} is a function and \code{exec_missing=TRUE}, then +#' executes \code{missing}. The function can throw an error or return the +#' value. If either of these parameters are specified here, then they +#' will override the defaults that were set when the DiskCache object was +#' created. See section Missing Keys for more information. +#' } +#' \item{\code{set(key, value)}}{ +#' Stores the \code{key}-\code{value} pair in the cache. +#' } +#' \item{\code{exists(key)}}{ +#' Returns \code{TRUE} if the cache contains the key, otherwise +#' \code{FALSE}. +#' } +#' \item{\code{size()}}{ +#' Returns the number of items currently in the cache. +#' } +#' \item{\code{keys()}}{ +#' Returns a character vector of all keys currently in the cache. +#' } +#' \item{\code{reset()}}{ +#' Clears all objects from the cache. +#' } +#' \item{\code{destroy()}}{ +#' Clears all objects in the cache, and removes the cache directory from +#' disk. +#' } +#' \item{\code{prune()}}{ +#' Prunes the cache, using the parameters specified by \code{max_size}, +#' \code{max_age}, \code{max_n}, and \code{evict}. +#' } +#' } +#' +#' @param dir Directory to store files for the cache. If \code{NULL} (the +#' default) it will create and use a temporary directory. +#' @param max_age Maximum age of files in cache before they are evicted, in +#' seconds. Use \code{Inf} for no age limit. +#' @param max_size Maximum size of the cache, in bytes. If the cache exceeds +#' this size, cached objects will be removed according to the value of the +#' \code{evict}. Use \code{Inf} for no size limit. +#' @param max_n Maximum number of objects in the cache. If the number of objects +#' exceeds this value, then cached objects will be removed according to the +#' value of \code{evict}. Use \code{Inf} for no limit of number of items. +#' @param evict The eviction policy to use to decide which objects are removed +#' when a cache pruning occurs. Currently, \code{"lru"} and \code{"fifo"} are +#' supported. +#' @param destroy_on_finalize If \code{TRUE}, then when the DiskCache object is +#' garbage collected, the cache directory and all objects inside of it will be +#' deleted from disk. If \code{FALSE} (the default), it will do nothing when +#' finalized. +#' @param missing A value to return or a function to execute when +#' \code{get(key)} is called but the key is not present in the cache. The +#' default is a \code{\link{key_missing}} object. If it is a function to +#' execute, the function must take one argument (the key), and you must also +#' use \code{exec_missing = TRUE}. If it is a function, it is useful in most +#' cases for it to throw an error, although another option is to return a +#' value. If a value is returned, that value will in turn be returned by +#' \code{get()}. See section Missing keys for more information. +#' @param exec_missing If \code{FALSE} (the default), then treat \code{missing} +#' as a value to return when \code{get()} results in a cache miss. If +#' \code{TRUE}, treat \code{missing} as a function to execute when +#' \code{get()} results in a cache miss. +#' @param logfile An optional filename or connection object to where logging +#' information will be written. To log to the console, use \code{stdout()}. +#' +#' @export +diskCache <- function( + dir = NULL, + max_size = 10 * 1024 ^ 2, + max_age = Inf, + max_n = Inf, + evict = c("lru", "fifo"), + destroy_on_finalize = FALSE, + missing = key_missing(), + exec_missing = FALSE, + logfile = NULL) +{ + DiskCache$new(dir, max_size, max_age, max_n, evict, destroy_on_finalize, + missing, exec_missing, logfile) +} + + +DiskCache <- R6Class("DiskCache", + public = list( + initialize = function( + dir = NULL, + max_size = 10 * 1024 ^ 2, + max_age = Inf, + max_n = Inf, + evict = c("lru", "fifo"), + destroy_on_finalize = FALSE, + missing = key_missing(), + exec_missing = FALSE, + logfile = NULL) + { + if (exec_missing && (!is.function(missing) || length(formals(missing)) == 0)) { + stop("When `exec_missing` is true, `missing` must be a function that takes one argument.") + } + if (is.null(dir)) { + dir <- tempfile("DiskCache-") + } + if (!is.numeric(max_size)) stop("max_size must be a number. Use `Inf` for no limit.") + if (!is.numeric(max_age)) stop("max_age must be a number. Use `Inf` for no limit.") + if (!is.numeric(max_n)) stop("max_n must be a number. Use `Inf` for no limit.") + + if (!dirExists(dir)) { + private$log(paste0("initialize: Creating ", dir)) + dir.create(dir, recursive = TRUE) + } + + private$dir <- normalizePath(dir) + private$max_size <- max_size + private$max_age <- max_age + private$max_n <- max_n + private$evict <- match.arg(evict) + private$destroy_on_finalize <- destroy_on_finalize + private$missing <- missing + private$exec_missing <- exec_missing + private$logfile <- logfile + + private$prune_last_time <- as.numeric(Sys.time()) + }, + + get = function(key, missing = private$missing, exec_missing = private$exec_missing) { + private$log(paste0('get: key "', key, '"')) + self$is_destroyed(throw = TRUE) + validate_key(key) + + private$maybe_prune_single(key) + + filename <- private$key_to_filename(key) + + # Instead of calling exists() before fetching the value, just try to + # fetch the value. This reduces the risk of a race condition when + # multiple processes share a cache. + read_error <- FALSE + tryCatch( + { + value <- suppressWarnings(readRDS(filename)) + if (private$evict == "lru"){ + Sys.setFileTime(filename, Sys.time()) + } + }, + error = function(e) { + read_error <<- TRUE + } + ) + if (read_error) { + private$log(paste0('get: key "', key, '" is missing')) + + if (exec_missing) { + if (!is.function(missing) || length(formals(missing)) == 0) { + stop("When `exec_missing` is true, `missing` must be a function that takes one argument.") + } + return(missing(key)) + } else { + return(missing) + } + } + + private$log(paste0('get: key "', key, '" found')) + value + }, + + set = function(key, value) { + private$log(paste0('set: key "', key, '"')) + self$is_destroyed(throw = TRUE) + validate_key(key) + + file <- private$key_to_filename(key) + temp_file <- paste0(file, "-temp-", createUniqueId(8)) + + save_error <- FALSE + ref_object <- FALSE + tryCatch( + { + saveRDS(value, file = temp_file, + refhook = function(x) { + ref_object <<- TRUE + NULL + } + ) + file.rename(temp_file, file) + }, + error = function(e) { + save_error <<- TRUE + # Unlike file.remove(), unlink() does not raise warning if file does + # not exist. + unlink(temp_file) + } + ) + if (save_error) { + private$log(paste0('set: key "', key, '" error')) + stop('Error setting value for key "', key, '".') + } + if (ref_object) { + private$log(paste0('set: value is a reference object')) + warning("A reference object was cached in a serialized format. The restored object may not work as expected.") + } + + private$prune_throttled() + invisible(self) + }, + + exists = function(key) { + self$is_destroyed(throw = TRUE) + validate_key(key) + file.exists(private$key_to_filename(key)) + }, + + # Return all keys in the cache + keys = function() { + self$is_destroyed(throw = TRUE) + files <- dir(private$dir, "\\.rds$") + sub("\\.rds$", "", files) + }, + + remove = function(key) { + private$log(paste0('remove: key "', key, '"')) + self$is_destroyed(throw = TRUE) + validate_key(key) + file.remove(private$key_to_filename(key)) + invisible(self) + }, + + reset = function() { + private$log(paste0('reset')) + self$is_destroyed(throw = TRUE) + file.remove(dir(private$dir, "\\.rds$", full.names = TRUE)) + invisible(self) + }, + + prune = function() { + # TODO: It would be good to add parameters `n` and `size`, so that the + # cache can be pruned to `max_n - n` and `max_size - size` before adding + # an object. Right now we prune after adding the object, so the cache + # can temporarily grow past the limits. The reason we don't do this now + # is because it is expensive to find the size of the serialized object + # before adding it. + + private$log(paste0('prune')) + self$is_destroyed(throw = TRUE) + + current_time <- Sys.time() + + filenames <- dir(private$dir, "\\.rds$", full.names = TRUE) + info <- file.info(filenames) + info <- info[info$isdir == FALSE, ] + info$name <- rownames(info) + rownames(info) <- NULL + # Files could be removed between the dir() and file.info() calls. The + # entire row for such files will have NA values. Remove those rows. + info <- info[!is.na(info$size), ] + + # 1. Remove any files where the age exceeds max age. + if (is.finite(private$max_age)) { + timediff <- as.numeric(current_time - info$mtime, units = "secs") + rm_idx <- timediff > private$max_age + if (any(rm_idx)) { + private$log(paste0("prune max_age: Removing ", paste(info$name[rm_idx], collapse = ", "))) + file.remove(info$name[rm_idx]) + info <- info[!rm_idx, ] + } + } + + # Sort objects by priority. The sorting is done in a function which can be + # called multiple times but only does the work the first time. + info_is_sorted <- FALSE + ensure_info_is_sorted <- function() { + if (info_is_sorted) return() + + info <<- info[order(info$mtime, decreasing = TRUE), ] + info_is_sorted <<- TRUE + } + + # 2. Remove files if there are too many. + if (is.finite(private$max_n) && nrow(info) > private$max_n) { + ensure_info_is_sorted() + rm_idx <- seq_len(nrow(info)) > private$max_n + private$log(paste0("prune max_n: Removing ", paste(info$name[rm_idx], collapse = ", "))) + rm_success <- file.remove(info$name[rm_idx]) + info <- info[!rm_success, ] + } + + # 3. Remove files if cache is too large. + if (is.finite(private$max_size) && sum(info$size) > private$max_size) { + ensure_info_is_sorted() + cum_size <- cumsum(info$size) + rm_idx <- cum_size > private$max_size + private$log(paste0("prune max_size: Removing ", paste(info$name[rm_idx], collapse = ", "))) + rm_success <- file.remove(info$name[rm_idx]) + info <- info[!rm_success, ] + } + + private$prune_last_time <- as.numeric(current_time) + + invisible(self) + }, + + size = function() { + self$is_destroyed(throw = TRUE) + length(dir(private$dir, "\\.rds$")) + }, + + destroy = function() { + if (self$is_destroyed()) { + return(invisible(self)) + } + + private$log(paste0("destroy: Removing ", private$dir)) + # First create a sentinel file so that other processes sharing this + # cache know that the cache is to be destroyed. This is needed because + # the recursive unlink is not atomic: another process can add a file to + # the directory after unlink starts removing files but before it removes + # the directory, and when that happens, the directory removal will fail. + file.create(file.path(private$dir, "__destroyed__")) + # Remove all the .rds files. This will not remove the setinel file. + file.remove(dir(private$dir, "\\.rds$", full.names = TRUE)) + # Next remove dir recursively, including sentinel file. + unlink(private$dir, recursive = TRUE) + private$destroyed <- TRUE + invisible(self) + }, + + is_destroyed = function(throw = FALSE) { + if (!dirExists(private$dir) || + file.exists(file.path(private$dir, "__destroyed__"))) + { + # It's possible for another process to destroy a shared cache directory + private$destroyed <- TRUE + } + + if (throw) { + if (private$destroyed) { + stop("Attempted to use cache which has been destroyed:\n ", private$dir) + } + + } else { + private$destroyed + } + }, + + finalize = function() { + if (private$destroy_on_finalize) { + self$destroy() + } + } + ), + + private = list( + dir = NULL, + max_age = NULL, + max_size = NULL, + max_n = NULL, + evict = NULL, + destroy_on_finalize = NULL, + destroyed = FALSE, + missing = NULL, + exec_missing = FALSE, + logfile = NULL, + + prune_throttle_counter = 0, + prune_last_time = NULL, + + key_to_filename = function(key) { + validate_key(key) + # Additional validation. This 80-char limit is arbitrary, and is + # intended to avoid hitting a filename length limit on Windows. + if (nchar(key) > 80) { + stop("Invalid key: key must have fewer than 80 characters.") + } + file.path(private$dir, paste0(key, ".rds")) + }, + + # A wrapper for prune() that throttles it, because prune() can be + # expensive due to filesystem operations. This function will prune only + # once every 20 times it is called, or if it has been more than 5 seconds + # since the last time the cache was actually pruned, whichever is first. + # In the future, the behavior may be customizable. + prune_throttled = function() { + # Count the number of times prune() has been called. + private$prune_throttle_counter <- private$prune_throttle_counter + 1 + + if (private$prune_throttle_counter > 20 || + private$prune_last_time - as.numeric(Sys.time()) > 5) + { + self$prune() + private$prune_throttle_counter <- 0 + } + }, + + # Prunes a single object if it exceeds max_age. If the object does not + # exceed max_age, or if the object doesn't exist, do nothing. + maybe_prune_single = function(key) { + obj <- private$cache[[key]] + if (is.null(obj)) return() + + timediff <- as.numeric(Sys.time()) - obj$mtime + if (timediff > private$max_age) { + private$log(paste0("pruning single object exceeding max_age: Removing ", key)) + rm(list = key, envir = private$cache) + } + }, + + log = function(text) { + if (is.null(private$logfile)) return() + + text <- paste0(format(Sys.time(), "[%Y-%m-%d %H:%M:%OS3] DiskCache "), text) + writeLines(text, private$logfile) + } + ) +) diff --git a/R/cache-memory.R b/R/cache-memory.R new file mode 100644 index 000000000..c7f1b5036 --- /dev/null +++ b/R/cache-memory.R @@ -0,0 +1,366 @@ +#' Create a memory cache object +#' +#' A memory cache object is a key-value store that saves the values in an +#' environment. Objects can be stored and retrieved using the \code{get()} and +#' \code{set()} methods. Objects are automatically pruned from the cache +#' according to the parameters \code{max_size}, \code{max_age}, \code{max_n}, +#' and \code{evict}. +#' +#' In a \code{MemoryCache}, R objects are stored directly in the cache; they are +#' not \emph{not} serialized before being stored in the cache. This contrasts +#' with other cache types, like \code{\link{diskCache}}, where objects are +#' serialized, and the serialized object is cached. This can result in some +#' differences of behavior. For example, as long as an object is stored in a +#' MemoryCache, it will not be garbage collected. +#' +#' +#' @section Missing keys: +#' The \code{missing} and \code{exec_missing} parameters controls what happens +#' when \code{get()} is called with a key that is not in the cache (a cache +#' miss). The default behavior is to return a \code{\link{key_missing}} +#' object. This is a \emph{sentinel value} that indicates that the key was not +#' present in the cache. You can test if the returned value represents a +#' missing key by using the \code{\link{is.key_missing}} function. You can +#' also have \code{get()} return a different sentinel value, like \code{NULL}. +#' If you want to throw an error on a cache miss, you can do so by providing a +#' function for \code{missing} that takes one argument, the key, and also use +#' \code{exec_missing=TRUE}. +#' +#' When the cache is created, you can supply a value for \code{missing}, which +#' sets the default value to be returned for missing values. It can also be +#' overridden when \code{get()} is called, by supplying a \code{missing} +#' argument. For example, if you use \code{cache$get("mykey", missing = +#' NULL)}, it will return \code{NULL} if the key is not in the cache. +#' +#' If your cache is configured so that \code{get()} returns a sentinel value +#' to represent a cache miss, then \code{set} will also not allow you to store +#' the sentinel value in the cache. It will throw an error if you attempt to +#' do so. +#' +#' Instead of returning the same sentinel value each time there is cache miss, +#' the cache can execute a function each time \code{get()} encounters missing +#' key. If the function returns a value, then \code{get()} will in turn return +#' that value. However, a more common use is for the function to throw an +#' error. If an error is thrown, then \code{get()} will not return a value. +#' +#' To do this, pass a one-argument function to \code{missing}, and use +#' \code{exec_missing=TRUE}. For example, if you want to throw an error that +#' prints the missing key, you could do this: +#' +#' \preformatted{ +#' diskCache( +#' missing = function(key) { +#' stop("Attempted to get missing key: ", key) +#' }, +#' exec_missing = TRUE +#' ) +#' } +#' +#' If you use this, the code that calls \code{get()} should be wrapped with +#' \code{\link{tryCatch}()} to gracefully handle missing keys. +#' +#' @section Cache pruning: +#' +#' Cache pruning occurs when \code{set()} is called, or it can be invoked +#' manually by calling \code{prune()}. +#' +#' When a pruning occurs, if there are any objects that are older than +#' \code{max_age}, they will be removed. +#' +#' The \code{max_size} and \code{max_n} parameters are applied to the cache as +#' a whole, in contrast to \code{max_age}, which is applied to each object +#' individually. +#' +#' If the number of objects in the cache exceeds \code{max_n}, then objects +#' will be removed from the cache according to the eviction policy, which is +#' set with the \code{evict} parameter. Objects will be removed so that the +#' number of items is \code{max_n}. +#' +#' If the size of the objects in the cache exceeds \code{max_size}, then +#' objects will be removed from the cache. Objects will be removed from the +#' cache so that the total size remains under \code{max_size}. Note that the +#' size is calculated using the size of the files, not the size of disk space +#' used by the files -- these two values can differ because of files are +#' stored in blocks on disk. For example, if the block size is 4096 bytes, +#' then a file that is one byte in size will take 4096 bytes on disk. +#' +#' Another time that objects can be removed from the cache is when +#' \code{get()} is called. If the target object is older than \code{max_age}, +#' it will be removed and the cache will report it as a missing value. +#' +#' @section Eviction policies: +#' +#' If \code{max_n} or \code{max_size} are used, then objects will be removed +#' from the cache according to an eviction policy. The available eviction +#' policies are: +#' +#' \describe{ +#' \item{\code{"lru"}}{ +#' Least Recently Used. The least recently used objects will be removed. +#' This uses the filesystem's atime property. Some filesystems do not +#' support atime, or have a very low atime resolution. The DiskCache will +#' check for atime support, and if the filesystem does not support atime, +#' a warning will be issued and the "fifo" policy will be used instead. +#' } +#' \item{\code{"fifo"}}{ +#' First-in-first-out. The oldest objects will be removed. +#' } +#' } +#' +#' @section Methods: +#' +#' A disk cache object has the following methods: +#' +#' \describe{ +#' \item{\code{get(key, missing, exec_missing)}}{ +#' Returns the value associated with \code{key}. If the key is not in the +#' cache, then it returns the value specified by \code{missing} or, +#' \code{missing} is a function and \code{exec_missing=TRUE}, then +#' executes \code{missing}. The function can throw an error or return the +#' value. If either of these parameters are specified here, then they +#' will override the defaults that were set when the DiskCache object was +#' created. See section Missing Keys for more information. +#' } +#' \item{\code{set(key, value)}}{ +#' Stores the \code{key}-\code{value} pair in the cache. +#' } +#' \item{\code{exists(key)}}{ +#' Returns \code{TRUE} if the cache contains the key, otherwise +#' \code{FALSE}. +#' } +#' \item{\code{size()}}{ +#' Returns the number of items currently in the cache. +#' } +#' \item{\code{keys()}}{ +#' Returns a character vector of all keys currently in the cache. +#' } +#' \item{\code{reset()}}{ +#' Clears all objects from the cache. +#' } +#' \item{\code{destroy()}}{ +#' Clears all objects in the cache, and removes the cache directory from +#' disk. +#' } +#' \item{\code{prune()}}{ +#' Prunes the cache, using the parameters specified by \code{max_size}, +#' \code{max_age}, \code{max_n}, and \code{evict}. +#' } +#' } +#' +#' @inheritParams diskCache +#' +#' @export +memoryCache <- function( + max_size = 10 * 1024 ^ 2, + max_age = Inf, + max_n = Inf, + evict = c("lru", "fifo"), + missing = key_missing(), + exec_missing = FALSE, + logfile = NULL) +{ + MemoryCache$new(max_size, max_age, max_n, evict, missing, exec_missing, logfile) +} + +MemoryCache <- R6Class("MemoryCache", + public = list( + initialize = function( + max_size = 10 * 1024 ^ 2, + max_age = Inf, + max_n = Inf, + evict = c("lru", "fifo"), + missing = key_missing(), + exec_missing = FALSE, + logfile = NULL) + { + if (exec_missing && (!is.function(missing) || length(formals(missing)) == 0)) { + stop("When `exec_missing` is true, `missing` must be a function that takes one argument.") + } + if (!is.numeric(max_size)) stop("max_size must be a number. Use `Inf` for no limit.") + if (!is.numeric(max_age)) stop("max_age must be a number. Use `Inf` for no limit.") + if (!is.numeric(max_n)) stop("max_n must be a number. Use `Inf` for no limit.") + private$cache <- new.env(parent = emptyenv()) + private$max_size <- max_size + private$max_age <- max_age + private$max_n <- max_n + private$evict <- match.arg(evict) + private$missing <- missing + private$exec_missing <- exec_missing + private$logfile <- logfile + }, + + get = function(key, missing = private$missing, exec_missing = private$exec_missing) { + private$log(paste0('get: key "', key, '"')) + validate_key(key) + + private$maybe_prune_single(key) + + if (!self$exists(key)) { + private$log(paste0('get: key "', key, '" is missing')) + if (exec_missing) { + if (!is.function(missing) || length(formals(missing)) == 0) { + stop("When `exec_missing` is true, `missing` must be a function that takes one argument.") + } + return(missing(key)) + } else { + return(missing) + } + } + + private$log(paste0('get: key "', key, '" found')) + value <- private$cache[[key]]$value + value + }, + + set = function(key, value) { + private$log(paste0('set: key "', key, '"')) + validate_key(key) + + time <- as.numeric(Sys.time()) + + # Only record size if we're actually using max_size for pruning. + if (is.finite(private$max_size)) { + # Reported size is rough! See ?object.size. + size <- as.numeric(object.size(value)) + } else { + size <- NULL + } + + private$cache[[key]] <- list( + key = key, + value = value, + size = size, + mtime = time, + atime = time + ) + self$prune() + invisible(self) + }, + + exists = function(key) { + validate_key(key) + # Faster than `exists(key, envir = private$cache, inherits = FALSE) + !is.null(private$cache[[key]]) + }, + + keys = function() { + ls(private$cache, sorted = FALSE) # Faster with sorted=FALSE + }, + + remove = function(key) { + private$log(paste0('remove: key "', key, '"')) + validate_key(key) + rm(list = key, envir = private$cache) + invisible(self) + }, + + reset = function() { + private$log(paste0('reset')) + rm(list = self$keys(), envir = private$cache) + invisible(self) + }, + + prune = function() { + private$log(paste0('prune')) + info <- private$object_info() + + # 1. Remove any objects where the age exceeds max age. + if (is.finite(private$max_age)) { + time <- as.numeric(Sys.time()) + timediff <- time - info$mtime + rm_idx <- timediff > private$max_age + if (any(rm_idx)) { + private$log(paste0("prune max_age: Removing ", paste(info$key[rm_idx], collapse = ", "))) + rm(list = info$key[rm_idx], envir = private$cache) + info <- info[!rm_idx, ] + } + } + + # Sort objects by priority, according to eviction policy. The sorting is + # done in a function which can be called multiple times but only does + # the work the first time. + info_is_sorted <- FALSE + ensure_info_is_sorted <- function() { + if (info_is_sorted) return() + + if (private$evict == "lru") { + info <<- info[order(info$atime, decreasing = TRUE), ] + } else if (private$evict == "fifo") { + info <<- info[order(info$mtime, decreasing = TRUE), ] + } else { + stop('Unknown eviction policy "', private$evict, '"') + } + info_is_sorted <<- TRUE + } + + # 2. Remove objects if there are too many. + if (is.finite(private$max_n) && nrow(info) > private$max_n) { + ensure_info_is_sorted() + rm_idx <- seq_len(nrow(info)) > private$max_n + private$log(paste0("prune max_n: Removing ", paste(info$key[rm_idx], collapse = ", "))) + rm(list = info$key[rm_idx], envir = private$cache) + info <- info[!rm_idx, ] + } + + # 3. Remove objects if cache is too large. + if (is.finite(private$max_size) && sum(info$size) > private$max_size) { + ensure_info_is_sorted() + cum_size <- cumsum(info$size) + rm_idx <- cum_size > private$max_size + private$log(paste0("prune max_size: Removing ", paste(info$key[rm_idx], collapse = ", "))) + rm(list = info$key[rm_idx], envir = private$cache) + info <- info[!rm_idx, ] + } + + invisible(self) + }, + + size = function() { + length(self$keys()) + } + ), + + private = list( + cache = NULL, + max_age = NULL, + max_size = NULL, + max_n = NULL, + evict = NULL, + missing = NULL, + exec_missing = NULL, + logfile = NULL, + + # Prunes a single object if it exceeds max_age. If the object does not + # exceed max_age, or if the object doesn't exist, do nothing. + maybe_prune_single = function(key) { + if (!is.finite(private$max_age)) return() + + obj <- private$cache[[key]] + if (is.null(obj)) return() + + timediff <- as.numeric(Sys.time()) - obj$mtime + if (timediff > private$max_age) { + private$log(paste0("pruning single object exceeding max_age: Removing ", key)) + rm(list = key, envir = private$cache) + } + }, + + object_info = function() { + keys <- ls(private$cache, sorted = FALSE) + data.frame( + key = keys, + size = vapply(keys, function(key) private$cache[[key]]$size, 0), + mtime = vapply(keys, function(key) private$cache[[key]]$mtime, 0), + atime = vapply(keys, function(key) private$cache[[key]]$atime, 0), + stringsAsFactors = FALSE + ) + }, + + log = function(text) { + if (is.null(private$logfile)) return() + + text <- paste0(format(Sys.time(), "[%Y-%m-%d %H:%M:%OS3] MemoryCache "), text) + writeLines(text, private$logfile) + } + ) +) diff --git a/R/cache-utils.R b/R/cache-utils.R new file mode 100644 index 000000000..caa9a0ad0 --- /dev/null +++ b/R/cache-utils.R @@ -0,0 +1,33 @@ +#' A Key Missing object +#' +#' A \code{key_missing} object represents a cache miss. +#' +#' @param x An object to test. +#' +#' @seealso \code{\link{diskCache}}, \code{\link{memoryCache}}. +#' +#' @export +key_missing <- function() { + structure(list(), class = "key_missing") +} + +#' @rdname key_missing +#' @export +is.key_missing <- function(x) { + inherits(x, "key_missing") +} + +#' @export +print.key_missing <- function(x, ...) { + cat("\n") +} + + +validate_key <- function(key) { + if (!is.character(key) || length(key) != 1 || nchar(key) == 0) { + stop("Invalid key: key must be single non-empty string.") + } + if (grepl("[^a-z0-9]", key)) { + stop("Invalid key: ", key, ". Only lowercase letters and numbers are allowed.") + } +} diff --git a/R/image-interact.R b/R/image-interact.R index e985629ba..cad6291ea 100644 --- a/R/image-interact.R +++ b/R/image-interact.R @@ -249,14 +249,20 @@ nearPoints <- function(df, coordinfo, xvar = NULL, yvar = NULL, x <- asNumber(df[[xvar]]) y <- asNumber(df[[yvar]]) - # Get the pixel coordinates of the point - coordPx <- scaleCoords(coordinfo$x, coordinfo$y, coordinfo) + # Get the coordinates of the point (in img pixel coordinates) + point_img <- scaleCoords(coordinfo$x, coordinfo$y, coordinfo) - # Get pixel coordinates of data points - dataPx <- scaleCoords(x, y, coordinfo) + # Get coordinates of data points (in img pixel coordinates) + data_img <- scaleCoords(x, y, coordinfo) - # Distances of data points to coordPx - dists <- sqrt((dataPx$x - coordPx$x) ^ 2 + (dataPx$y - coordPx$y) ^ 2) + # Get x/y distances (in css coordinates) + dist_css <- list( + x = (data_img$x - point_img$x) / coordinfo$pixelratio$x, + y = (data_img$y - point_img$y) / coordinfo$pixelratio$y + ) + + # Distances of data points to the target point, in css pixels. + dists <- sqrt(dist_css$x^2 + dist_css$y^2) if (addDist) df$dist_ <- dists @@ -298,50 +304,56 @@ nearPoints <- function(df, coordinfo, xvar = NULL, yvar = NULL, # The coordinfo data structure will look something like the examples below. # For base graphics, `mapping` is empty, and there are no panelvars: # List of 7 -# $ x : num 4.37 -# $ y : num 12 -# $ mapping: Named list() -# $ domain :List of 4 +# $ x : num 4.37 +# $ y : num 12 +# $ pixelratio:List of 2 +# ..$ x: num 2 +# ..$ y: num 2 +# $ mapping : Named list() +# $ domain :List of 4 # ..$ left : num 1.36 # ..$ right : num 5.58 # ..$ bottom: num 9.46 # ..$ top : num 34.8 -# $ range :List of 4 +# $ range :List of 4 # ..$ left : num 58 # ..$ right : num 429 # ..$ bottom: num 226 # ..$ top : num 58 -# $ log :List of 2 +# $ log :List of 2 # ..$ x: NULL # ..$ y: NULL -# $ .nonce : num 0.343 +# $ .nonce : num 0.343 # # For ggplot2, the mapping vars usually will be included, and if faceting is # used, they will be listed as panelvars: # List of 9 -# $ x : num 3.78 -# $ y : num 17.1 -# $ panelvar1: int 6 -# $ panelvar2: int 0 -# $ mapping :List of 4 +# $ x : num 3.78 +# $ y : num 17.1 +# $ pixelratio:List of 2 +# ..$ x: num 2 +# ..$ y: num 2 +# $ panelvar1 : int 6 +# $ panelvar2 : int 0 +# $ mapping :List of 4 # ..$ x : chr "wt" # ..$ y : chr "mpg" # ..$ panelvar1: chr "cyl" # ..$ panelvar2: chr "am" -# $ domain :List of 4 +# $ domain :List of 4 # ..$ left : num 1.32 # ..$ right : num 5.62 # ..$ bottom: num 9.22 # ..$ top : num 35.1 -# $ range :List of 4 +# $ range :List of 4 # ..$ left : num 172 # ..$ right : num 300 # ..$ bottom: num 144 # ..$ top : num 28.5 -# $ log :List of 2 +# $ log :List of 2 # ..$ x: NULL # ..$ y: NULL -# $ .nonce : num 0.603 +# $ .nonce : num 0.603 diff --git a/R/input-date.R b/R/input-date.R index c2f7a56a4..47c0921f6 100644 --- a/R/input-date.R +++ b/R/input-date.R @@ -43,6 +43,10 @@ #' "vi", "zh-CN", and "zh-TW". #' @param autoclose Whether or not to close the datepicker immediately when a #' date is selected. +#' @param datesdisabled Which dates should be disabled. Either a Date object, +#' or a string in \code{yyyy-mm-dd} format. +#' @param daysofweekdisabled Days of the week that should be disabled. Should be +#' a integer vector with values from 0 (Sunday) to 6 (Saturday). #' #' @family input elements #' @seealso \code{\link{dateRangeInput}}, \code{\link{updateDateInput}} @@ -70,21 +74,32 @@ #' #' # Start with decade view instead of default month view #' dateInput("date6", "Date:", -#' startview = "decade") +#' startview = "decade"), +#' +#' # Disable Mondays and Tuesdays. +#' dateInput("date7", "Date:", daysofweekdisabled = c(1,2)), +#' +#' # Disable specific dates. +#' dateInput("date8", "Date:", value = "2012-02-29", +#' datesdisabled = c("2012-03-01", "2012-03-02")) #' ) #' #' shinyApp(ui, server = function(input, output) { }) #' } #' @export dateInput <- function(inputId, label, value = NULL, min = NULL, max = NULL, - format = "yyyy-mm-dd", startview = "month", weekstart = 0, language = "en", - width = NULL, autoclose = TRUE) { + format = "yyyy-mm-dd", startview = "month", weekstart = 0, + language = "en", width = NULL, autoclose = TRUE, + datesdisabled = NULL, daysofweekdisabled = NULL) { # If value is a date object, convert it to a string with yyyy-mm-dd format # Same for min and max if (inherits(value, "Date")) value <- format(value, "%Y-%m-%d") if (inherits(min, "Date")) min <- format(min, "%Y-%m-%d") if (inherits(max, "Date")) max <- format(max, "%Y-%m-%d") + if (inherits(datesdisabled, "Date")) { + datesdisabled <- format(datesdisabled, "%Y-%m-%d") + } value <- restoreInput(id = inputId, default = value) @@ -102,7 +117,12 @@ dateInput <- function(inputId, label, value = NULL, min = NULL, max = NULL, `data-min-date` = min, `data-max-date` = max, `data-initial-date` = value, - `data-date-autoclose` = if (autoclose) "true" else "false" + `data-date-autoclose` = if (autoclose) "true" else "false", + `data-date-dates-disabled` = + # Ensure NULL is not sent as `{}` but as 'null' + jsonlite::toJSON(datesdisabled, null = 'null'), + `data-date-days-of-week-disabled` = + jsonlite::toJSON(daysofweekdisabled, null = 'null') ), datePickerDependency ) diff --git a/R/input-select.R b/R/input-select.R index 28117f3df..03fcaf052 100644 --- a/R/input-select.R +++ b/R/input-select.R @@ -33,7 +33,7 @@ #' @return A select list control that can be added to a UI definition. #' #' @family input elements -#' @seealso \code{\link{updateSelectInput}} +#' @seealso \code{\link{updateSelectInput}} \code{\link{varSelectInput}} #' #' @examples #' ## Only run examples in interactive R sessions @@ -59,9 +59,9 @@ #' shinyApp( #' ui = fluidPage( #' selectInput("state", "Choose a state:", -#' list(`East Coast` = c("NY", "NJ", "CT"), -#' `West Coast` = c("WA", "OR", "CA"), -#' `Midwest` = c("MN", "WI", "IA")) +#' list(`East Coast` = list("NY", "NJ", "CT"), +#' `West Coast` = list("WA", "OR", "CA"), +#' `Midwest` = list("MN", "WI", "IA")) #' ), #' textOutput("result") #' ), @@ -212,3 +212,135 @@ selectizeIt <- function(inputId, select, options, nonempty = FALSE) { attachDependencies(select, selectizeDep) } + + + + + + + + +#' Select variables from a data frame +#' +#' Create a select list that can be used to choose a single or multiple items +#' from the column names of a data frame. +#' +#' The resulting server \code{input} value will be returned as: +#' \itemize{ +#' \item a symbol if \code{multiple = FALSE}. The \code{input} value should be +#' used with rlang's \code{\link[rlang]{!!}}. For example, +#' \code{ggplot2::aes(!!input$variable)}. +#' \item a list of symbols if \code{multiple = TRUE}. The \code{input} value +#' should be used with rlang's \code{\link[rlang]{!!!}} to expand +#' the symbol list as individual arguments. For example, +#' \code{dplyr::select(mtcars, !!!input$variabls)} which is +#' equivalent to \code{dplyr::select(mtcars, !!input$variabls[[1]], !!input$variabls[[2]], ..., !!input$variabls[[length(input$variabls)]])}. +#' } +#' +#' By default, \code{varSelectInput()} and \code{selectizeInput()} use the +#' JavaScript library \pkg{selectize.js} +#' (\url{https://github.com/selectize/selectize.js}) to instead of the basic +#' select input element. To use the standard HTML select input element, use +#' \code{selectInput()} with \code{selectize=FALSE}. +#' +#' @inheritParams selectInput +#' @param data A data frame. Used to retrieve the column names as choices for a \code{\link{selectInput}} +#' @return A variable select list control that can be added to a UI definition. +#' +#' @family input elements +#' @seealso \code{\link{updateSelectInput}} +#' @examples +#' +#' ## Only run examples in interactive R sessions +#' if (interactive()) { +#' +#' library(ggplot2) +#' +#' # single selection +#' shinyApp( +#' ui = fluidPage( +#' varSelectInput("variable", "Variable:", mtcars), +#' plotOutput("data") +#' ), +#' server = function(input, output) { +#' output$data <- renderPlot({ +#' ggplot(mtcars, aes(!!input$variable)) + geom_histogram() +#' }) +#' } +#' ) +#' +#' +#' # multiple selections +#' \dontrun{ +#' shinyApp( +#' ui = fluidPage( +#' varSelectInput("variables", "Variable:", mtcars, multiple = TRUE), +#' tableOutput("data") +#' ), +#' server = function(input, output) { +#' output$data <- renderTable({ +#' if (length(input$variables) == 0) return(mtcars) +#' mtcars %>% dplyr::select(!!!input$variables) +#' }, rownames = TRUE) +#' } +#' )} +#' +#' } +#' @export +varSelectInput <- function( + inputId, label, data, selected = NULL, + multiple = FALSE, selectize = TRUE, width = NULL, + size = NULL +) { + # no place holders + choices <- colnames(data) + + selectInputVal <- selectInput( + inputId = inputId, + label = label, + choices = choices, + selected = selected, + multiple = multiple, + selectize = selectize, + width = width, + size = size + ) + + # set the select tag class to be "symbol" + selectClass <- selectInputVal$children[[2]]$children[[1]]$attribs$class + if (is.null(selectClass)) { + newClass <- "symbol" + } else { + newClass <- paste(selectClass, "symbol", sep = " ") + } + selectInputVal$children[[2]]$children[[1]]$attribs$class <- newClass + + selectInputVal +} + + + +#' @rdname varSelectInput +#' @param ... Arguments passed to \code{varSelectInput()}. +#' @param options A list of options. See the documentation of \pkg{selectize.js} +#' for possible options (character option values inside \code{\link[base]{I}()} will +#' be treated as literal JavaScript code; see \code{\link{renderDataTable}()} +#' for details). +#' @param width The width of the input, e.g. \code{'400px'}, or \code{'100\%'}; +#' see \code{\link{validateCssUnit}}. +#' @note The variable selectize input created from \code{varSelectizeInput()} allows +#' deletion of the selected option even in a single select input, which will +#' return an empty string as its value. This is the default behavior of +#' \pkg{selectize.js}. However, the selectize input created from +#' \code{selectInput(..., selectize = TRUE)} will ignore the empty string +#' value when it is a single choice input and the empty string is not in the +#' \code{choices} argument. This is to keep compatibility with +#' \code{selectInput(..., selectize = FALSE)}. +#' @export +varSelectizeInput <- function(inputId, ..., options = NULL, width = NULL) { + selectizeIt( + inputId, + varSelectInput(inputId, ..., selectize = FALSE, width = width), + options + ) +} diff --git a/R/input-slider.R b/R/input-slider.R index 3225309ed..aa60dcf4a 100644 --- a/R/input-slider.R +++ b/R/input-slider.R @@ -86,24 +86,10 @@ sliderInput <- function(inputId, label, min, max, value, step = NULL, version = "0.10.2.2") } - if (inherits(min, "Date")) { - if (!inherits(max, "Date") || !inherits(value, "Date")) - stop("`min`, `max`, and `value must all be Date or non-Date objects") - dataType <- "date" + dataType <- getSliderType(min, max, value) - if (is.null(timeFormat)) - timeFormat <- "%F" - - } else if (inherits(min, "POSIXt")) { - if (!inherits(max, "POSIXt") || !inherits(value, "POSIXt")) - stop("`min`, `max`, and `value must all be POSIXt or non-POSIXt objects") - dataType <- "datetime" - - if (is.null(timeFormat)) - timeFormat <- "%F %T" - - } else { - dataType <- "number" + if (is.null(timeFormat)) { + timeFormat <- switch(dataType, date = "%F", datetime = "%F %T", number = NULL) } # Restore bookmarked values here, after doing the type checking, because the @@ -250,7 +236,13 @@ findStepSize <- function(min, max, step) { # values to calculate the step size. pretty_steps <- pretty(c(min, max), n = 100) n_steps <- length(pretty_steps) - 1 - (max(pretty_steps) - min(pretty_steps)) / n_steps + + # Fix for #2061: Windows has low-significance digits (like 17 digits out) + # even at the boundaries of pretty()'s output. Use signif(digits = 10), + # which should be way way less significant than any data we'd want to keep. + # It might make sense to use signif(steps[2] - steps[1], 10) instead, but + # for now trying to make the minimal change. + signif(digits = 10, (max(pretty_steps) - min(pretty_steps)) / n_steps) } else { 1 diff --git a/R/render-cached-plot.R b/R/render-cached-plot.R new file mode 100644 index 000000000..642e4a52f --- /dev/null +++ b/R/render-cached-plot.R @@ -0,0 +1,588 @@ +#' Plot output with cached images +#' +#' Renders a reactive plot, with plot images cached to disk. +#' +#' \code{expr} is an expression that generates a plot, similar to that in +#' \code{renderPlot}. Unlike with \code{renderPlot}, this expression does not +#' take reactive dependencies. It is re-executed only when the cache key +#' changes. +#' +#' \code{cacheKeyExpr} is an expression which, when evaluated, returns an object +#' which will be serialized and hashed using the \code{\link[digest]{digest}} +#' function to generate a string that will be used as a cache key. This key is +#' used to identify the contents of the plot: if the cache key is the same as a +#' previous time, it assumes that the plot is the same and can be retrieved from +#' the cache. +#' +#' This \code{cacheKeyExpr} is reactive, and so it will be re-evaluated when any +#' upstream reactives are invalidated. This will also trigger re-execution of +#' the plotting expression, \code{expr}. +#' +#' The key should consist of "normal" R objects, like vectors and lists. Lists +#' should in turn contain other normal R objects. If the key contains +#' environments, external pointers, or reference objects -- or even if it has +#' such objects attached as attributes -- then it is possible that it will +#' change unpredictably even when you do not expect it to. Additionally, because +#' the entire key is serialized and hashed, if it contains a very large object +#' -- a large data set, for example -- there may be a noticeable performance +#' penalty. +#' +#' If you face these issues with the cache key, you can work around them by +#' extracting out the important parts of the objects, and/or by converting them +#' to normal R objects before returning them. Your expression could even +#' serialize and hash that information in an efficient way and return a string, +#' which will in turn be hashed (very quickly) by the +#' \code{\link[digest]{digest}} function. +#' +#' Internally, the result from \code{cacheKeyExpr} is combined with the name of +#' the output (if you assign it to \code{output$plot1}, it will be combined +#' with \code{"plot1"}) to form the actual key that is used. As a result, even +#' if there are multiple plots that have the same \code{cacheKeyExpr}, they +#' will not have cache key collisions. +#' +#' @section Cache scoping: +#' +#' There are a number of different ways you may want to scope the cache. For +#' example, you may want each user session to have their own plot cache, or +#' you may want each run of the application to have a cache (shared among +#' possibly multiple simultaneous user sessions), or you may want to have a +#' cache that persists even after the application is shut down and started +#' again. +#' +#' To control the scope of the cache, use the \code{cache} parameter. There +#' are two ways of having Shiny automatically create and clean up the disk +#' cache. +#' +#' \describe{ +#' \item{1}{To scope the cache to one run of a Shiny application (shared +#' among possibly multiple user sessions), use \code{cache="app"}. This +#' is the default. The cache will be shared across multiple sessions, so +#' there is potentially a large performance benefit if there are many users +#' of the application. When the application stops running, the cache will +#' be deleted. If plots cannot be safely shared across users, this should +#' not be used.} +#' \item{2}{To scope the cache to one session, use \code{cache="session"}. +#' When a new user session starts -- in other words, when a web browser +#' visits the Shiny application -- a new cache will be created on disk +#' for that session. When the session ends, the cache will be deleted. +#' The cache will not be shared across multiple sessions.} +#' } +#' +#' If either \code{"app"} or \code{"session"} is used, the cache will be 10 MB +#' in size, and will be stored stored in memory, using a +#' \code{\link{memoryCache}} object. Note that the cache space will be shared +#' among all cached plots within a single application or session. +#' +#' In some cases, you may want more control over the caching behavior. For +#' example, you may want to use a larger or smaller cache, share a cache +#' among multiple R processes, or you may want the cache to persist across +#' multiple runs of an application, or even across multiple R processes. +#' +#' To use different settings for an application-scoped cache, you can call +#' \code{\link{shinyOptions}()} at the top of your app.R, server.R, or +#' global.R. For example, this will create a cache with 20 MB of space +#' instead of the default 10 MB: +#' \preformatted{ +#' shinyOptions(cache = memoryCache(size = 20e6)) +#' } +#' +#' To use different settings for a session-scoped cache, you can call +#' \code{\link{shinyOptions}()} at the top of your server function. To use +#' the session-scoped cache, you must also call \code{renderCachedPlot} with +#' \code{cache="session"}. This will create a 20 MB cache for the session: +#' \preformatted{ +#' function(input, output, session) { +#' shinyOptions(cache = memoryCache(size = 20e6)) +#' +#' output$plot <- renderCachedPlot( +#' ..., +#' cache = "session" +#' ) +#' } +#' } +#' +#' If you want to create a cache that is shared across multiple concurrent +#' R processes, you can use a \code{\link{diskCache}}. You can create an +#' application-level shared cache by putting this at the top of your app.R, +#' server.R, or global.R: +#' \preformatted{ +#' shinyOptions(cache = diskCache(file.path(dirname(tempdir()), "myapp-cache")) +#' } +#' +#' This will create a subdirectory in your system temp directory named +#' \code{myapp-cache} (replace \code{myapp-cache} with a unique name of +#' your choosing). On most platforms, this directory will be removed when +#' your system reboots. This cache will persist across multiple starts and +#' stops of the R process, as long as you do not reboot. +#' +#' To have the cache persist even across multiple reboots, you can create the +#' cache in a location outside of the temp directory. For example, it could +#' be a subdirectory of the application: +#' \preformatted{ +#' shinyOptions(cache = diskCache("./myapp-cache")) +#' } +#' +#' In this case, resetting the cache will have to be done manually, by deleting +#' the directory. +#' +#' You can also scope a cache to just one plot, or selected plots. To do that, +#' create a \code{\link{memoryCache}} or \code{\link{diskCache}}, and pass it +#' as the \code{cache} argument of \code{renderCachedPlot}. +#' +#' @section Interactive plots: +#' +#' \code{renderCachedPlot} can be used to create interactive plots. See +#' \code{\link{plotOutput}} for more information and examples. +#' +#' +#' @inheritParams renderPlot +#' @param cacheKeyExpr An expression that returns a cache key. This key should +#' be a unique identifier for a plot: the assumption is that if the cache key +#' is the same, then the plot will be the same. +#' @param sizePolicy A function that takes two arguments, \code{width} and +#' \code{height}, and returns a list with \code{width} and \code{height}. The +#' purpose is to round the actual pixel dimensions from the browser to some +#' other dimensions, so that this will not generate and cache images of every +#' possible pixel dimension. See \code{\link{sizeGrowthRatio}} for more +#' information on the default sizing policy. +#' @param res The resolution of the PNG, in pixels per inch. +#' @param cache The scope of the cache, or a cache object. This can be +#' \code{"app"} (the default), \code{"session"}, or a cache object like +#' a \code{\link{diskCache}}. See the Cache Scoping section for more +#' information. +#' +#' @seealso See \code{\link{renderPlot}} for the regular, non-cached version of +#' this function. For more about configuring caches, see +#' \code{\link{memoryCache}} and \code{\link{diskCache}}. +#' +#' +#' @examples +#' ## Only run examples in interactive R sessions +#' if (interactive()) { +#' +#' # A basic example that uses the default app-scoped memory cache. +#' # The cache will be shared among all simultaneous users of the application. +#' shinyApp( +#' fluidPage( +#' sidebarLayout( +#' sidebarPanel( +#' sliderInput("n", "Number of points", 4, 32, value = 8, step = 4) +#' ), +#' mainPanel(plotOutput("plot")) +#' ) +#' ), +#' function(input, output, session) { +#' output$plot <- renderCachedPlot({ +#' Sys.sleep(2) # Add an artificial delay +#' seqn <- seq_len(input$n) +#' plot(mtcars$wt[seqn], mtcars$mpg[seqn], +#' xlim = range(mtcars$wt), ylim = range(mtcars$mpg)) +#' }, +#' cacheKeyExpr = { list(input$n) } +#' ) +#' } +#' ) +#' +#' +#' +#' # An example uses a data object shared across sessions. mydata() is part of +#' # the cache key, so when its value changes, plots that were previously +#' # stored in the cache will no longer be used (unless mydata() changes back +#' # to its previous value). +#' mydata <- reactiveVal(data.frame(x = rnorm(400), y = rnorm(400))) +#' +#' ui <- fluidPage( +#' sidebarLayout( +#' sidebarPanel( +#' sliderInput("n", "Number of points", 50, 400, 100, step = 50), +#' actionButton("newdata", "New data") +#' ), +#' mainPanel( +#' plotOutput("plot") +#' ) +#' ) +#' ) +#' +#' server <- function(input, output, session) { +#' observeEvent(input$newdata, { +#' mydata(data.frame(x = rnorm(400), y = rnorm(400))) +#' }) +#' +#' output$plot <- renderCachedPlot( +#' { +#' Sys.sleep(2) +#' d <- mydata() +#' seqn <- seq_len(input$n) +#' plot(d$x[seqn], d$y[seqn], xlim = range(d$x), ylim = range(d$y)) +#' }, +#' cacheKeyExpr = { list(input$n, mydata()) }, +#' ) +#' } +#' +#' shinyApp(ui, server) +#' +#' +#' # A basic application with two plots, where each plot in each session has +#' # a separate cache. +#' shinyApp( +#' fluidPage( +#' sidebarLayout( +#' sidebarPanel( +#' sliderInput("n", "Number of points", 4, 32, value = 8, step = 4) +#' ), +#' mainPanel( +#' plotOutput("plot1"), +#' plotOutput("plot2") +#' ) +#' ) +#' ), +#' function(input, output, session) { +#' output$plot1 <- renderCachedPlot({ +#' Sys.sleep(2) # Add an artificial delay +#' seqn <- seq_len(input$n) +#' plot(mtcars$wt[seqn], mtcars$mpg[seqn], +#' xlim = range(mtcars$wt), ylim = range(mtcars$mpg)) +#' }, +#' cacheKeyExpr = { list(input$n) }, +#' cache = memoryCache() +#' ) +#' output$plot2 <- renderCachedPlot({ +#' Sys.sleep(2) # Add an artificial delay +#' seqn <- seq_len(input$n) +#' plot(mtcars$wt[seqn], mtcars$mpg[seqn], +#' xlim = range(mtcars$wt), ylim = range(mtcars$mpg)) +#' }, +#' cacheKeyExpr = { list(input$n) }, +#' cache = memoryCache() +#' ) +#' } +#' ) +#' +#' } +#' +#' \dontrun{ +#' # At the top of app.R, this set the application-scoped cache to be a memory +#' # cache that is 20 MB in size, and where cached objects expire after one +#' # hour. +#' shinyOptions(cache = memoryCache(max_size = 20e6, max_age = 3600)) +#' +#' # At the top of app.R, this set the application-scoped cache to be a disk +#' # cache that can be shared among multiple concurrent R processes, and is +#' # deleted when the system reboots. +#' shinyOptions(cache = diskCache(file.path(dirname(tempdir()), "myapp-cache")) +#' +#' # At the top of app.R, this set the application-scoped cache to be a disk +#' # cache that can be shared among multiple concurrent R processes, and +#' # persists on disk across reboots. +#' shinyOptions(cache = diskCache("./myapp-cache")) +#' +#' # At the top of the server function, this set the session-scoped cache to be +#' # a memory cache that is 5 MB in size. +#' server <- function(input, output, session) { +#' shinyOptions(cache = memoryCache(max_size = 5e6)) +#' +#' output$plot <- renderCachedPlot( +#' ..., +#' cache = "session" +#' ) +#' } +#' +#' } +#' @export +renderCachedPlot <- function(expr, + cacheKeyExpr, + sizePolicy = sizeGrowthRatio(width = 400, height = 400, growthRate = 1.2), + res = 72, + cache = "app", + ..., + outputArgs = list() +) { + + # This ..stacktraceon is matched by a ..stacktraceoff.. when plotFunc + # is called + installExprFunction(expr, "func", parent.frame(), quoted = FALSE, ..stacktraceon = TRUE) + # This is so that the expr doesn't re-execute by itself; it needs to be + # triggered by the cache key (or width/height) changing. + isolatedFunc <- function() isolate(func()) + + args <- list(...) + + cacheKeyExpr <- substitute(cacheKeyExpr) + # The real cache key we'll use also includes width, height, res, pixelratio. + # This is just the part supplied by the user. + userCacheKey <- reactive(cacheKeyExpr, env = parent.frame(), quoted = TRUE, label = "userCacheKey") + + ensureCacheSetup <- function() { + # For our purposes, cache objects must support these methods. + isCacheObject <- function(x) { + # Use tryCatch in case the object does not support `$`. + tryCatch( + is.function(x$get) && is.function(x$set), + error = function(e) FALSE + ) + } + + if (isCacheObject(cache)) { + # If `cache` is already a cache object, do nothing + return() + + } else if (identical(cache, "app")) { + cache <<- getShinyOption("cache") + + } else if (identical(cache, "session")) { + cache <<- session$cache + + } else { + stop('`cache` must either be "app", "session", or a cache object with methods, `$get`, and `$set`.') + } + } + + # The width and height of the plot to draw, given from sizePolicy. These + # values get filled by an observer below. + fitDims <- reactiveValues(width = NULL, height = NULL) + + resizeObserver <- NULL + ensureResizeObserver <- function() { + if (!is.null(resizeObserver)) + return() + + # Given the actual width/height of the image in the browser, this gets the + # width/height from sizePolicy() and pushes those values into `fitDims`. + # It's done this way so that the `fitDims` only change (and cause + # invalidations) when the rendered image size changes, and not every time + # the browser's tag changes size. + doResizeCheck <- function() { + width <- session$clientData[[paste0('output_', outputName, '_width')]] + height <- session$clientData[[paste0('output_', outputName, '_height')]] + + if (is.null(width)) width <- 0 + if (is.null(height)) height <- 0 + + rect <- sizePolicy(c(width, height)) + fitDims$width <- rect[1] + fitDims$height <- rect[2] + } + + # Run it once immediately, then set up the observer + isolate(doResizeCheck()) + + resizeObserver <<- observe(doResizeCheck()) + } + + # Vars to store session and output, so that they can be accessed from + # the plotObj() reactive. + session <- NULL + outputName <- NULL + + + drawReactive <- reactive(label = "plotObj", { + hybrid_chain( + # Depend on the user cache key, even though we don't use the value. When + # it changes, it can cause the drawReactive to re-execute. (Though + # drawReactive will not necessarily re-execute -- it must be called from + # renderFunc, which happens only if there's a cache miss.) + userCacheKey(), + function(userCacheKeyValue) { + # Get width/height, but don't depend on them. + isolate({ + width <- fitDims$width + height <- fitDims$height + }) + + pixelratio <- session$clientData$pixelratio %OR% 1 + + do.call("drawPlot", c( + list( + name = outputName, + session = session, + func = isolatedFunc, + width = width, + height = height, + pixelratio = pixelratio, + res = res + ), + args + )) + }, + catch = function(reason) { + # Non-isolating read. A common reason for errors in plotting is because + # the dimensions are too small. By taking a dependency on width/height, + # we can try again if the plot output element changes size. + fitDims$width + fitDims$height + + # Propagate the error + stop(reason) + } + ) + }) + + + # This function is the one that's returned from renderPlot(), and gets + # wrapped in an observer when the output value is assigned. + renderFunc <- function(shinysession, name, ...) { + outputName <<- name + session <<- shinysession + ensureCacheSetup() + ensureResizeObserver() + + hybrid_chain( + # This use of the userCacheKey() sets up the reactive dependency that + # causes plot re-draw events. These may involve pulling from the cache, + # replaying a display list, or re-executing user code. + userCacheKey(), + function(userCacheKeyResult) { + width <- fitDims$width + height <- fitDims$height + pixelratio <- session$clientData$pixelratio %OR% 1 + + key <- digest::digest(list(outputName, userCacheKeyResult, width, height, res, pixelratio), "xxhash64") + + plotObj <- cache$get(key) + + # First look in cache. + # Case 1. cache hit. + if (!is.key_missing(plotObj)) { + return(list( + cacheHit = TRUE, + key = key, + plotObj = plotObj, + width = width, + height = height, + pixelratio = pixelratio + )) + } + + # If not in cache, hybrid_chain call to drawReactive + # + # Two more possible cases: + # 2. drawReactive will re-execute and return a plot that's the + # correct size. + # 3. It will not re-execute, but it will return the previous value, + # which is the wrong size. It will include a valid display list + # which can be used by resizeSavedPlot. + hybrid_chain( + drawReactive(), + function(drawReactiveResult) { + # Pass along the key for caching in the next stage + list( + cacheHit = FALSE, + key = key, + plotObj = drawReactiveResult, + width = width, + height = height, + pixelratio = pixelratio + ) + } + ) + }, + function(result) { + width <- result$width + height <- result$height + pixelratio <- result$pixelratio + + # Three possibilities when we get here: + # 1. There was a cache hit. No need to set a value in the cache. + # 2. There was a cache miss, and the plotObj is already the correct + # size (because drawReactive re-executed). In this case, we need + # to cache it. + # 3. There was a cache miss, and the plotObj was not the corect size. + # In this case, we need to replay the display list, and then cache + # the result. + if (!result$cacheHit) { + # If the image is already the correct size, this just returns the + # object unchanged. + result$plotObj <- do.call("resizeSavedPlot", c( + list( + name, + shinysession, + result$plotObj, + width, + height, + pixelratio, + res + ), + args + )) + + # Save a cached copy of the plotObj. The recorded displaylist for + # the plot can't be serialized and restored properly within the same + # R session, so we NULL it out before saving. (The image data and + # other metadata be saved and restored just fine.) Displaylists can + # also be very large (~1.5MB for a basic ggplot), and they would not + # be commonly used. Note that displaylist serialization was fixed in + # revision 74506 (2e6c669), and should be in R 3.6. A MemoryCache + # doesn't need to serialize objects, so it could actually save a + # display list, but for the reasons listed previously, it's + # generally not worth it. + # The plotResult is not the same as the recordedPlot (it is used to + # retrieve coordmap information for ggplot2 objects) but it is only + # used in conjunction with the recordedPlot, and we'll remove it + # because it can be quite large. + result$plotObj$plotResult <- NULL + result$plotObj$recordedPlot <- NULL + cache$set(result$key, result$plotObj) + } + + img <- result$plotObj$img + # Replace exact pixel dimensions; instead, the max-height and + # max-width will be set to 100% from CSS. + img$class <- "shiny-scalable" + img$width <- NULL + img$height <- NULL + + img + } + ) + } + + # If renderPlot isn't going to adapt to the height of the div, then the + # div needs to adapt to the height of renderPlot. By default, plotOutput + # sets the height to 400px, so to make it adapt we need to override it + # with NULL. + outputFunc <- plotOutput + formals(outputFunc)['height'] <- list(NULL) + + markRenderFunction(outputFunc, renderFunc, outputArgs = outputArgs) +} + + +#' Create a sizing function that grows at a given ratio +#' +#' Returns a function which takes a two-element vector representing an input +#' width and height, and returns a two-element vector of width and height. The +#' possible widths are the base width times the growthRate to any integer power. +#' For example, with a base width of 500 and growth rate of 1.25, the possible +#' widths include 320, 400, 500, 625, 782, and so on, both smaller and larger. +#' Sizes are rounded up to the next pixel. Heights are computed the same way as +#' widths. +#' +#' @param width,height Base width and height. +#' @param growthRate Growth rate multiplier. +#' +#' @seealso This is to be used with \code{\link{renderCachedPlot}}. +#' +#' @examples +#' f <- sizeGrowthRatio(500, 500, 1.25) +#' f(c(400, 400)) +#' f(c(500, 500)) +#' f(c(530, 550)) +#' f(c(625, 700)) +#' +#' @export +sizeGrowthRatio <- function(width = 400, height = 400, growthRate = 1.2) { + round_dim_up <- function(x, base, rate) { + power <- ceiling(log(x / base, rate)) + ceiling(base * rate^power) + } + + function(dims) { + if (length(dims) != 2) { + stop("dims must be a vector with two numbers, for width and height.") + } + c( + round_dim_up(dims[1], width, growthRate), + round_dim_up(dims[2], height, growthRate) + ) + } +} diff --git a/R/render-plot.R b/R/render-plot.R index 9cce3c9c0..adc5f9509 100644 --- a/R/render-plot.R +++ b/R/render-plot.R @@ -133,10 +133,12 @@ renderPlot <- function(expr, width='auto', height='auto', res=72, ..., function(result) { dims <- getDims() pixelratio <- session$clientData$pixelratio %OR% 1 - do.call("resizeSavedPlot", c( + result <- do.call("resizeSavedPlot", c( list(name, shinysession, result, dims$width, dims$height, pixelratio, res), args )) + + result$img } ) } @@ -154,23 +156,25 @@ renderPlot <- function(expr, width='auto', height='auto', res=72, ..., resizeSavedPlot <- function(name, session, result, width, height, pixelratio, res, ...) { if (result$img$width == width && result$img$height == height && result$pixelratio == pixelratio && result$res == res) { - return(result$img) + return(result) } coordmap <- NULL outfile <- plotPNG(function() { grDevices::replayPlot(result$recordedPlot) - coordmap <<- getCoordmap(result$plotResult, width, height, pixelratio, res) + coordmap <<- getCoordmap(result$plotResult, width*pixelratio, height*pixelratio, res*pixelratio) }, width = width*pixelratio, height = height*pixelratio, res = res*pixelratio, ...) on.exit(unlink(outfile), add = TRUE) - img <- list( + result$img <- list( src = session$fileUrl(name, outfile, contentType = "image/png"), width = width, height = height, coordmap = coordmap, error = attr(coordmap, "error", exact = TRUE) ) + + result } drawPlot <- function(name, session, func, width, height, pixelratio, res, ...) { @@ -227,7 +231,7 @@ drawPlot <- function(name, session, func, width, height, pixelratio, res, ...) { list( plotResult = value, recordedPlot = grDevices::recordPlot(), - coordmap = getCoordmap(value, width, height, pixelratio, res), + coordmap = getCoordmap(value, width*pixelratio, height*pixelratio, res*pixelratio), pixelratio = pixelratio, res = res ) @@ -247,6 +251,7 @@ drawPlot <- function(name, session, func, width, height, pixelratio, res, ...) { # Get coordmap error message if present error = attr(result$coordmap, "error", exact = TRUE) )) + result }, finally = function() { @@ -279,22 +284,26 @@ custom_print.ggplot <- function(x) { # below. For base graphics: # plot(mtcars$wt, mtcars$mpg) # str(getPrevPlotCoordmap(400, 300)) -# List of 1 -# $ :List of 4 -# ..$ domain :List of 4 -# .. ..$ left : num 1.36 -# .. ..$ right : num 5.58 -# .. ..$ bottom: num 9.46 -# .. ..$ top : num 34.8 -# ..$ range :List of 4 -# .. ..$ left : num 50.4 -# .. ..$ right : num 373 -# .. ..$ bottom: num 199 -# .. ..$ top : num 79.6 -# ..$ log :List of 2 -# .. ..$ x: NULL -# .. ..$ y: NULL -# ..$ mapping: Named list() +# List of 2 +# $ panels:List of 1 +# ..$ :List of 4 +# .. ..$ domain :List of 4 +# .. .. ..$ left : num 1.36 +# .. .. ..$ right : num 5.58 +# .. .. ..$ bottom: num 9.46 +# .. .. ..$ top : num 34.8 +# .. ..$ range :List of 4 +# .. .. ..$ left : num 65.6 +# .. .. ..$ right : num 366 +# .. .. ..$ bottom: num 238 +# .. .. ..$ top : num 48.2 +# .. ..$ log :List of 2 +# .. .. ..$ x: NULL +# .. .. ..$ y: NULL +# .. ..$ mapping: Named list() +# $ dims :List of 2 +# ..$ width : num 400 +# ..$ height: num 300 # # For ggplot2, first you need to define the print.ggplot function from inside # renderPlot, then use it to print the plot: @@ -313,29 +322,33 @@ custom_print.ggplot <- function(x) { # } # # p <- print(ggplot(mtcars, aes(wt, mpg)) + geom_point()) -# str(getGgplotCoordmap(p, 1, 72)) -# List of 1 -# $ :List of 10 -# ..$ panel : int 1 -# ..$ row : int 1 -# ..$ col : int 1 -# ..$ panel_vars: Named list() -# ..$ log :List of 2 -# .. ..$ x: NULL -# .. ..$ y: NULL -# ..$ domain :List of 4 -# .. ..$ left : num 1.32 -# .. ..$ right : num 5.62 -# .. ..$ bottom: num 9.22 -# .. ..$ top : num 35.1 -# ..$ mapping :List of 2 -# .. ..$ x: chr "wt" -# .. ..$ y: chr "mpg" -# ..$ range :List of 4 -# .. ..$ left : num 40.8 -# .. ..$ right : num 446 -# .. ..$ bottom: num 263 -# .. ..$ top : num 14.4 +# str(getGgplotCoordmap(p, 400, 300, 72)) +# List of 2 +# $ panels:List of 1 +# ..$ :List of 8 +# .. ..$ panel : num 1 +# .. ..$ row : num 1 +# .. ..$ col : num 1 +# .. ..$ panel_vars: Named list() +# .. ..$ log :List of 2 +# .. .. ..$ x: NULL +# .. .. ..$ y: NULL +# .. ..$ domain :List of 4 +# .. .. ..$ left : num 1.32 +# .. .. ..$ right : num 5.62 +# .. .. ..$ bottom: num 9.22 +# .. .. ..$ top : num 35.1 +# .. ..$ mapping :List of 2 +# .. .. ..$ x: chr "wt" +# .. .. ..$ y: chr "mpg" +# .. ..$ range :List of 4 +# .. .. ..$ left : num 33.3 +# .. .. ..$ right : num 355 +# .. .. ..$ bottom: num 328 +# .. .. ..$ top : num 5.48 +# $ dims :List of 2 +# ..$ width : num 400 +# ..$ height: num 300 # # With a faceted ggplot2 plot, the outer list contains two objects, each of # which represents one panel. In this example, there is one panelvar, but there @@ -343,59 +356,63 @@ custom_print.ggplot <- function(x) { # mtc <- mtcars # mtc$am <- factor(mtc$am) # p <- print(ggplot(mtc, aes(wt, mpg)) + geom_point() + facet_wrap(~ am)) -# str(getGgplotCoordmap(p, 1, 72)) +# str(getGgplotCoordmap(p, 400, 300, 72)) # List of 2 -# $ :List of 10 -# ..$ panel : int 1 -# ..$ row : int 1 -# ..$ col : int 1 -# ..$ panel_vars:List of 1 -# .. ..$ panelvar1: Factor w/ 2 levels "0","1": 1 -# ..$ log :List of 2 -# .. ..$ x: NULL -# .. ..$ y: NULL -# ..$ domain :List of 4 -# .. ..$ left : num 1.32 -# .. ..$ right : num 5.62 -# .. ..$ bottom: num 9.22 -# .. ..$ top : num 35.1 -# ..$ mapping :List of 3 -# .. ..$ x : chr "wt" -# .. ..$ y : chr "mpg" -# .. ..$ panelvar1: chr "am" -# ..$ range :List of 4 -# .. ..$ left : num 45.6 -# .. ..$ right : num 317 -# .. ..$ bottom: num 251 -# .. ..$ top : num 35.7 -# $ :List of 10 -# ..$ panel : int 2 -# ..$ row : int 1 -# ..$ col : int 2 -# ..$ panel_vars:List of 1 -# .. ..$ panelvar1: Factor w/ 2 levels "0","1": 2 -# ..$ log :List of 2 -# .. ..$ x: NULL -# .. ..$ y: NULL -# ..$ domain :List of 4 -# .. ..$ left : num 1.32 -# .. ..$ right : num 5.62 -# .. ..$ bottom: num 9.22 -# .. ..$ top : num 35.1 -# ..$ mapping :List of 3 -# .. ..$ x : chr "wt" -# .. ..$ y : chr "mpg" -# .. ..$ panelvar1: chr "am" -# ..$ range :List of 4 -# .. ..$ left : num 322 -# .. ..$ right : num 594 -# .. ..$ bottom: num 251 -# .. ..$ top : num 35.7 +# $ panels:List of 2 +# ..$ :List of 8 +# .. ..$ panel : num 1 +# .. ..$ row : int 1 +# .. ..$ col : int 1 +# .. ..$ panel_vars:List of 1 +# .. .. ..$ panelvar1: Factor w/ 2 levels "0","1": 1 +# .. ..$ log :List of 2 +# .. .. ..$ x: NULL +# .. .. ..$ y: NULL +# .. ..$ domain :List of 4 +# .. .. ..$ left : num 1.32 +# .. .. ..$ right : num 5.62 +# .. .. ..$ bottom: num 9.22 +# .. .. ..$ top : num 35.1 +# .. ..$ mapping :List of 3 +# .. .. ..$ x : chr "wt" +# .. .. ..$ y : chr "mpg" +# .. .. ..$ panelvar1: chr "am" +# .. ..$ range :List of 4 +# .. .. ..$ left : num 33.3 +# .. .. ..$ right : num 191 +# .. .. ..$ bottom: num 328 +# .. .. ..$ top : num 23.1 +# ..$ :List of 8 +# .. ..$ panel : num 2 +# .. ..$ row : int 1 +# .. ..$ col : int 2 +# .. ..$ panel_vars:List of 1 +# .. .. ..$ panelvar1: Factor w/ 2 levels "0","1": 2 +# .. ..$ log :List of 2 +# .. .. ..$ x: NULL +# .. .. ..$ y: NULL +# .. ..$ domain :List of 4 +# .. .. ..$ left : num 1.32 +# .. .. ..$ right : num 5.62 +# .. .. ..$ bottom: num 9.22 +# .. .. ..$ top : num 35.1 +# .. ..$ mapping :List of 3 +# .. .. ..$ x : chr "wt" +# .. .. ..$ y : chr "mpg" +# .. .. ..$ panelvar1: chr "am" +# .. ..$ range :List of 4 +# .. .. ..$ left : num 197 +# .. .. ..$ right : num 355 +# .. .. ..$ bottom: num 328 +# .. .. ..$ top : num 23.1 +# $ dims :List of 2 +# ..$ width : num 400 +# ..$ height: num 300 -getCoordmap <- function(x, width, height, pixelratio, res) { +getCoordmap <- function(x, width, height, res) { if (inherits(x, "ggplot_build_gtable")) { - getGgplotCoordmap(x, pixelratio, res) + getGgplotCoordmap(x, width, height, res) } else { getPrevPlotCoordmap(width, height) } @@ -415,7 +432,7 @@ getPrevPlotCoordmap <- function(width, height) { } # Wrapped in double list because other types of plots can have multiple panels. - list(list( + panel_info <- list(list( # Bounds of the plot area, in data space domain = list( left = usrCoords[1], @@ -425,10 +442,10 @@ getPrevPlotCoordmap <- function(width, height) { ), # The bounds of the plot area, in DOM pixels range = list( - left = graphics::grconvertX(usrBounds[1], 'user', 'nfc') * width, - right = graphics::grconvertX(usrBounds[2], 'user', 'nfc') * width, - bottom = (1-graphics::grconvertY(usrBounds[3], 'user', 'nfc')) * height - 1, - top = (1-graphics::grconvertY(usrBounds[4], 'user', 'nfc')) * height - 1 + left = graphics::grconvertX(usrBounds[1], 'user', 'ndc') * width, + right = graphics::grconvertX(usrBounds[2], 'user', 'ndc') * width, + bottom = (1-graphics::grconvertY(usrBounds[3], 'user', 'ndc')) * height - 1, + top = (1-graphics::grconvertY(usrBounds[4], 'user', 'ndc')) * height - 1 ), log = list( x = if (graphics::par('xlog')) 10 else NULL, @@ -439,27 +456,43 @@ getPrevPlotCoordmap <- function(width, height) { # (not an array) in JSON. mapping = list(x = NULL)[0] )) + + list( + panels = panel_info, + dims = list( + width = width, + height =height + ) + ) } # Given a ggplot_build_gtable object, return a coordmap for it. -getGgplotCoordmap <- function(p, pixelratio, res) { +getGgplotCoordmap <- function(p, width, height, res) { if (!inherits(p, "ggplot_build_gtable")) return(NULL) tryCatch({ # Get info from built ggplot object - info <- find_panel_info(p$build) + panel_info <- find_panel_info(p$build) # Get ranges from gtable - it's possible for this to return more elements than # info, because it calculates positions even for panels that aren't present. # This can happen with facet_wrap. - ranges <- find_panel_ranges(p$gtable, pixelratio, res) + ranges <- find_panel_ranges(p$gtable, res) - for (i in seq_along(info)) { - info[[i]]$range <- ranges[[i]] + for (i in seq_along(panel_info)) { + panel_info[[i]]$range <- ranges[[i]] } - return(info) + return( + list( + panels = panel_info, + dims = list( + width = width, + height = height + ) + ) + ) }, error = function(e) { # If there was an error extracting info from the ggplot object, just return @@ -486,13 +519,11 @@ find_panel_info <- function(b) { # This is for ggplot2>2.2.1, after an API was introduced for extracting # information about the plot object. find_panel_info_api <- function(b) { - # Workaround for check NOTE, until ggplot2 >2.2.1 is released - colon_colon <- `::` # Given a built ggplot object, return x and y domains (data space coords) for # each panel. - layout <- colon_colon("ggplot2", "summarise_layout")(b) - coord <- colon_colon("ggplot2", "summarise_coord")(b) - layers <- colon_colon("ggplot2", "summarise_layers")(b) + layout <- ggplot2::summarise_layout(b) + coord <- ggplot2::summarise_coord(b) + layers <- ggplot2::summarise_layers(b) # Given x and y scale objects and a coord object, return a list that has # the bases of log transformations for x and y, or NULL if it's not a @@ -822,7 +853,7 @@ find_panel_info_non_api <- function(b, ggplot_format) { # Given a gtable object, return the x and y ranges (in pixel dimensions) -find_panel_ranges <- function(g, pixelratio, res) { +find_panel_ranges <- function(g, res) { # Given a vector of unit objects, return logical vector indicating which ones # are "null" units. These units use the remaining available width/height -- # that is, the space not occupied by elements that have an absolute size. @@ -952,26 +983,15 @@ find_panel_ranges <- function(g, pixelratio, res) { layout <- layout[order(layout$t, layout$l), ] layout$panel <- seq_len(nrow(layout)) - # When using a HiDPI client on a Linux server, the pixel - # dimensions are doubled, so we have to divide the dimensions by - # `pixelratio`. When a HiDPI client is used on a Mac server (with - # the quartz device), the pixel dimensions _aren't_ doubled, even though - # the image has double size. In the latter case we don't have to scale the - # numbers down. - pix_ratio <- 1 - if (!grepl("^quartz", names(grDevices::dev.cur()))) { - pix_ratio <- pixelratio - } - # Return list of lists, where each inner list has left, right, top, bottom # values for a panel lapply(seq_len(nrow(layout)), function(i) { p <- layout[i, , drop = FALSE] list( - left = x_pos[p$l - 1] / pix_ratio, - right = x_pos[p$r] / pix_ratio, - bottom = y_pos[p$b] / pix_ratio, - top = y_pos[p$t - 1] / pix_ratio + left = x_pos[p$l - 1], + right = x_pos[p$r], + bottom = y_pos[p$b], + top = y_pos[p$t - 1] ) }) } diff --git a/R/server-input-handlers.R b/R/server-input-handlers.R index cc602e5b2..e1fab4431 100644 --- a/R/server-input-handlers.R +++ b/R/server-input-handlers.R @@ -142,6 +142,7 @@ registerInputHandler("shiny.matrix", function(data, ...) { return(m) }) + registerInputHandler("shiny.number", function(val, ...){ ifelse(is.null(val), NA, val) }) @@ -220,3 +221,21 @@ registerInputHandler("shiny.file", function(val, shinysession, name) { val }) + + +# to be used with !!!answer +registerInputHandler("shiny.symbolList", function(val, ...) { + if (is.null(val)) { + list() + } else { + lapply(val, as.symbol) + } +}) +# to be used with !!answer +registerInputHandler("shiny.symbol", function(val, ...) { + if (is.null(val) || identical(val, "")) { + NULL + } else { + as.symbol(val) + } +}) diff --git a/R/server.R b/R/server.R index 5e43d91cf..fc1a4f9ad 100644 --- a/R/server.R +++ b/R/server.R @@ -419,7 +419,10 @@ startApp <- function(appObj, port, host, quiet) { if (is.numeric(port) || is.integer(port)) { if (!quiet) { - message('\n', 'Listening on http://', host, ':', port) + hostString <- host + if (httpuv::ipFamily(host) == 6L) + hostString <- paste0("[", hostString, "]") + message('\n', 'Listening on http://', hostString, ':', port) } return(startServer(host, port, handlerManager$createHttpuvApp())) } else if (is.character(port)) { @@ -576,12 +579,16 @@ runApp <- function(appDir=getwd(), .globals$running <- FALSE }, add = TRUE) - # Enable per-app Shiny options + # Enable per-app Shiny options, for shinyOptions() and getShinyOption(). oldOptionSet <- .globals$options on.exit({ .globals$options <- oldOptionSet },add = TRUE) + # A unique identifier associated with this run of this application. It is + # shared across sessions. + shinyOptions(appToken = createUniqueId(8)) + # Make warnings print immediately # Set pool.scheduler to support pool package ops <- options( @@ -591,6 +598,11 @@ runApp <- function(appDir=getwd(), ) on.exit(options(ops), add = TRUE) + # Set up default cache for app. + if (is.null(getShinyOption("cache"))) { + shinyOptions(cache = MemoryCache$new()) + } + appParts <- as.shiny.appobj(appDir) # The lines below set some of the app's running options, which @@ -770,8 +782,17 @@ runApp <- function(appDir=getwd(), }, add = TRUE) if (!is.character(port)) { - # http://0.0.0.0/ doesn't work on QtWebKit (i.e. RStudio viewer) - browseHost <- if (identical(host, "0.0.0.0")) "127.0.0.1" else host + browseHost <- host + if (identical(host, "0.0.0.0")) { + # http://0.0.0.0/ doesn't work on QtWebKit (i.e. RStudio viewer) + browseHost <- "127.0.0.1" + } else if (identical(host, "::")) { + browseHost <- "::1" + } + + if (httpuv::ipFamily(browseHost) == 6L) { + browseHost <- paste0("[", browseHost, "]") + } appUrl <- paste("http://", browseHost, ":", port, sep="") if (is.function(launch.browser)) diff --git a/R/shiny.R b/R/shiny.R index 33d589032..24e7a54e1 100644 --- a/R/shiny.R +++ b/R/shiny.R @@ -445,6 +445,8 @@ ShinySession <- R6Class( testMode = FALSE, # Are we running in test mode? testExportExprs = list(), outputValues = list(), # Saved output values (for testing mode) + currentOutputName = NULL, # Name of the currently-running output + outputInfo = list(), # List of information for each output testSnapshotUrl = character(0), sendResponse = function(requestMsg, value) { @@ -491,6 +493,16 @@ ShinySession <- R6Class( return(defaultValue) return(result) }, + withCurrentOutput = function(name, expr) { + if (!is.null(private$currentOutputName)) { + stop("Nested calls to withCurrentOutput() are not allowed.") + } + + promises::with_promise_domain( + createVarPromiseDomain(private, "currentOutputName", name), + expr + ) + }, shouldSuspend = function(name) { # Find corresponding hidden state clientData variable, with the format # "output_foo_hidden". (It comes from .clientdata_output_foo_hidden @@ -691,6 +703,7 @@ ShinySession <- R6Class( request = 'ANY', # Websocket request object singletons = character(0), # Tracks singleton HTML fragments sent to the page userData = 'environment', + cache = NULL, # A cache object used in the session user = NULL, groups = NULL, @@ -725,6 +738,8 @@ ShinySession <- R6Class( private$.outputs <- list() private$.outputOptions <- list() + self$cache <- MemoryCache$new() + private$bookmarkCallbacks <- Callbacks$new() private$bookmarkedCallbacks <- Callbacks$new() private$restoreCallbacks <- Callbacks$new() @@ -901,9 +916,11 @@ ShinySession <- R6Class( # Create subdir for this scope if (!is.null(state$dir)) { scopeState$dir <- file.path(state$dir, namespace) - res <- dir.create(scopeState$dir) - if (res == FALSE) { - stop("Error creating subdirectory for scope ", namespace) + if (!dirExists(scopeState$dir)) { + res <- dir.create(scopeState$dir) + if (res == FALSE) { + stop("Error creating subdirectory for scope ", namespace) + } } } @@ -961,8 +978,9 @@ ShinySession <- R6Class( stop("x must be a reactivevalues object") impl <- .subset2(x, 'impl') - impl$freeze(name) - self$onFlushed(function() impl$thaw(name)) + key <- .subset2(x, 'ns')(name) + impl$freeze(key) + self$onFlushed(function() impl$thaw(key)) }, onSessionEnded = function(sessionEndedCallback) { @@ -1070,7 +1088,11 @@ ShinySession <- R6Class( # to include the $then/$catch calls below? hybrid_chain( hybrid_chain( - shinyCallingHandlers(func()), + { + private$withCurrentOutput(name, { + shinyCallingHandlers(func()) + }) + }, catch = function(cond) { if (inherits(cond, "shiny.custom.error")) { if (isTRUE(getOption("show.error.messages"))) printError(cond) @@ -1313,6 +1335,47 @@ ShinySession <- R6Class( } }, + getCurrentOutputInfo = function() { + name <- private$currentOutputName + + tmp_info <- private$outputInfo[[name]] %OR% list(name = name) + + # cd_names() returns names of all items in clientData, without taking a + # reactive dependency. It is a function and it's memoized, so that we do + # the (relatively) expensive isolate(names(...)) call only when needed, + # and at most one time in this function. + .cd_names <- NULL + cd_names <- function() { + if (is.null(.cd_names)) { + .cd_names <<- isolate(names(self$clientData)) + } + .cd_names + } + + # If we don't already have width for this output info, see if it's + # present, and if so, add it. + if (! ("width" %in% names(tmp_info)) ) { + width_name <- paste0("output_", name, "_width") + if (width_name %in% cd_names()) { + tmp_info$width <- reactive({ + self$clientData[[width_name]] + }) + } + } + + if (! ("height" %in% names(tmp_info)) ) { + height_name <- paste0("output_", name, "_height") + if (height_name %in% cd_names()) { + tmp_info$height <- reactive({ + self$clientData[[height_name]] + }) + } + } + + private$outputInfo[[name]] <- tmp_info + private$outputInfo[[name]] + }, + createBookmarkObservers = function() { # This registers observers for bookmarking to work. @@ -2056,6 +2119,16 @@ outputOptions <- function(x, name, ...) { .subset2(x, 'impl')$outputOptions(name, ...) } + +#' Get information about the output that is currently being executed. +#' +#' @param session The current Shiny session. +#' +#' @export +getCurrentOutputInfo <- function(session = getDefaultReactiveDomain()) { + session$getCurrentOutputInfo() +} + #' Add callbacks for Shiny session events #' #' These functions are for registering callbacks on Shiny session events. @@ -2124,7 +2197,9 @@ flushPendingSessions <- function() { #' called from within the server function, this will default to the current #' session, and the callback will be invoked when the current session ends. If #' \code{onStop} is called outside a server function, then the callback will -#' be invoked with the application exits. +#' be invoked with the application exits. If \code{NULL}, it is the same as +#' calling \code{onStop} outside of the server function, and the callback will +#' be invoked when the application exits. #' #' #' @seealso \code{\link{onSessionEnded}()} for the same functionality, but at @@ -2184,7 +2259,7 @@ flushPendingSessions <- function() { #' } #' @export onStop <- function(fun, session = getDefaultReactiveDomain()) { - if (is.null(getDefaultReactiveDomain())) { + if (is.null(session)) { return(.globals$onStopCallbacks$register(fun)) } else { # Note: In the future if we allow scoping the onStop() callback to modules diff --git a/R/shinywrappers.R b/R/shinywrappers.R index f1c518d87..86ae5ab1b 100644 --- a/R/shinywrappers.R +++ b/R/shinywrappers.R @@ -1,4 +1,4 @@ -globalVariables('func') +utils::globalVariables('func') #' Mark a function as a render function #' @@ -118,7 +118,7 @@ useRenderFunction <- function(renderFunc, inline = FALSE) { # If there's a namespace, we must respect it id <- getDefaultReactiveDomain()$ns(id) } - + # Make the id the first positional argument outputArgs <- c(list(id), outputArgs) @@ -451,7 +451,7 @@ renderText <- function(expr, env=parent.frame(), quoted=FALSE, #' call to \code{\link{uiOutput}} when \code{renderUI} is used in an #' interactive R Markdown document. #' -#' @seealso \code{\link{uiOutput}} +#' @seealso \code{\link{uiOutput}} #' @export #' @examples #' ## Only run examples in interactive R sessions diff --git a/R/update-input.R b/R/update-input.R index 5c13fe41d..253071543 100644 --- a/R/update-input.R +++ b/R/update-input.R @@ -383,13 +383,17 @@ updateNumericInput <- function(session, inputId, label = NULL, value = NULL, session$sendInputMessage(inputId, message) } -#' Change the value of a slider input on the client +#' Update Slider Input Widget +#' +#' Change the value of a slider input on the client. #' #' @template update-input #' @param value The value to set for the input object. #' @param min Minimum value. #' @param max Maximum value. #' @param step Step size. +#' @param timeFormat Date and POSIXt formatting. +#' @param timezone The timezone offset for POSIXt objects. #' #' @seealso \code{\link{sliderInput}} #' @@ -422,22 +426,15 @@ updateNumericInput <- function(session, inputId, label = NULL, value = NULL, #' } #' @export updateSliderInput <- function(session, inputId, label = NULL, value = NULL, - min = NULL, max = NULL, step = NULL) + min = NULL, max = NULL, step = NULL, timeFormat = NULL, timezone = NULL) { - # Make sure that value, min, max all have the same type, because we need - # special handling for dates and datetimes. - vals <- dropNulls(list(value, min, max)) + dataType <- getSliderType(min, max, value) - type <- unique(lapply(vals, function(x) { - if (inherits(x, "Date")) "date" - else if (inherits(x, "POSIXt")) "datetime" - else "number" - })) - if (length(type) > 1) { - stop("Type mismatch for value, min, and max") + if (is.null(timeFormat)) { + timeFormat <- switch(dataType, date = "%F", datetime = "%F %T", number = NULL) } - if ((length(type) == 1) && (type == "date" || type == "datetime")) { + if (dataType == "date" || dataType == "datetime") { to_ms <- function(x) 1000 * as.numeric(as.POSIXct(x)) if (!is.null(min)) min <- to_ms(min) if (!is.null(max)) max <- to_ms(max) @@ -449,7 +446,10 @@ updateSliderInput <- function(session, inputId, label = NULL, value = NULL, value = formatNoSci(value), min = formatNoSci(min), max = formatNoSci(max), - step = formatNoSci(step) + step = formatNoSci(step), + `data-type` = dataType, + `time-format` = timeFormat, + timezone = timezone )) session$sendInputMessage(inputId, message) } @@ -576,7 +576,7 @@ updateRadioButtons <- function(session, inputId, label = NULL, choices = NULL, #' @template update-input #' @inheritParams selectInput #' -#' @seealso \code{\link{selectInput}} +#' @seealso \code{\link{selectInput}} \code{\link{varSelectInput}} #' #' @examples #' ## Only run examples in interactive R sessions @@ -643,10 +643,22 @@ updateSelectizeInput <- function(session, inputId, label = NULL, choices = NULL, return(updateSelectInput(session, inputId, label, choices, selected)) } - # convert a single vector to a data frame so it returns {label: , value: } - # other objects return arbitrary JSON {x: , y: , foo: , ...} - choices <- if (is.atomic(choices)) { - # fast path + noOptGroup <- TRUE + if (is.list(choices)) { + # check if list is nested + for (i in seq_along(choices)) { + if (is.list(choices[[i]]) || length(choices[[i]]) > 1) { + noOptGroup <- FALSE + break() + } + } + } + # convert choices to a data frame so it returns [{label: , value: , group: },...] + choices <- if (is.atomic(choices) || noOptGroup) { + # fast path for vectors and flat lists + if (is.list(choices)) { + choices <- unlist(choices) + } if (is.null(names(choices))) { lab <- as.character(choices) } else { @@ -659,8 +671,52 @@ updateSelectizeInput <- function(session, inputId, label = NULL, choices = NULL, } data.frame(label = lab, value = choices, stringsAsFactors = FALSE) } else { - # slow path - as.data.frame(choices, stringsAsFactors = FALSE) + # slow path for nested lists/optgroups + list_names <- names(choices) + if (is.null(list_names)) { + list_names <- rep("", length(choices)) + } + + choice_list <- mapply(choices, list_names, FUN = function (choice, name) { + group <- "" + lab <- name + if (lab == "") lab <- as.character(choice) + + if (is.list(choice) || length(choice) > 1) { + group <- rep(name, length(choice)) + choice <- unlist(choice) + + if (is.null(names(choice))) { + lab <- as.character(choice) + } else { + lab <- names(choice) + # replace empty names like: choices = c(a = 1, 2) + # in this case: names(choices) = c("a", "") + # with replacement below choices will be: lab = c("a", "2") + empty_names_indices <- lab == "" + lab[empty_names_indices] <- as.character(choice[empty_names_indices]) + } + } + + list( + label = lab, + value = as.character(choice), + group = group + ) + }, SIMPLIFY = FALSE) + + + extract_vector <- function(x, name) { + vecs <- lapply(x, `[[`, name) + do.call(c, vecs) + } + + data.frame( + label = extract_vector(choice_list, "label"), + value = extract_vector(choice_list, "value"), + group = extract_vector(choice_list, "group"), + stringsAsFactors = FALSE, row.names = NULL + ) } value <- unname(selected) @@ -673,6 +729,43 @@ updateSelectizeInput <- function(session, inputId, label = NULL, choices = NULL, )) session$sendInputMessage(inputId, message) } +#' @rdname updateSelectInput +#' @inheritParams varSelectInput +#' @export +updateVarSelectInput <- function(session, inputId, label = NULL, data = NULL, selected = NULL) { + if (is.null(data)) { + choices <- NULL + } else { + choices <- colnames(data) + } + updateSelectInput( + session = session, + inputId = inputId, + label = label, + choices = choices, + selected = selected + ) +} +#' @rdname updateSelectInput +#' @export +updateVarSelectizeInput <- function(session, inputId, label = NULL, data = NULL, selected = NULL, options = list(), server = FALSE) { + if (is.null(data)) { + choices <- NULL + } else { + choices <- colnames(data) + } + updateSelectizeInput( + session = session, + inputId = inputId, + label = label, + choices = choices, + selected = selected, + options = options, + server = server + ) +} + + selectizeJSON <- function(data, req) { query <- parseQueryString(req$QUERY_STRING) diff --git a/R/utils.R b/R/utils.R index 87898b6fa..186970926 100644 --- a/R/utils.R +++ b/R/utils.R @@ -269,6 +269,25 @@ dirExists <- function(paths) { file.exists(paths) & file.info(paths)$isdir } +# Removes empty directory (vectorized). This is needed because file.remove() +# on Unix will remove empty directories, but on Windows, it will not. On +# Windows, you would need to use unlink(recursive=TRUE), which is not very +# safe. This function does it safely on Unix and Windows. +dirRemove <- function(path) { + for (p in path) { + if (!dirExists(p)) { + stop("Cannot remove non-existent directory ", p, ".") + } + if (length(dir(p, all.files = TRUE, no.. = TRUE)) != 0) { + stop("Cannot remove non-empty directory ", p, ".") + } + result <- unlink(p, recursive = TRUE) + if (result == 1) { + stop("Error removing directory ", p, ".") + } + } +} + # Attempt to join a path and relative path, and turn the result into a # (normalized) absolute path. The result will only be returned if it is an # existing file/directory and is a descendant of dir. @@ -1679,14 +1698,14 @@ createVarPromiseDomain <- function(env, name, value) { force(env) force(name) force(value) - + promises::new_promise_domain( wrapOnFulfilled = function(onFulfilled) { function(...) { orig <- env[[name]] env[[name]] <- value on.exit(env[[name]] <- orig) - + onFulfilled(...) } }, @@ -1695,7 +1714,7 @@ createVarPromiseDomain <- function(env, name, value) { orig <- env[[name]] env[[name]] <- value on.exit(env[[name]] <- orig) - + onRejected(...) } }, @@ -1707,4 +1726,17 @@ createVarPromiseDomain <- function(env, name, value) { force(expr) } ) -} \ No newline at end of file +} + +getSliderType <- function(min, max, value) { + vals <- dropNulls(list(value, min, max)) + type <- unique(lapply(vals, function(x) { + if (inherits(x, "Date")) "date" + else if (inherits(x, "POSIXt")) "datetime" + else "number" + })) + if (length(type) > 1) { + stop("Type mismatch for `min`, `max`, and `value`. Each must be Date, POSIXt, or number.") + } + type[[1]] +} diff --git a/inst/staticdocs/index.r b/inst/staticdocs/index.r index fb251e104..4766945f3 100644 --- a/inst/staticdocs/index.r +++ b/inst/staticdocs/index.r @@ -41,6 +41,7 @@ sd_section("UI Inputs", "numericInput", "radioButtons", "selectInput", + "varSelectInput", "sliderInput", "submitButton", "textInput", @@ -104,6 +105,7 @@ sd_section("Rendering functions", "Functions that you use in your application's server side code, assigning them to outputs that appear in your user interface.", c( "renderPlot", + "renderCachedPlot", "renderText", "renderPrint", "renderDataTable", @@ -195,7 +197,9 @@ sd_section("Utility functions", "exprToFunction", "installExprFunction", "parseQueryString", + "getCurrentOutputInfo", "plotPNG", + "sizeGrowthRatio", "exportTestValues", "setSerializer", "snapshotExclude", @@ -206,7 +210,10 @@ sd_section("Utility functions", "shinyDeprecated", "serverInfo", "shiny-options", - "onStop" + "onStop", + "diskCache", + "memoryCache", + "key_missing" ) ) sd_section("Plot interaction", diff --git a/inst/www/shared/shiny.css b/inst/www/shared/shiny.css index e049b119a..356607316 100644 --- a/inst/www/shared/shiny.css +++ b/inst/www/shared/shiny.css @@ -12,6 +12,11 @@ pre.shiny-text-output.noplaceholder:empty { height: 0; } +.shiny-image-output img.shiny-scalable, .shiny-plot-output img.shiny-scalable { + max-width: 100%; + max-height: 100%; +} + #shiny-disconnected-overlay { position: fixed; top: 0; @@ -381,3 +386,10 @@ pre.shiny-text-output.noplaceholder:empty { .shiny-file-input-over { box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(76, 174, 76, .6); } + +/* Overrides bootstrap-datepicker3.css styling for invalid date ranges. + See https://github.com/rstudio/shiny/issues/2042 for details. */ +.datepicker table tbody tr td.disabled, +.datepicker table tbody tr td.disabled:hover { + color: #aaa; +} diff --git a/inst/www/shared/shiny.js b/inst/www/shared/shiny.js index a9e88f51d..5b0daa942 100644 --- a/inst/www/shared/shiny.js +++ b/inst/www/shared/shiny.js @@ -14,7 +14,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var exports = window.Shiny = window.Shiny || {}; - exports.version = "1.0.5.9000"; // Version number inserted by Grunt + exports.version = "1.1.0.9001"; // Version number inserted by Grunt var origPushState = window.history.pushState; window.history.pushState = function () { @@ -251,11 +251,17 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function mapValues(obj, f) { var newObj = {}; for (var key in obj) { - if (obj.hasOwnProperty(key)) newObj[key] = f(obj[key]); + if (obj.hasOwnProperty(key)) newObj[key] = f(obj[key], key, obj); } return newObj; } + // This is does the same as Number.isNaN, but that function unfortunately does + // not exist in any version of IE. + function isnan(x) { + return typeof x === 'number' && isNaN(x); + } + // Binary equality function used by the equal function. function _equal(x, y) { if ($.type(x) === "object" && $.type(y) === "object") { @@ -2570,9 +2576,6 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var $el = $(el); var img; - // Remove event handlers that were added in previous renderValue() - $el.off('.image_output'); - // Get existing img element if present. var $img = $el.find('img'); @@ -2647,7 +2650,19 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope } } - if (!opts.coordmap) opts.coordmap = []; + if (!opts.coordmap) { + opts.coordmap = { + panels: [], + dims: { + height: null, + width: null + } + }; + } + + // Remove event handlers that were added in previous runs of this function. + $el.off('.image_output'); + $img.off('.image_output'); imageutils.initCoordmap($el, opts.coordmap); @@ -2668,9 +2683,11 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var clickHandler = imageutils.createClickHandler(opts.clickId, opts.clickClip, opts.coordmap); $el.on('mousedown2.image_output', clickHandler.mousedown); + $el.on('resize.image_output', clickHandler.onResize); + // When img is reset, do housekeeping: clear $el's mouse listener and // call the handler's onResetImg callback. - $img.on('reset', clickHandler.onResetImg); + $img.on('reset.image_output', clickHandler.onResetImg); } if (opts.dblclickId) { @@ -2679,7 +2696,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var dblclickHandler = imageutils.createClickHandler(opts.dblclickId, opts.clickClip, opts.coordmap); $el.on('dblclick2.image_output', dblclickHandler.mousedown); - $img.on('reset', dblclickHandler.onResetImg); + $el.on('resize.image_output', dblclickHandler.onResize); + $img.on('reset.image_output', dblclickHandler.onResetImg); } if (opts.hoverId) { @@ -2687,7 +2705,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope $el.on('mousemove.image_output', hoverHandler.mousemove); $el.on('mouseout.image_output', hoverHandler.mouseout); - $img.on('reset', hoverHandler.onResetImg); + $el.on('resize.image_output', hoverHandler.onResize); + $img.on('reset.image_output', hoverHandler.onResetImg); } if (opts.brushId) { @@ -2707,7 +2726,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope $el.on('mousedown.image_output', brushHandler.mousedown); $el.on('mousemove.image_output', brushHandler.mousemove); - $img.on('reset', brushHandler.onResetImg); + $el.on('resize.image_output', brushHandler.onResize); + $img.on('reset.image_output', brushHandler.onResetImg); } if (opts.clickId || opts.dblclickId || opts.hoverId || opts.brushId) { @@ -2730,15 +2750,21 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope }).remove(); OutputBinding.prototype.clearError.call(this, el); + }, + + resize: function resize(el, width, height) { + $(el).find("img").trigger("resize"); } }); outputBindings.register(imageOutputBinding, 'shiny.imageOutput'); var imageutils = {}; - // Modifies the panel objects in a coordmap, adding scale(), scaleInv(), - // and clip() functions to each one. - imageutils.initPanelScales = function (coordmap) { + // Modifies the panel objects in a coordmap, adding scaleImgToData(), + // scaleDataToImg(), and clipImg() functions to each one. The panel objects + // use img and data coordinates only; they do not use css coordinates. The + // domain is in data coordinates; the range is in img coordinates. + imageutils.initPanelScales = function (panels) { // Map a value x from a domain to a range. If clip is true, clip it to the // range. function mapLinear(x, domainMin, domainMax, rangeMin, rangeMax, clip) { @@ -2783,58 +2809,84 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var xscaler = scaler1D(d.left, d.right, r.left, r.right, xlog); var yscaler = scaler1D(d.bottom, d.top, r.bottom, r.top, ylog); - panel.scale = function (val, clip) { - return { - x: xscaler.scale(val.x, clip), - y: yscaler.scale(val.y, clip) - }; + // Given an object of form {x:1, y:2}, or {x:1, xmin:2:, ymax: 3}, convert + // from data coordinates to img. Whether a value is converted as x or y + // depends on the first character of the key. + panel.scaleDataToImg = function (val, clip) { + return mapValues(val, function (value, key) { + var prefix = key.substring(0, 1); + if (prefix === "x") { + return xscaler.scale(value, clip); + } else if (prefix === "y") { + return yscaler.scale(value, clip); + } + return null; + }); }; - panel.scaleInv = function (val, clip) { - return { - x: xscaler.scaleInv(val.x, clip), - y: yscaler.scaleInv(val.y, clip) - }; + panel.scaleImgToData = function (val, clip) { + return mapValues(val, function (value, key) { + var prefix = key.substring(0, 1); + if (prefix === "x") { + return xscaler.scaleInv(value, clip); + } else if (prefix === "y") { + return yscaler.scaleInv(value, clip); + } + return null; + }); }; - // Given a scaled offset (in pixels), clip it to the nearest panel region. - panel.clip = function (offset) { + // Given a scaled offset (in img pixels), clip it to the nearest panel region. + panel.clipImg = function (offset_img) { var newOffset = { - x: offset.x, - y: offset.y + x: offset_img.x, + y: offset_img.y }; var bounds = panel.range; - if (offset.x > bounds.right) newOffset.x = bounds.right;else if (offset.x < bounds.left) newOffset.x = bounds.left; + if (offset_img.x > bounds.right) newOffset.x = bounds.right;else if (offset_img.x < bounds.left) newOffset.x = bounds.left; - if (offset.y > bounds.bottom) newOffset.y = bounds.bottom;else if (offset.y < bounds.top) newOffset.y = bounds.top; + if (offset_img.y > bounds.bottom) newOffset.y = bounds.bottom;else if (offset_img.y < bounds.top) newOffset.y = bounds.top; return newOffset; }; } // Add the functions to each panel object. - for (var i = 0; i < coordmap.length; i++) { - var panel = coordmap[i]; + for (var i = 0; i < panels.length; i++) { + var panel = panels[i]; addScaleFuns(panel); } }; // This adds functions to the coordmap object to handle various - // coordinate-mapping tasks, and send information to the server. - // The input coordmap is an array of objects, each of which represents a panel. - // coordmap must be an array, even if empty, so that it can be modified in - // place; when empty, we add a dummy panel to the array. - // It also calls initPanelScales, which modifies each panel object to have - // scale, scaleInv, and clip functions. + // coordinate-mapping tasks, and send information to the server. The input + // coordmap is an array of objects, each of which represents a panel. coordmap + // must be an array, even if empty, so that it can be modified in place; when + // empty, we add a dummy panel to the array. It also calls initPanelScales, + // which modifies each panel object to have scaleImgToData, scaleDataToImg, + // and clip functions. + // + // There are three coordinate spaces which we need to translate between: + // + // 1. css: The pixel coordinates in the web browser, also known as CSS pixels. + // The origin is the upper-left corner of the (not including padding + // and border). + // 2. img: The pixel coordinates of the image data. A common case is on a + // HiDPI device, where the source PNG image could be 1000 pixels wide but + // be displayed in 500 CSS pixels. Another case is when the image has + // additional scaling due to CSS transforms or width. + // 3. data: The coordinates in the data space. This is a bit more complicated + // than the other two, because there can be multiple panels (as in facets). imageutils.initCoordmap = function ($el, coordmap) { var el = $el[0]; + var $img = $el.find("img"); // If we didn't get any panels, create a dummy one where the domain and range // are simply the pixel dimensions. // that we modify. - if (coordmap.length === 0) { + if (coordmap.panels.length === 0) { var bounds = { top: 0, left: 0, @@ -2842,7 +2894,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope bottom: el.clientHeight - 1 }; - coordmap[0] = { + coordmap.panels[0] = { domain: bounds, range: bounds, mapping: {} @@ -2850,86 +2902,122 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope } // Add scaling functions to each panel - imageutils.initPanelScales(coordmap); + imageutils.initPanelScales(coordmap.panels); - // Firefox doesn't have offsetX/Y, so we need to use an alternate - // method of calculation for it. Even though other browsers do have - // offsetX/Y, we need to calculate relative to $el, because sometimes the - // mouse event can come with offset relative to other elements on the - // page. This happens when the event listener is bound to, say, window. - coordmap.mouseOffset = function (mouseEvent) { - var offset = $el.offset(); + // This returns the offset of the mouse in CSS pixels relative to the img, + // but not including the padding or border, if present. + coordmap.mouseOffsetCss = function (mouseEvent) { + var img_origin = findOrigin($img); + + // The offset of the mouse from the upper-left corner of the img, in + // pixels. return { - x: mouseEvent.pageX - offset.left, - y: mouseEvent.pageY - offset.top + x: mouseEvent.pageX - img_origin.x, + y: mouseEvent.pageY - img_origin.y }; }; - // Given two sets of x/y coordinates, return an object representing the - // min and max x and y values. (This could be generalized to any number - // of points). - coordmap.findBox = function (offset1, offset2) { + // Given an offset in an img in CSS pixels, return the corresponding offset + // in source image pixels. The offset_css can have properties like "x", + // "xmin", "y", and "ymax" -- anything that starts with "x" and "y". If the + // img content is 1000 pixels wide, but is scaled to 400 pixels on screen, + // and the input is x:400, then this will return x:1000. + coordmap.scaleCssToImg = function (offset_css) { + var pixel_scaling = coordmap.imgToCssScalingRatio(); + + var result = mapValues(offset_css, function (value, key) { + var prefix = key.substring(0, 1); + + if (prefix === "x") { + return offset_css[key] / pixel_scaling.x; + } else if (prefix === "y") { + return offset_css[key] / pixel_scaling.y; + } + return null; + }); + + return result; + }; + + // Given an offset in an img, in source image pixels, return the + // corresponding offset in CSS pixels. If the img content is 1000 pixels + // wide, but is scaled to 400 pixels on screen, and the input is x:1000, + // then this will return x:400. + coordmap.scaleImgToCss = function (offset_img) { + var pixel_scaling = coordmap.imgToCssScalingRatio(); + + var result = mapValues(offset_img, function (value, key) { + var prefix = key.substring(0, 1); + + if (prefix === "x") { + return offset_img[key] * pixel_scaling.x; + } else if (prefix === "y") { + return offset_img[key] * pixel_scaling.y; + } + return null; + }); + + return result; + }; + + // Returns the x and y ratio the image content is scaled to on screen. If + // the image data is 1000 pixels wide and is scaled to 300 pixels on screen, + // then this returns 0.3. (Note the 300 pixels refers to CSS pixels.) + coordmap.imgToCssScalingRatio = function () { + var img_dims = findDims($img); return { - xmin: Math.min(offset1.x, offset2.x), - xmax: Math.max(offset1.x, offset2.x), - ymin: Math.min(offset1.y, offset2.y), - ymax: Math.max(offset1.y, offset2.y) + x: img_dims.x / coordmap.dims.width, + y: img_dims.y / coordmap.dims.height }; }; - // Shift an array of values so that they are within a min and max. - // The vals will be shifted so that they maintain the same spacing - // internally. If the range in vals is larger than the range of - // min and max, the result might not make sense. - coordmap.shiftToRange = function (vals, min, max) { - if (!(vals instanceof Array)) vals = [vals]; - - var maxval = Math.max.apply(null, vals); - var minval = Math.min.apply(null, vals); - var shiftAmount = 0; - if (maxval > max) { - shiftAmount = max - maxval; - } else if (minval < min) { - shiftAmount = min - minval; - } - - var newvals = []; - for (var i = 0; i < vals.length; i++) { - newvals[i] = vals[i] + shiftAmount; - } - return newvals; + coordmap.cssToImgScalingRatio = function () { + var res = coordmap.imgToCssScalingRatio(); + return { + x: 1 / res.x, + y: 1 / res.y + }; }; - // Given an offset, return an object representing which panel it's in. The - // `expand` argument tells it to expand the panel area by that many pixels. - // It's possible for an offset to be within more than one panel, because - // of the `expand` value. If that's the case, find the nearest panel. - coordmap.getPanel = function (offset, expand) { - expand = expand || 0; + // Given an offset in css pixels, return an object representing which panel + // it's in. The `expand` argument tells it to expand the panel area by that + // many pixels. It's possible for an offset to be within more than one + // panel, because of the `expand` value. If that's the case, find the + // nearest panel. + coordmap.getPanelCss = function (offset_css) { + var expand = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var x = offset.x; - var y = offset.y; + var offset_img = coordmap.scaleCssToImg(offset_css); + var x = offset_img.x; + var y = offset_img.y; + + // Convert expand from css pixels to img pixels + var cssToImgRatio = coordmap.cssToImgScalingRatio(); + var expand_img = { + x: expand * cssToImgRatio.x, + y: expand * cssToImgRatio.y + }; var matches = []; // Panels that match var dists = []; // Distance of offset to each matching panel - var b; - for (var i = 0; i < coordmap.length; i++) { - b = coordmap[i].range; + var b = void 0; + for (var i = 0; i < coordmap.panels.length; i++) { + b = coordmap.panels[i].range; - if (x <= b.right + expand && x >= b.left - expand && y <= b.bottom + expand && y >= b.top - expand) { - matches.push(coordmap[i]); + if (x <= b.right + expand_img.x && x >= b.left - expand_img.x && y <= b.bottom + expand_img.y && y >= b.top - expand_img.y) { + matches.push(coordmap.panels[i]); // Find distance from edges for x and y var xdist = 0; var ydist = 0; - if (x > b.right && x <= b.right + expand) { + if (x > b.right && x <= b.right + expand_img.x) { xdist = x - b.right; - } else if (x < b.left && x >= b.left - expand) { + } else if (x < b.left && x >= b.left - expand_img.x) { xdist = x - b.left; } - if (y > b.bottom && y <= b.bottom + expand) { + if (y > b.bottom && y <= b.bottom + expand_img.y) { ydist = y - b.bottom; - } else if (y < b.top && y >= b.top - expand) { + } else if (y < b.top && y >= b.top - expand_img.y) { ydist = y - b.top; } @@ -2951,12 +3039,12 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope return null; }; - // Is an offset in a panel? If supplied, `expand` tells us to expand the - // panels by that many pixels in all directions. - coordmap.isInPanel = function (offset, expand) { - expand = expand || 0; + // Is an offset (in css pixels) in a panel? If supplied, `expand` tells us + // to expand the panels by that many pixels in all directions. + coordmap.isInPanelCss = function (offset_css) { + var expand = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - if (coordmap.getPanel(offset, expand)) return true; + if (coordmap.getPanelCss(offset_css, expand)) return true; return false; }; @@ -2973,19 +3061,22 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope return; } - var offset = coordmap.mouseOffset(e); + var offset_css = coordmap.mouseOffsetCss(e); // If outside of plotting region - if (!coordmap.isInPanel(offset)) { + if (!coordmap.isInPanelCss(offset_css)) { if (nullOutside) { exports.setInputValue(inputId, null); return; } if (clip) return; } - if (clip && !coordmap.isInPanel(offset)) return; + if (clip && !coordmap.isInPanelCss(offset_css)) return; - var panel = coordmap.getPanel(offset); - var coords = panel.scaleInv(offset); + var panel = coordmap.getPanelCss(offset_css); + + var coords = panel.scaleImgToData(coordmap.scaleCssToImg(offset_css)); + + coords.pixelratio = coordmap.cssToImgScalingRatio(); // Add the panel (facet) variables, if present $.extend(coords, panel.panel_vars); @@ -3003,6 +3094,41 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope }; }; + // Given two sets of x/y coordinates, return an object representing the min + // and max x and y values. (This could be generalized to any number of + // points). + imageutils.findBox = function (offset1, offset2) { + return { + xmin: Math.min(offset1.x, offset2.x), + xmax: Math.max(offset1.x, offset2.x), + ymin: Math.min(offset1.y, offset2.y), + ymax: Math.max(offset1.y, offset2.y) + }; + }; + + // Shift an array of values so that they are within a min and max. The vals + // will be shifted so that they maintain the same spacing internally. If the + // range in vals is larger than the range of min and max, the result might not + // make sense. + imageutils.shiftToRange = function (vals, min, max) { + if (!(vals instanceof Array)) vals = [vals]; + + var maxval = Math.max.apply(null, vals); + var minval = Math.min.apply(null, vals); + var shiftAmount = 0; + if (maxval > max) { + shiftAmount = max - maxval; + } else if (minval < min) { + shiftAmount = min - minval; + } + + var newvals = []; + for (var i = 0; i < vals.length; i++) { + newvals[i] = vals[i] + shiftAmount; + } + return newvals; + }; + // This object provides two public event listeners: mousedown, and // dblclickIE8. // We need to make sure that, when the image is listening for double- @@ -3114,7 +3240,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope }, onResetImg: function onResetImg() { clickInfoSender(null); - } + }, + onResize: null }; }; @@ -3137,7 +3264,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope mouseout: mouseout, onResetImg: function onResetImg() { hoverInfoSender.immediateCall(null); - } + }, + onResize: null }; }; @@ -3198,6 +3326,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // Add the panel (facet) variables, if present $.extend(coords, panel.panel_vars); + coords.pixelratio = coordmap.cssToImgScalingRatio(); + // Add variable name mappings coords.mapping = panel.mapping; @@ -3234,31 +3364,32 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // Listen for left mouse button only if (e.which !== 1) return; - var offset = coordmap.mouseOffset(e); + // In general, brush uses css pixels, and coordmap uses img pixels. + var offset_css = coordmap.mouseOffsetCss(e); // Ignore mousedown events outside of plotting region, expanded by // a number of pixels specified in expandPixels. - if (opts.brushClip && !coordmap.isInPanel(offset, expandPixels)) return; + if (opts.brushClip && !coordmap.isInPanelCss(offset_css, expandPixels)) return; brush.up({ x: NaN, y: NaN }); - brush.down(offset); + brush.down(offset_css); - if (brush.isInResizeArea(offset)) { - brush.startResizing(offset); + if (brush.isInResizeArea(offset_css)) { + brush.startResizing(offset_css); // Attach the move and up handlers to the window so that they respond // even when the mouse is moved outside of the image. $(document).on('mousemove.image_brush', mousemoveResizing).on('mouseup.image_brush', mouseupResizing); - } else if (brush.isInsideBrush(offset)) { - brush.startDragging(offset); + } else if (brush.isInsideBrush(offset_css)) { + brush.startDragging(offset_css); setCursorStyle('grabbing'); // Attach the move and up handlers to the window so that they respond // even when the mouse is moved outside of the image. $(document).on('mousemove.image_brush', mousemoveDragging).on('mouseup.image_brush', mouseupDragging); } else { - var panel = coordmap.getPanel(offset, expandPixels); - brush.startBrushing(panel.clip(offset)); + var panel = coordmap.getPanelCss(offset_css, expandPixels); + brush.startBrushing(panel.clipImg(coordmap.scaleCssToImg(offset_css))); // Attach the move and up handlers to the window so that they respond // even when the mouse is moved outside of the image. @@ -3268,12 +3399,13 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // This sets the cursor style when it's in the el function mousemove(e) { - var offset = coordmap.mouseOffset(e); + // In general, brush uses css pixels, and coordmap uses img pixels. + var offset_css = coordmap.mouseOffsetCss(e); if (!(brush.isBrushing() || brush.isDragging() || brush.isResizing())) { // Set the cursor depending on where it is - if (brush.isInResizeArea(offset)) { - var r = brush.whichResizeSides(offset); + if (brush.isInResizeArea(offset_css)) { + var r = brush.whichResizeSides(offset_css); if (r.left && r.top || r.right && r.bottom) { setCursorStyle('nwse-resize'); @@ -3284,9 +3416,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope } else if (r.top || r.bottom) { setCursorStyle('ns-resize'); } - } else if (brush.isInsideBrush(offset)) { + } else if (brush.isInsideBrush(offset_css)) { setCursorStyle('grabbable'); - } else if (coordmap.isInPanel(offset, expandPixels)) { + } else if (coordmap.isInPanelCss(offset_css, expandPixels)) { setCursorStyle('crosshair'); } else { setCursorStyle(null); @@ -3296,17 +3428,17 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // mousemove handlers while brushing or dragging function mousemoveBrushing(e) { - brush.brushTo(coordmap.mouseOffset(e)); + brush.brushTo(coordmap.mouseOffsetCss(e)); brushInfoSender.normalCall(); } function mousemoveDragging(e) { - brush.dragTo(coordmap.mouseOffset(e)); + brush.dragTo(coordmap.mouseOffsetCss(e)); brushInfoSender.normalCall(); } function mousemoveResizing(e) { - brush.resizeTo(coordmap.mouseOffset(e)); + brush.resizeTo(coordmap.mouseOffsetCss(e)); brushInfoSender.normalCall(); } @@ -3317,7 +3449,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope $(document).off('mousemove.image_brush').off('mouseup.image_brush'); - brush.up(coordmap.mouseOffset(e)); + brush.up(coordmap.mouseOffsetCss(e)); brush.stopBrushing(); setCursorStyle('crosshair'); @@ -3342,7 +3474,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope $(document).off('mousemove.image_brush').off('mouseup.image_brush'); - brush.up(coordmap.mouseOffset(e)); + brush.up(coordmap.mouseOffsetCss(e)); brush.stopDragging(); setCursorStyle('grabbable'); @@ -3356,7 +3488,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope $(document).off('mousemove.image_brush').off('mouseup.image_brush'); - brush.up(coordmap.mouseOffset(e)); + brush.up(coordmap.mouseOffsetCss(e)); brush.stopResizing(); if (brushInfoSender.isPending()) brushInfoSender.immediateCall(); @@ -3379,15 +3511,28 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope if (!opts.brushResetOnNew) { if ($el.data("mostRecentBrush")) { - brush.importOldBrush(); - brushInfoSender.immediateCall(); + // Importing an old brush must happen after the image data has loaded + // and the DOM element has the updated size. If importOldBrush() + // is called before this happens, then the css-img coordinate mappings + // will give the wrong result, and the brush will have the wrong + // position. + $el.find("img").one("load.shiny-image-interaction", function () { + brush.importOldBrush(); + brushInfoSender.immediateCall(); + }); } } + function onResize() { + brush.onResize(); + brushInfoSender.immediateCall(); + } + return { mousedown: mousedown, mousemove: mousemove, - onResetImg: onResetImg + onResetImg: onResetImg, + onResize: onResize }; }; @@ -3401,6 +3546,11 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var $div = null; // The div representing the brush var state = {}; + + // Aliases for conciseness + var cssToImg = coordmap.scaleCssToImg; + var imgToCss = coordmap.scaleImgToCss; + reset(); function reset() { @@ -3409,7 +3559,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope state.dragging = false; state.resizing = false; - // Offset of last mouse down and up events + // Offset of last mouse down and up events (in CSS pixels) state.down = { x: NaN, y: NaN }; state.up = { x: NaN, y: NaN }; @@ -3421,10 +3571,11 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope bottom: false }; - // Bounding rectangle of the brush, in pixel and data dimensions. We need to - // record data dimensions along with pixel dimensions so that when a new - // plot is sent, we can re-draw the brush div with the appropriate coords. - state.boundsPx = { + // Bounding rectangle of the brush, in CSS pixel and data dimensions. We + // need to record data dimensions along with pixel dimensions so that when + // a new plot is sent, we can re-draw the brush div with the appropriate + // coords. + state.boundsCss = { xmin: NaN, xmax: NaN, ymin: NaN, @@ -3440,7 +3591,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // Panel object that the brush is in state.panel = null; - // The bounds at the start of a drag/resize + // The bounds at the start of a drag/resize (in CSS pixels) state.changeStartBounds = { xmin: NaN, xmax: NaN, @@ -3463,40 +3614,15 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope if (!oldBoundsData || !oldPanel) return; - // Compare two objects. This checks that objects a and b have the same est - // of keys, and that each key has the same value. This function isn't - // perfect, but it's good enough for comparing variable mappings, below. - function isEquivalent(a, b) { - if (a === undefined) { - if (b === undefined) return true;else return false; - } - if (a === null) { - if (b === null) return true;else return false; - } - - var aProps = Object.getOwnPropertyNames(a); - var bProps = Object.getOwnPropertyNames(b); - - if (aProps.length !== bProps.length) return false; - - for (var i = 0; i < aProps.length; i++) { - var propName = aProps[i]; - if (a[propName] !== b[propName]) { - return false; - } - } - return true; - } - // Find a panel that has matching vars; if none found, we can't restore. // The oldPanel and new panel must match on their mapping vars, and the // values. - for (var i = 0; i < coordmap.length; i++) { - var curPanel = coordmap[i]; + for (var i = 0; i < coordmap.panels.length; i++) { + var curPanel = coordmap.panels[i]; - if (isEquivalent(oldPanel.mapping, curPanel.mapping) && isEquivalent(oldPanel.panel_vars, curPanel.panel_vars)) { + if (equal(oldPanel.mapping, curPanel.mapping) && equal(oldPanel.panel_vars, curPanel.panel_vars)) { // We've found a matching panel - state.panel = coordmap[i]; + state.panel = coordmap.panels[i]; break; } } @@ -3513,21 +3639,36 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope updateDiv(); } + // This will reposition the brush div when the image is resized, maintaining + // the same data coordinates. Note that the "resize" here refers to the + // wrapper div/img being resized; elsewhere, "resize" refers to the brush + // div being resized. + function onResize() { + var bounds_data = boundsData(); + // Check to see if we have valid boundsData + for (var val in bounds_data) { + if (isnan(bounds_data[val])) return; + } + + boundsData(bounds_data); + updateDiv(); + } + // Return true if the offset is inside min/max coords - function isInsideBrush(offset) { - var bounds = state.boundsPx; - return offset.x <= bounds.xmax && offset.x >= bounds.xmin && offset.y <= bounds.ymax && offset.y >= bounds.ymin; + function isInsideBrush(offset_css) { + var bounds = state.boundsCss; + return offset_css.x <= bounds.xmax && offset_css.x >= bounds.xmin && offset_css.y <= bounds.ymax && offset_css.y >= bounds.ymin; } // Return true if offset is inside a region to start a resize - function isInResizeArea(offset) { - var sides = whichResizeSides(offset); + function isInResizeArea(offset_css) { + var sides = whichResizeSides(offset_css); return sides.left || sides.right || sides.top || sides.bottom; } // Return an object representing which resize region(s) the cursor is in. - function whichResizeSides(offset) { - var b = state.boundsPx; + function whichResizeSides(offset_css) { + var b = state.boundsCss; // Bounds with expansion var e = { xmin: b.xmin - resizeExpand, @@ -3542,34 +3683,36 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope bottom: false }; - if ((opts.brushDirection === 'xy' || opts.brushDirection === 'x') && offset.y <= e.ymax && offset.y >= e.ymin) { - if (offset.x < b.xmin && offset.x >= e.xmin) res.left = true;else if (offset.x > b.xmax && offset.x <= e.xmax) res.right = true; + if ((opts.brushDirection === 'xy' || opts.brushDirection === 'x') && offset_css.y <= e.ymax && offset_css.y >= e.ymin) { + if (offset_css.x < b.xmin && offset_css.x >= e.xmin) res.left = true;else if (offset_css.x > b.xmax && offset_css.x <= e.xmax) res.right = true; } - if ((opts.brushDirection === 'xy' || opts.brushDirection === 'y') && offset.x <= e.xmax && offset.x >= e.xmin) { - if (offset.y < b.ymin && offset.y >= e.ymin) res.top = true;else if (offset.y > b.ymax && offset.y <= e.ymax) res.bottom = true; + if ((opts.brushDirection === 'xy' || opts.brushDirection === 'y') && offset_css.x <= e.xmax && offset_css.x >= e.xmin) { + if (offset_css.y < b.ymin && offset_css.y >= e.ymin) res.top = true;else if (offset_css.y > b.ymax && offset_css.y <= e.ymax) res.bottom = true; } return res; } - // Sets the bounds of the brush, given a box and optional panel. This - // will fit the box bounds into the panel, so we don't brush outside of it. - // This knows whether we're brushing in the x, y, or xy directions, and sets - // bounds accordingly. - // If no box is passed in, just return current bounds. - function boundsPx(box) { - if (box === undefined) return state.boundsPx; + // Sets the bounds of the brush (in CSS pixels), given a box and optional + // panel. This will fit the box bounds into the panel, so we don't brush + // outside of it. This knows whether we're brushing in the x, y, or xy + // directions, and sets bounds accordingly. If no box is passed in, just + // return current bounds. + function boundsCss(box_css) { + if (box_css === undefined) { + return $.extend({}, state.boundsCss); + } - var min = { x: box.xmin, y: box.ymin }; - var max = { x: box.xmax, y: box.ymax }; + var min_css = { x: box_css.xmin, y: box_css.ymin }; + var max_css = { x: box_css.xmax, y: box_css.ymax }; var panel = state.panel; - var panelBounds = panel.range; + var panelBounds_img = panel.range; if (opts.brushClip) { - min = panel.clip(min); - max = panel.clip(max); + min_css = imgToCss(panel.clipImg(cssToImg(min_css))); + max_css = imgToCss(panel.clipImg(cssToImg(max_css))); } if (opts.brushDirection === 'xy') { @@ -3577,26 +3720,26 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope } else if (opts.brushDirection === 'x') { // Extend top and bottom of plotting area - min.y = panelBounds.top; - max.y = panelBounds.bottom; + min_css.y = imgToCss({ y: panelBounds_img.top }).y; + max_css.y = imgToCss({ y: panelBounds_img.bottom }).y; } else if (opts.brushDirection === 'y') { - min.x = panelBounds.left; - max.x = panelBounds.right; + min_css.x = imgToCss({ x: panelBounds_img.left }).x; + max_css.x = imgToCss({ x: panelBounds_img.right }).x; } - state.boundsPx = { - xmin: min.x, - xmax: max.x, - ymin: min.y, - ymax: max.y + state.boundsCss = { + xmin: min_css.x, + xmax: max_css.x, + ymin: min_css.y, + ymax: max_css.y }; // Positions in data space - var minData = state.panel.scaleInv(min); - var maxData = state.panel.scaleInv(max); + var min_data = state.panel.scaleImgToData(cssToImg(min_css)); + var max_data = state.panel.scaleImgToData(cssToImg(max_css)); // For reversed scales, the min and max can be reversed, so use findBox // to ensure correct order. - state.boundsData = coordmap.findBox(minData, maxData); + state.boundsData = imageutils.findBox(min_data, max_data); // Round to 14 significant digits to avoid spurious changes in FP values // (#1634). state.boundsData = mapValues(state.boundsData, function (val) { @@ -3612,24 +3755,20 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope } // Get or set the bounds of the brush using coordinates in the data space. - function boundsData(box) { - if (box === undefined) { - return state.boundsData; + function boundsData(box_data) { + if (box_data === undefined) { + return $.extend({}, state.boundsData); } - var min = { x: box.xmin, y: box.ymin }; - var max = { x: box.xmax, y: box.ymax }; - - var minPx = state.panel.scale(min); - var maxPx = state.panel.scale(max); + var box_css = imgToCss(state.panel.scaleDataToImg(box_data)); // The scaling function can reverse the direction of the axes, so we need to // find the min and max again. - boundsPx({ - xmin: Math.min(minPx.x, maxPx.x), - xmax: Math.max(minPx.x, maxPx.x), - ymin: Math.min(minPx.y, maxPx.y), - ymax: Math.max(minPx.y, maxPx.y) + boundsCss({ + xmin: Math.min(box_css.xmin, box_css.xmax), + xmax: Math.max(box_css.xmin, box_css.xmax), + ymin: Math.min(box_css.ymin, box_css.ymax), + ymax: Math.max(box_css.ymin, box_css.ymax) }); return undefined; } @@ -3675,25 +3814,26 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function updateDiv() { // Need parent offset relative to page to calculate mouse offset // relative to page. - var imgOffset = $el.offset(); - var b = state.boundsPx; + var img_offset_css = findOrigin($el.find("img")); + var b = state.boundsCss; + $div.offset({ - top: imgOffset.top + b.ymin, - left: imgOffset.left + b.xmin + top: img_offset_css.y + b.ymin, + left: img_offset_css.x + b.xmin }).outerWidth(b.xmax - b.xmin + 1).outerHeight(b.ymax - b.ymin + 1); } - function down(offset) { - if (offset === undefined) return state.down; + function down(offset_css) { + if (offset_css === undefined) return state.down; - state.down = offset; + state.down = offset_css; return undefined; } - function up(offset) { - if (offset === undefined) return state.up; + function up(offset_css) { + if (offset_css === undefined) return state.up; - state.up = offset; + state.up = offset_css; return undefined; } @@ -3704,23 +3844,22 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function startBrushing() { state.brushing = true; addDiv(); - state.panel = coordmap.getPanel(state.down, expandPixels); + state.panel = coordmap.getPanelCss(state.down, expandPixels); - boundsPx(coordmap.findBox(state.down, state.down)); + boundsCss(imageutils.findBox(state.down, state.down)); updateDiv(); } - function brushTo(offset) { - boundsPx(coordmap.findBox(state.down, offset)); + function brushTo(offset_css) { + boundsCss(imageutils.findBox(state.down, offset_css)); $div.show(); updateDiv(); } function stopBrushing() { state.brushing = false; - // Save the final bounding box of the brush - boundsPx(coordmap.findBox(state.down, state.up)); + boundsCss(imageutils.findBox(state.down, state.up)); } function isDragging() { @@ -3729,17 +3868,17 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function startDragging() { state.dragging = true; - state.changeStartBounds = $.extend({}, state.boundsPx); + state.changeStartBounds = $.extend({}, state.boundsCss); } - function dragTo(offset) { + function dragTo(offset_css) { // How far the brush was dragged - var dx = offset.x - state.down.x; - var dy = offset.y - state.down.y; + var dx = offset_css.x - state.down.x; + var dy = offset_css.y - state.down.y; // Calculate what new positions would be, before clipping. var start = state.changeStartBounds; - var newBounds = { + var newBounds_css = { xmin: start.xmin + dx, xmax: start.xmax + dx, ymin: start.ymin + dy, @@ -3748,25 +3887,26 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // Clip to the plotting area if (opts.brushClip) { - var panelBounds = state.panel.range; + var panelBounds_img = state.panel.range; + var newBounds_img = cssToImg(newBounds_css); // Convert to format for shiftToRange - var xvals = [newBounds.xmin, newBounds.xmax]; - var yvals = [newBounds.ymin, newBounds.ymax]; + var xvals_img = [newBounds_img.xmin, newBounds_img.xmax]; + var yvals_img = [newBounds_img.ymin, newBounds_img.ymax]; - xvals = coordmap.shiftToRange(xvals, panelBounds.left, panelBounds.right); - yvals = coordmap.shiftToRange(yvals, panelBounds.top, panelBounds.bottom); + xvals_img = imageutils.shiftToRange(xvals_img, panelBounds_img.left, panelBounds_img.right); + yvals_img = imageutils.shiftToRange(yvals_img, panelBounds_img.top, panelBounds_img.bottom); // Convert back to bounds format - newBounds = { - xmin: xvals[0], - xmax: xvals[1], - ymin: yvals[0], - ymax: yvals[1] - }; + newBounds_css = imgToCss({ + xmin: xvals_img[0], + xmax: xvals_img[1], + ymin: yvals_img[0], + ymax: yvals_img[1] + }); } - boundsPx(newBounds); + boundsCss(newBounds_css); updateDiv(); } @@ -3780,32 +3920,40 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function startResizing() { state.resizing = true; - state.changeStartBounds = $.extend({}, state.boundsPx); + state.changeStartBounds = $.extend({}, state.boundsCss); state.resizeSides = whichResizeSides(state.down); } - function resizeTo(offset) { + function resizeTo(offset_css) { // How far the brush was dragged - var dx = offset.x - state.down.x; - var dy = offset.y - state.down.y; + var d_css = { + x: offset_css.x - state.down.x, + y: offset_css.y - state.down.y + }; + + var d_img = cssToImg(d_css); // Calculate what new positions would be, before clipping. - var b = $.extend({}, state.changeStartBounds); - var panelBounds = state.panel.range; + var b_img = cssToImg(state.changeStartBounds); + var panelBounds_img = state.panel.range; if (state.resizeSides.left) { - b.xmin = coordmap.shiftToRange([b.xmin + dx], panelBounds.left, b.xmax)[0]; + var xmin_img = imageutils.shiftToRange(b_img.xmin + d_img.x, panelBounds_img.left, b_img.xmax)[0]; + b_img.xmin = xmin_img; } else if (state.resizeSides.right) { - b.xmax = coordmap.shiftToRange([b.xmax + dx], b.xmin, panelBounds.right)[0]; + var xmax_img = imageutils.shiftToRange(b_img.xmax + d_img.x, b_img.xmin, panelBounds_img.right)[0]; + b_img.xmax = xmax_img; } if (state.resizeSides.top) { - b.ymin = coordmap.shiftToRange([b.ymin + dy], panelBounds.top, b.ymax)[0]; + var ymin_img = imageutils.shiftToRange(b_img.ymin + d_img.y, panelBounds_img.top, b_img.ymax)[0]; + b_img.ymin = ymin_img; } else if (state.resizeSides.bottom) { - b.ymax = coordmap.shiftToRange([b.ymax + dy], b.ymin, panelBounds.bottom)[0]; + var ymax_img = imageutils.shiftToRange(b_img.ymax + d_img.y, b_img.ymin, panelBounds_img.bottom)[0]; + b_img.ymax = ymax_img; } - boundsPx(b); + boundsCss(imgToCss(b_img)); updateDiv(); } @@ -3821,7 +3969,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope isInResizeArea: isInResizeArea, whichResizeSides: whichResizeSides, - boundsPx: boundsPx, + onResize: onResize, // A callback when the wrapper div or img is resized. + + boundsCss: boundsCss, boundsData: boundsData, getPanel: getPanel, @@ -3852,6 +4002,62 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope }); }; + // ----------------------------------------------------------------------- + // Utility functions for finding dimensions and locations of DOM elements + // ----------------------------------------------------------------------- + + // Returns the ratio that an element has been scaled (for example, by CSS + // transforms) in the x and y directions. + function findScalingRatio($el) { + var boundingRect = $el[0].getBoundingClientRect(); + return { + x: boundingRect.width / $el.outerWidth(), + y: boundingRect.height / $el.outerHeight() + }; + } + + function findOrigin($el) { + var offset = $el.offset(); + var scaling_ratio = findScalingRatio($el); + + // Find the size of the padding and border, for the top and left. This is + // before any transforms. + var paddingBorder = { + left: parseInt($el.css("border-left-width")) + parseInt($el.css("padding-left")), + top: parseInt($el.css("border-top-width")) + parseInt($el.css("padding-top")) + }; + + // offset() returns the upper left corner of the element relative to the + // page, but it includes padding and border. Here we find the upper left + // of the element, not including padding and border. + return { + x: offset.left + scaling_ratio.x * paddingBorder.left, + y: offset.top + scaling_ratio.y * paddingBorder.top + }; + } + + // Find the dimensions of a tag, after transforms, and without padding and + // border. + function findDims($el) { + // If there's any padding/border, we need to find the ratio of the actual + // element content compared to the element plus padding and border. + var content_ratio = { + x: $el.width() / $el.outerWidth(), + y: $el.height() / $el.outerHeight() + }; + + // Get the dimensions of the element _after_ any CSS transforms. This + // includes the padding and border. + var bounding_rect = $el[0].getBoundingClientRect(); + + // Dimensions of the element after any CSS transforms, and without + // padding/border. + return { + x: content_ratio.x * bounding_rect.width, + y: content_ratio.y * bounding_rect.height + }; + } + //--------------------------------------------------------------------- // Source file: ../srcjs/output_binding_html.js @@ -4431,6 +4637,33 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope if (slider.$cache && slider.$cache.input) slider.$cache.input.trigger('change');else console.log("Couldn't force ion slider to update"); } + function getTypePrettifyer(dataType, timeFormat, timezone) { + var timeFormatter; + var prettify; + if (dataType === 'date') { + timeFormatter = strftime.utc(); + prettify = function prettify(num) { + return timeFormatter(timeFormat, new Date(num)); + }; + } else if (dataType === 'datetime') { + if (timezone) timeFormatter = strftime.timezone(timezone);else timeFormatter = strftime; + + prettify = function prettify(num) { + return timeFormatter(timeFormat, new Date(num)); + }; + } else { + // The default prettify function for ion.rangeSlider adds thousands + // separators after the decimal mark, so we have our own version here. + // (#1958) + prettify = function prettify(num) { + // When executed, `this` will refer to the `IonRangeSlider.options` + // object. + return formatNumber(num, this.prettify_separator); + }; + } + return prettify; + } + var sliderInputBinding = {}; $.extend(sliderInputBinding, textInputBinding, { find: function find(scope) { @@ -4509,12 +4742,30 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope msg.from = data.value; } } - if (data.hasOwnProperty('min')) msg.min = data.min; - if (data.hasOwnProperty('max')) msg.max = data.max; - if (data.hasOwnProperty('step')) msg.step = data.step; + var sliderFeatures = ['min', 'max', 'step']; + for (var i = 0; i < sliderFeatures.length; i++) { + var feats = sliderFeatures[i]; + if (data.hasOwnProperty(feats)) { + msg[feats] = data[feats]; + } + } if (data.hasOwnProperty('label')) $el.parent().find('label[for="' + $escape(el.id) + '"]').text(data.label); + var domElements = ['data-type', 'time-format', 'timezone']; + for (var i = 0; i < domElements.length; i++) { + var elem = domElements[i]; + if (data.hasOwnProperty(elem)) { + $el.data(elem, data[elem]); + } + } + + var dataType = $el.data('data-type'); + var timeFormat = $el.data('time-format'); + var timezone = $el.data('timezone'); + + msg.prettify = getTypePrettifyer(dataType, timeFormat, timezone); + $el.data('immediate', true); try { slider.update(msg); @@ -4535,31 +4786,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var $el = $(el); var dataType = $el.data('data-type'); var timeFormat = $el.data('time-format'); - var timeFormatter; + var timezone = $el.data('timezone'); - // Set up formatting functions - if (dataType === 'date') { - timeFormatter = strftime.utc(); - opts.prettify = function (num) { - return timeFormatter(timeFormat, new Date(num)); - }; - } else if (dataType === 'datetime') { - var timezone = $el.data('timezone'); - if (timezone) timeFormatter = strftime.timezone(timezone);else timeFormatter = strftime; - - opts.prettify = function (num) { - return timeFormatter(timeFormat, new Date(num)); - }; - } else { - // The default prettify function for ion.rangeSlider adds thousands - // separators after the decimal mark, so we have our own version here. - // (#1958) - opts.prettify = function (num) { - // When executed, `this` will refer to the `IonRangeSlider.options` - // object. - return formatNumber(num, this.prettify_separator); - }; - } + opts.prettify = getTypePrettifyer(dataType, timeFormat, timezone); $el.ionRangeSlider(opts); }, @@ -5025,6 +5254,18 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope find: function find(scope) { return $(scope).find('select'); }, + getType: function getType(el) { + var $el = $(el); + if (!$el.hasClass("symbol")) { + // default character type + return null; + } + if ($el.attr("multiple") === "multiple") { + return 'shiny.symbolList'; + } else { + return 'shiny.symbol'; + } + }, getId: function getId(el) { return InputBinding.prototype.getId.call(this, el) || el.name; }, @@ -5076,8 +5317,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope if (data.hasOwnProperty('url')) { selectize = this._selectize(el); selectize.clearOptions(); - var thiz = this, - loaded = false; + var loaded = false; selectize.settings.load = function (query, callback) { var settings = selectize.settings; $.ajax({ @@ -5094,8 +5334,19 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope callback(); }, success: function success(res) { + // res = [{label: '1', value: '1', group: '1'}, ...] + // success is called after options are added, but + // groups need to be added manually below + $.each(res, function (index, elem) { + selectize.addOptionGroup(elem.group, { group: elem.group }); + }); callback(res); - if (!loaded && data.hasOwnProperty('value')) thiz.setValue(el, data.value); + if (!loaded && data.hasOwnProperty('value')) { + selectize.setValue(data.value); + } else if (settings.maxItems === 1) { + // first item selected by default only for single-select + selectize.setValue(res[0].value); + } loaded = true; } }); @@ -5131,7 +5382,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope var options = $.extend({ labelField: 'label', valueField: 'value', - searchField: ['label'] + searchField: ['label'], + optgroupField: 'group', + optgroupLabelField: 'group', + optgroupValueField: 'group' }, JSON.parse(config.html())); // selectize created from selectInput() if (typeof config.data('nonempty') !== 'undefined') { diff --git a/inst/www/shared/shiny.js.map b/inst/www/shared/shiny.js.map index dc137b7c0..6542a6c68 100644 --- a/inst/www/shared/shiny.js.map +++ b/inst/www/shared/shiny.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../srcjs/_start.js","../../srcjs/utils.js","../../srcjs/browser.js","../../srcjs/input_rate.js","../../srcjs/shinyapp.js","../../srcjs/notifications.js","../../srcjs/modal.js","../../srcjs/file_processor.js","../../srcjs/binding_registry.js","../../srcjs/output_binding.js","../../srcjs/output_binding_text.js","../../srcjs/output_binding_image.js","../../srcjs/output_binding_html.js","../../srcjs/output_binding_downloadlink.js","../../srcjs/output_binding_datatable.js","../../srcjs/output_binding_adapter.js","../../srcjs/input_binding.js","../../srcjs/input_binding_text.js","../../srcjs/input_binding_textarea.js","../../srcjs/input_binding_password.js","../../srcjs/input_binding_number.js","../../srcjs/input_binding_checkbox.js","../../srcjs/input_binding_slider.js","../../srcjs/input_binding_date.js","../../srcjs/input_binding_daterange.js","../../srcjs/input_binding_select.js","../../srcjs/input_binding_radio.js","../../srcjs/input_binding_checkboxgroup.js","../../srcjs/input_binding_actionbutton.js","../../srcjs/input_binding_tabinput.js","../../srcjs/input_binding_fileinput.js","../../srcjs/init_shiny.js","../../srcjs/reactlog.js","../../srcjs/_end.js"],"names":[],"mappings":"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","file":"shiny.js","sourcesContent":["//---------------------------------------------------------------------\n// Source file: ../srcjs/_start.js\n\n(function() {\n var $ = jQuery;\n\n var exports = window.Shiny = window.Shiny || {};\n\n exports.version = \"{{ VERSION }}\"; // Version number inserted by Grunt\n\n var origPushState = window.history.pushState;\n window.history.pushState = function() {\n var result = origPushState.apply(this, arguments);\n $(document).trigger(\"pushstate\");\n return result;\n };\n\n $(document).on('submit', 'form:not([action])', function(e) {\n e.preventDefault();\n });\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/utils.js\n\nfunction escapeHTML(str) {\n var escaped = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\"\n };\n\n return str.replace(/[&<>'\"\\/]/g, function(m) {\n return escaped[m];\n });\n}\n\nfunction randomId() {\n return Math.floor(0x100000000 + (Math.random() * 0xF00000000)).toString(16);\n}\n\nfunction strToBool(str) {\n if (!str || !str.toLowerCase)\n return undefined;\n\n switch(str.toLowerCase()) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return undefined;\n }\n}\n\n// A wrapper for getComputedStyle that is compatible with older browsers.\n// This is significantly faster than jQuery's .css() function.\nfunction getStyle(el, styleProp) {\n var x;\n if (el.currentStyle)\n x = el.currentStyle[styleProp];\n else if (window.getComputedStyle) {\n // getComputedStyle can return null when we're inside a hidden iframe on\n // Firefox; don't attempt to retrieve style props in this case.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n var style = document.defaultView.getComputedStyle(el, null);\n if (style)\n x = style.getPropertyValue(styleProp);\n }\n return x;\n}\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n var str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Round to a specified number of significant digits.\nfunction roundSignif(x, digits = 1) {\n if (digits < 1)\n throw \"Significant digits must be at least 1.\";\n\n // This converts to a string and back to a number, which is inelegant, but\n // is less prone to FP rounding error than an alternate method which used\n // Math.round().\n return parseFloat(x.toPrecision(digits));\n}\n\n// Take a string with format \"YYYY-MM-DD\" and return a Date object.\n// IE8 and QTWebKit don't support YYYY-MM-DD, but they support YYYY/MM/DD\nfunction parseDate(dateString) {\n var date = new Date(dateString);\n if (isNaN(date))\n date = new Date(dateString.replace(/-/g, \"/\"));\n return date;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + '-' +\n padZeros(date.getUTCMonth()+1, 2) + '-' +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n\n\n// Given an element and a function(width, height), returns a function(). When\n// the output function is called, it calls the input function with the offset\n// width and height of the input element--but only if the size of the element\n// is non-zero and the size is different than the last time the output\n// function was called.\n//\n// Basically we are trying to filter out extraneous calls to func, so that\n// when the window size changes or whatever, we don't run resize logic for\n// elements that haven't actually changed size or aren't visible anyway.\nfunction makeResizeFilter(el, func) {\n var lastSize = {};\n return function() {\n var size = { w: el.offsetWidth, h: el.offsetHeight };\n if (size.w === 0 && size.h === 0)\n return;\n if (size.w === lastSize.w && size.h === lastSize.h)\n return;\n lastSize = size;\n func(size.w, size.h);\n };\n}\n\nvar _BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||\n window.MozBlobBuilder || window.MSBlobBuilder;\n\nfunction makeBlob(parts) {\n\n // Browser compatibility is a mess right now. The code as written works in\n // a variety of modern browsers, but sadly gives a deprecation warning\n // message on the console in current versions (as of this writing) of\n // Chrome.\n\n // Safari 6.0 (8536.25) on Mac OS X 10.8.1:\n // Has Blob constructor but it doesn't work with ArrayBufferView args\n\n // Google Chrome 21.0.1180.81 on Xubuntu 12.04:\n // Has Blob constructor, accepts ArrayBufferView args, accepts ArrayBuffer\n // but with a deprecation warning message\n\n // Firefox 15.0 on Xubuntu 12.04:\n // Has Blob constructor, accepts both ArrayBuffer and ArrayBufferView args\n\n // Chromium 18.0.1025.168 (Developer Build 134367 Linux) on Xubuntu 12.04:\n // No Blob constructor. Has WebKitBlobBuilder.\n\n try {\n return new Blob(parts);\n }\n catch (e) {\n var blobBuilder = new _BlobBuilder();\n $.each(parts, function(i, part) {\n blobBuilder.append(part);\n });\n return blobBuilder.getBlob();\n }\n}\n\nfunction pixelRatio() {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n } else {\n return 1;\n }\n}\n\n// Takes a string expression and returns a function that takes an argument.\n//\n// When the function is executed, it will evaluate that expression using\n// \"with\" on the argument value, and return the result.\nfunction scopeExprToFunc(expr) {\n /*jshint evil: true */\n var expr_escaped = expr\n .replace(/[\\\\\"']/g, '\\\\$&')\n .replace(/\\u0000/g, '\\\\0')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n // \\b has a special meaning; need [\\b] to match backspace char.\n .replace(/[\\b]/g, '\\\\b');\n\n try {\n var func = new Function(\n `with (this) {\n try {\n return (${expr});\n } catch (e) {\n console.error('Error evaluating expression: ${expr_escaped}');\n throw e;\n }\n }`\n );\n } catch (e) {\n console.error(\"Error parsing expression: \" + expr);\n throw e;\n }\n\n\n return function(scope) {\n return func.call(scope);\n };\n}\n\nfunction asArray(value) {\n if (value === null || value === undefined)\n return [];\n if ($.isArray(value))\n return value;\n return [value];\n}\n\n// We need a stable sorting algorithm for ordering\n// bindings by priority and insertion order.\nfunction mergeSort(list, sortfunc) {\n function merge(sortfunc, a, b) {\n var ia = 0;\n var ib = 0;\n var sorted = [];\n while (ia < a.length && ib < b.length) {\n if (sortfunc(a[ia], b[ib]) <= 0) {\n sorted.push(a[ia++]);\n }\n else {\n sorted.push(b[ib++]);\n }\n }\n while (ia < a.length)\n sorted.push(a[ia++]);\n while (ib < b.length)\n sorted.push(b[ib++]);\n return sorted;\n }\n\n // Don't mutate list argument\n list = list.slice(0);\n\n for (var chunkSize = 1; chunkSize < list.length; chunkSize *= 2) {\n for (var i = 0; i < list.length; i += chunkSize * 2) {\n var listA = list.slice(i, i + chunkSize);\n var listB = list.slice(i + chunkSize, i + chunkSize * 2);\n var merged = merge(sortfunc, listA, listB);\n var args = [i, merged.length];\n Array.prototype.push.apply(args, merged);\n Array.prototype.splice.apply(list, args);\n }\n }\n\n return list;\n}\n\n// Escape jQuery selector metacharacters: !\"#$%&'()*+,./:;<=>?@[\\]^`{|}~\nvar $escape = exports.$escape = function(val) {\n return val.replace(/([!\"#$%&'()*+,.\\/:;<=>?@\\[\\\\\\]^`{|}~])/g, '\\\\$1');\n};\n\n// Maps a function over an object, preserving keys. Like the mapValues\n// function from lodash.\nfunction mapValues(obj, f) {\n const newObj = {};\n for (let key in obj) {\n if (obj.hasOwnProperty(key))\n newObj[key] = f(obj[key]);\n }\n return newObj;\n}\n\n// Binary equality function used by the equal function.\nfunction _equal(x, y) {\n if ($.type(x) === \"object\" && $.type(y) === \"object\") {\n if (Object.keys(x).length !== Object.keys(y).length) return false;\n for (let prop in x)\n if (!y.hasOwnProperty(prop) || !_equal(x[prop], y[prop]))\n return false;\n return true;\n } else if ($.type(x) === \"array\" && $.type(y) === \"array\") {\n if (x.length !== y.length) return false;\n for (let i = 0; i < x.length; i++)\n if (!_equal(x[i], y[i])) return false;\n return true;\n } else {\n return (x === y);\n }\n}\n\n// Structural or \"deep\" equality predicate. Tests two or more arguments for\n// equality, traversing arrays and objects (as determined by $.type) as\n// necessary.\n//\n// Objects other than objects and arrays are tested for equality using ===.\nfunction equal(...args) {\n if (args.length < 2) throw new Error(\"equal requires at least two arguments.\");\n for (let i = 0; i < args.length-1; i++) {\n if (!_equal(args[i], args[i+1]))\n return false;\n }\n return true;\n};\n\n// Compare version strings like \"1.0.1\", \"1.4-2\". `op` must be a string like\n// \"==\" or \"<\".\nexports.compareVersion = function(a, op, b) {\n function versionParts(ver) {\n return (ver + \"\")\n .replace(/-/, \".\")\n .replace(/(\\.0)+[^\\.]*$/, \"\")\n .split(\".\");\n }\n\n function cmpVersion(a, b) {\n a = versionParts(a);\n b = versionParts(b);\n var len = Math.min(a.length, b.length);\n var cmp;\n\n for(var i=0; i=\") return (diff >= 0);\n else if (op === \">\") return (diff > 0);\n else if (op === \"<=\") return (diff <= 0);\n else if (op === \"<\") return (diff < 0);\n else throw `Unknown operator: ${op}`;\n};\n\n\n// multimethod: Creates functions — \"multimethods\" — that are polymorphic on one\n// or more of their arguments.\n//\n// Multimethods can take any number of arguments. Arguments are passed to an\n// applicable function or \"method\", returning its result. By default, if no\n// method was applicable, an exception is thrown.\n//\n// Methods are searched in the order that they were added, and the first\n// applicable method found is the one used.\n//\n// A method is applicable when the \"dispatch value\" associated with it\n// corresponds to the value returned by the dispatch function. The dispatch\n// function defaults to the value of the first argument passed to the\n// multimethod.\n//\n// The correspondence between the value returned by the dispatch function and\n// any method's dispatch value is determined by the test function, which is\n// user-definable and defaults to `equal` or deep equality.\n//\n// # Chainable Functions\n//\n// The function returned by `multimethod()` exposes functions as properties.\n// These functions generally return the multimethod, and so can be chained.\n//\n// - dispatch([function newDispatch]): Sets the dispatch function. The dispatch\n// function can take any number of arguments, but must return a dispatch\n// value. The default dispatch function returns the first argument passed to\n// the multimethod.\n//\n// - test([function newTest]): Sets the test function. The test function takes\n// two arguments: the dispatch value produced by the dispatch function, and\n// the dispatch value associated with some method. It must return a boolean\n// indicating whether or not to select the method. The default test function\n// is `equal`.\n//\n// - when(object dispatchVal, function method): Adds a new dispatch value/method\n// combination.\n//\n// - whenAny(array dispatchVals, function method): Like `when`, but\n// associates the method with every dispatch value in the `dispatchVals`\n// array.\n//\n// - else(function newDefaultMethod): Sets the default function. This function\n// is invoked when no methods apply. If left unset, the multimethod will throw\n// an exception when no methods are applicable.\n//\n// - clone(): Returns a new, functionally-equivalent multimethod. This is a way\n// to extend an existing multimethod in a local context — such as inside a\n// function — without modifying the original. NOTE: The array of methods is\n// copied, but the dispatch values themselves are not.\n//\n// # Self-reference\n//\n// The multimethod function can be obtained inside its method bodies without\n// referring to it by name.\n//\n// This makes it possible for one method to call another, or to pass the\n// multimethod to other functions as a callback from within methods.\n//\n// The mechanism is: the multimethod itself is bound as `this` to methods when\n// they are called. Since arrow functions cannot be bound to objects, **self-reference\n// is only possible within methods created using the `function` keyword**.\n//\n// # Tail recursion\n//\n// A method can call itself in a way that will not overflow the stack by using\n// `this.recur`.\n//\n// `this.recur` is a function available in methods created using `function`.\n// When the return value of a call to `this.recur` is returned by a method, the\n// arguments that were supplied to `this.recur` are used to call the\n// multimethod.\n//\n// # Examples\n//\n// Handling events:\n//\n// var handle = multimethod()\n// .dispatch(e => [e.target.tagName.toLowerCase(), e.type])\n// .when([\"h1\", \"click\"], e => \"you clicked on an h1\")\n// .when([\"p\", \"mouseover\"], e => \"you moused over a p\"})\n// .else(e => {\n// let tag = e.target.tagName.toLowerCase();\n// return `you did ${e.type} to an ${tag}`;\n// });\n//\n// $(document).on(\"click mouseover mouseup mousedown\", e => console.log(handle(e)))\n//\n// Self-calls:\n//\n// var demoSelfCall = multimethod()\n// .when(0, function(n) {\n// this(1);\n// })\n// .when(1, function(n) {\n// doSomething(this);\n// })\n// .when(2, _ => console.log(\"tada\"));\n//\n// Using (abusing?) the test function:\n//\n// var fizzBuzz = multimethod()\n// .test((x, divs) => divs.map(d => x % d === 0).every(Boolean))\n// .when([3, 5], x => \"FizzBuzz\")\n// .when([3], x => \"Fizz\")\n// .when([5], x => \"Buzz\")\n// .else(x => x);\n//\n// for(let i = 0; i <= 100; i++) console.log(fizzBuzz(i));\n//\n// Getting carried away with tail recursion:\n//\n// var factorial = multimethod()\n// .when(0, () => 1)\n// .when(1, (_, prod = 1) => prod)\n// .else(function(n, prod = 1) {\n// return this.recur(n-1, n*prod);\n// });\n//\n// var fibonacci = multimethod()\n// .when(0, (_, a = 0) => a)\n// .else(function(n, a = 0, b = 1) {\n// return this.recur(n-1, b, a+b);\n// });\nfunction multimethod(dispatch = (firstArg) => firstArg,\n test = equal,\n defaultMethod = null,\n methods = []) {\n\n var trampolining = false;\n\n function Sentinel (args) { this.args = args; }\n\n function trampoline(f) {\n return (...args) => {\n trampolining = true;\n var ret = f.apply(invoke, args);\n while (ret instanceof Sentinel)\n ret = f.apply(invoke, ret.args);\n trampolining = false;\n return ret;\n };\n }\n\n let invoke = trampoline((...args) => {\n var dispatchVal = dispatch.apply(null, args);\n for (let i = 0; i < methods.length; i++) {\n let [methodVal, methodFn] = methods[i];\n if (test(dispatchVal, methodVal)) {\n return methodFn.apply(invoke, args);\n }\n }\n if (defaultMethod) {\n return defaultMethod.apply(invoke, args);\n } else {\n throw new Error(`No method for dispatch value ${dispatchVal}`);\n }\n });\n\n invoke.recur = (...args) => {\n if (!trampolining) throw new Error(\"recur can only be called inside a method\");\n return new Sentinel(args);\n };\n\n invoke.dispatch = (newDispatch) => {\n dispatch = newDispatch;\n return invoke;\n };\n\n invoke.test = (newTest) => {\n test = newTest;\n return invoke;\n };\n\n invoke.when = (dispatchVal, methodFn) => {\n methods = methods.concat([[dispatchVal, methodFn]]);\n return invoke;\n };\n\n invoke.whenAny = (dispatchVals, methodFn) => {\n return dispatchVals.reduce((self, val) => invoke.when(val, methodFn), invoke);\n };\n\n invoke.else = (newDefaultMethod = null) => {\n defaultMethod = newDefaultMethod;\n return invoke;\n };\n\n invoke.clone = () => {\n return multimethod(dispatch, test, defaultMethod, methods.slice());\n };\n\n return invoke;\n}\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/browser.js\n\nvar browser = (function() {\n\n var isQt = false;\n // For easy handling of Qt quirks using CSS\n if (/\\bQt\\//.test(window.navigator.userAgent)) {\n $(document.documentElement).addClass('qt');\n isQt = true;\n }\n\n // Enable special treatment for Qt 5 quirks on Linux\n if (/\\bQt\\/5/.test(window.navigator.userAgent) &&\n /Linux/.test(window.navigator.userAgent)) {\n $(document.documentElement).addClass('qt5');\n }\n\n // Detect IE information\n var isIE = (navigator.appName === 'Microsoft Internet Explorer');\n\n function getIEVersion() {\n var rv = -1;\n if (isIE) {\n var ua = navigator.userAgent;\n var re = new RegExp(\"MSIE ([0-9]{1,}[\\\\.0-9]{0,})\");\n if (re.exec(ua) !== null)\n rv = parseFloat(RegExp.$1);\n }\n return rv;\n }\n\n return {\n isQt: isQt,\n isIE: isIE,\n IEVersion: getIEVersion()\n };\n\n})();\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/input_rate.js\n\nvar Invoker = function(target, func) {\n this.target = target;\n this.func = func;\n};\n\n(function() {\n this.normalCall =\n this.immediateCall = function() {\n this.func.apply(this.target, arguments);\n };\n}).call(Invoker.prototype);\n\nvar Debouncer = function(target, func, delayMs) {\n this.target = target;\n this.func = func;\n this.delayMs = delayMs;\n\n this.timerId = null;\n this.args = null;\n};\n\n(function() {\n this.normalCall = function() {\n var self = this;\n\n this.$clearTimer();\n this.args = arguments;\n\n this.timerId = setTimeout(function() {\n // IE8 doesn't reliably clear timeout, so this additional\n // check is needed\n if (self.timerId === null)\n return;\n self.$clearTimer();\n self.$invoke();\n }, this.delayMs);\n };\n this.immediateCall = function() {\n this.$clearTimer();\n this.args = arguments;\n this.$invoke();\n };\n this.isPending = function() {\n return this.timerId !== null;\n };\n this.$clearTimer = function() {\n if (this.timerId !== null) {\n clearTimeout(this.timerId);\n this.timerId = null;\n }\n };\n this.$invoke = function() {\n this.func.apply(this.target, this.args);\n this.args = null;\n };\n}).call(Debouncer.prototype);\n\nvar Throttler = function(target, func, delayMs) {\n this.target = target;\n this.func = func;\n this.delayMs = delayMs;\n\n this.timerId = null;\n this.args = null;\n};\n\n(function() {\n this.normalCall = function() {\n var self = this;\n\n this.args = arguments;\n if (this.timerId === null) {\n this.$invoke();\n this.timerId = setTimeout(function() {\n // IE8 doesn't reliably clear timeout, so this additional\n // check is needed\n if (self.timerId === null)\n return;\n self.$clearTimer();\n if (self.args)\n self.normalCall.apply(self, self.args);\n }, this.delayMs);\n }\n };\n this.immediateCall = function() {\n this.$clearTimer();\n this.args = arguments;\n this.$invoke();\n };\n this.isPending = function() {\n return this.timerId !== null;\n };\n this.$clearTimer = function() {\n if (this.timerId !== null) {\n clearTimeout(this.timerId);\n this.timerId = null;\n }\n };\n this.$invoke = function() {\n this.func.apply(this.target, this.args);\n this.args = null;\n };\n}).call(Throttler.prototype);\n\n// Returns a debounced version of the given function.\n// Debouncing means that when the function is invoked,\n// there is a delay of `threshold` milliseconds before\n// it is actually executed, and if the function is\n// invoked again before that threshold has elapsed then\n// the clock starts over.\n//\n// For example, if a function is debounced with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in a single execution\n// of the underlying function, 1000ms after the 17th\n// call.\nfunction debounce(threshold, func) {\n var timerId = null;\n var self, args;\n return function() {\n self = this;\n args = arguments;\n if (timerId !== null) {\n clearTimeout(timerId);\n timerId = null;\n }\n timerId = setTimeout(function() {\n // IE8 doesn't reliably clear timeout, so this additional\n // check is needed\n if (timerId === null)\n return;\n timerId = null;\n func.apply(self, args);\n }, threshold);\n };\n}\n\n// Returns a throttled version of the given function.\n// Throttling means that the underlying function will\n// be executed no more than once every `threshold`\n// milliseconds.\n//\n// For example, if a function is throttled with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in something like 15\n// or 16 executions of the underlying function.\n// eslint-disable-next-line no-unused-vars\nfunction throttle(threshold, func) {\n var executionPending = false;\n var timerId = null;\n var self, args;\n\n function throttled() {\n self = null;\n args = null;\n if (timerId === null) {\n // Haven't seen a call recently. Execute now and\n // start a timer to buffer any subsequent calls.\n timerId = setTimeout(function() {\n // When time expires, clear the timer; and if\n // there has been a call in the meantime, repeat.\n timerId = null;\n if (executionPending) {\n executionPending = false;\n throttled.apply(self, args);\n }\n }, threshold);\n func.apply(this, arguments);\n }\n else {\n // Something executed recently. Don't do anything\n // except set up target/arguments to be called later\n executionPending = true;\n self = this;\n args = arguments;\n }\n }\n return throttled;\n}\n\n\n// Schedules data to be sent to shinyapp at the next setTimeout(0).\n// Batches multiple input calls into one websocket message.\nvar InputBatchSender = function(shinyapp) {\n this.shinyapp = shinyapp;\n this.timerId = null;\n this.pendingData = {};\n this.reentrant = false;\n this.lastChanceCallback = [];\n};\n(function() {\n this.setInput = function(name, value, opts) {\n this.pendingData[name] = value;\n\n if (!this.reentrant) {\n if (opts.priority === \"event\") {\n this.$sendNow();\n } else if (!this.timerId) {\n this.timerId = setTimeout(this.$sendNow.bind(this), 0);\n }\n }\n };\n\n this.$sendNow = function() {\n if (this.reentrant) {\n console.trace(\"Unexpected reentrancy in InputBatchSender!\");\n }\n\n this.reentrant = true;\n try {\n this.timerId = null;\n $.each(this.lastChanceCallback, (i, callback) => {\n callback();\n });\n var currentData = this.pendingData;\n this.pendingData = {};\n this.shinyapp.sendInput(currentData);\n } finally {\n this.reentrant = false;\n }\n };\n}).call(InputBatchSender.prototype);\n\n\nvar InputNoResendDecorator = function(target, initialValues) {\n this.target = target;\n this.lastSentValues = this.reset(initialValues);\n};\n(function() {\n this.setInput = function(name, value, opts) {\n const { name: inputName, inputType: inputType } = splitInputNameType(name);\n const jsonValue = JSON.stringify(value);\n\n if (opts.priority !== \"event\" &&\n this.lastSentValues[inputName] &&\n this.lastSentValues[inputName].jsonValue === jsonValue &&\n this.lastSentValues[inputName].inputType === inputType) {\n return;\n }\n this.lastSentValues[inputName] = { jsonValue, inputType };\n this.target.setInput(name, value, opts);\n };\n this.reset = function(values = {}) {\n // Given an object with flat name-value format:\n // { x: \"abc\", \"y.shiny.number\": 123 }\n // Create an object in cache format and save it:\n // { x: { jsonValue: '\"abc\"', inputType: \"\" },\n // y: { jsonValue: \"123\", inputType: \"shiny.number\" } }\n const cacheValues = {};\n\n for (let inputName in values) {\n if (values.hasOwnProperty(inputName)) {\n let { name, inputType } = splitInputNameType(inputName);\n cacheValues[name] = {\n jsonValue: JSON.stringify(values[inputName]),\n inputType: inputType\n };\n }\n }\n\n this.lastSentValues = cacheValues;\n };\n}).call(InputNoResendDecorator.prototype);\n\n\nvar InputEventDecorator = function(target) {\n this.target = target;\n};\n(function() {\n this.setInput = function(name, value, opts) {\n var evt = jQuery.Event(\"shiny:inputchanged\");\n\n const input = splitInputNameType(name);\n evt.name = input.name;\n evt.inputType = input.inputType;\n evt.value = value;\n evt.binding = opts.binding;\n evt.el = opts.el;\n evt.priority = opts.priority;\n\n $(document).trigger(evt);\n\n if (!evt.isDefaultPrevented()) {\n name = evt.name;\n if (evt.inputType !== '') name += ':' + evt.inputType;\n\n // Most opts aren't passed along to lower levels in the input decorator\n // stack.\n this.target.setInput(name, evt.value, { priority: opts.priority });\n }\n };\n}).call(InputEventDecorator.prototype);\n\n\nvar InputRateDecorator = function(target) {\n this.target = target;\n this.inputRatePolicies = {};\n};\n(function() {\n this.setInput = function(name, value, opts) {\n this.$ensureInit(name);\n\n if (opts.priority !== \"deferred\")\n this.inputRatePolicies[name].immediateCall(name, value, opts);\n else\n this.inputRatePolicies[name].normalCall(name, value, opts);\n };\n this.setRatePolicy = function(name, mode, millis) {\n if (mode === 'direct') {\n this.inputRatePolicies[name] = new Invoker(this, this.$doSetInput);\n }\n else if (mode === 'debounce') {\n this.inputRatePolicies[name] = new Debouncer(this, this.$doSetInput, millis);\n }\n else if (mode === 'throttle') {\n this.inputRatePolicies[name] = new Throttler(this, this.$doSetInput, millis);\n }\n };\n this.$ensureInit = function(name) {\n if (!(name in this.inputRatePolicies))\n this.setRatePolicy(name, 'direct');\n };\n this.$doSetInput = function(name, value, opts) {\n this.target.setInput(name, value, opts);\n };\n}).call(InputRateDecorator.prototype);\n\n\nvar InputDeferDecorator = function(target) {\n this.target = target;\n this.pendingInput = {};\n};\n(function() {\n this.setInput = function(name, value, opts) {\n if (/^\\./.test(name))\n this.target.setInput(name, value, opts);\n else\n this.pendingInput[name] = { value, opts };\n };\n this.submit = function() {\n for (var name in this.pendingInput) {\n if (this.pendingInput.hasOwnProperty(name)) {\n let input = this.pendingInput[name];\n this.target.setInput(name, input.value, input.opts);\n }\n }\n };\n}).call(InputDeferDecorator.prototype);\n\n\nconst InputValidateDecorator = function(target) {\n this.target = target;\n};\n(function() {\n this.setInput = function(name, value, opts) {\n if (!name)\n throw \"Can't set input with empty name.\";\n\n opts = addDefaultInputOpts(opts);\n\n this.target.setInput(name, value, opts);\n };\n}).call(InputValidateDecorator.prototype);\n\n\n// Merge opts with defaults, and return a new object.\nfunction addDefaultInputOpts(opts) {\n\n opts = $.extend({\n priority: \"immediate\",\n binding: null,\n el: null\n }, opts);\n\n if (opts && typeof(opts.priority) !== \"undefined\") {\n switch (opts.priority) {\n case \"deferred\":\n case \"immediate\":\n case \"event\":\n break;\n default:\n throw new Error(\"Unexpected input value mode: '\" + opts.priority + \"'\");\n }\n }\n\n return opts;\n}\n\n\nfunction splitInputNameType(name) {\n const name2 = name.split(':');\n return {\n name: name2[0],\n inputType: name2.length > 1 ? name2[1] : ''\n };\n}\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/shinyapp.js\n\nvar ShinyApp = function() {\n this.$socket = null;\n\n // Cached input values\n this.$inputValues = {};\n\n // Input values at initialization (and reconnect)\n this.$initialInput = {};\n\n // Output bindings\n this.$bindings = {};\n\n // Cached values/errors\n this.$values = {};\n this.$errors = {};\n\n // Conditional bindings (show/hide element based on expression)\n this.$conditionals = {};\n\n this.$pendingMessages = [];\n this.$activeRequests = {};\n this.$nextRequestId = 0;\n\n this.$allowReconnect = false;\n};\n\n(function() {\n\n this.connect = function(initialInput) {\n if (this.$socket)\n throw \"Connect was already called on this application object\";\n\n this.$socket = this.createSocket();\n this.$initialInput = initialInput;\n $.extend(this.$inputValues, initialInput);\n\n this.$updateConditionals();\n };\n\n this.isConnected = function() {\n return !!this.$socket;\n };\n\n var scheduledReconnect = null;\n this.reconnect = function() {\n // This function can be invoked directly even if there's a scheduled\n // reconnect, so be sure to clear any such scheduled reconnects.\n clearTimeout(scheduledReconnect);\n\n if (this.isConnected())\n throw \"Attempted to reconnect, but already connected.\";\n\n this.$socket = this.createSocket();\n this.$initialInput = $.extend({}, this.$inputValues);\n this.$updateConditionals();\n };\n\n this.createSocket = function () {\n var self = this;\n\n var createSocketFunc = exports.createSocket || function() {\n var protocol = 'ws:';\n if (window.location.protocol === 'https:')\n protocol = 'wss:';\n\n var defaultPath = window.location.pathname;\n // some older WebKit browsers return the pathname already decoded;\n // if we find invalid URL characters in the path, encode them\n if (!/^([$#!&-;=?-[\\]_a-z~]|%[0-9a-fA-F]{2})+$/.test(defaultPath)) {\n defaultPath = encodeURI(defaultPath);\n // Bizarrely, QtWebKit requires us to encode these characters *twice*\n if (browser.isQt) {\n defaultPath = encodeURI(defaultPath);\n }\n }\n if (!/\\/$/.test(defaultPath))\n defaultPath += '/';\n defaultPath += 'websocket/';\n\n var ws = new WebSocket(protocol + '//' + window.location.host + defaultPath);\n ws.binaryType = 'arraybuffer';\n\n return ws;\n };\n\n var socket = createSocketFunc();\n var hasOpened = false;\n socket.onopen = function() {\n hasOpened = true;\n\n $(document).trigger({\n type: 'shiny:connected',\n socket: socket\n });\n\n self.onConnected();\n\n socket.send(JSON.stringify({\n method: 'init',\n data: self.$initialInput\n }));\n\n while (self.$pendingMessages.length) {\n var msg = self.$pendingMessages.shift();\n socket.send(msg);\n }\n };\n socket.onmessage = function(e) {\n self.dispatchMessage(e.data);\n };\n // Called when a successfully-opened websocket is closed, or when an\n // attempt to open a connection fails.\n socket.onclose = function() {\n // These things are needed only if we've successfully opened the\n // websocket.\n if (hasOpened) {\n $(document).trigger({\n type: 'shiny:disconnected',\n socket: socket\n });\n\n self.$notifyDisconnected();\n }\n\n self.onDisconnected(); // Must be run before self.$removeSocket()\n self.$removeSocket();\n };\n return socket;\n };\n\n this.sendInput = function(values) {\n var msg = JSON.stringify({\n method: 'update',\n data: values\n });\n\n this.$sendMsg(msg);\n\n $.extend(this.$inputValues, values);\n this.$updateConditionals();\n };\n\n this.$notifyDisconnected = function() {\n if (window.parent) {\n window.parent.postMessage(\"disconnected\", \"*\");\n }\n };\n\n this.$removeSocket = function() {\n this.$socket = null;\n };\n\n this.$scheduleReconnect = function(delay) {\n var self = this;\n scheduledReconnect = setTimeout(function() { self.reconnect(); }, delay);\n };\n\n // How long should we wait before trying the next reconnection?\n // The delay will increase with subsequent attempts.\n // .next: Return the time to wait for next connection, and increment counter.\n // .reset: Reset the attempt counter.\n var reconnectDelay = (function() {\n var attempts = 0;\n // Time to wait before each reconnection attempt. If we go through all of\n // these values, repeated use the last one. Add 500ms to each one so that\n // in the last 0.5s, it shows \"...\"\n var delays = [1500, 1500, 2500, 2500, 5500, 5500, 10500];\n\n return {\n next: function() {\n var i = attempts;\n // Instead of going off the end, use the last one\n if (i >= delays.length) {\n i = delays.length - 1;\n }\n\n attempts++;\n return delays[i];\n },\n reset: function() {\n attempts = 0;\n }\n };\n })();\n\n this.onDisconnected = function() {\n // Add gray-out overlay, if not already present\n var $overlay = $('#shiny-disconnected-overlay');\n if ($overlay.length === 0) {\n $(document.body).append('
');\n }\n\n // To try a reconnect, both the app (this.$allowReconnect) and the\n // server (this.$socket.allowReconnect) must allow reconnections, or\n // session$allowReconnect(\"force\") was called. The \"force\" option should\n // only be used for testing.\n if ((this.$allowReconnect === true && this.$socket.allowReconnect === true) ||\n this.$allowReconnect === \"force\")\n {\n var delay = reconnectDelay.next();\n exports.showReconnectDialog(delay);\n this.$scheduleReconnect(delay);\n }\n };\n\n this.onConnected = function() {\n $('#shiny-disconnected-overlay').remove();\n exports.hideReconnectDialog();\n reconnectDelay.reset();\n };\n\n // NB: Including blobs will cause IE to break!\n // TODO: Make blobs work with Internet Explorer\n //\n // Websocket messages are normally one-way--i.e. the client passes a\n // message to the server but there is no way for the server to provide\n // a response to that specific message. makeRequest provides a way to\n // do asynchronous RPC over websocket. Each request has a method name\n // and arguments, plus optionally one or more binary blobs can be\n // included as well. The request is tagged with a unique number that\n // the server will use to label the corresponding response.\n //\n // @param method A string that tells the server what logic to run.\n // @param args An array of objects that should also be passed to the\n // server in JSON-ified form.\n // @param onSuccess A function that will be called back if the server\n // responds with success. If the server provides a value in the\n // response, the function will be called with it as the only argument.\n // @param onError A function that will be called back if the server\n // responds with error, or if the request fails for any other reason.\n // The parameter to onError will be a string describing the error.\n // @param blobs Optionally, an array of Blob, ArrayBuffer, or string\n // objects that will be made available to the server as part of the\n // request. Strings will be encoded using UTF-8.\n this.makeRequest = function(method, args, onSuccess, onError, blobs) {\n var requestId = this.$nextRequestId;\n while (this.$activeRequests[requestId]) {\n requestId = (requestId + 1) % 1000000000;\n }\n this.$nextRequestId = requestId + 1;\n\n this.$activeRequests[requestId] = {\n onSuccess: onSuccess,\n onError: onError\n };\n\n var msg = JSON.stringify({\n method: method,\n args: args,\n tag: requestId\n });\n\n if (blobs) {\n // We have binary data to transfer; form a different kind of packet.\n // Start with a 4-byte signature, then for each blob, emit 4 bytes for\n // the length followed by the blob. The json payload is UTF-8 encoded\n // and used as the first blob.\n\n var uint32_to_buf = function(val) {\n var buffer = new ArrayBuffer(4);\n var view = new DataView(buffer);\n view.setUint32(0, val, true); // little-endian\n return buffer;\n };\n\n var payload = [];\n payload.push(uint32_to_buf(0x01020202)); // signature\n\n var jsonBuf = makeBlob([msg]);\n payload.push(uint32_to_buf(jsonBuf.size));\n payload.push(jsonBuf);\n\n for (var i = 0; i < blobs.length; i++) {\n payload.push(uint32_to_buf(blobs[i].byteLength || blobs[i].size || 0));\n payload.push(blobs[i]);\n }\n\n msg = makeBlob(payload);\n }\n\n this.$sendMsg(msg);\n };\n\n this.$sendMsg = function(msg) {\n if (!this.$socket.readyState) {\n this.$pendingMessages.push(msg);\n }\n else {\n this.$socket.send(msg);\n }\n };\n\n this.receiveError = function(name, error) {\n if (this.$errors[name] === error)\n return;\n\n this.$errors[name] = error;\n delete this.$values[name];\n\n var binding = this.$bindings[name];\n var evt = jQuery.Event('shiny:error');\n evt.name = name;\n evt.error = error;\n evt.binding = binding;\n $(binding ? binding.el : document).trigger(evt);\n if (!evt.isDefaultPrevented() && binding && binding.onValueError) {\n binding.onValueError(evt.error);\n }\n };\n\n this.receiveOutput = function(name, value) {\n var binding = this.$bindings[name];\n var evt = jQuery.Event('shiny:value');\n evt.name = name;\n evt.value = value;\n evt.binding = binding;\n\n if (this.$values[name] === value) {\n $(binding ? binding.el : document).trigger(evt);\n return undefined;\n }\n\n this.$values[name] = value;\n delete this.$errors[name];\n\n $(binding ? binding.el : document).trigger(evt);\n\n if (!evt.isDefaultPrevented() && binding) {\n binding.onValueChange(evt.value);\n }\n\n return value;\n };\n\n this.bindOutput = function(id, binding) {\n if (!id)\n throw \"Can't bind an element with no ID\";\n if (this.$bindings[id])\n throw \"Duplicate binding for ID \" + id;\n this.$bindings[id] = binding;\n\n if (this.$values[id] !== undefined)\n binding.onValueChange(this.$values[id]);\n else if (this.$errors[id] !== undefined)\n binding.onValueError(this.$errors[id]);\n\n return binding;\n };\n\n this.unbindOutput = function(id, binding) {\n if (this.$bindings[id] === binding) {\n delete this.$bindings[id];\n return true;\n }\n else {\n return false;\n }\n };\n\n\n // Narrows a scopeComponent -- an input or output object -- to one constrained\n // by nsPrefix. Returns a new object with keys removed and renamed as\n // necessary.\n function narrowScopeComponent(scopeComponent, nsPrefix) {\n return Object.keys(scopeComponent)\n .filter(k => k.indexOf(nsPrefix) === 0)\n .map(k => ({[k.substring(nsPrefix.length)]: scopeComponent[k]}))\n .reduce((obj, pair) => $.extend(obj, pair),\n {});\n }\n\n // Narrows a scope -- an object with input and output \"subComponents\" -- to\n // one constrained by the nsPrefix string.\n //\n // If nsPrefix is null or empty, returns scope without modification.\n //\n // Otherwise, returns a new object with keys in subComponents removed and\n // renamed as necessary.\n function narrowScope(scope, nsPrefix) {\n return nsPrefix ? {\n input: narrowScopeComponent(scope.input, nsPrefix),\n output: narrowScopeComponent(scope.output, nsPrefix)\n } : scope;\n }\n\n this.$updateConditionals = function() {\n $(document).trigger({\n type: 'shiny:conditional'\n });\n\n var inputs = {};\n\n // Input keys use \"name:type\" format; we don't want the user to\n // have to know about the type suffix when referring to inputs.\n for (var name in this.$inputValues) {\n if (this.$inputValues.hasOwnProperty(name)) {\n var shortName = name.replace(/:.*/, '');\n inputs[shortName] = this.$inputValues[name];\n }\n }\n\n var scope = {input: inputs, output: this.$values};\n\n var conditionals = $(document).find('[data-display-if]');\n for (var i = 0; i < conditionals.length; i++) {\n var el = $(conditionals[i]);\n var condFunc = el.data('data-display-if-func');\n\n if (!condFunc) {\n var condExpr = el.attr('data-display-if');\n condFunc = scopeExprToFunc(condExpr);\n el.data('data-display-if-func', condFunc);\n }\n\n var nsPrefix = el.attr('data-ns-prefix');\n var nsScope = narrowScope(scope, nsPrefix);\n var show = condFunc(nsScope);\n var showing = el.css(\"display\") !== \"none\";\n if (show !== showing) {\n if (show) {\n el.trigger('show');\n el.show();\n el.trigger('shown');\n }\n else {\n el.trigger('hide');\n el.hide();\n el.trigger('hidden');\n }\n }\n }\n };\n\n // Message handler management functions =================================\n\n // Records insertion order of handlers. Maps number to name. This is so\n // we can dispatch messages to handlers in the order that handlers were\n // added.\n var messageHandlerOrder = [];\n // Keep track of handlers by name. Maps name to handler function.\n var messageHandlers = {};\n\n // Two categories of message handlers: those that are from Shiny, and those\n // that are added by the user. The Shiny ones handle messages in\n // msgObj.values, msgObj.errors, and so on. The user ones handle messages\n // in msgObj.custom.foo and msgObj.custom.bar.\n var customMessageHandlerOrder = [];\n var customMessageHandlers = {};\n\n // Adds Shiny (internal) message handler\n function addMessageHandler(type, handler) {\n if (messageHandlers[type]) {\n throw('handler for message of type \"' + type + '\" already added.');\n }\n if (typeof(handler) !== 'function') {\n throw('handler must be a function.');\n }\n if (handler.length !== 1) {\n throw('handler must be a function that takes one argument.');\n }\n messageHandlerOrder.push(type);\n messageHandlers[type] = handler;\n }\n\n // Adds custom message handler - this one is exposed to the user\n function addCustomMessageHandler(type, handler) {\n // Remove any previously defined handlers so that only the most recent one\n // will be called\n if (customMessageHandlers[type]) {\n var typeIdx = customMessageHandlerOrder.indexOf(type);\n if (typeIdx !== -1) {\n customMessageHandlerOrder.splice(typeIdx, 1);\n delete customMessageHandlers[type];\n }\n }\n if (typeof(handler) !== 'function') {\n throw('handler must be a function.');\n }\n if (handler.length !== 1) {\n throw('handler must be a function that takes one argument.');\n }\n\n customMessageHandlerOrder.push(type);\n customMessageHandlers[type] = handler;\n }\n\n exports.addCustomMessageHandler = addCustomMessageHandler;\n\n this.dispatchMessage = function(data) {\n var msgObj = {};\n if(typeof data === \"string\") {\n msgObj = JSON.parse(data);\n } else { // data is arraybuffer\n var len = new DataView(data,0,1).getUint8(0);\n var typedv = new DataView(data,1,len);\n var typebuf = [];\n for(var i=0; i 0) {\n var el = $obj[0];\n var evt = jQuery.Event('shiny:updateinput');\n evt.message = message[i].message;\n evt.binding = inputBinding;\n $(el).trigger(evt);\n if (!evt.isDefaultPrevented())\n inputBinding.receiveMessage(el, evt.message);\n }\n }\n });\n\n addMessageHandler('javascript', function(message) {\n /*jshint evil: true */\n eval(message);\n });\n\n addMessageHandler('console', function(message) {\n for (var i = 0; i < message.length; i++) {\n if (console.log)\n console.log(message[i]);\n }\n });\n\n addMessageHandler('progress', function(message) {\n if (message.type && message.message) {\n var handler = progressHandlers[message.type];\n if (handler)\n handler.call(this, message.message);\n }\n });\n\n addMessageHandler('notification', function(message) {\n if (message.type === 'show')\n exports.notifications.show(message.message);\n else if (message.type === 'remove')\n exports.notifications.remove(message.message);\n else\n throw('Unkown notification type: ' + message.type);\n });\n\n addMessageHandler('modal', function(message) {\n if (message.type === 'show')\n exports.modal.show(message.message);\n else if (message.type === 'remove')\n exports.modal.remove(); // For 'remove', message content isn't used\n else\n throw('Unkown modal type: ' + message.type);\n });\n\n addMessageHandler('response', function(message) {\n var requestId = message.tag;\n var request = this.$activeRequests[requestId];\n if (request) {\n delete this.$activeRequests[requestId];\n if ('value' in message)\n request.onSuccess(message.value);\n else\n request.onError(message.error);\n }\n });\n\n addMessageHandler('allowReconnect', function(message) {\n if (message === true || message === false || message === \"force\") {\n this.$allowReconnect = message;\n } else {\n throw \"Invalid value for allowReconnect: \" + message;\n }\n });\n\n addMessageHandler('custom', function(message) {\n // For old-style custom messages - should deprecate and migrate to new\n // method\n if (exports.oncustommessage) {\n exports.oncustommessage(message);\n }\n\n // Send messages.foo and messages.bar to appropriate handlers\n this._sendMessagesToHandlers(message, customMessageHandlers,\n customMessageHandlerOrder);\n });\n\n addMessageHandler('config', function(message) {\n this.config = {workerId: message.workerId, sessionId: message.sessionId};\n if (message.user) exports.user = message.user;\n $(document).trigger('shiny:sessioninitialized');\n });\n\n addMessageHandler('busy', function(message) {\n if (message === 'busy') {\n $(document.documentElement).addClass('shiny-busy');\n $(document).trigger('shiny:busy');\n } else if (message === 'idle') {\n $(document.documentElement).removeClass('shiny-busy');\n $(document).trigger('shiny:idle');\n }\n });\n\n addMessageHandler('recalculating', function(message) {\n if (message.hasOwnProperty('name') && message.hasOwnProperty('status')) {\n var binding = this.$bindings[message.name];\n $(binding ? binding.el : null).trigger({\n type: 'shiny:' + message.status\n });\n }\n });\n\n addMessageHandler('reload', function(message) {\n window.location.reload();\n });\n\n addMessageHandler('shiny-insert-ui', function(message) {\n var targets = $(message.selector);\n if (targets.length === 0) {\n // render the HTML and deps to a null target, so\n // the side-effect of rendering the deps, singletons,\n // and still occur\n console.warn('The selector you chose (\"' + message.selector +\n '\") could not be found in the DOM.');\n exports.renderHtml(message.content.html, $([]), message.content.deps);\n } else {\n targets.each(function (i, target) {\n exports.renderContent(target, message.content, message.where);\n return message.multiple;\n });\n }\n });\n\n addMessageHandler('shiny-remove-ui', function(message) {\n var els = $(message.selector);\n els.each(function (i, el) {\n exports.unbindAll(el, true);\n $(el).remove();\n // If `multiple` is false, returning false terminates the function\n // and no other elements are removed; if `multiple` is true,\n // returning true continues removing all remaining elements.\n return message.multiple;\n });\n });\n\n function getTabset(id) {\n var $tabset = $(\"#\" + $escape(id));\n if ($tabset.length === 0)\n throw \"There is no tabsetPanel (or navbarPage or navlistPanel) \" +\n \"with id equal to '\" + id + \"'\";\n return $tabset;\n }\n\n function getTabContent($tabset) {\n var tabsetId = $tabset.attr(\"data-tabsetid\");\n var $tabContent = $(\"div.tab-content[data-tabsetid='\" +\n $escape(tabsetId) + \"']\");\n return $tabContent;\n }\n\n function getTargetTabs($tabset, $tabContent, target) {\n var dataValue = \"[data-value='\" + $escape(target) + \"']\";\n var $aTag = $tabset.find(\"a\" + dataValue);\n var $liTag = $aTag.parent();\n if ($liTag.length === 0) {\n throw \"There is no tabPanel (or navbarMenu) with value\" +\n \" (or menuName) equal to '\" + target + \"'\";\n }\n var $liTags = [];\n var $divTags = [];\n\n if ($aTag.attr(\"data-toggle\") === \"dropdown\") {\n // dropdown\n var $dropdownTabset = $aTag.find(\"+ ul.dropdown-menu\");\n var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n\n var $dropdownLiTags = $dropdownTabset.find(\"a[data-toggle='tab']\").parent(\"li\");\n $dropdownLiTags.each(function (i, el) {\n $liTags.push($(el));\n });\n var selector = \"div.tab-pane[id^='tab-\" + $escape(dropdownId) + \"']\";\n var $dropdownDivs = $tabContent.find(selector);\n $dropdownDivs.each(function (i, el) {\n $divTags.push($(el));\n });\n\n }\n else {\n // regular tab\n $divTags.push($tabContent.find(\"div\" + dataValue));\n }\n return { $liTag: $liTag, $liTags: $liTags, $divTags: $divTags };\n }\n\n addMessageHandler(\"shiny-insert-tab\", function(message) {\n var $parentTabset = getTabset(message.inputId);\n var $tabset = $parentTabset;\n var $tabContent = getTabContent($tabset);\n var tabsetId = $parentTabset.attr(\"data-tabsetid\");\n\n var $divTag = $(message.divTag.html);\n var $liTag = $(message.liTag.html);\n var $aTag = $liTag.find(\"> a\");\n\n // Unless the item is being prepended/appended, the target tab\n // must be provided\n var target = null;\n var $targetLiTag = null;\n if (message.target !== null) {\n target = getTargetTabs($tabset, $tabContent, message.target);\n $targetLiTag = target.$liTag;\n }\n\n // If the item is to be placed inside a navbarMenu (dropdown),\n // change the value of $tabset from the parent's ul tag to the\n // dropdown's ul tag\n var dropdown = getDropdown();\n if (dropdown !== null) {\n if ($aTag.attr(\"data-toggle\") === \"dropdown\")\n throw \"Cannot insert a navbarMenu inside another one\";\n $tabset = dropdown.$tabset;\n tabsetId = dropdown.id;\n }\n\n // For regular tab items, fix the href (of the li > a tag)\n // and the id (of the div tag). This does not apply to plain\n // text items (which function as dividers and headers inside\n // navbarMenus) and whole navbarMenus (since those get\n // constructed from scratch on the R side and therefore\n // there are no ids that need matching)\n if ($aTag.attr(\"data-toggle\") === \"tab\") {\n var index = getTabIndex($tabset, tabsetId);\n var tabId = \"tab-\" + tabsetId + \"-\" + index;\n $liTag.find(\"> a\").attr(\"href\", \"#\" + tabId);\n $divTag.attr(\"id\", tabId);\n }\n\n // actually insert the item into the right place\n if (message.position === \"before\") {\n if ($targetLiTag) {\n $targetLiTag.before($liTag);\n } else {\n $tabset.append($liTag);\n }\n } else if (message.position === \"after\") {\n if ($targetLiTag) {\n $targetLiTag.after($liTag);\n } else {\n $tabset.prepend($liTag);\n }\n }\n\n exports.renderContent($liTag[0], {html: $liTag.html(), deps: message.liTag.deps});\n // jcheng 2017-07-28: This next part might look a little insane versus the\n // more obvious `$tabContent.append($divTag);`, but there's a method to the\n // madness.\n //\n // 1) We need to load the dependencies, and this needs to happen before\n // any scripts in $divTag get a chance to run.\n // 2) The scripts in $divTag need to run only once.\n // 3) The contents of $divTag need to be sent through renderContent so that\n // singletons may be registered and/or obeyed, and so that inputs/outputs\n // may be bound.\n //\n // Add to these constraints these facts:\n //\n // A) The (non-jQuery) DOM manipulation functions don't cause scripts to\n // run, but the jQuery functions all do.\n // B) renderContent must be called on an element that's attached to the\n // document.\n // C) $divTag may be of length > 1 (e.g. navbarMenu). I also noticed text\n // elements consisting of just \"\\n\" being included in the nodeset of\n // $divTag.\n // D) renderContent has a bug where only position \"replace\" (the default)\n // uses the jQuery functions, so other positions like \"beforeend\" will\n // prevent child script tags from running.\n //\n // In theory the same problem exists for $liTag but since that content is\n // much less likely to include arbitrary scripts, we're skipping it.\n //\n // This code could be nicer if we didn't use renderContent, but rather the\n // lower-level functions that renderContent uses. Like if we pre-process\n // the value of message.divTag.html for singletons, we could do that, then\n // render dependencies, then do $tabContent.append($divTag).\n exports.renderContent($tabContent[0], {html: \"\", deps: message.divTag.deps}, \"beforeend\");\n $divTag.get().forEach(el => {\n // Must not use jQuery for appending el to the doc, we don't want any\n // scripts to run (since they will run when renderContent takes a crack).\n $tabContent[0].appendChild(el);\n // If `el` itself is a script tag, this approach won't work (the script\n // won't be run), since we're only sending innerHTML through renderContent\n // and not the whole tag. That's fine in this case because we control the\n // R code that generates this HTML, and we know that the element is not\n // a script tag.\n exports.renderContent(el, el.innerHTML || el.textContent);\n });\n\n if (message.select) {\n $liTag.find(\"a\").tab(\"show\");\n }\n\n /* Barbara -- August 2017\n Note: until now, the number of tabs in a tabsetPanel (or navbarPage\n or navlistPanel) was always fixed. So, an easy way to give an id to\n a tab was simply incrementing a counter. (Just like it was easy to\n give a random 4-digit number to identify the tabsetPanel). Now that\n we're introducing dynamic tabs, we must retrieve these numbers and\n fix the dummy id given to the tab in the R side -- there, we always\n set the tab id (counter dummy) to \"id\" and the tabset id to \"tsid\")\n */\n function getTabIndex($tabset, tabsetId) {\n // The 0 is to ensure this works for empty tabsetPanels as well\n var existingTabIds = [0];\n var leadingHref = \"#tab-\" + tabsetId + \"-\";\n // loop through all existing tabs, find the one with highest id\n // (since this is based on a numeric counter), and increment\n $tabset.find(\"> li\").each(function() {\n var $tab = $(this).find(\"> a[data-toggle='tab']\");\n if ($tab.length > 0) {\n var index = $tab.attr(\"href\").replace(leadingHref, \"\");\n existingTabIds.push(Number(index));\n }\n });\n return Math.max.apply(null, existingTabIds) + 1;\n }\n\n // Finds out if the item will be placed inside a navbarMenu\n // (dropdown). If so, returns the dropdown tabset (ul tag)\n // and the dropdown tabsetid (to be used to fix the tab ID)\n function getDropdown() {\n if (message.menuName !== null) {\n // menuName is only provided if the user wants to prepend\n // or append an item inside a navbarMenu (dropdown)\n var $dropdownATag = $(\"a.dropdown-toggle[data-value='\" +\n $escape(message.menuName) + \"']\");\n if ($dropdownATag.length === 0) {\n throw \"There is no navbarMenu with menuName equal to '\" +\n message.menuName + \"'\";\n }\n var $dropdownTabset = $dropdownATag.find(\"+ ul.dropdown-menu\");\n var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n return { $tabset: $dropdownTabset, id: dropdownId };\n\n } else if (message.target !== null) {\n // if our item is to be placed next to a tab that is inside\n // a navbarMenu, our item will also be inside\n var $uncleTabset = $targetLiTag.parent(\"ul\");\n if ($uncleTabset.hasClass(\"dropdown-menu\")) {\n var uncleId = $uncleTabset.attr(\"data-tabsetid\");\n return { $tabset: $uncleTabset, id: uncleId };\n }\n }\n return null;\n }\n });\n\n // If the given tabset has no active tabs, select the first one\n function ensureTabsetHasVisibleTab($tabset) {\n if ($tabset.find(\"li.active\").not(\".dropdown\").length === 0) {\n // Note: destTabValue may be null. We still want to proceed\n // through the below logic and setValue so that the input\n // value for the tabset gets updated (i.e. input$tabsetId\n // should be null if there are no tabs).\n let destTabValue = getFirstTab($tabset);\n let inputBinding = $tabset.data('shiny-input-binding');\n let evt = jQuery.Event('shiny:updateinput');\n evt.binding = inputBinding;\n $tabset.trigger(evt);\n inputBinding.setValue($tabset[0], destTabValue);\n }\n }\n\n // Given a tabset ul jquery object, return the value of the first tab\n // (in document order) that's visible and able to be selected.\n function getFirstTab($ul) {\n return $ul.find(\"li:visible a[data-toggle='tab']\")\n .first()\n .attr(\"data-value\") || null;\n }\n\n function tabApplyFunction(target, func, liTags = false) {\n $.each(target, function(key, el) {\n if (key === \"$liTag\") {\n // $liTag is always just one jQuery element\n func(el);\n }\n else if (key === \"$divTags\") {\n // $divTags is always an array (even if length = 1)\n $.each(el, function(i, div) { func(div); });\n\n } else if (liTags && key === \"$liTags\") {\n // $liTags is always an array (even if length = 0)\n $.each(el, function(i, div) { func(div); });\n }\n });\n }\n\n addMessageHandler(\"shiny-remove-tab\", function(message) {\n var $tabset = getTabset(message.inputId);\n var $tabContent = getTabContent($tabset);\n var target = getTargetTabs($tabset, $tabContent, message.target);\n\n tabApplyFunction(target, removeEl);\n\n ensureTabsetHasVisibleTab($tabset);\n\n function removeEl($el) {\n exports.unbindAll($el, true);\n $el.remove();\n }\n });\n\n addMessageHandler(\"shiny-change-tab-visibility\", function(message) {\n var $tabset = getTabset(message.inputId);\n var $tabContent = getTabContent($tabset);\n var target = getTargetTabs($tabset, $tabContent, message.target);\n\n tabApplyFunction(target, changeVisibility, true);\n\n ensureTabsetHasVisibleTab($tabset);\n\n function changeVisibility($el) {\n if (message.type === \"show\") $el.css(\"display\", \"\");\n else if (message.type === \"hide\") {\n $el.hide();\n $el.removeClass(\"active\");\n }\n }\n });\n\n addMessageHandler('updateQueryString', function(message) {\n\n // leave the bookmarking code intact\n if (message.mode === \"replace\") {\n window.history.replaceState(null, null, message.queryString);\n return;\n }\n\n var what = null;\n if (message.queryString.charAt(0) === \"#\") what = \"hash\";\n else if (message.queryString.charAt(0) === \"?\") what = \"query\";\n else throw \"The 'query' string must start with either '?' \" +\n \"(to update the query string) or with '#' (to \" +\n \"update the hash).\";\n\n var path = window.location.pathname;\n var oldQS = window.location.search;\n var oldHash = window.location.hash;\n\n /* Barbara -- December 2016\n Note: we could check if the new QS and/or hash are different\n from the old one(s) and, if not, we could choose not to push\n a new state (whether or not we would replace it is moot/\n inconsequential). However, I think that it is better to\n interpret each call to `updateQueryString` as representing\n new state (even if the message.queryString is the same), so\n that check isn't even performed as of right now.\n */\n\n var relURL = path;\n if (what === \"query\") relURL += message.queryString;\n else relURL += oldQS + message.queryString; // leave old QS if it exists\n window.history.pushState(null, null, relURL);\n\n // for the case when message.queryString has both a query string\n // and a hash (`what = \"hash\"` allows us to trigger the\n // hashchange event)\n if (message.queryString.indexOf(\"#\") !== -1) what = \"hash\";\n\n // for the case when there was a hash before, but there isn't\n // any hash now (e.g. for when only the query string is updated)\n if (window.location.hash !== oldHash) what = \"hash\";\n\n // This event needs to be triggered manually because pushState() never\n // causes a hashchange event to be fired,\n if (what === \"hash\") $(document).trigger(\"hashchange\");\n });\n\n addMessageHandler(\"resetBrush\", function(message) {\n exports.resetBrush(message.brushId);\n });\n\n // Progress reporting ====================================================\n\n var progressHandlers = {\n // Progress for a particular object\n binding: function(message) {\n var key = message.id;\n var binding = this.$bindings[key];\n if (binding) {\n $(binding.el).trigger({\n type: 'shiny:outputinvalidated',\n binding: binding,\n name: key\n });\n if (binding.showProgress) binding.showProgress(true);\n }\n },\n\n // Open a page-level progress bar\n open: function(message) {\n if (message.style === \"notification\") {\n // For new-style (starting in Shiny 0.14) progress indicators that use\n // the notification API.\n\n // Progress bar starts hidden; will be made visible if a value is provided\n // during updates.\n exports.notifications.show({\n html:\n `
` +\n '
' +\n '
' +\n 'message ' +\n '' +\n '
' +\n '
',\n id: message.id,\n duration: null\n });\n\n } else if (message.style === \"old\") {\n // For old-style (Shiny <=0.13.2) progress indicators.\n\n // Add progress container (for all progress items) if not already present\n var $container = $('.shiny-progress-container');\n if ($container.length === 0) {\n $container = $('
');\n $('body').append($container);\n }\n\n // Add div for just this progress ID\n var depth = $('.shiny-progress.open').length;\n // The 'bar' class is needed for backward compatibility with Bootstrap 2.\n var $progress = $('
' +\n '
' +\n '
' +\n 'message' +\n '' +\n '
' +\n '
'\n );\n\n $progress.attr('id', message.id);\n $container.append($progress);\n\n // Stack bars\n var $progressBar = $progress.find('.progress');\n $progressBar.css('top', depth * $progressBar.height() + 'px');\n\n // Stack text objects\n var $progressText = $progress.find('.progress-text');\n $progressText.css('top', 3 * $progressBar.height() +\n depth * $progressText.outerHeight() + 'px');\n\n $progress.hide();\n }\n\n },\n\n // Update page-level progress bar\n update: function(message) {\n if (message.style === \"notification\") {\n // For new-style (starting in Shiny 0.14) progress indicators that use\n // the notification API.\n var $progress = $('#shiny-progress-' + message.id);\n\n if ($progress.length === 0)\n return;\n\n if (typeof(message.message) !== 'undefined') {\n $progress.find('.progress-message').text(message.message);\n }\n if (typeof(message.detail) !== 'undefined') {\n $progress.find('.progress-detail').text(message.detail);\n }\n if (typeof(message.value) !== 'undefined' && message.value !== null) {\n $progress.find('.progress').show();\n $progress.find('.progress-bar').width((message.value*100) + '%');\n }\n\n } else if (message.style === \"old\") {\n // For old-style (Shiny <=0.13.2) progress indicators.\n\n var $progress = $('#' + message.id + '.shiny-progress');\n if (typeof(message.message) !== 'undefined') {\n $progress.find('.progress-message').text(message.message);\n }\n if (typeof(message.detail) !== 'undefined') {\n $progress.find('.progress-detail').text(message.detail);\n }\n if (typeof(message.value) !== 'undefined' && message.value !== null) {\n $progress.find('.progress').show();\n $progress.find('.bar').width((message.value*100) + '%');\n }\n\n $progress.fadeIn();\n }\n\n },\n\n // Close page-level progress bar\n close: function(message) {\n if (message.style === \"notification\") {\n exports.notifications.remove(message.id);\n\n } else if (message.style === \"old\") {\n var $progress = $('#' + message.id + '.shiny-progress');\n $progress.removeClass('open');\n\n $progress.fadeOut({\n complete: function() {\n $progress.remove();\n\n // If this was the last shiny-progress, remove container\n if ($('.shiny-progress').length === 0)\n $('.shiny-progress-container').remove();\n }\n });\n }\n }\n };\n\n exports.progressHandlers = progressHandlers;\n\n // Returns a URL which can be queried to get values from inside the server\n // function. This is enabled with `options(shiny.testmode=TRUE)`.\n this.getTestSnapshotBaseUrl = function({ fullUrl = true } = {})\n {\n const loc = window.location;\n let url = \"\";\n\n if (fullUrl) {\n // Strip off everything after last slash in path, like dirname() in R\n url = loc.origin + loc.pathname.replace(/\\/[^/]*$/, \"\");\n }\n url += \"/session/\" +\n encodeURIComponent(this.config.sessionId) +\n \"/dataobj/shinytest?w=\" +\n encodeURIComponent(this.config.workerId) +\n \"&nonce=\" + randomId();\n\n return url;\n };\n\n}).call(ShinyApp.prototype);\n\n\n\nexports.showReconnectDialog = (function() {\n var reconnectTime = null;\n\n function updateTime() {\n var $time = $(\"#shiny-reconnect-time\");\n // If the time has been removed, exit and don't reschedule this function.\n if ($time.length === 0) return;\n\n var seconds = Math.floor((reconnectTime - new Date().getTime()) / 1000);\n if (seconds > 0) {\n $time.text(\" in \" + seconds + \"s\");\n } else {\n $time.text(\"...\");\n }\n\n // Reschedule this function after 1 second\n setTimeout(updateTime, 1000);\n }\n\n\n return function(delay) {\n reconnectTime = new Date().getTime() + delay;\n\n // If there's already a reconnect dialog, don't add another\n if ($('#shiny-reconnect-text').length > 0)\n return;\n\n var html = 'Attempting to reconnect' +\n '';\n var action = 'Try now';\n\n exports.notifications.show({\n id: \"reconnect\",\n html: html,\n action: action,\n duration: null,\n closeButton: false,\n type: 'warning'\n });\n\n updateTime();\n };\n})();\n\nexports.hideReconnectDialog = function() {\n exports.notifications.remove(\"reconnect\");\n};\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/notifications.js\n\nexports.notifications = (function() {\n\n // Milliseconds to fade in or out\n const fadeDuration = 250;\n\n function show({ html='', action='', deps=[], duration=5000,\n id=null, closeButton=true, type=null } = {})\n {\n if (!id)\n id = randomId();\n\n // Create panel if necessary\n _createPanel();\n\n // Get existing DOM element for this ID, or create if needed.\n let $notification = _get(id);\n if ($notification.length === 0)\n $notification = _create(id);\n\n // Render html and dependencies\n const newHtml = `
${html}
` +\n `
${action}
`;\n const $content = $notification.find('.shiny-notification-content');\n exports.renderContent($content, { html: newHtml, deps: deps });\n\n // Remove any existing classes of the form 'shiny-notification-xxxx'.\n // The xxxx would be strings like 'warning'.\n const classes = $notification.attr('class')\n .split(/\\s+/)\n .filter(cls => cls.match(/^shiny-notification-/))\n .join(' ');\n $notification.removeClass(classes);\n\n // Add class. 'default' means no additional CSS class.\n if (type && type !== 'default')\n $notification.addClass('shiny-notification-' + type);\n\n\n // Make sure that the presence/absence of close button matches with value\n // of `closeButton`.\n const $close = $notification.find('.shiny-notification-close');\n if (closeButton && $close.length === 0) {\n $notification.append('
×
');\n } else if (!closeButton && $close.length !== 0) {\n $close.remove();\n }\n\n // If duration was provided, schedule removal. If not, clear existing\n // removal callback (this happens if a message was first added with\n // a duration, and then updated with no duration).\n if (duration)\n _addRemovalCallback(id, duration);\n else\n _clearRemovalCallback(id);\n\n return id;\n }\n\n function remove(id) {\n _get(id).fadeOut(fadeDuration, function() {\n\n exports.unbindAll(this);\n $(this).remove();\n\n // If no more notifications, remove the panel from the DOM.\n if (_ids().length === 0) {\n _getPanel().remove();\n }\n });\n }\n\n // Returns an individual notification DOM object (wrapped in jQuery).\n function _get(id) {\n if (!id)\n return null;\n return _getPanel().find('#shiny-notification-' + $escape(id));\n }\n\n // Return array of all notification IDs\n function _ids() {\n return _getPanel()\n .find('.shiny-notification')\n .map(function() { return this.id.replace(/shiny-notification-/, ''); })\n .get();\n }\n\n // Returns the notification panel DOM object (wrapped in jQuery).\n function _getPanel() {\n return $('#shiny-notification-panel');\n }\n\n // Create notifications panel and return the jQuery object. If the DOM\n // element already exists, just return it.\n function _createPanel() {\n let $panel = _getPanel();\n\n if ($panel.length > 0)\n return $panel;\n\n $('body').append('
');\n\n return $panel;\n }\n\n // Create a notification DOM element and return the jQuery object. If the\n // DOM element already exists for the ID, just return it without creating.\n function _create(id) {\n let $notification = _get(id);\n\n if ($notification.length === 0) {\n $notification = $(\n `
` +\n '
×
' +\n '
' +\n '
'\n );\n\n $notification.find('.shiny-notification-close').on('click', e => {\n e.preventDefault();\n e.stopPropagation();\n remove(id);\n });\n\n _getPanel().append($notification);\n }\n\n return $notification;\n }\n\n // Add a callback to remove a notification after a delay in ms.\n function _addRemovalCallback(id, delay) {\n // If there's an existing removalCallback, clear it before adding the new\n // one.\n _clearRemovalCallback(id);\n\n // Attach new removal callback\n const removalCallback = setTimeout(function() { remove(id); }, delay);\n _get(id).data('removalCallback', removalCallback);\n }\n\n // Clear a removal callback from a notification, if present.\n function _clearRemovalCallback(id) {\n const $notification = _get(id);\n const oldRemovalCallback = $notification.data('removalCallback');\n if (oldRemovalCallback) {\n clearTimeout(oldRemovalCallback);\n }\n }\n\n return {\n show,\n remove\n };\n})();\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/modal.js\n\nexports.modal = {\n\n // Show a modal dialog. This is meant to handle two types of cases: one is\n // that the content is a Bootstrap modal dialog, and the other is that the\n // content is non-Bootstrap. Bootstrap modals require some special handling,\n // which is coded in here.\n show: function({ html='', deps=[] } = {}) {\n\n // If there was an existing Bootstrap modal, then there will be a modal-\n // backdrop div that was added outside of the modal wrapper, and it must be\n // removed; otherwise there can be multiple of these divs.\n $('.modal-backdrop').remove();\n\n // Get existing wrapper DOM element, or create if needed.\n let $modal = $('#shiny-modal-wrapper');\n if ($modal.length === 0) {\n $modal = $('
');\n $('body').append($modal);\n\n // If the wrapper's content is a Bootstrap modal, then when the inner\n // modal is hidden, remove the entire thing, including wrapper.\n $modal.on('hidden.bs.modal', function(e) {\n if (e.target === $(\"#shiny-modal\")[0]) {\n exports.unbindAll($modal);\n $modal.remove();\n }\n });\n }\n\n $modal.on('keydown.shinymodal', function(e) {\n // If we're listening for Esc, don't let the event propagate. See\n // https://github.com/rstudio/shiny/issues/1453. The value of\n // data(\"keyboard\") needs to be checked inside the handler, because at\n // the time that $modal.on() is called, the $(\"#shiny-modal\") div doesn't\n // yet exist.\n if ($(\"#shiny-modal\").data(\"keyboard\") === false)\n return;\n\n if (e.keyCode === 27) {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n\n // Set/replace contents of wrapper with html.\n exports.renderContent($modal, { html: html, deps: deps });\n },\n\n remove: function() {\n const $modal = $('#shiny-modal-wrapper');\n\n $modal.off('keydown.shinymodal');\n\n // Look for a Bootstrap modal and if present, trigger hide event. This will\n // trigger the hidden.bs.modal callback that we set in show(), which unbinds\n // and removes the element.\n if ($modal.find('.modal').length > 0) {\n $modal.find('.modal').modal('hide');\n\n } else {\n // If not a Bootstrap modal dialog, simply unbind and remove it.\n exports.unbindAll($modal);\n $modal.remove();\n }\n }\n};\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/file_processor.js\n\n// Generic driver class for doing chunk-wise asynchronous processing of a\n// FileList object. Subclass/clone it and override the `on*` functions to\n// make it do something useful.\nvar FileProcessor = function(files) {\n this.files = files;\n this.fileIndex = -1;\n // Currently need to use small chunk size because R-Websockets can't\n // handle continuation frames\n this.aborted = false;\n this.completed = false;\n\n // TODO: Register error/abort callbacks\n\n this.$run();\n};\n(function() {\n // Begin callbacks. Subclassers/cloners may override any or all of these.\n this.onBegin = function(files, cont) {\n setTimeout(cont, 0);\n };\n this.onFile = function(file, cont) {\n setTimeout(cont, 0);\n };\n this.onComplete = function() {\n };\n this.onAbort = function() {\n };\n // End callbacks\n\n // Aborts processing, unless it's already completed\n this.abort = function() {\n if (this.completed || this.aborted)\n return;\n\n this.aborted = true;\n this.onAbort();\n };\n\n // Returns a bound function that will call this.$run one time.\n this.$getRun = function() {\n var self = this;\n var called = false;\n return function() {\n if (called)\n return;\n called = true;\n self.$run();\n };\n };\n\n // This function will be called multiple times to advance the process.\n // It relies on the state of the object's fields to know what to do next.\n this.$run = function() {\n\n if (this.aborted || this.completed)\n return;\n\n if (this.fileIndex < 0) {\n // Haven't started yet--begin\n this.fileIndex = 0;\n this.onBegin(this.files, this.$getRun());\n return;\n }\n\n if (this.fileIndex === this.files.length) {\n // Just ended\n this.completed = true;\n this.onComplete();\n return;\n }\n\n // If we got here, then we have a file to process, or we are\n // in the middle of processing a file, or have just finished\n // processing a file.\n\n var file = this.files[this.fileIndex++];\n this.onFile(file, this.$getRun());\n };\n}).call(FileProcessor.prototype);\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/binding_registry.js\n\nvar BindingRegistry = function() {\n this.bindings = [];\n this.bindingNames = {};\n};\n(function() {\n this.register = function(binding, bindingName, priority) {\n var bindingObj = {binding: binding, priority: priority || 0};\n this.bindings.unshift(bindingObj);\n if (bindingName) {\n this.bindingNames[bindingName] = bindingObj;\n binding.name = bindingName;\n }\n };\n this.setPriority = function(bindingName, priority) {\n var bindingObj = this.bindingNames[bindingName];\n if (!bindingObj)\n throw \"Tried to set priority on unknown binding \" + bindingName;\n bindingObj.priority = priority || 0;\n };\n this.getPriority = function(bindingName) {\n var bindingObj = this.bindingNames[bindingName];\n if (!bindingObj)\n return false;\n return bindingObj.priority;\n };\n this.getBindings = function() {\n // Sort the bindings. The ones with higher priority are consulted\n // first; ties are broken by most-recently-registered.\n return mergeSort(this.bindings, function(a, b) {\n return b.priority - a.priority;\n });\n };\n}).call(BindingRegistry.prototype);\n\n\nvar inputBindings = exports.inputBindings = new BindingRegistry();\nvar outputBindings = exports.outputBindings = new BindingRegistry();\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding.js\n\nvar OutputBinding = exports.OutputBinding = function() {};\n(function() {\n // Returns a jQuery object or element array that contains the\n // descendants of scope that match this binding\n this.find = function(scope) { throw \"Not implemented\"; };\n\n this.getId = function(el) {\n return el['data-input-id'] || el.id;\n };\n\n this.onValueChange = function(el, data) {\n this.clearError(el);\n this.renderValue(el, data);\n };\n this.onValueError = function(el, err) {\n this.renderError(el, err);\n };\n this.renderError = function(el, err) {\n this.clearError(el);\n if (err.message === '') {\n // not really error, but we just need to wait (e.g. action buttons)\n $(el).empty();\n return;\n }\n var errClass = 'shiny-output-error';\n if (err.type !== null) {\n // use the classes of the error condition as CSS class names\n errClass = errClass + ' ' + $.map(asArray(err.type), function(type) {\n return errClass + '-' + type;\n }).join(' ');\n }\n $(el).addClass(errClass).text(err.message);\n };\n this.clearError = function(el) {\n $(el).attr('class', function(i, c) {\n return c.replace(/(^|\\s)shiny-output-error\\S*/g, '');\n });\n };\n this.showProgress = function(el, show) {\n var RECALC_CLASS = 'recalculating';\n if (show)\n $(el).addClass(RECALC_CLASS);\n else\n $(el).removeClass(RECALC_CLASS);\n };\n}).call(OutputBinding.prototype);\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding_text.js\n\nvar textOutputBinding = new OutputBinding();\n$.extend(textOutputBinding, {\n find: function(scope) {\n return $(scope).find('.shiny-text-output');\n },\n renderValue: function(el, data) {\n $(el).text(data);\n }\n});\noutputBindings.register(textOutputBinding, 'shiny.textOutput');\n\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding_image.js\n\nvar imageOutputBinding = new OutputBinding();\n$.extend(imageOutputBinding, {\n find: function(scope) {\n return $(scope).find('.shiny-image-output, .shiny-plot-output');\n },\n renderValue: function(el, data) {\n // The overall strategy:\n // * Clear out existing image and event handlers.\n // * Create new image.\n // * Create various event handlers.\n // * Bind those event handlers to events.\n // * Insert the new image.\n\n var outputId = this.getId(el);\n\n var $el = $(el);\n var img;\n\n // Remove event handlers that were added in previous renderValue()\n $el.off('.image_output');\n\n // Get existing img element if present.\n var $img = $el.find('img');\n\n if ($img.length === 0) {\n // If a img element is not already present, that means this is either\n // the first time renderValue() has been called, or this is after an\n // error.\n img = document.createElement('img');\n $el.append(img);\n $img = $(img);\n } else {\n // Trigger custom 'reset' event for any existing images in the div\n img = $img[0];\n $img.trigger('reset');\n }\n\n if (!data) {\n $el.empty();\n return;\n }\n\n // If value is undefined, return alternate. Sort of like ||, except it won't\n // return alternate for other falsy values (0, false, null).\n function OR(value, alternate) {\n if (value === undefined) return alternate;\n return value;\n }\n\n var opts = {\n clickId: $el.data('click-id'),\n clickClip: OR(strToBool($el.data('click-clip')), true),\n\n dblclickId: $el.data('dblclick-id'),\n dblclickClip: OR(strToBool($el.data('dblclick-clip')), true),\n dblclickDelay: OR($el.data('dblclick-delay'), 400),\n\n hoverId: $el.data('hover-id'),\n hoverClip: OR(strToBool($el.data('hover-clip')), true),\n hoverDelayType: OR($el.data('hover-delay-type'), 'debounce'),\n hoverDelay: OR($el.data('hover-delay'), 300),\n hoverNullOutside: OR(strToBool($el.data('hover-null-outside')), false),\n\n brushId: $el.data('brush-id'),\n brushClip: OR(strToBool($el.data('brush-clip')), true),\n brushDelayType: OR($el.data('brush-delay-type'), 'debounce'),\n brushDelay: OR($el.data('brush-delay'), 300),\n brushFill: OR($el.data('brush-fill'), '#666'),\n brushStroke: OR($el.data('brush-stroke'), '#000'),\n brushOpacity: OR($el.data('brush-opacity'), 0.3),\n brushDirection: OR($el.data('brush-direction'), 'xy'),\n brushResetOnNew: OR(strToBool($el.data('brush-reset-on-new')), false),\n\n coordmap: data.coordmap\n };\n\n // Copy items from data to img. Don't set the coordmap as an attribute.\n $.each(data, function(key, value) {\n if (value === null || key === 'coordmap') {\n return;\n }\n img.setAttribute(key, value);\n });\n\n // Unset any attributes in the current img that were not provided in the\n // new data.\n for (var i=0; i max)\n newval = max;\n else if (newval < min)\n newval = min;\n }\n return newval;\n }\n\n // Create scale and inverse-scale functions for a single direction (x or y).\n function scaler1D(domainMin, domainMax, rangeMin, rangeMax, logbase) {\n return {\n scale: function(val, clip) {\n if (logbase)\n val = Math.log(val) / Math.log(logbase);\n return mapLinear(val, domainMin, domainMax, rangeMin, rangeMax, clip);\n },\n\n scaleInv: function(val, clip) {\n var res = mapLinear(val, rangeMin, rangeMax, domainMin, domainMax, clip);\n if (logbase)\n res = Math.pow(logbase, res);\n return res;\n }\n };\n }\n\n // Modify panel, adding scale and inverse-scale functions that take objects\n // like {x:1, y:3}, and also add clip function.\n function addScaleFuns(panel) {\n var d = panel.domain;\n var r = panel.range;\n var xlog = (panel.log && panel.log.x) ? panel.log.x : null;\n var ylog = (panel.log && panel.log.y) ? panel.log.y : null;\n var xscaler = scaler1D(d.left, d.right, r.left, r.right, xlog);\n var yscaler = scaler1D(d.bottom, d.top, r.bottom, r.top, ylog);\n\n panel.scale = function(val, clip) {\n return {\n x: xscaler.scale(val.x, clip),\n y: yscaler.scale(val.y, clip)\n };\n };\n\n panel.scaleInv = function(val, clip) {\n return {\n x: xscaler.scaleInv(val.x, clip),\n y: yscaler.scaleInv(val.y, clip)\n };\n };\n\n // Given a scaled offset (in pixels), clip it to the nearest panel region.\n panel.clip = function(offset) {\n var newOffset = {\n x: offset.x,\n y: offset.y\n };\n\n var bounds = panel.range;\n\n if (offset.x > bounds.right) newOffset.x = bounds.right;\n else if (offset.x < bounds.left) newOffset.x = bounds.left;\n\n if (offset.y > bounds.bottom) newOffset.y = bounds.bottom;\n else if (offset.y < bounds.top) newOffset.y = bounds.top;\n\n return newOffset;\n };\n }\n\n // Add the functions to each panel object.\n for (var i=0; i max) {\n shiftAmount = max - maxval;\n } else if (minval < min) {\n shiftAmount = min - minval;\n }\n\n var newvals = [];\n for (var i=0; i= b.left - expand &&\n y <= b.bottom + expand &&\n y >= b.top - expand)\n {\n matches.push(coordmap[i]);\n\n // Find distance from edges for x and y\n var xdist = 0;\n var ydist = 0;\n if (x > b.right && x <= b.right + expand) {\n xdist = x - b.right;\n } else if (x < b.left && x >= b.left - expand) {\n xdist = x - b.left;\n }\n if (y > b.bottom && y <= b.bottom + expand) {\n ydist = y - b.bottom;\n } else if (y < b.top && y >= b.top - expand) {\n ydist = y - b.top;\n }\n\n // Cartesian distance\n dists.push(Math.sqrt( Math.pow(xdist, 2) + Math.pow(ydist, 2) ));\n }\n }\n\n if (matches.length) {\n // Find shortest distance\n var min_dist = Math.min.apply(null, dists);\n for (i=0; i 2 ||\n Math.abs(pending_e.offsetY - e.offsetY) > 2) {\n\n triggerPendingMousedown2();\n scheduleMousedown2(e);\n\n } else {\n // The second click was close to the first one. If it happened\n // within specified delay, trigger our custom 'dblclick2' event.\n pending_e = null;\n triggerEvent('dblclick2', e);\n }\n }\n }\n\n // IE8 needs a special hack because when you do a double-click it doesn't\n // trigger the click event twice - it directly triggers dblclick.\n function dblclickIE8(e) {\n e.which = 1; // In IE8, e.which is 0 instead of 1. ???\n triggerEvent('dblclick2', e);\n }\n\n return {\n mousedown: mousedown,\n dblclickIE8: dblclickIE8\n };\n};\n\n\n// ----------------------------------------------------------\n// Handler creators for click, hover, brush.\n// Each of these returns an object with a few public members. These public\n// members are callbacks that are meant to be bound to events on $el with\n// the same name (like 'mousedown').\n// ----------------------------------------------------------\n\nimageutils.createClickHandler = function(inputId, clip, coordmap) {\n var clickInfoSender = coordmap.mouseCoordinateSender(inputId, clip);\n\n return {\n mousedown: function(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n clickInfoSender(e);\n },\n onResetImg: function() { clickInfoSender(null); }\n };\n};\n\n\nimageutils.createHoverHandler = function(inputId, delay, delayType, clip,\n nullOutside, coordmap)\n{\n var sendHoverInfo = coordmap.mouseCoordinateSender(inputId, clip, nullOutside);\n\n var hoverInfoSender;\n if (delayType === 'throttle')\n hoverInfoSender = new Throttler(null, sendHoverInfo, delay);\n else\n hoverInfoSender = new Debouncer(null, sendHoverInfo, delay);\n\n // What to do when mouse exits the image\n var mouseout;\n if (nullOutside)\n mouseout = function() { hoverInfoSender.normalCall(null); };\n else\n mouseout = function() {};\n\n return {\n mousemove: function(e) { hoverInfoSender.normalCall(e); },\n mouseout: mouseout,\n onResetImg: function() { hoverInfoSender.immediateCall(null); }\n };\n};\n\n\n// Returns a brush handler object. This has three public functions:\n// mousedown, mousemove, and onResetImg.\nimageutils.createBrushHandler = function(inputId, $el, opts, coordmap, outputId) {\n // Parameter: expand the area in which a brush can be started, by this\n // many pixels in all directions. (This should probably be a brush option)\n var expandPixels = 20;\n\n // Represents the state of the brush\n var brush = imageutils.createBrush($el, opts, coordmap, expandPixels);\n\n // Brush IDs can span multiple image/plot outputs. When an output is brushed,\n // if a brush with the same ID is active on a different image/plot, it must\n // be dismissed (but without sending any data to the server). We implement\n // this by sending the shiny-internal:brushed event to all plots, and letting\n // each plot decide for itself what to do.\n //\n // The decision to have the event sent to each plot (as opposed to a single\n // event triggered on, say, the document) was made to make cleanup easier;\n // listening on an event on the document would prevent garbage collection\n // of plot outputs that are removed from the document.\n $el.on(\"shiny-internal:brushed.image_output\", function(e, coords) {\n // If the new brush shares our ID but not our output element ID, we\n // need to clear our brush (if any).\n if (coords.brushId === inputId && coords.outputId !== outputId) {\n $el.data(\"mostRecentBrush\", false);\n brush.reset();\n }\n });\n\n // Set cursor to one of 7 styles. We need to set the cursor on the whole\n // el instead of the brush div, because the brush div has\n // 'pointer-events:none' so that it won't intercept pointer events.\n // If `style` is null, don't add a cursor style.\n function setCursorStyle(style) {\n $el.removeClass('crosshair grabbable grabbing ns-resize ew-resize nesw-resize nwse-resize');\n\n if (style) $el.addClass(style);\n }\n\n function sendBrushInfo() {\n var coords = brush.boundsData();\n\n // We're in a new or reset state\n if (isNaN(coords.xmin)) {\n exports.setInputValue(inputId, null);\n // Must tell other brushes to clear.\n imageOutputBinding.find(document).trigger(\"shiny-internal:brushed\", {\n brushId: inputId, outputId: null\n });\n return;\n }\n\n var panel = brush.getPanel();\n\n // Add the panel (facet) variables, if present\n $.extend(coords, panel.panel_vars);\n\n // Add variable name mappings\n coords.mapping = panel.mapping;\n\n // Add scaling information\n coords.domain = panel.domain;\n coords.range = panel.range;\n coords.log = panel.log;\n\n coords.direction = opts.brushDirection;\n\n coords.brushId = inputId;\n coords.outputId = outputId;\n\n // Send data to server\n exports.setInputValue(inputId, coords);\n\n $el.data(\"mostRecentBrush\", true);\n imageOutputBinding.find(document).trigger(\"shiny-internal:brushed\", coords);\n }\n\n var brushInfoSender;\n if (opts.brushDelayType === 'throttle') {\n brushInfoSender = new Throttler(null, sendBrushInfo, opts.brushDelay);\n } else {\n brushInfoSender = new Debouncer(null, sendBrushInfo, opts.brushDelay);\n }\n\n function mousedown(e) {\n // This can happen when mousedown inside the graphic, then mouseup\n // outside, then mousedown inside. Just ignore the second\n // mousedown.\n if (brush.isBrushing() || brush.isDragging() || brush.isResizing()) return;\n\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n var offset = coordmap.mouseOffset(e);\n\n // Ignore mousedown events outside of plotting region, expanded by\n // a number of pixels specified in expandPixels.\n if (opts.brushClip && !coordmap.isInPanel(offset, expandPixels))\n return;\n\n brush.up({ x: NaN, y: NaN });\n brush.down(offset);\n\n\n if (brush.isInResizeArea(offset)) {\n brush.startResizing(offset);\n\n // Attach the move and up handlers to the window so that they respond\n // even when the mouse is moved outside of the image.\n $(document)\n .on('mousemove.image_brush', mousemoveResizing)\n .on('mouseup.image_brush', mouseupResizing);\n\n } else if (brush.isInsideBrush(offset)) {\n brush.startDragging(offset);\n setCursorStyle('grabbing');\n\n // Attach the move and up handlers to the window so that they respond\n // even when the mouse is moved outside of the image.\n $(document)\n .on('mousemove.image_brush', mousemoveDragging)\n .on('mouseup.image_brush', mouseupDragging);\n\n } else {\n var panel = coordmap.getPanel(offset, expandPixels);\n brush.startBrushing(panel.clip(offset));\n\n // Attach the move and up handlers to the window so that they respond\n // even when the mouse is moved outside of the image.\n $(document)\n .on('mousemove.image_brush', mousemoveBrushing)\n .on('mouseup.image_brush', mouseupBrushing);\n }\n }\n\n // This sets the cursor style when it's in the el\n function mousemove(e) {\n var offset = coordmap.mouseOffset(e);\n\n if (!(brush.isBrushing() || brush.isDragging() || brush.isResizing())) {\n // Set the cursor depending on where it is\n if (brush.isInResizeArea(offset)) {\n var r = brush.whichResizeSides(offset);\n\n if ((r.left && r.top) || (r.right && r.bottom)) {\n setCursorStyle('nwse-resize');\n } else if ((r.left && r.bottom) || (r.right && r.top)) {\n setCursorStyle('nesw-resize');\n } else if (r.left || r.right) {\n setCursorStyle('ew-resize');\n } else if (r.top || r.bottom) {\n setCursorStyle('ns-resize');\n }\n } else if (brush.isInsideBrush(offset)) {\n setCursorStyle('grabbable');\n } else if (coordmap.isInPanel(offset, expandPixels)) {\n setCursorStyle('crosshair');\n } else {\n setCursorStyle(null);\n }\n }\n }\n\n // mousemove handlers while brushing or dragging\n function mousemoveBrushing(e) {\n brush.brushTo(coordmap.mouseOffset(e));\n brushInfoSender.normalCall();\n }\n\n function mousemoveDragging(e) {\n brush.dragTo(coordmap.mouseOffset(e));\n brushInfoSender.normalCall();\n }\n\n function mousemoveResizing(e) {\n brush.resizeTo(coordmap.mouseOffset(e));\n brushInfoSender.normalCall();\n }\n\n // mouseup handlers while brushing or dragging\n function mouseupBrushing(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n $(document)\n .off('mousemove.image_brush')\n .off('mouseup.image_brush');\n\n brush.up(coordmap.mouseOffset(e));\n\n brush.stopBrushing();\n setCursorStyle('crosshair');\n\n // If the brush didn't go anywhere, hide the brush, clear value,\n // and return.\n if (brush.down().x === brush.up().x && brush.down().y === brush.up().y) {\n brush.reset();\n brushInfoSender.immediateCall();\n return;\n }\n\n // Send info immediately on mouseup, but only if needed. If we don't\n // do the pending check, we might send the same data twice (with\n // with difference nonce).\n if (brushInfoSender.isPending())\n brushInfoSender.immediateCall();\n }\n\n function mouseupDragging(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n $(document)\n .off('mousemove.image_brush')\n .off('mouseup.image_brush');\n\n brush.up(coordmap.mouseOffset(e));\n\n brush.stopDragging();\n setCursorStyle('grabbable');\n\n if (brushInfoSender.isPending())\n brushInfoSender.immediateCall();\n }\n\n function mouseupResizing(e) {\n // Listen for left mouse button only\n if (e.which !== 1) return;\n\n $(document)\n .off('mousemove.image_brush')\n .off('mouseup.image_brush');\n\n brush.up(coordmap.mouseOffset(e));\n brush.stopResizing();\n\n if (brushInfoSender.isPending())\n brushInfoSender.immediateCall();\n\n }\n\n // Brush maintenance: When an image is re-rendered, the brush must either\n // be removed (if brushResetOnNew) or imported (if !brushResetOnNew). The\n // \"mostRecentBrush\" bit is to ensure that when multiple outputs share the\n // same brush ID, inactive brushes don't send null values up to the server.\n\n // This should be called when the img (not the el) is reset\n function onResetImg() {\n if (opts.brushResetOnNew) {\n if ($el.data(\"mostRecentBrush\")) {\n brush.reset();\n brushInfoSender.immediateCall();\n }\n }\n }\n\n if (!opts.brushResetOnNew) {\n if ($el.data(\"mostRecentBrush\")) {\n brush.importOldBrush();\n brushInfoSender.immediateCall();\n }\n }\n\n return {\n mousedown: mousedown,\n mousemove: mousemove,\n onResetImg: onResetImg\n };\n};\n\n// Returns an object that represents the state of the brush. This gets wrapped\n// in a brushHandler, which provides various event listeners.\nimageutils.createBrush = function($el, opts, coordmap, expandPixels) {\n // Number of pixels outside of brush to allow start resizing\n var resizeExpand = 10;\n\n var el = $el[0];\n var $div = null; // The div representing the brush\n\n var state = {};\n reset();\n\n function reset() {\n // Current brushing/dragging/resizing state\n state.brushing = false;\n state.dragging = false;\n state.resizing = false;\n\n // Offset of last mouse down and up events\n state.down = { x: NaN, y: NaN };\n state.up = { x: NaN, y: NaN };\n\n // Which side(s) we're currently resizing\n state.resizeSides = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n\n // Bounding rectangle of the brush, in pixel and data dimensions. We need to\n // record data dimensions along with pixel dimensions so that when a new\n // plot is sent, we can re-draw the brush div with the appropriate coords.\n state.boundsPx = {\n xmin: NaN,\n xmax: NaN,\n ymin: NaN,\n ymax: NaN\n };\n state.boundsData = {\n xmin: NaN,\n xmax: NaN,\n ymin: NaN,\n ymax: NaN\n };\n\n // Panel object that the brush is in\n state.panel = null;\n\n // The bounds at the start of a drag/resize\n state.changeStartBounds = {\n xmin: NaN,\n xmax: NaN,\n ymin: NaN,\n ymax: NaN\n };\n\n if ($div)\n $div.remove();\n }\n\n // If there's an existing brush div, use that div to set the new brush's\n // settings, provided that the x, y, and panel variables have the same names,\n // and there's a panel with matching panel variable values.\n function importOldBrush() {\n var oldDiv = $el.find('#' + el.id + '_brush');\n if (oldDiv.length === 0)\n return;\n\n var oldBoundsData = oldDiv.data('bounds-data');\n var oldPanel = oldDiv.data('panel');\n\n if (!oldBoundsData || !oldPanel)\n return;\n\n // Compare two objects. This checks that objects a and b have the same est\n // of keys, and that each key has the same value. This function isn't\n // perfect, but it's good enough for comparing variable mappings, below.\n function isEquivalent(a, b) {\n if (a === undefined) {\n if (b === undefined)\n return true;\n else\n return false;\n }\n if (a === null) {\n if (b === null)\n return true;\n else\n return false;\n }\n\n var aProps = Object.getOwnPropertyNames(a);\n var bProps = Object.getOwnPropertyNames(b);\n\n if (aProps.length !== bProps.length)\n return false;\n\n for (var i=0; i= bounds.xmin &&\n offset.y <= bounds.ymax && offset.y >= bounds.ymin;\n }\n\n // Return true if offset is inside a region to start a resize\n function isInResizeArea(offset) {\n var sides = whichResizeSides(offset);\n return sides.left || sides.right || sides.top || sides.bottom;\n }\n\n // Return an object representing which resize region(s) the cursor is in.\n function whichResizeSides(offset) {\n var b = state.boundsPx;\n // Bounds with expansion\n var e = {\n xmin: b.xmin - resizeExpand,\n xmax: b.xmax + resizeExpand,\n ymin: b.ymin - resizeExpand,\n ymax: b.ymax + resizeExpand\n };\n var res = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n\n if ((opts.brushDirection === 'xy' || opts.brushDirection === 'x') &&\n (offset.y <= e.ymax && offset.y >= e.ymin))\n {\n if (offset.x < b.xmin && offset.x >= e.xmin)\n res.left = true;\n else if (offset.x > b.xmax && offset.x <= e.xmax)\n res.right = true;\n }\n\n if ((opts.brushDirection === 'xy' || opts.brushDirection === 'y') &&\n (offset.x <= e.xmax && offset.x >= e.xmin))\n {\n if (offset.y < b.ymin && offset.y >= e.ymin)\n res.top = true;\n else if (offset.y > b.ymax && offset.y <= e.ymax)\n res.bottom = true;\n }\n\n return res;\n }\n\n\n // Sets the bounds of the brush, given a box and optional panel. This\n // will fit the box bounds into the panel, so we don't brush outside of it.\n // This knows whether we're brushing in the x, y, or xy directions, and sets\n // bounds accordingly.\n // If no box is passed in, just return current bounds.\n function boundsPx(box) {\n if (box === undefined)\n return state.boundsPx;\n\n var min = { x: box.xmin, y: box.ymin };\n var max = { x: box.xmax, y: box.ymax };\n\n var panel = state.panel;\n var panelBounds = panel.range;\n\n if (opts.brushClip) {\n min = panel.clip(min);\n max = panel.clip(max);\n }\n\n if (opts.brushDirection === 'xy') {\n // No change\n\n } else if (opts.brushDirection === 'x') {\n // Extend top and bottom of plotting area\n min.y = panelBounds.top;\n max.y = panelBounds.bottom;\n\n } else if (opts.brushDirection === 'y') {\n min.x = panelBounds.left;\n max.x = panelBounds.right;\n }\n\n state.boundsPx = {\n xmin: min.x,\n xmax: max.x,\n ymin: min.y,\n ymax: max.y\n };\n\n // Positions in data space\n var minData = state.panel.scaleInv(min);\n var maxData = state.panel.scaleInv(max);\n // For reversed scales, the min and max can be reversed, so use findBox\n // to ensure correct order.\n state.boundsData = coordmap.findBox(minData, maxData);\n // Round to 14 significant digits to avoid spurious changes in FP values\n // (#1634).\n state.boundsData = mapValues(state.boundsData, val => roundSignif(val, 14));\n\n // We also need to attach the data bounds and panel as data attributes, so\n // that if the image is re-sent, we can grab the data bounds to create a new\n // brush. This should be fast because it doesn't actually modify the DOM.\n $div.data('bounds-data', state.boundsData);\n $div.data('panel', state.panel);\n return undefined;\n }\n\n // Get or set the bounds of the brush using coordinates in the data space.\n function boundsData(box) {\n if (box === undefined) {\n return state.boundsData;\n }\n\n var min = { x: box.xmin, y: box.ymin };\n var max = { x: box.xmax, y: box.ymax };\n\n var minPx = state.panel.scale(min);\n var maxPx = state.panel.scale(max);\n\n // The scaling function can reverse the direction of the axes, so we need to\n // find the min and max again.\n boundsPx({\n xmin: Math.min(minPx.x, maxPx.x),\n xmax: Math.max(minPx.x, maxPx.x),\n ymin: Math.min(minPx.y, maxPx.y),\n ymax: Math.max(minPx.y, maxPx.y)\n });\n return undefined;\n }\n\n function getPanel() {\n return state.panel;\n }\n\n // Add a new div representing the brush.\n function addDiv() {\n if ($div) $div.remove();\n\n // Start hidden; we'll show it when movement occurs\n $div = $(document.createElement('div'))\n .attr('id', el.id + '_brush')\n .css({\n 'background-color': opts.brushFill,\n 'opacity': opts.brushOpacity,\n 'pointer-events': 'none',\n 'position': 'absolute'\n })\n .hide();\n\n var borderStyle = '1px solid ' + opts.brushStroke;\n if (opts.brushDirection === 'xy') {\n $div.css({\n 'border': borderStyle\n });\n } else if (opts.brushDirection === 'x') {\n $div.css({\n 'border-left': borderStyle,\n 'border-right': borderStyle\n });\n } else if (opts.brushDirection === 'y') {\n $div.css({\n 'border-top': borderStyle,\n 'border-bottom': borderStyle\n });\n }\n\n $el.append($div);\n $div.offset({x:0, y:0}).width(0).outerHeight(0);\n }\n\n // Update the brush div to reflect the current brush bounds.\n function updateDiv() {\n // Need parent offset relative to page to calculate mouse offset\n // relative to page.\n var imgOffset = $el.offset();\n var b = state.boundsPx;\n $div.offset({\n top: imgOffset.top + b.ymin,\n left: imgOffset.left + b.xmin\n })\n .outerWidth(b.xmax - b.xmin + 1)\n .outerHeight(b.ymax - b.ymin + 1);\n }\n\n function down(offset) {\n if (offset === undefined)\n return state.down;\n\n state.down = offset;\n return undefined;\n }\n\n function up(offset) {\n if (offset === undefined)\n return state.up;\n\n state.up = offset;\n return undefined;\n }\n\n function isBrushing() {\n return state.brushing;\n }\n\n function startBrushing() {\n state.brushing = true;\n addDiv();\n state.panel = coordmap.getPanel(state.down, expandPixels);\n\n boundsPx(coordmap.findBox(state.down, state.down));\n updateDiv();\n }\n\n function brushTo(offset) {\n boundsPx(coordmap.findBox(state.down, offset));\n $div.show();\n updateDiv();\n }\n\n function stopBrushing() {\n state.brushing = false;\n\n // Save the final bounding box of the brush\n boundsPx(coordmap.findBox(state.down, state.up));\n }\n\n function isDragging() {\n return state.dragging;\n }\n\n function startDragging() {\n state.dragging = true;\n state.changeStartBounds = $.extend({}, state.boundsPx);\n }\n\n function dragTo(offset) {\n // How far the brush was dragged\n var dx = offset.x - state.down.x;\n var dy = offset.y - state.down.y;\n\n // Calculate what new positions would be, before clipping.\n var start = state.changeStartBounds;\n var newBounds = {\n xmin: start.xmin + dx,\n xmax: start.xmax + dx,\n ymin: start.ymin + dy,\n ymax: start.ymax + dy\n };\n\n // Clip to the plotting area\n if (opts.brushClip) {\n var panelBounds = state.panel.range;\n\n // Convert to format for shiftToRange\n var xvals = [ newBounds.xmin, newBounds.xmax ];\n var yvals = [ newBounds.ymin, newBounds.ymax ];\n\n xvals = coordmap.shiftToRange(xvals, panelBounds.left, panelBounds.right);\n yvals = coordmap.shiftToRange(yvals, panelBounds.top, panelBounds.bottom);\n\n // Convert back to bounds format\n newBounds = {\n xmin: xvals[0],\n xmax: xvals[1],\n ymin: yvals[0],\n ymax: yvals[1]\n };\n }\n\n boundsPx(newBounds);\n updateDiv();\n }\n\n function stopDragging() {\n state.dragging = false;\n }\n\n function isResizing() {\n return state.resizing;\n }\n\n function startResizing() {\n state.resizing = true;\n state.changeStartBounds = $.extend({}, state.boundsPx);\n state.resizeSides = whichResizeSides(state.down);\n }\n\n function resizeTo(offset) {\n // How far the brush was dragged\n var dx = offset.x - state.down.x;\n var dy = offset.y - state.down.y;\n\n // Calculate what new positions would be, before clipping.\n var b = $.extend({}, state.changeStartBounds);\n var panelBounds = state.panel.range;\n\n if (state.resizeSides.left) {\n b.xmin = coordmap.shiftToRange([b.xmin + dx], panelBounds.left, b.xmax)[0];\n } else if (state.resizeSides.right) {\n b.xmax = coordmap.shiftToRange([b.xmax + dx], b.xmin, panelBounds.right)[0];\n }\n\n if (state.resizeSides.top) {\n b.ymin = coordmap.shiftToRange([b.ymin + dy], panelBounds.top, b.ymax)[0];\n } else if (state.resizeSides.bottom) {\n b.ymax = coordmap.shiftToRange([b.ymax + dy], b.ymin, panelBounds.bottom)[0];\n }\n\n boundsPx(b);\n updateDiv();\n }\n\n function stopResizing() {\n state.resizing = false;\n }\n\n return {\n reset: reset,\n\n importOldBrush: importOldBrush,\n isInsideBrush: isInsideBrush,\n isInResizeArea: isInResizeArea,\n whichResizeSides: whichResizeSides,\n\n boundsPx: boundsPx,\n boundsData: boundsData,\n getPanel: getPanel,\n\n down: down,\n up: up,\n\n isBrushing: isBrushing,\n startBrushing: startBrushing,\n brushTo: brushTo,\n stopBrushing: stopBrushing,\n\n isDragging: isDragging,\n startDragging: startDragging,\n dragTo: dragTo,\n stopDragging: stopDragging,\n\n isResizing: isResizing,\n startResizing: startResizing,\n resizeTo: resizeTo,\n stopResizing: stopResizing\n };\n};\n\nexports.resetBrush = function(brushId) {\n exports.setInputValue(brushId, null);\n imageOutputBinding.find(document).trigger(\"shiny-internal:brushed\", {\n brushId: brushId, outputId: null\n });\n};\n","//---------------------------------------------------------------------\n// Source file: ../srcjs/output_binding_html.js\n\nvar htmlOutputBinding = new OutputBinding();\n$.extend(htmlOutputBinding, {\n find: function(scope) {\n return $(scope).find('.shiny-html-output');\n },\n onValueError: function(el, err) {\n exports.unbindAll(el);\n this.renderError(el, err);\n },\n renderValue: function(el, data) {\n exports.renderContent(el, data);\n }\n});\noutputBindings.register(htmlOutputBinding, 'shiny.htmlOutput');\n\nvar renderDependencies = exports.renderDependencies = function(dependencies) {\n if (dependencies) {\n $.each(dependencies, function(i, dep) {\n renderDependency(dep);\n });\n }\n};\n\n// Render HTML in a DOM element, add dependencies, and bind Shiny\n// inputs/outputs. `content` can be null, a string, or an object with\n// properties 'html' and 'deps'.\nexports.renderContent = function(el, content, where=\"replace\") {\n if (where === \"replace\") {\n exports.unbindAll(el);\n }\n\n var html;\n var dependencies = [];\n if (content === null) {\n html = '';\n } else if (typeof(content) === 'string') {\n html = content;\n } else if (typeof(content) === 'object') {\n html = content.html;\n dependencies = content.deps || [];\n }\n\n exports.renderHtml(html, el, dependencies, where);\n\n var scope = el;\n if (where === \"replace\") {\n exports.initializeInputs(el);\n exports.bindAll(el);\n } else {\n var $parent = $(el).parent();\n if ($parent.length > 0) {\n scope = $parent;\n if (where === \"beforeBegin\" || where === \"afterEnd\") {\n var $grandparent = $parent.parent();\n if ($grandparent.length > 0) scope = $grandparent;\n }\n }\n exports.initializeInputs(scope);\n exports.bindAll(scope);\n }\n};\n\n// Render HTML in a DOM element, inserting singletons into head as needed\nexports.renderHtml = function(html, el, dependencies, where = 'replace') {\n renderDependencies(dependencies);\n return singletons.renderHtml(html, el, where);\n};\n\nvar htmlDependencies = {};\nfunction registerDependency(name, version) {\n htmlDependencies[name] = version;\n}\n\n// Client-side dependency resolution and rendering\nfunction renderDependency(dep) {\n if (htmlDependencies.hasOwnProperty(dep.name))\n return false;\n\n registerDependency(dep.name, dep.version);\n\n var href = dep.src.href;\n\n var $head = $(\"head\").first();\n\n if (dep.meta) {\n var metas = $.map(asArray(dep.meta), function(obj, idx) {\n // only one named pair is expected in obj as it's already been decomposed\n var name = Object.keys(obj)[0];\n return $(\"\").attr(\"name\", name).attr(\"content\", obj[name]);\n });\n $head.append(metas);\n }\n\n if (dep.stylesheet) {\n var stylesheets = $.map(asArray(dep.stylesheet), function(stylesheet) {\n return $(\"\")\n .attr(\"href\", href + \"/\" + encodeURI(stylesheet));\n });\n $head.append(stylesheets);\n }\n\n if (dep.script) {\n var scripts = $.map(asArray(dep.script), function(scriptName) {\n return $(\"