https://github.com/insightsengineering/roxy.shinylive
roxygen2 extensions for shinylive
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.9%) to scientific vocabulary
Keywords
Repository
roxygen2 extensions for shinylive
Basic Info
- Host: GitHub
- Owner: insightsengineering
- License: other
- Language: JavaScript
- Default Branch: main
- Homepage: https://insightsengineering.github.io/roxy.shinylive/
- Size: 8.03 MB
Statistics
- Stars: 13
- Watchers: 1
- Forks: 2
- Open Issues: 2
- Releases: 0
Topics
Metadata Files
README.md
roxy.shinylive
Overview
This package provides a roxygen2 extension that automatically takes the code
from the @examples tag and create an URL to the
shinylive.io service.
During the documentation build, a new section is added to the function manual
that contains the aforementioned link as well as an iframe to the application itself.
shinylive.io
shinylive.io is a service that allows you to run Shiny applications entirely in the browser, without a dedicated server. It uses WebAssembly via WebR.
It has a sharing feature that allows you to encode the application code in the URL. This package does such encoding and returns the URL which can be used in variety of ways (from raw URL to iframe in function manual - see examples below).
Install
r
install.packages("roxy.shinylive")
Alternatively, you might want to use the development version.
```r
install.packages("pak")
pak::pak("insightsengineering/roxy.shinylive") ```
Usage
Creating a URL manually
r
code <- "\"Hello World\""
roxy.shinylive::create_shinylive_url(code, mode = "editor")
This returns the following URL:
In the roxygen2 documentation
In your DESCRIPTION file, add the following:
yaml
Roxygen: list(..., packages = c(..., "roxy.shinylive"))
Then in your package documentation:
```r
' (docs)
' @examplesShinylive
' @examples
' (example code with a Shiny app)
```
Which would produce a following output in your documentation:
Rd
\section{Examples in Shinylive}{
\describe{
\item{example-1}{
\href{https://shinylive.io/r/app/#code=...}{Open in Shinylive}
\if{html}{\out{<script type="text/javascript">(custom JS)</script>}}
\if{html}{\out{<iframe class="iframe_shinylive" src="https://shinylive.io/r/app/#code=..."></iframe>}}
}
\item{example-2}{
\href{https://shinylive.io/r/app/#code=...}{Open in Shinylive}
\if{html}{\out{<script type="text/javascript">(custom JS)</script>}}
\if{html}{\out{<iframe class="iframe_shinylive" src="https://shinylive.io/r/app/#code=..."></iframe>}}
}
...
}
}

In the vignettes
In your DESCRIPTION file, add the following:
yaml
Suggests:
roxy.shinylive
Then in your vignette:
`Rmd
{r shinylive_url, echo = FALSE, results = 'asis'}
extract the code from knitr code chunks by ID
code <- paste0(c( ... # add more IDs if needed knitr::knitcode$get("app"), knitr::knitcode$get("shinyapp") ), collapse = "\n")
url <- roxy.shinylive::createshinyliveurl(code) cat(sprintf("Open in Shinylive\n\n", url)) ```
{r shinylive_iframe, echo = FALSE, out.width = '150%', out.extra = 'style = "position: relative; z-index:1"', eval = knitr::is_html_output() && identical(Sys.getenv("IN_PKGDOWN"), "true")}
knitr::include_url(url, height = "800px")
````

See the package documentation for more details.
See the example implementation in the teal.modules.general or teal.modules.clinical packages.