Initial release.
snap_take() captures the inputs that are on the page
(as reported by the client script, so values of removed dynamic UI are
dropped), the reactiveValues registered with
snap_track(), and the values written by
snap_on_save() hooks. Action buttons, passwords, values
that shiny’s serializers mark as unserializable, ids excluded with
setBookmarkExclude(), and the patterns given to
snap_enable(), snap_exclude(), and
snap_include() are left out.shinysnap,
with snap_inputs(), snap_values(),
snap_meta(), and snap_diff().snap_serialize(), snap_unserialize(),
snap_write(), and snap_read() convert;
snap_write(format = "zip") writes a bundle that keeps
uploaded files and, with unsupported = "rds", opaque R
objects. Bundles are validated before extraction; embedded objects and
.rds files need trust = TRUE.snap_download_button(),
snap_download_handler(), snap_file_input(),
and snap_file_restore() replace the download and upload
boilerplate.snap_restore() restores a snapshot into the running
session: tracked values are written back, snap_on_restore()
hooks run, and the input values are sent to the browser at once, where
the client script applies each one as soon as its input is on the page.
shiny’s restoreInput() mechanism is primed during the
restore so dynamic UI is built with the restored values. A second
restore cancels the first.applied,
constructed, reapplied, missing,
failed, mismatched, or skipped;
snap_on_restored() hooks and
snap_is_restoring() complete the server-side API.snap_restorer() registers how an input’s value becomes
the message its binding understands, per binding name or per input id;
built-in restorers cover shiny, bslib, and shinyMatrix inputs, and
window.shinysnap.registerAdapter() is the JavaScript-side
equivalent.snap_as_bookmark_url() encodes a snapshot like URL
bookmarking does, snap_as_test_inputs() feeds
shiny::testServer(), and snap_attachment()
returns the files kept in a bundle.