From 7b5029042f3df3a369320fc2c5aec6ec45b8b182 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:29:53 -0400 Subject: [PATCH 01/10] ci: Add r-package checks --- .github/workflows/R-CMD-check.yaml | 56 ++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/R-CMD-check.yaml diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 0000000..c45ec2f --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,56 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + paths: ['r-package/**'] + pull_request: + branches: [main, master] + paths: ['r-package/**'] + +name: R-CMD-check.yaml + +permissions: read-all + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: macos-latest, r: 'release'} + - {os: windows-latest, r: 'release'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + working-directory: r-package + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + working-directory: r-package + upload-snapshots: true + build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' From a6252f30646c9a1556c012130df49175040e94cc Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:30:24 -0400 Subject: [PATCH 02/10] chore: tidy DESCRIPTION * Add Description * use_tidy_description() --- r-package/DESCRIPTION | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/r-package/DESCRIPTION b/r-package/DESCRIPTION index 092daee..25f0a3d 100644 --- a/r-package/DESCRIPTION +++ b/r-package/DESCRIPTION @@ -3,12 +3,13 @@ Title: Multimedia Input/Output Controls for Shiny Version: 0.0.0.9000 Authors@R: person("Joe", "Cheng", , "joe@posit.co", role = c("aut", "cre")) -Description: What the package does (one paragraph). +Description: Extends the "Shiny" web framework with controls for + multimedia input/output. License: MIT + file LICENSE -Encoding: UTF-8 -Roxygen: list(markdown = TRUE) -RoxygenNote: 7.3.1 Imports: htmltools, rlang, shiny +Encoding: UTF-8 +Roxygen: list(markdown = TRUE) +RoxygenNote: 7.3.2 From 83f996158b76375efa1aab691bad6ab37211f90f Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:33:11 -0400 Subject: [PATCH 03/10] chore: consolidate import statements * usethis::use_import_from("package", "function") --- r-package/DESCRIPTION | 1 + r-package/NAMESPACE | 7 +------ r-package/R/audio_spinner.R | 2 -- r-package/R/html_deps.R | 2 -- r-package/R/input_video_clip.R | 3 --- r-package/R/shinymedia-package.R | 9 +++++++++ r-package/man/shinymedia-package.Rd | 15 +++++++++++++++ 7 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 r-package/R/shinymedia-package.R create mode 100644 r-package/man/shinymedia-package.Rd diff --git a/r-package/DESCRIPTION b/r-package/DESCRIPTION index 25f0a3d..2e776e1 100644 --- a/r-package/DESCRIPTION +++ b/r-package/DESCRIPTION @@ -7,6 +7,7 @@ Description: Extends the "Shiny" web framework with controls for multimedia input/output. License: MIT + file LICENSE Imports: + base64enc, htmltools, rlang, shiny diff --git a/r-package/NAMESPACE b/r-package/NAMESPACE index eba3eaf..75d022e 100644 --- a/r-package/NAMESPACE +++ b/r-package/NAMESPACE @@ -2,11 +2,6 @@ export(audio_spinner) export(input_video_clip) -import(base64enc) import(htmltools) -importFrom(htmltools,div) -importFrom(htmltools,htmlDependency) -importFrom(htmltools,tag) -importFrom(htmltools,tagList) -importFrom(htmltools,tags) +importFrom(base64enc,base64encode) importFrom(shiny,icon) diff --git a/r-package/R/audio_spinner.R b/r-package/R/audio_spinner.R index c948184..2edff50 100644 --- a/r-package/R/audio_spinner.R +++ b/r-package/R/audio_spinner.R @@ -32,8 +32,6 @@ #' @param ... Additional attributes for the spinner, to be added directly to the `` element. #' #' @return An HTML tag object representing the audio spinner. -#' @import htmltools -#' @import base64enc #' #' @examples #' # Using a URL diff --git a/r-package/R/html_deps.R b/r-package/R/html_deps.R index 57b59ca..a518acc 100644 --- a/r-package/R/html_deps.R +++ b/r-package/R/html_deps.R @@ -1,6 +1,4 @@ #' Create HTML dependency for multimodal component -#' -#' @importFrom htmltools htmlDependency multimodal_dep <- function() { htmlDependency( name = "multimodal", diff --git a/r-package/R/input_video_clip.R b/r-package/R/input_video_clip.R index 8342346..66511a5 100644 --- a/r-package/R/input_video_clip.R +++ b/r-package/R/input_video_clip.R @@ -20,9 +20,6 @@ #' #' @return A video clip input control that can be added to a UI definition. #' @export -#' -#' @importFrom htmltools tag tags tagList div -#' @importFrom shiny icon input_video_clip <- function( inputId, reset_on_record = TRUE, diff --git a/r-package/R/shinymedia-package.R b/r-package/R/shinymedia-package.R new file mode 100644 index 0000000..84b1900 --- /dev/null +++ b/r-package/R/shinymedia-package.R @@ -0,0 +1,9 @@ +#' @keywords internal +"_PACKAGE" + +## usethis namespace: start +#' @import htmltools +#' @importFrom base64enc base64encode +#' @importFrom shiny icon +## usethis namespace: end +NULL diff --git a/r-package/man/shinymedia-package.Rd b/r-package/man/shinymedia-package.Rd new file mode 100644 index 0000000..b34846b --- /dev/null +++ b/r-package/man/shinymedia-package.Rd @@ -0,0 +1,15 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/shinymedia-package.R +\docType{package} +\name{shinymedia-package} +\alias{shinymedia} +\alias{shinymedia-package} +\title{shinymedia: Multimedia Input/Output Controls for Shiny} +\description{ +Extends the "Shiny" web framework with controls for multimedia input/output. +} +\author{ +\strong{Maintainer}: Joe Cheng \email{joe@posit.co} + +} +\keyword{internal} From 9c5c5319d0c2c8e92462d778a3772db69f69c4e6 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:37:05 -0400 Subject: [PATCH 04/10] doc(audio_spinner): style --- r-package/R/audio_spinner.R | 86 ++++++++++++++++++++------------- r-package/man/audio_spinner.Rd | 87 +++++++++++++++++++++------------- 2 files changed, 109 insertions(+), 64 deletions(-) diff --git a/r-package/R/audio_spinner.R b/r-package/R/audio_spinner.R index 2edff50..d6313f1 100644 --- a/r-package/R/audio_spinner.R +++ b/r-package/R/audio_spinner.R @@ -1,44 +1,66 @@ #' Create an audio spinner #' -#' @param src The source URL or URI for the audio file. This should be used for remote resources -#' or data URIs. If provided, this takes precedence over `con`. -#' @param con An optional connection object or file path for local audio files. This is ignored -#' if `src` is provided. Use this for reading local files securely. -#' @param rpm The speed of the spinner, in clockwise revolutions per minute. Default is 10 RPM. -#' Use 0 to disable rotation, or a negative value to rotate counter-clockwise. -#' @param gap The gap between the blades of the spinner, in radians. Default is pi/5, or 36°. -#' @param stroke The stroke thickness of the individual arcs that make up each blade of the spinner, -#' in pixels. Default is 2.5. -#' @param min_radius The radius of the spinner when there is only silence, in pixels. Default is 30. -#' @param radius_compression The raw `[-1, 1]` amplitude of the audio is compressed using -#' `x^radius_compression` to make the spinner more responsive to quiet sounds. Default is 0.8. -#' Set to 1.0 to disable compression. (Note that this only affects the visualization, not the audio playback.) -#' @param radius_overscan Use this parameter to set the maximum possible radius of the spinner, -#' relative to the width/height of the container. Default is 1.1, meaning the spinner radius -#' will be scaled such that at maximum amplitude, it will be 10% larger than the container -#' (the spinner blades will be clipped). Use larger values if you're expecting generally quiet audio. -#' @param steps The number of concentric arcs that make up each blade of the spinner, not including -#' the central circle. Default is 2. -#' @param blades The number of blades in the spinner. Default is 3. Set to 0 to use concentric circles -#' instead of blades. +#' @param src The source URL or URI for the audio file. This should be used for +#' remote resources or data URIs. If provided, this takes precedence over +#' `con`. +#' @param con An optional connection object or file path for local audio files. +#' This is ignored if `src` is provided. Use this for reading local files +#' securely. +#' @param rpm The speed of the spinner, in clockwise revolutions per minute. +#' Default is 10 RPM. Use 0 to disable rotation, or a negative value to rotate +#' counter-clockwise. +#' @param gap The gap between the blades of the spinner, in radians. Default is +#' pi/5, or 36°. +#' @param stroke The stroke thickness of the individual arcs that make up each +#' blade of the spinner, in pixels. Default is 2.5. +#' @param min_radius The radius of the spinner when there is only silence, in +#' pixels. Default is 30. +#' @param radius_compression The raw `[-1, 1]` amplitude of the audio is +#' compressed using `x^radius_compression` to make the spinner more responsive +#' to quiet sounds. Default is 0.8. Set to 1.0 to disable compression. (Note +#' that this only affects the visualization, not the audio playback.) +#' @param radius_overscan Use this parameter to set the maximum possible radius +#' of the spinner, relative to the width/height of the container. Default is +#' 1.1, meaning the spinner radius will be scaled such that at maximum +#' amplitude, it will be 10% larger than the container (the spinner blades +#' will be clipped). Use larger values if you're expecting generally quiet +#' audio. +#' @param steps The number of concentric arcs that make up each blade of the +#' spinner, not including the central circle. Default is 2. +#' @param blades The number of blades in the spinner. Default is 3. Set to 0 to +#' use concentric circles instead of blades. #' @param width The width of the spinner in CSS units. Default is "125px". #' @param height The height of the spinner in CSS units. Default is "125px". -#' @param autoplay Whether to autoplay the audio. Default is TRUE. Note that many browsers will not -#' allow autoplaying audio without user interaction; if autoplay fails, the spinner will show a -#' tooltip instructing the user to tap or click to start the audio. -#' @param autodismiss Whether to remove the spinner after the audio finishes playing. Default is FALSE. -#' @param class The class of the spinner. Default is "mx-auto" which horizontally centers the element -#' inside its container (assuming Bootstrap is loaded). -#' @param ... Additional attributes for the spinner, to be added directly to the `` element. +#' @param autoplay Whether to autoplay the audio. Default is TRUE. Note that +#' many browsers will not allow autoplaying audio without user interaction; if +#' autoplay fails, the spinner will show a tooltip instructing the user to tap +#' or click to start the audio. +#' @param autodismiss Whether to remove the spinner after the audio finishes +#' playing. Default is FALSE. +#' @param class The class of the spinner. Default is "mx-auto" which +#' horizontally centers the element inside its container (assuming Bootstrap +#' is loaded). +#' @param ... Additional attributes for the spinner, to be added directly to the +#' `` element. #' -#' @return An HTML tag object representing the audio spinner. +#' @return An HTML `` tag object representing the audio spinner. #' -#' @examples +#' @examplesIf rlang::is_interactive() #' # Using a URL -#' audio_spinner(src = "https://example.com/audio.mp3", rpm = 15, width = "200px", height = "200px") +#' audio_spinner( +#' src = "https://example.com/audio.mp3", +#' rpm = 15, +#' width = "200px", +#' height = "200px" +#' ) #' #' # Using a local file -#' audio_spinner(con = "path/to/local/audio.mp3", rpm = 20, width = "150px", height = "150px") +#' audio_spinner( +#' con = "path/to/local/audio.mp3", +#' rpm = 20, +#' width = "150px", +#' height = "150px" +#' ) #' #' @export audio_spinner <- function( diff --git a/r-package/man/audio_spinner.Rd b/r-package/man/audio_spinner.Rd index 2cf3094..a9b830a 100644 --- a/r-package/man/audio_spinner.Rd +++ b/r-package/man/audio_spinner.Rd @@ -24,63 +24,86 @@ audio_spinner( ) } \arguments{ -\item{...}{Additional attributes for the spinner, to be added directly to the \verb{} element.} +\item{...}{Additional attributes for the spinner, to be added directly to the +\verb{} element.} -\item{src}{The source URL or URI for the audio file. This should be used for remote resources -or data URIs. If provided, this takes precedence over \code{con}.} +\item{src}{The source URL or URI for the audio file. This should be used for +remote resources or data URIs. If provided, this takes precedence over +\code{con}.} -\item{con}{An optional connection object or file path for local audio files. This is ignored -if \code{src} is provided. Use this for reading local files securely.} +\item{con}{An optional connection object or file path for local audio files. +This is ignored if \code{src} is provided. Use this for reading local files +securely.} -\item{rpm}{The speed of the spinner, in clockwise revolutions per minute. Default is 10 RPM. -Use 0 to disable rotation, or a negative value to rotate counter-clockwise.} +\item{rpm}{The speed of the spinner, in clockwise revolutions per minute. +Default is 10 RPM. Use 0 to disable rotation, or a negative value to rotate +counter-clockwise.} -\item{gap}{The gap between the blades of the spinner, in radians. Default is pi/5, or 36°.} +\item{gap}{The gap between the blades of the spinner, in radians. Default is +pi/5, or 36°.} -\item{stroke}{The stroke thickness of the individual arcs that make up each blade of the spinner, -in pixels. Default is 2.5.} +\item{stroke}{The stroke thickness of the individual arcs that make up each +blade of the spinner, in pixels. Default is 2.5.} -\item{min_radius}{The radius of the spinner when there is only silence, in pixels. Default is 30.} +\item{min_radius}{The radius of the spinner when there is only silence, in +pixels. Default is 30.} -\item{radius_compression}{The raw \verb{[-1, 1]} amplitude of the audio is compressed using -\code{x^radius_compression} to make the spinner more responsive to quiet sounds. Default is 0.8. -Set to 1.0 to disable compression. (Note that this only affects the visualization, not the audio playback.)} +\item{radius_compression}{The raw \verb{[-1, 1]} amplitude of the audio is +compressed using \code{x^radius_compression} to make the spinner more responsive +to quiet sounds. Default is 0.8. Set to 1.0 to disable compression. (Note +that this only affects the visualization, not the audio playback.)} -\item{radius_overscan}{Use this parameter to set the maximum possible radius of the spinner, -relative to the width/height of the container. Default is 1.1, meaning the spinner radius -will be scaled such that at maximum amplitude, it will be 10\% larger than the container -(the spinner blades will be clipped). Use larger values if you're expecting generally quiet audio.} +\item{radius_overscan}{Use this parameter to set the maximum possible radius +of the spinner, relative to the width/height of the container. Default is +1.1, meaning the spinner radius will be scaled such that at maximum +amplitude, it will be 10\% larger than the container (the spinner blades +will be clipped). Use larger values if you're expecting generally quiet +audio.} -\item{steps}{The number of concentric arcs that make up each blade of the spinner, not including -the central circle. Default is 2.} +\item{steps}{The number of concentric arcs that make up each blade of the +spinner, not including the central circle. Default is 2.} -\item{blades}{The number of blades in the spinner. Default is 3. Set to 0 to use concentric circles -instead of blades.} +\item{blades}{The number of blades in the spinner. Default is 3. Set to 0 to +use concentric circles instead of blades.} \item{width}{The width of the spinner in CSS units. Default is "125px".} \item{height}{The height of the spinner in CSS units. Default is "125px".} -\item{autoplay}{Whether to autoplay the audio. Default is TRUE. Note that many browsers will not -allow autoplaying audio without user interaction; if autoplay fails, the spinner will show a -tooltip instructing the user to tap or click to start the audio.} +\item{autoplay}{Whether to autoplay the audio. Default is TRUE. Note that +many browsers will not allow autoplaying audio without user interaction; if +autoplay fails, the spinner will show a tooltip instructing the user to tap +or click to start the audio.} -\item{autodismiss}{Whether to remove the spinner after the audio finishes playing. Default is FALSE.} +\item{autodismiss}{Whether to remove the spinner after the audio finishes +playing. Default is FALSE.} -\item{class}{The class of the spinner. Default is "mx-auto" which horizontally centers the element -inside its container (assuming Bootstrap is loaded).} +\item{class}{The class of the spinner. Default is "mx-auto" which +horizontally centers the element inside its container (assuming Bootstrap +is loaded).} } \value{ -An HTML tag object representing the audio spinner. +An HTML \verb{} tag object representing the audio spinner. } \description{ Create an audio spinner } \examples{ +\dontshow{if (rlang::is_interactive()) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} # Using a URL -audio_spinner(src = "https://example.com/audio.mp3", rpm = 15, width = "200px", height = "200px") +audio_spinner( + src = "https://example.com/audio.mp3", + rpm = 15, + width = "200px", + height = "200px" +) # Using a local file -audio_spinner(con = "path/to/local/audio.mp3", rpm = 20, width = "150px", height = "150px") - +audio_spinner( + con = "path/to/local/audio.mp3", + rpm = 20, + width = "150px", + height = "150px" +) +\dontshow{\}) # examplesIf} } From c100a7305b211d6e1db7296158d358e43d197c6c Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:39:04 -0400 Subject: [PATCH 05/10] docs(input_video_clip): style --- r-package/R/input_video_clip.R | 36 +++++++++++++++++------------ r-package/man/input_video_clip.Rd | 38 +++++++++++++++++++------------ 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/r-package/R/input_video_clip.R b/r-package/R/input_video_clip.R index 66511a5..bd76d2b 100644 --- a/r-package/R/input_video_clip.R +++ b/r-package/R/input_video_clip.R @@ -1,22 +1,30 @@ #' A video clip input control that records short videos from webcam #' #' @param inputId The input slot that will be used to access the value. -#' @param reset_on_record Whether to reset the video clip input value when recording starts. If -#' TRUE, the video clip input value will become NULL at the moment the -#' Record button is pressed; if FALSE, the value will not change until -#' the user stops recording. Default is TRUE. -#' @param mime_type The MIME type of the video clip to record. By default, this is NULL, -#' which means the browser will choose a suitable MIME type for video +#' @param reset_on_record Whether to reset the video clip input value when +#' recording starts. If TRUE, the video clip input value will become NULL at +#' the moment the Record button is pressed; if FALSE, the value will not +#' change until the user stops recording. Default is TRUE. +#' @param mime_type The MIME type of the video clip to record. By default, this +#' is NULL, which means the browser will choose a suitable MIME type for video #' recording. Common MIME types include 'video/webm' and 'video/x-matroska'. -#' @param video_bits_per_second The target video bitrate in bits per second. By default, this is NULL, -#' which means the browser will choose a suitable bitrate for video -#' recording (according to the spec, 2,500,000). This is only a -#' suggestion; the browser may choose a different bitrate. -#' @param audio_bits_per_second The target audio bitrate in bits per second. By default, this is NULL, -#' which means the browser will choose a suitable bitrate for audio -#' recording. This is only a suggestion; the browser may choose a different -#' bitrate. +#' @param video_bits_per_second The target video bitrate in bits per second. By +#' default, this is NULL, which means the browser will choose a suitable +#' bitrate for video recording (according to the spec, 2,500,000). This is +#' only a suggestion; the browser may choose a different bitrate. +#' @param audio_bits_per_second The target audio bitrate in bits per second. By +#' default, this is NULL, which means the browser will choose a suitable +#' bitrate for audio recording. This is only a suggestion; the browser may +#' choose a different bitrate. #' @param ... Additional parameters to pass to the underlying HTML tag. +#' +#' @examplesIf rlang::is_interactive() +#' input_video_clip( +#' "clip1", +#' video_bits_per_second = 256000, +#' audio_bits_per_second = 64000, +#' style = "width: 400px; max-width: 100%;", +#' ) #' #' @return A video clip input control that can be added to a UI definition. #' @export diff --git a/r-package/man/input_video_clip.Rd b/r-package/man/input_video_clip.Rd index 7e45661..d067c29 100644 --- a/r-package/man/input_video_clip.Rd +++ b/r-package/man/input_video_clip.Rd @@ -16,24 +16,24 @@ input_video_clip( \arguments{ \item{inputId}{The input slot that will be used to access the value.} -\item{reset_on_record}{Whether to reset the video clip input value when recording starts. If -TRUE, the video clip input value will become NULL at the moment the -Record button is pressed; if FALSE, the value will not change until -the user stops recording. Default is TRUE.} +\item{reset_on_record}{Whether to reset the video clip input value when +recording starts. If TRUE, the video clip input value will become NULL at +the moment the Record button is pressed; if FALSE, the value will not +change until the user stops recording. Default is TRUE.} -\item{mime_type}{The MIME type of the video clip to record. By default, this is NULL, -which means the browser will choose a suitable MIME type for video +\item{mime_type}{The MIME type of the video clip to record. By default, this +is NULL, which means the browser will choose a suitable MIME type for video recording. Common MIME types include 'video/webm' and 'video/x-matroska'.} -\item{video_bits_per_second}{The target video bitrate in bits per second. By default, this is NULL, -which means the browser will choose a suitable bitrate for video -recording (according to the spec, 2,500,000). This is only a -suggestion; the browser may choose a different bitrate.} +\item{video_bits_per_second}{The target video bitrate in bits per second. By +default, this is NULL, which means the browser will choose a suitable +bitrate for video recording (according to the spec, 2,500,000). This is +only a suggestion; the browser may choose a different bitrate.} -\item{audio_bits_per_second}{The target audio bitrate in bits per second. By default, this is NULL, -which means the browser will choose a suitable bitrate for audio -recording. This is only a suggestion; the browser may choose a different -bitrate.} +\item{audio_bits_per_second}{The target audio bitrate in bits per second. By +default, this is NULL, which means the browser will choose a suitable +bitrate for audio recording. This is only a suggestion; the browser may +choose a different bitrate.} \item{...}{Additional parameters to pass to the underlying HTML tag.} } @@ -43,3 +43,13 @@ A video clip input control that can be added to a UI definition. \description{ A video clip input control that records short videos from webcam } +\examples{ +\dontshow{if (rlang::is_interactive()) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} +input_video_clip( + "clip1", + video_bits_per_second = 256000, + audio_bits_per_second = 64000, + style = "width: 400px; max-width: 100\%;", +) +\dontshow{\}) # examplesIf} +} From b4dd7f520722d84a5a584f12d25c0a9136b3ff08 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:40:36 -0400 Subject: [PATCH 06/10] chore: usethis::use_github_links() --- r-package/DESCRIPTION | 2 ++ 1 file changed, 2 insertions(+) diff --git a/r-package/DESCRIPTION b/r-package/DESCRIPTION index 2e776e1..0cfd485 100644 --- a/r-package/DESCRIPTION +++ b/r-package/DESCRIPTION @@ -6,6 +6,8 @@ Authors@R: Description: Extends the "Shiny" web framework with controls for multimedia input/output. License: MIT + file LICENSE +URL: https://github.com/posit-dev/shinymedia +BugReports: https://github.com/posit-dev/shinymedia/issues Imports: base64enc, htmltools, From 3c08f6ef0a340021d3b8bbdcd8fe3b2d7114e044 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:42:54 -0400 Subject: [PATCH 07/10] chore: single quotes for Shiny in description --- r-package/DESCRIPTION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/r-package/DESCRIPTION b/r-package/DESCRIPTION index 0cfd485..b05ed9c 100644 --- a/r-package/DESCRIPTION +++ b/r-package/DESCRIPTION @@ -1,9 +1,9 @@ Package: shinymedia -Title: Multimedia Input/Output Controls for Shiny +Title: Multimedia Input/Output Controls for 'Shiny' Version: 0.0.0.9000 Authors@R: person("Joe", "Cheng", , "joe@posit.co", role = c("aut", "cre")) -Description: Extends the "Shiny" web framework with controls for +Description: Extends the 'Shiny' web framework with controls for multimedia input/output. License: MIT + file LICENSE URL: https://github.com/posit-dev/shinymedia From e584f3d69c9645de7ee3665c50a6a1b6f75e44a4 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:43:50 -0400 Subject: [PATCH 08/10] chore: Add Posit to authors as cph, fnd --- r-package/DESCRIPTION | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/r-package/DESCRIPTION b/r-package/DESCRIPTION index b05ed9c..2cb2889 100644 --- a/r-package/DESCRIPTION +++ b/r-package/DESCRIPTION @@ -1,8 +1,10 @@ Package: shinymedia Title: Multimedia Input/Output Controls for 'Shiny' Version: 0.0.0.9000 -Authors@R: - person("Joe", "Cheng", , "joe@posit.co", role = c("aut", "cre")) +Authors@R: c( + person("Joe", "Cheng", , "joe@posit.co", role = c("aut", "cre")), + person("Posit Software, PBC", role = c("cph", "fnd")) + ) Description: Extends the 'Shiny' web framework with controls for multimedia input/output. License: MIT + file LICENSE From 03867e167f08ed4a2fd28b013d42a3051a5203a9 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:45:48 -0400 Subject: [PATCH 09/10] chore: expand package description --- r-package/DESCRIPTION | 3 ++- r-package/man/shinymedia-package.Rd | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/r-package/DESCRIPTION b/r-package/DESCRIPTION index 2cb2889..a6cbc32 100644 --- a/r-package/DESCRIPTION +++ b/r-package/DESCRIPTION @@ -6,7 +6,8 @@ Authors@R: c( person("Posit Software, PBC", role = c("cph", "fnd")) ) Description: Extends the 'Shiny' web framework with controls for - multimedia input/output. + multimedia input/output. Includes a video input control and an audio + output. License: MIT + file LICENSE URL: https://github.com/posit-dev/shinymedia BugReports: https://github.com/posit-dev/shinymedia/issues diff --git a/r-package/man/shinymedia-package.Rd b/r-package/man/shinymedia-package.Rd index b34846b..8b00882 100644 --- a/r-package/man/shinymedia-package.Rd +++ b/r-package/man/shinymedia-package.Rd @@ -4,12 +4,25 @@ \name{shinymedia-package} \alias{shinymedia} \alias{shinymedia-package} -\title{shinymedia: Multimedia Input/Output Controls for Shiny} +\title{shinymedia: Multimedia Input/Output Controls for 'Shiny'} \description{ -Extends the "Shiny" web framework with controls for multimedia input/output. +Extends the 'Shiny' web framework with controls for multimedia input/output. Includes a video input control and an audio output. +} +\seealso{ +Useful links: +\itemize{ + \item \url{https://github.com/posit-dev/shinymedia} + \item Report bugs at \url{https://github.com/posit-dev/shinymedia/issues} +} + } \author{ \strong{Maintainer}: Joe Cheng \email{joe@posit.co} +Other contributors: +\itemize{ + \item Posit Software, PBC [copyright holder, funder] +} + } \keyword{internal} From 91264c41ce1eb08ee11a8c3d352e6cf9220347df Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Wed, 28 Aug 2024 09:47:12 -0400 Subject: [PATCH 10/10] docs: Don't create .Rd file for unexported function --- r-package/R/html_deps.R | 2 +- r-package/man/multimodal_dep.Rd | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 r-package/man/multimodal_dep.Rd diff --git a/r-package/R/html_deps.R b/r-package/R/html_deps.R index a518acc..2383a51 100644 --- a/r-package/R/html_deps.R +++ b/r-package/R/html_deps.R @@ -1,4 +1,4 @@ -#' Create HTML dependency for multimodal component +# HTML dependency for multimodal component multimodal_dep <- function() { htmlDependency( name = "multimodal", diff --git a/r-package/man/multimodal_dep.Rd b/r-package/man/multimodal_dep.Rd deleted file mode 100644 index b536854..0000000 --- a/r-package/man/multimodal_dep.Rd +++ /dev/null @@ -1,11 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/html_deps.R -\name{multimodal_dep} -\alias{multimodal_dep} -\title{Create HTML dependency for multimodal component} -\usage{ -multimodal_dep() -} -\description{ -Create HTML dependency for multimodal component -}