From 451f5bf9a89bb5bf41ce7eea7acf236970d9c828 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 1 Apr 2026 23:41:23 +0200 Subject: [PATCH 1/2] fix: streamlined icons to use only phosphoricons --- R/data-summary.R | 48 +++++++++++++++++--------- R/data_plots.R | 12 ++++--- R/landing_page_ui.R | 29 +++++----------- R/missings-module.R | 9 +++-- R/plot-download-module.R | 3 +- R/redcap_read_shiny_module.R | 9 +++-- R/regression-module.R | 15 +++++--- R/table-download-module.R | 3 +- R/ui_elements.R | 66 ++++++++++++++++++++++-------------- R/update-factor-ext.R | 2 +- 10 files changed, 117 insertions(+), 79 deletions(-) diff --git a/R/data-summary.R b/R/data-summary.R index 62f5e0bf..27c11b3e 100644 --- a/R/data-summary.R +++ b/R/data-summary.R @@ -309,21 +309,29 @@ class_icons <- function(x) { lapply(x,class_icons) } else { if (identical(x, "numeric")) { - shiny::icon("calculator") + phosphoricons::ph("calculator") + # shiny::icon("calculator") } else if (identical(x, "factor")) { - shiny::icon("chart-simple") + phosphoricons::ph("chart-bar") + # shiny::icon("chart-simple") } else if (identical(x, "integer")) { - shiny::icon("arrow-down-1-9") + phosphoricons::ph("list-numbers") + # shiny::icon("arrow-down-1-9") } else if (identical(x, "character")) { - shiny::icon("arrow-down-a-z") + phosphoricons::ph("text-aa") + # shiny::icon("arrow-down-a-z") } else if (identical(x, "logical")) { - shiny::icon("toggle-off") + phosphoricons::ph("toggle-left") + # shiny::icon("toggle-off") } else if (any(c("Date", "POSIXt") %in% x)) { - shiny::icon("calendar-days") + phosphoricons::ph("calendar") + # shiny::icon("calendar-days") } else if (any("POSIXct", "hms") %in% x) { - shiny::icon("clock") + phosphoricons::ph("clock") + # shiny::icon("clock") } else { - shiny::icon("table") + phosphoricons::ph("calendar") + # shiny::icon("table") }} } @@ -342,21 +350,29 @@ type_icons <- function(x) { lapply(x,class_icons) } else { if (identical(x, "continuous")) { - shiny::icon("calculator") + phosphoricons::ph("calculator") + # shiny::icon("calculator") } else if (identical(x, "categorical")) { - shiny::icon("chart-simple") + phosphoricons::ph("chart-bar") + # shiny::icon("chart-simple") } else if (identical(x, "ordinal")) { - shiny::icon("arrow-down-1-9") + phosphoricons::ph("list-numbers") + # shiny::icon("arrow-down-1-9") } else if (identical(x, "text")) { - shiny::icon("arrow-down-a-z") + phosphoricons::ph("text-aa") + # shiny::icon("arrow-down-a-z") } else if (identical(x, "dichotomous")) { - shiny::icon("toggle-off") + phosphoricons::ph("toggle-left") + # shiny::icon("toggle-off") } else if (identical(x,"datetime")) { - shiny::icon("calendar-days") + phosphoricons::ph("calendar") + # shiny::icon("calendar-days") } else if (identical(x,"id")) { - shiny::icon("id-card") + phosphoricons::ph("identification-badge") + # shiny::icon("id-card") } else { - shiny::icon("table") + phosphoricons::ph("table") + # shiny::icon("table") } } } diff --git a/R/data_plots.R b/R/data_plots.R index 439b0ccf..bc1995e6 100644 --- a/R/data_plots.R +++ b/R/data_plots.R @@ -20,7 +20,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { bslib::accordion_panel( value = "acc_pan_plot", title = "Create plot", - icon = bsicons::bs_icon("graph-up"), + icon = phosphoricons::ph("chart-line"), + # icon = bsicons::bs_icon("graph-up"), shiny::uiOutput(outputId = ns("primary")), shiny::helpText( i18n$t( @@ -37,7 +38,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { inputId = ns("act_plot"), label = i18n$t("Plot"), width = "100%", - icon = shiny::icon("palette"), + icon = phosphoricons::ph("paint-brush"), + # icon = shiny::icon("palette"), disabled = FALSE ), shiny::helpText(i18n$t('Adjust settings, then press "Plot".')) @@ -45,7 +47,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { bslib::accordion_panel( value = "acc_pan_download", title = "Download", - icon = bsicons::bs_icon("download"), + icon = phosphoricons::ph("download-simple"), + # icon = bsicons::bs_icon("download"), shinyWidgets::noUiSliderInput( inputId = ns("height_slide"), label = i18n$t("Plot height (mm)"), @@ -84,7 +87,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { shiny::downloadButton( outputId = ns("download_plot"), label = i18n$t("Download plot"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ), diff --git a/R/landing_page_ui.R b/R/landing_page_ui.R index 1123640e..8301309a 100644 --- a/R/landing_page_ui.R +++ b/R/landing_page_ui.R @@ -37,20 +37,6 @@ landing_page_ui <- function(i18n) { div( class = "container my-5", - # Introduction text - # div( - # class = "row mb-5", - # div( - # class = "col-12 text-center", - # p( - # class = "lead", - # i18n$t("Start with FreesearchR for basic data evaluation and analysis."), - # i18n$t("When you need more advanced tools, you'll be better prepared to use R directly."), - # style = "font-size: 1.2rem; color: #555;" - # ) - # ) - # ), - # Core Features Section h2(i18n$t("Core Features"), class = "text-center mb-4", style = "color: #1E4A8F; font-weight: 600;"), @@ -68,7 +54,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("file-import") + phosphoricons::ph("folder-simple-plus", weight = "bold") + # fa("file-import") ), h4(i18n$t("Import Data"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -89,7 +76,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("pen-to-square") + phosphoricons::ph("note-pencil", weight = "bold") + # fa("pen-to-square") ), h4(i18n$t("Data Management"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -110,7 +98,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("magnifying-glass-chart") + phosphoricons::ph("magnifying-glass", weight = "bold") + # fa("magnifying-glass-chart") ), h4(i18n$t("Descriptive Statistics"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -135,7 +124,7 @@ landing_page_ui <- function(i18n) { style = "border-left: 4px solid #8A4FFF;", div( class = "card-body", - h5(fa("chart-line"), " ", i18n$t("Data Visualization"), class = "card-title", style = "color: #2D2D42;"), + h5(phosphoricons::ph("chart-line", weight = "bold"), " ", i18n$t("Data Visualization"), class = "card-title", style = "color: #2D2D42;"), p(class = "card-text small", i18n$t("Create simple, clean plots for quick insights and overview")) ) ) @@ -147,7 +136,7 @@ landing_page_ui <- function(i18n) { style = "border-left: 4px solid #8A4FFF;", div( class = "card-body", - h5(fa("calculator"), " ", i18n$t("Regression Models"), class = "card-title", style = "color: #2D2D42;"), + h5(phosphoricons::ph("calculator", weight = "bold"), " ", i18n$t("Regression Models"), class = "card-title", style = "color: #2D2D42;"), p(class = "card-text small", i18n$t("Build simple regression models for advanced analysis")) ) ) @@ -164,7 +153,7 @@ landing_page_ui <- function(i18n) { style = "background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); border: none;", div( class = "card-body p-4", - h4(fa("download"), " ", i18n$t("Export & Learn"), class = "text-center mb-3", style = "color: #1E4A8F;"), + h4(phosphoricons::ph("book-bookmark", weight = "bold"), " ", i18n$t("Export & Learn"), class = "text-center mb-3", style = "color: #1E4A8F;"), div( class = "row text-center", div( diff --git a/R/missings-module.R b/R/missings-module.R index 003a35f4..bb247b18 100644 --- a/R/missings-module.R +++ b/R/missings-module.R @@ -19,7 +19,8 @@ data_missings_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_mis", title = "Settings", - icon = bsicons::bs_icon("gear"), + icon = phosphoricons::ph("gear"), + # icon = bsicons::bs_icon("gear"), shiny::conditionalPanel( condition = "output.missings == true", shiny::uiOutput(ns("missings_method")), @@ -36,14 +37,16 @@ data_missings_ui <- function(id, ...) { inputId = ns("act_miss"), label = i18n$t("Evaluate"), width = "100%", - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = shiny::icon("calculator"), disabled = TRUE ) ), do.call(bslib::accordion_panel, c( list( title = "Download", - icon = bsicons::bs_icon("file-earmark-arrow-down") + icon = phosphoricons::ph("download-simple") + # icon = bsicons::bs_icon("file-earmark-arrow-down") ), table_download_ui(id = ns("tbl_dwn"), title = NULL) )) diff --git a/R/plot-download-module.R b/R/plot-download-module.R index 4caf94bf..ac1d58a5 100644 --- a/R/plot-download-module.R +++ b/R/plot-download-module.R @@ -39,7 +39,8 @@ plot_download_ui <- regression_ui <- function(id, ...) { shiny::downloadButton( outputId = ns("download_plot"), label = "Download plot", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) } diff --git a/R/redcap_read_shiny_module.R b/R/redcap_read_shiny_module.R index 810cab0c..bb704325 100644 --- a/R/redcap_read_shiny_module.R +++ b/R/redcap_read_shiny_module.R @@ -43,7 +43,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shiny::actionButton( inputId = ns("data_connect"), label = i18n$t("Connect"), - icon = shiny::icon("link", lib = "glyphicon"), + icon = phosphoricons::ph("link",weight = "bold"), + # icon = shiny::icon("link", lib = "glyphicon"), width = "100%", disabled = TRUE ), @@ -99,7 +100,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shinyWidgets::dropMenu( shiny::actionButton( inputId = ns("dropdown_params"), - label = shiny::icon("filter"), + label = phosphoricons::ph("funnel",weight = "bold"), + # label = shiny::icon("filter"), width = "50px" ), filter_ui @@ -118,7 +120,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shiny::actionButton( inputId = ns("data_import"), label = i18n$t("Import"), - icon = shiny::icon("download", lib = "glyphicon"), + icon = phosphoricons::ph("download-simple",weight = "bold"), + # icon = shiny::icon("download", lib = "glyphicon"), width = "100%", disabled = TRUE ), diff --git a/R/regression-module.R b/R/regression-module.R index d569bd54..c8a0f20d 100644 --- a/R/regression-module.R +++ b/R/regression-module.R @@ -57,7 +57,8 @@ regression_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_reg", title = i18n$t("Regression"), - icon = bsicons::bs_icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = bsicons::bs_icon("calculator"), shiny::uiOutput(outputId = ns("outcome_var")), # shiny::selectInput( # inputId = "design", @@ -91,7 +92,8 @@ regression_ui <- function(id, ...) { bslib::input_task_button( id = ns("load"), label = i18n$t("Analyse"), - icon = bsicons::bs_icon("pencil"), + icon = phosphoricons::ph("math-operations"), + # icon = bsicons::bs_icon("pencil"), label_busy = i18n$t("Working..."), icon_busy = fontawesome::fa_i("arrows-rotate", class = "fa-spin", @@ -136,7 +138,8 @@ regression_ui <- function(id, ...) { list( value = "acc_pan_coef_plot", title = "Coefficients plot", - icon = bsicons::bs_icon("bar-chart-steps"), + icon = phosphoricons::ph("chart-bar-horizontal"), + # icon = bsicons::bs_icon("bar-chart-steps"), shiny::tags$br(), shiny::uiOutput(outputId = ns("plot_model")) ), @@ -179,7 +182,8 @@ regression_ui <- function(id, ...) { shiny::downloadButton( outputId = ns("download_plot"), label = i18n$t("Download plot"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ) @@ -200,7 +204,8 @@ regression_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_checks", title = "Checks", - icon = bsicons::bs_icon("clipboard-check"), + icon = phosphoricons::ph("checks"), + # icon = bsicons::bs_icon("clipboard-check"), shiny::uiOutput(outputId = ns("plot_checks")) ) ) diff --git a/R/table-download-module.R b/R/table-download-module.R index baa566fa..aebbb98d 100644 --- a/R/table-download-module.R +++ b/R/table-download-module.R @@ -37,7 +37,8 @@ table_download_server <- function(id, data, file_name = "table", ...) { shiny::downloadButton( outputId = ns("act_table"), label = i18n$t("Download table"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) } else { # Return NULL to show nothing diff --git a/R/ui_elements.R b/R/ui_elements.R index 96175376..2cd23878 100644 --- a/R/ui_elements.R +++ b/R/ui_elements.R @@ -15,7 +15,8 @@ ui_elements <- function(selection) { "home" = bslib::nav_panel( title = "FreesearchR", # title = shiny::div(htmltools::img(src="FreesearchR-logo-white-nobg-h80.png")), - icon = shiny::icon("house"), + icon = phosphoricons::ph("house", weight = "bold"), + # icon = shiny::icon("house"), shiny::fluidRow( # "The browser language is", # textOutput("your_lang"), @@ -45,7 +46,8 @@ ui_elements <- function(selection) { ############################################################################## "import" = bslib::nav_panel( title = i18n$t("Get started"), - icon = shiny::icon("play"), + icon = phosphoricons::ph("play", weight = "bold"), + # icon = shiny::icon("play"), value = "nav_import", shiny::fluidRow( shiny::column(width = 2), @@ -122,7 +124,8 @@ ui_elements <- function(selection) { inputId = "modal_initial_view", label = i18n$t("Quick overview"), width = "100%", - icon = shiny::icon("binoculars"), + icon = phosphoricons::ph("binoculars"), + # icon = shiny::icon("binoculars"), disabled = FALSE ), shiny::br(), @@ -166,7 +169,8 @@ ui_elements <- function(selection) { inputId = "act_start", label = i18n$t("Let's begin!"), width = "100%", - icon = shiny::icon("play"), + icon = phosphoricons::ph("play"), + # icon = shiny::icon("play"), disabled = TRUE ), shiny::br(), @@ -185,11 +189,13 @@ ui_elements <- function(selection) { ############################################################################## "prepare" = bslib::nav_menu( title = i18n$t("Prepare"), - icon = shiny::icon("pen-to-square"), + icon = phosphoricons::ph("note-pencil", weight = "bold"), + # icon = shiny::icon("pen-to-square"), value = "nav_prepare", bslib::nav_panel( title = i18n$t("Overview and filter"), - icon = shiny::icon("eye"), + icon = phosphoricons::ph("eye"), + # icon = shiny::icon("eye"), value = "nav_prepare_overview", tags$h3(i18n$t("Overview and filtering")), fluidRow( @@ -264,7 +270,8 @@ ui_elements <- function(selection) { ), bslib::nav_panel( title = i18n$t("Edit and create data"), - icon = shiny::icon("file-pen"), + icon = phosphoricons::ph("pencil-line"), + # icon = shiny::icon("file-pen"), tags$h3(i18n$t("Subset, rename and convert variables")), fluidRow(shiny::column( width = 9, shiny::tags$p( @@ -293,13 +300,13 @@ ui_elements <- function(selection) { width = 3, shiny::actionButton( inputId = "modal_update", - label = i18n$t("Modify factor levels"), + label = i18n$t("Modify factor"), width = "100%" ), shiny::tags$br(), - shiny::helpText( - i18n$t("Reorder or rename the levels of factor/categorical variables.") - ), + shiny::helpText(i18n$t( + "Modify the levels of factor/categorical variables." + )), shiny::tags$br(), shiny::tags$br() ), @@ -312,9 +319,7 @@ ui_elements <- function(selection) { ), shiny::tags$br(), shiny::helpText( - i18n$t( - "Create factor/categorical variable from a continous variable (number/date/time)." - ) + i18n$t("Create factor/categorical variable from other variables.") ), shiny::tags$br(), shiny::tags$br() @@ -391,14 +396,16 @@ ui_elements <- function(selection) { "describe" = bslib::nav_menu( title = i18n$t("Evaluate"), - icon = shiny::icon("magnifying-glass-chart"), + icon = phosphoricons::ph("magnifying-glass", weight = "bold"), + # icon = shiny::icon("magnifying-glass-chart"), value = "nav_describe", # id = "navdescribe", # bslib::navset_bar( # title = "", bslib::nav_panel( title = i18n$t("Characteristics"), - icon = bsicons::bs_icon("table"), + icon = phosphoricons::ph("table"), + # icon = bsicons::bs_icon("table"), bslib::layout_sidebar( sidebar = bslib::sidebar( shiny::uiOutput(outputId = "data_info_nochar", inline = TRUE), @@ -410,7 +417,8 @@ ui_elements <- function(selection) { open = TRUE, value = "acc_pan_chars", title = "Settings", - icon = bsicons::bs_icon("table"), + icon = phosphoricons::ph("table"), + # icon = bsicons::bs_icon("table"), # vectorSelectInput( # inputId = "baseline_theme", # selected = "none", @@ -452,7 +460,8 @@ ui_elements <- function(selection) { inputId = "act_eval", label = i18n$t("Evaluate"), width = "100%", - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = shiny::icon("calculator"), disabled = TRUE ), shiny::helpText(i18n$t( @@ -466,7 +475,8 @@ ui_elements <- function(selection) { ), bslib::nav_panel( title = i18n$t("Correlations"), - icon = bsicons::bs_icon("bounding-box"), + icon = phosphoricons::ph("graph"), + # icon = bsicons::bs_icon("bounding-box"), bslib::layout_sidebar( sidebar = bslib::sidebar( # shiny::uiOutput(outputId = "data_info_nochar", inline = TRUE), @@ -507,7 +517,8 @@ ui_elements <- function(selection) { do.call(bslib::nav_panel, c( list( title = i18n$t("Missings"), - icon = bsicons::bs_icon("x-circle") + icon = phosphoricons::ph("placeholder") + # icon = bsicons::bs_icon("x-circle") ), data_missings_ui(id = "missingness", validation_ui("validation_mcar")) )) @@ -522,7 +533,8 @@ ui_elements <- function(selection) { c( list( title = i18n$t("Visuals"), - icon = shiny::icon("chart-line"), + icon = phosphoricons::ph("chart-line", weight = "bold"), + # icon = shiny::icon("chart-line"), value = "nav_visuals" ), data_visuals_ui("visuals") @@ -543,7 +555,8 @@ ui_elements <- function(selection) { "analyze" = bslib::nav_panel( title = i18n$t("Regression"), - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator", weight = "bold"), + # icon = shiny::icon("calculator"), value = "nav_analyses", do.call(bslib::navset_card_tab, regression_ui("regression")) ), @@ -555,7 +568,8 @@ ui_elements <- function(selection) { "download" = bslib::nav_panel( title = i18n$t("Download"), - icon = shiny::icon("download"), + icon = phosphoricons::ph("download-simple", weight = "bold"), + # icon = shiny::icon("download"), value = "nav_download", shiny::fluidRow( shiny::column(width = 2), @@ -591,7 +605,8 @@ ui_elements <- function(selection) { shiny::downloadButton( outputId = "report", label = "Download report", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ), shiny::br() # shiny::helpText("If choosing to output to MS Word, please note, that when opening the document, two errors will pop-up. Choose to repair and choose not to update references. The issue is being worked on. You can always choose LibreOffice instead."), @@ -621,7 +636,8 @@ ui_elements <- function(selection) { shiny::downloadButton( outputId = "data_modified", label = "Download data", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ), diff --git a/R/update-factor-ext.R b/R/update-factor-ext.R index 7f3380cd..e8699886 100644 --- a/R/update-factor-ext.R +++ b/R/update-factor-ext.R @@ -44,7 +44,7 @@ update_factor_ui <- function(id) { actionButton( disabled = TRUE, inputId = ns("drop_levels"), - label = tagList(phosphoricons::ph("sort-ascending"), i18n$t("Drop empty")), + label = tagList(phosphoricons::ph("trash"), i18n$t("Drop empty")), class = "btn-outline-primary mb-3", width = "100%" ) From 0d9ad7457edc8d2baa37ef8c153d7863d1203aaf Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 1 Apr 2026 23:42:39 +0200 Subject: [PATCH 2/2] version 26.4.1 incomming --- CITATION.cff | 2 +- DESCRIPTION | 2 +- NEWS.md | 4 ++++ R/app_version.R | 2 +- R/hosted_version.R | 2 +- R/sysdata.rda | Bin 2770 -> 2692 bytes SESSION.md | 16 ++++------------ inst/translations/translation_da.csv | 5 ++--- inst/translations/translation_sw.csv | 5 ++--- 9 files changed, 16 insertions(+), 22 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index ae7ae538..8629fb7c 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -8,7 +8,7 @@ message: 'To cite package "FreesearchR" in publications use:' type: software license: AGPL-3.0-or-later title: 'FreesearchR: Easy data analysis for clinicians' -version: 26.3.6 +version: 26.4.1 doi: 10.5281/zenodo.14527429 identifiers: - type: url diff --git a/DESCRIPTION b/DESCRIPTION index 23174866..89673630 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: FreesearchR Title: Easy data analysis for clinicians -Version: 26.3.6 +Version: 26.4.1 Authors@R: c( person("Andreas Gammelgaard", "Damsbo",email="agdamsbo@clin.au.dk", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7559-1154")), diff --git a/NEWS.md b/NEWS.md index 04fa782b..fbff9355 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# FreesearchR 26.4.1 + +Minor adjustments and bug fixes including streamlining icon use to only use phosphoricons across the app. + # FreesearchR 26.3.6 *FIX* Plot single variable in Likert plot. diff --git a/R/app_version.R b/R/app_version.R index ac06a8a2..4f474ec7 100644 --- a/R/app_version.R +++ b/R/app_version.R @@ -1 +1 @@ -app_version <- function()'26.3.6' +app_version <- function()'26.4.1' diff --git a/R/hosted_version.R b/R/hosted_version.R index f7e99a89..608d59ed 100644 --- a/R/hosted_version.R +++ b/R/hosted_version.R @@ -1 +1 @@ -hosted_version <- function()'v26.3.6-260331' +hosted_version <- function()'v26.4.1-260401' diff --git a/R/sysdata.rda b/R/sysdata.rda index be267dbfe3b40f25930e615ab562574760211f60..443516d108cdaf03bb65689d76c67b6317ae4443 100644 GIT binary patch literal 2692 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 yG;RZkwy8lYGJ&rXD|=Sga&`e){qN literal 2770 zcmV;@3N7_QT4*^jL0KkKSFs-&^=8&O$Mp@ z0HSJ7BzjDyZ4)Wv$e1Unz>NS641-LK3^hEO5>x;NgFpZSKmY&$000tcA{0~8O+;zr zfY4^37=R2w10x8?4KWg#4^!0BMn*tr0MGyp0001KrXT?lku*&6)yuId4LASyB=_+6AuW8oP|xcXdv47x%ra+Ev<i zQvIBGa3RY~eC)tU1575pz9iOlkWIR%D1eZNpZ?HH+Y7X1EUZD4cYPcRMyh7&=8Oby zLJ%(RH5AG<3ohFc3HPTq2m%;eG+(TzPUmRHY%t>4wJDpEGPdq)i{W}aRqAkA zFwcK9*5^4T%>#E^5u;|!)>UpKZZ=U6z^3mX!$mowVx^kunN&$xC`+;g1Q!icOCdxo z78LMta|@0$4wWl%^KAxM96lyoO;I@GGOTFDTU(ijx`#(|%Ay-7La|Lx4U&;llDs=9 zgrs+8xGs>%2IU&^gXqT`Y~DdH3rpN+Fzj17M9ZfPyYQxnJs_}jly`L?isOI;hy;Q% zBA6jaf=H#Z-c^?E+}M|Z-hd*V06|6opb#V^H>fHi)l~!$L-zm?*?^!G^kogNuqZm& z_zhg50A+$9ubSJPeEBZn^=rXUbe&Qj7K~UTiYXYyQYyuYixoiyMPyY}6^M~kQAROE z7AQp^s|AWGF%VP{Po3ZNI?o>!RP#?&85Hx{!fnm=d9CwthK>q=vztnaB6GW!T)ef- zlWba8?#rEPjwNt-9x2OFb)}kiwq0#OGG?tYhOzRF-R%>mqAyQ8aPLkfOzW)1fRYISFvE2jxw5W6Wi^?+@C+NHD?*|HM+t*7D;X;i zr5WB$-BJT@buz+YTGmCA5HmMsLm8GauQGfsiEQ%o#1!V{fpe~I=lMXfRXDy7GJ#}#B4!Y$yoEd4gv}?RpZa`p? z3aCVwB)Eebv?MdYUNh4?tL14I(=lWUO zDb`lpGKq%p#hNJw)fQq~LaQZ24(Z(zQ%u$n)ctOZkhi}vCPY~jCMG6Y9zWxw1qZl* zo<_hJ$O@o>6SK18CKRH;ve0L-VTS)E%{}QVz9jTezF#k&+9r!yH7i$g5H29(u&kph zB36hX;M4|~B=JCG5_tS6dR3Ly8r4x{+7!TGf#^U3f&zyHNoy7pg2`kpSz#riWF$Lm z3n3*vZ==1EEGGPU+{0GD#%kqK+7@5Gm<$CJbk-q7wiMDU;-`ZGu^4|!b%;MU!<;&L zO)gS>FDDXlwuLrs;*60NAwha?xtEu@cz{8ld9LR76-lUu(mjIP*6eQ7+KE@QqDz?O=DNbZ@I_qf3JcsiaL=Tj*WuTeh_*s3oPSq*70>_E8r{CPxN|`BtfB6wXa4nViiCJwfGJ`wAJvSX*hBIXnjrcZs`lv7)Jzx*sDK|E69S%B8u@V81tZZU2S0f0`#OrywzfhCS9<# zMq}aOVzv~6xxGBJb5&z^sWm9k-Y~uP&t?d?j3_R2?8u*}Y8Wz;mXcZ{pneLQ(H#rT54u1u)rpMklL!|oAUNJThuuP7nK-MI0S1*HI?|`#@}U_O zU8SL+C~g)D4$K@aoFUWn9hAOK9Hf*BAz5o9etK)UyUW$~@aw)e5YJb^&^%qt#-oLf zm^kt=9c|^_q9!zo5@K%on%`PtXvu8W;!&31NID(FlVDN!&(pvznT@o@PT=mbPf%Ew z%=-{^Tfjh-`1CN)Pj?6Mglc3z(GI^OXrqq$suD2{UEx`g7Wt~)#JZ)oDT!26o6R(0 zpO)|3=4`E7^zNB_$e{6UjOPZV-ToPS1nLS!AZ~q2pq{E16M%RixZT3sa}Zm5wku%Y zmT(Y(ia6tHC>)3p8%EZ-V~MZHpJ7lH$PmwFiH0xfSu7~i1x7~8<8c_4GKzuOL3i0V-#dn!r#PDSAg4y#2y zziREl(6?y!(Mx7sx9OFL0{3vVM)DlKnL9%5D+ee+G>= z$H1JWFxRszY3mYmMLYXFb7^F<)JqZz`ua6?z=hV54x+#Hn5OL2_C)g4aeav69%@X{w{4{cE&q zcs_=_LR#;LLtIP29#r^)$@hmZkDGu(AT=wvrQp%(At-)jcV9-Yf<-C8m}rY z3{19Hyo47sA`z|7$sXHSUd5{%89x3}?^XiU5H==!mO91s^Tv&QcI)SzWoZ)5TYxFWnY(!x>;%l@&?I)o^rat1&BycBZSuq&U?$!m?CJHm