From 9289ffe5ca621c80bd007f8a1aaec4d62851941e Mon Sep 17 00:00:00 2001 From: Hugo Date: Wed, 7 Nov 2018 11:22:12 +0100 Subject: [PATCH 01/24] Update HEAD template to use PNG favicons instead of ICO --- inst/templates/head.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inst/templates/head.html b/inst/templates/head.html index 4d229eb12..dbe7ef446 100644 --- a/inst/templates/head.html +++ b/inst/templates/head.html @@ -4,7 +4,9 @@ {{{pagetitle}}} • {{#site}}{{title}}{{/site}} - + + +" From 73d731163423510042d1214db492b2a03ddb28ed Mon Sep 17 00:00:00 2001 From: Hugo Date: Fri, 9 Nov 2018 14:56:13 +0100 Subject: [PATCH 02/24] Generate favicon using realfavicongenerator API --- R/build-logo.R | 39 +++++++++++++++++++++--------- inst/templates/config-favicon.json | 25 +++++++++++++++++++ 2 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 inst/templates/config-favicon.json diff --git a/R/build-logo.R b/R/build-logo.R index 00eb8524f..38d53046b 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -7,19 +7,36 @@ build_logo <- function(pkg = ".") { file_copy_to(pkg, logo_path, from_dir = path_dir(logo_path)) - if (!requireNamespace("magick", quietly = TRUE)) { - message("magick not available, using default pkgdown favicon.ico") + cat_line("Creating ", dst_path("favicon.ico")) - if (!file_exists(path(pkg$dst_path, "favicon.ico"))) { - file_copy(path_pkgdown("assets", "favicon.ico"), pkg$dst_path) - } - return() - } + logo_string <- readBin(logo_path, what = "raw", n = 99999) %>% + openssl::base64_encode() - cat_line("Creating ", dst_path("favicon.ico")) - magick::image_read(logo_path) %>% - magick::image_scale("32x32") %>% - magick::image_write(path(pkg$dst_path, "favicon.ico"), format = "png") + template <- find_template("config", "favicon", ext = ".json") + + data <- list( + url = pkg$meta$url, + logo_string = logo_string + ) + + json_favicon <- render_template(template, data) + + request <- httr::POST("https://realfavicongenerator.net/api/favicon", + body = json_favicon, encode = "json") + + api_answer <- httr::content(request) + + if (api_answer$favicon_generation_result$result$status == "success") { + + result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url) + + writeBin(httr::content(result), path(pkg$dst_path, "favicon_set.zip")) + + unzip(path(pkg$dst_path, "favicon_set.zip"), exdir = pkg$dst_path) + + unlink(path(pkg$dst_path, "favicon_set.zip")) + + } } diff --git a/inst/templates/config-favicon.json b/inst/templates/config-favicon.json new file mode 100644 index 000000000..7ed45daa5 --- /dev/null +++ b/inst/templates/config-favicon.json @@ -0,0 +1,25 @@ +{ + "favicon_generation": { + "api_key": "87d5cd739b05c00416c4a19cd14a8bb5632ea563", + "master_picture": { + "type": "inline", + "content": "{{logo_string}}" + }, + "files_location": { + "type": "path", + "path": "{{url}}" + }, + "favicon_design": { + "desktop_browser": {}, + "ios": { + "picture_aspect": "no_change", + "assets": { + "ios6_and_prior_icons": false, + "ios7_and_later_icons": true, + "precomposed_icons": false, + "declare_only_default_icon": true + } + } + }, + } +} From 85db937533f96dcab67657cad819674448a8279f Mon Sep 17 00:00:00 2001 From: Hugo Gruson Date: Sun, 11 Nov 2018 12:25:39 +0100 Subject: [PATCH 03/24] Update changelog with favicon changes --- NEWS.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NEWS.md b/NEWS.md index 25e17b7d4..89d0a10b0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,11 @@ # pkgdown 1.1.0.9000 +* New function `build_favicon()` creates high resolution favicons, which are + better suited for modern web usage (e.g. retina display screens, desktop + shortcuts, etc.). For this, it uses the + API. As a side effect, this change also removes the dependency to the + magick package (#883). + * Navbar version now gets class "version" so you can more easily control the display if you want (#680). From 728031dadf6a535a1214abc15ca3016f809cfd12 Mon Sep 17 00:00:00 2001 From: Hugo Gruson Date: Sun, 11 Nov 2018 17:57:27 +0100 Subject: [PATCH 04/24] Remove dependency to magick --- DESCRIPTION | 1 - 1 file changed, 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2ca7d0075..2c9396308 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -54,7 +54,6 @@ Suggests: jsonlite, knitr, leaflet, - magick, testthat, rticles VignetteBuilder: knitr From d348b2cae7d2fb0d10e24f6a4c612bdd52f57566 Mon Sep 17 00:00:00 2001 From: Hugo Gruson Date: Sun, 11 Nov 2018 18:00:03 +0100 Subject: [PATCH 05/24] Read an exact number of bits instead of using 99999 --- R/build-logo.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/build-logo.R b/R/build-logo.R index 38d53046b..3b7627c67 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -9,7 +9,7 @@ build_logo <- function(pkg = ".") { cat_line("Creating ", dst_path("favicon.ico")) - logo_string <- readBin(logo_path, what = "raw", n = 99999) %>% + logo_string <- readBin(logo_path, what = "raw", n = fs::file_info(logo_path)$size) %>% openssl::base64_encode() template <- find_template("config", "favicon", ext = ".json") From 923de17114656c1fdd728af6f0a209d19a47f431 Mon Sep 17 00:00:00 2001 From: Hugo Gruson Date: Sun, 11 Nov 2018 18:01:02 +0100 Subject: [PATCH 06/24] Use identical instead of == --- R/build-logo.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/build-logo.R b/R/build-logo.R index 3b7627c67..f22417a96 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -26,7 +26,7 @@ build_logo <- function(pkg = ".") { api_answer <- httr::content(request) - if (api_answer$favicon_generation_result$result$status == "success") { + if (identical(api_answer$favicon_generation_result$result$status, "success")) { result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url) From 6639bf1835bb7aae7ee653fc06d12825483d86dc Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 12 Nov 2018 16:01:53 +0100 Subject: [PATCH 07/24] Delete default favicon.ico --- inst/assets/favicon.ico | Bin 1408 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 inst/assets/favicon.ico diff --git a/inst/assets/favicon.ico b/inst/assets/favicon.ico deleted file mode 100644 index 19c6431bc8c9ea5d80d6847b781253eacc4d571f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#Mv>2~2MaLa!rEy`aR9TL84#CABECEH%ZgC_h&L>}jh^+-@<)X&zK> z3U0Sp;MA)Rbc{YIYLTKECIn1BASOKF0y*%cpPC0u??u3box0^XD3=`z@Ck8MmRFDz z6;qOvmk<&C|Np;?gyfemU*x2uCry|jE-WG{C?qc}BPAv-Ehhf(;lr0NUp{>B;N81- zB}GNaiAfE0_3z)kdj$k9UnV#2QI=DX6cG*d^?UyOxul3#OH-4$kZ^uZ?)&%e@7}#z zTv#M0EmKuqQBhJVB`W^l{{6Ra---zdfBN__BQ;fCT6)@)sT2Dr0G)lld&e}OkDN+^ z{DOg8$^e6lm;k8Ixa8^L7*cWT&E(@^O$Gw4>Ow-Zf?VG0{eDmT|Nmg6Ig4F7@?w9K zo!pzAX3QU>cD3?$V!gs2g}ZE_#eZ4d6)r8E!6309@nDZ&hYKtJZ$~HH&uSBH|LUw= znm${x(L<}bmX)=;LH3+R(_7u9%b~qT4^DZ>SR^c0m*W0V_}eGe|DU5B=lX|;EZ8&A zR4?pY_4_BAuIWhjU)Ge7S$l7aa@UM}$seWPes#sFXob~$=a{ZqRK@lA*4tf=FJ*MjoWGlanZZEI@xAS;)cYXsdAj Date: Mon, 12 Nov 2018 16:23:37 +0100 Subject: [PATCH 08/24] Use list instead of template for json request --- R/build-logo.R | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/R/build-logo.R b/R/build-logo.R index f22417a96..1e0b6226c 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -9,28 +9,41 @@ build_logo <- function(pkg = ".") { cat_line("Creating ", dst_path("favicon.ico")) - logo_string <- readBin(logo_path, what = "raw", n = fs::file_info(logo_path)$size) %>% - openssl::base64_encode() - - template <- find_template("config", "favicon", ext = ".json") - - data <- list( - url = pkg$meta$url, - logo_string = logo_string + logo <- readBin(logo_path, what = "raw", n = fs::file_info(logo_path)$size) + + logo_base64 <- openssl::base64_encode(logo) + + json_request <- list( + "favicon_generation" = list( + "api_key" = "87d5cd739b05c00416c4a19cd14a8bb5632ea563", + "master_picture" = list( + "type"= "inline", + "content"= logo_base64 + ), + "favicon_design" = list( + "desktop_browser" = list(), + "ios" = list( + "picture_aspect" = "no_change", + "assets" = list( + "ios6_and_prior_icons" = FALSE, + "ios7_and_later_icons" = TRUE, + "precomposed_icons" = FALSE, + "declare_only_default_icon" = TRUE + ) + ) + ) + ) ) - json_favicon <- render_template(template, data) - request <- httr::POST("https://realfavicongenerator.net/api/favicon", - body = json_favicon, encode = "json") + body = json_request, encode = "json") api_answer <- httr::content(request) if (identical(api_answer$favicon_generation_result$result$status, "success")) { - result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url) - - writeBin(httr::content(result), path(pkg$dst_path, "favicon_set.zip")) + result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url, + httr::write_disk(path(pkg$dst_path, "favicon_set.zip"), overwrite = TRUE)) unzip(path(pkg$dst_path, "favicon_set.zip"), exdir = pkg$dst_path) From 5305e0d00fba4ec3154d8feb1333a53d90ac22be Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 12 Nov 2018 16:26:55 +0100 Subject: [PATCH 09/24] Remove config-favicon.json template --- inst/templates/config-favicon.json | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 inst/templates/config-favicon.json diff --git a/inst/templates/config-favicon.json b/inst/templates/config-favicon.json deleted file mode 100644 index 7ed45daa5..000000000 --- a/inst/templates/config-favicon.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "favicon_generation": { - "api_key": "87d5cd739b05c00416c4a19cd14a8bb5632ea563", - "master_picture": { - "type": "inline", - "content": "{{logo_string}}" - }, - "files_location": { - "type": "path", - "path": "{{url}}" - }, - "favicon_design": { - "desktop_browser": {}, - "ios": { - "picture_aspect": "no_change", - "assets": { - "ios6_and_prior_icons": false, - "ios7_and_later_icons": true, - "precomposed_icons": false, - "declare_only_default_icon": true - } - } - }, - } -} From b88e3b3085b0f0229cac33e1f691c3cc38d4826d Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 12 Nov 2018 16:41:35 +0100 Subject: [PATCH 10/24] Use utils::unzip instead of unzip --- R/build-logo.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/build-logo.R b/R/build-logo.R index 1e0b6226c..a69c6336e 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -45,7 +45,7 @@ build_logo <- function(pkg = ".") { result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url, httr::write_disk(path(pkg$dst_path, "favicon_set.zip"), overwrite = TRUE)) - unzip(path(pkg$dst_path, "favicon_set.zip"), exdir = pkg$dst_path) + utils::unzip(path(pkg$dst_path, "favicon_set.zip"), exdir = pkg$dst_path) unlink(path(pkg$dst_path, "favicon_set.zip")) From 76c56a1d69a3ae6eb2da03de7d907bb5986a0dee Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 12 Nov 2018 17:27:06 +0100 Subject: [PATCH 11/24] Add timeout and http_error check --- R/build-logo.R | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/R/build-logo.R b/R/build-logo.R index a69c6336e..e9d25bcca 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -35,8 +35,16 @@ build_logo <- function(pkg = ".") { ) ) + # It may take some time to generate the whole favicon set so we need to set + # a high timeout value. request <- httr::POST("https://realfavicongenerator.net/api/favicon", - body = json_request, encode = "json") + body = json_request, encode = "json", + httr::timeout(10000)) + + if (httr::http_error(request)) { + stop("The API could not be reached. Please check your internet connection ", + "or try again later.") + } api_answer <- httr::content(request) From 4984fd9c877e0f0ce2c4bf41f60db4c62cc788d8 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 11:15:54 +0100 Subject: [PATCH 12/24] Create build_favicon() function --- R/build-logo.R | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/R/build-logo.R b/R/build-logo.R index e9d25bcca..1599c350d 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -1,24 +1,36 @@ build_logo <- function(pkg = ".") { + pkg <- as_pkgdown(pkg) - logo_path <- find_logo(pkg$src_path) - if (is.null(logo_path)) + if (!dir.exists(path(pkg$src_path, "pkgdown", "favicon")) { return() + } + + dir_copy_to(pkg, path(pkg$src_path, "pkgdown", "favicon"), pkg$dst_path) - file_copy_to(pkg, logo_path, from_dir = path_dir(logo_path)) +} - cat_line("Creating ", dst_path("favicon.ico")) +build_favicon <- function(pkg = ".") { - logo <- readBin(logo_path, what = "raw", n = fs::file_info(logo_path)$size) + pkg <- as_pkgdown(pkg) - logo_base64 <- openssl::base64_encode(logo) + logo_path <- find_logo(pkg$src_path) + + if (is.null(logo_path)) { + stop("Package logo could not be found. Aborting favicon creation.", + call. = FALSE) + } + + message("Creating favicon set.") + + logo <- readBin(logo_path, what = "raw", n = fs::file_info(logo_path)$size) json_request <- list( "favicon_generation" = list( "api_key" = "87d5cd739b05c00416c4a19cd14a8bb5632ea563", "master_picture" = list( "type"= "inline", - "content"= logo_base64 + "content"= openssl::base64_encode(logo) ), "favicon_design" = list( "desktop_browser" = list(), @@ -39,25 +51,32 @@ build_logo <- function(pkg = ".") { # a high timeout value. request <- httr::POST("https://realfavicongenerator.net/api/favicon", body = json_request, encode = "json", - httr::timeout(10000)) + httr::timeout(10000) + ) if (httr::http_error(request)) { stop("The API could not be reached. Please check your internet connection ", - "or try again later.") + "or try again later.", + call. = FALSE + ) } api_answer <- httr::content(request) if (identical(api_answer$favicon_generation_result$result$status, "success")) { + tmp <- tempfile() + result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url, - httr::write_disk(path(pkg$dst_path, "favicon_set.zip"), overwrite = TRUE)) + httr::write_disk(tmp) + ) - utils::unzip(path(pkg$dst_path, "favicon_set.zip"), exdir = pkg$dst_path) + utils::unzip(tmp, exdir = path(pkg$src_path, "pkgdown", "favicon")) - unlink(path(pkg$dst_path, "favicon_set.zip")) + unlink(tmp) } + } From 93f1b236ea2780d5970006d46420c6f4c204e197 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 11:17:53 +0100 Subject: [PATCH 13/24] Fix API failure check --- R/build-logo.R | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/R/build-logo.R b/R/build-logo.R index 1599c350d..c7023e4e3 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -63,19 +63,22 @@ build_favicon <- function(pkg = ".") { api_answer <- httr::content(request) - if (identical(api_answer$favicon_generation_result$result$status, "success")) { - - tmp <- tempfile() + if (!identical(api_answer$favicon_generation_result$result$status, "success")) { + stop("API request failed: please check that you are using supported file ", + "formats", + call. = FALSE + ) + } - result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url, - httr::write_disk(tmp) - ) + tmp <- tempfile() - utils::unzip(tmp, exdir = path(pkg$src_path, "pkgdown", "favicon")) + result <- httr::GET(api_answer$favicon_generation_result$favicon$package_url, + httr::write_disk(tmp) + ) - unlink(tmp) + utils::unzip(tmp, exdir = path(pkg$src_path, "pkgdown", "favicon")) - } + unlink(tmp) } From cdcee75e207edbaee30bee8ef1eab65cc83f75e8 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 11:23:08 +0100 Subject: [PATCH 14/24] Use fs instead of base for dir existence test --- R/build-logo.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/build-logo.R b/R/build-logo.R index c7023e4e3..f080d0d7a 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -2,7 +2,7 @@ build_logo <- function(pkg = ".") { pkg <- as_pkgdown(pkg) - if (!dir.exists(path(pkg$src_path, "pkgdown", "favicon")) { + if (!dir_exists(path(pkg$src_path, "pkgdown", "favicon")) { return() } From 05c51bd6b67e2784440176caef7110199b5efa1c Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 11:26:43 +0100 Subject: [PATCH 15/24] Update find-logo to find and prioritize svg icons --- R/build-logo.R | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/R/build-logo.R b/R/build-logo.R index f080d0d7a..48cf4358e 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -84,6 +84,15 @@ build_favicon <- function(pkg = ".") { find_logo <- function(path) { + + logo_path <- path(path, "logo.svg") + if (file_exists(logo_path)) + return(logo_path) + + logo_path <- path(path, "man", "figures", "logo.svg") + if (file_exists(logo_path)) + return(logo_path) + logo_path <- path(path, "logo.png") if (file_exists(logo_path)) return(logo_path) From 6cd21df24c52be3c407fbe88d2920c3ea1482ab8 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 11:42:45 +0100 Subject: [PATCH 16/24] Add missing parenthesis --- R/build-logo.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/build-logo.R b/R/build-logo.R index 48cf4358e..55d99f1e8 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -2,7 +2,7 @@ build_logo <- function(pkg = ".") { pkg <- as_pkgdown(pkg) - if (!dir_exists(path(pkg$src_path, "pkgdown", "favicon")) { + if (!dir_exists(path(pkg$src_path, "pkgdown", "favicon"))) { return() } From fdb0f29322aff269703ef18e120f9cb46e9f140b Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 11:46:01 +0100 Subject: [PATCH 17/24] Remove old favicon.ico --- docs/favicon.ico | Bin 5102 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/favicon.ico diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index 9f608521cc2a79450517181e8fda778cedf93b57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5102 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 NO*LKBnn%cp{{hrFoM!+4 From 2c7f7d516dbb89ba41a0d76e8a0433c5d42904f1 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 15:16:39 +0100 Subject: [PATCH 18/24] Check in API output --- pkgdown/favicon/apple-touch-icon-120x120.png | Bin 0 -> 16669 bytes pkgdown/favicon/apple-touch-icon-60x60.png | Bin 0 -> 6149 bytes pkgdown/favicon/apple-touch-icon-76x76.png | Bin 0 -> 8485 bytes pkgdown/favicon/apple-touch-icon.png | Bin 0 -> 16669 bytes pkgdown/favicon/favicon-16x16.png | Bin 0 -> 1399 bytes pkgdown/favicon/favicon-32x32.png | Bin 0 -> 2761 bytes pkgdown/favicon/favicon.ico | Bin 0 -> 15086 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pkgdown/favicon/apple-touch-icon-120x120.png create mode 100644 pkgdown/favicon/apple-touch-icon-60x60.png create mode 100644 pkgdown/favicon/apple-touch-icon-76x76.png create mode 100644 pkgdown/favicon/apple-touch-icon.png create mode 100644 pkgdown/favicon/favicon-16x16.png create mode 100644 pkgdown/favicon/favicon-32x32.png create mode 100644 pkgdown/favicon/favicon.ico diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..7822aa93a45e4d2febdad397fd3b7ae0d1a9679d GIT binary patch literal 16669 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 RoeH#q!PC{xWt~$(69Ai1I==t_ literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-60x60.png b/pkgdown/favicon/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..fd14ce492cf2654759909eead054e59bf7863e49 GIT binary patch literal 6149 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 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-76x76.png b/pkgdown/favicon/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..0f1bc7552a7fc3c8948a5c9535c4afd93cfc0d44 GIT binary patch literal 8485 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 HT7~`}-|(Bt literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon.png b/pkgdown/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7822aa93a45e4d2febdad397fd3b7ae0d1a9679d GIT binary patch literal 16669 zcmZ@Oh6*P_K;in}|7;%>!CvEp8|xE6PJx0mPV_v2f$ zGIwP%cW&mMduH!*&YlPrB^gXKVl)5%fGH;{1$%2f{`&xt-}VBZc_-f*L<_rr z4*kg(>FqnEsVqzp0Pvy*0Q`difQPq3{(As`D;NMcFaiJs(*OVhhs@uq!f!tyo5;&Z z0bc*xa@$Ih-j1NS$SF#rY@lOe0l13oR>uGUv35Br33ZRf<2LsnW^%sdHyT-AFI(8d ze5-p7!OL7CB<8#c@-SKjHF(4!Y-t2sX?8hua1%V-a1GV?Q%@>Ol}*|#`~@2;QM{a^ zv3A2zz4#C(VQK+gvykxzcjetPC*Rw466Ml0v2vx~r|si7Zsz!+L37SM&AaL|pE|Cd zeKk<-;6w|P<6+-fFxXDm+Ag=BQ-prDbTDe~`DsI~WEsVd=zZ71?v44@f&>eb{geN? z-ZZiWFZbIYi+Q#DTQCUKCFRy5k5uj3S^w^!ExW;3(z@6Ua6Q-lf$ozovBmb=gT9lK2aAVMG5~xq@xYTN0Mf}A(@B=zD&TlN)d)4^>R?0a zkSq%wwcd0Os!G9y4~Fp<5tnm) zJBc-HdhsXR`KGXBi?HXH8StXjAPmQM@p|a{55 zXkkMg)5}Y(i}rTUL2X4Dn(pp+)8Hh#c$Ut=FAQg!D+i~}2Z9JcaH+FpL782QaYje~ zxX!GT3>lTj{NiAnw{XD}1i51PmC=FZl-sM8_QFpxG1p<6mDi64YO~8fB?~qLC+|c_| z9?g@d$(NyHij(82QE6Wp1fex?x}YqL!Oy_Xb6qqDrYs|+7Gf6>fNn7U!JP9nGGo|B1>a%_ukdRR?#j6!J%3Q zJyN@*Vh~(B1y9+FZ2d#1t7|t4+LRn*7qGu z!R^x_PXD4T3J!;_VUV5Xf>WG%1a%hTQU-TlKnX=2M`rgHN*WXz@0_P=c;SwGlEq(S ze@O-L*0;ELr^>w8SFL{Cm*JyW4P1i{2Bj5;Kx%=FD#2EaCDw%FQWeIY7@g<4!5~l% zVxIcKDg&Yg6{523nF`}rBPk_rA5=fq@Lo@aG|P8^P2HEgb4Uhh3#%TFxGOHMXFI^rlg{Ly(CZ^3LNXy zEmAc)Zd@7o<1 z&g@kCEVIqNI78*`jH9n_k=FRB&N`ky8K#Oo9vVIujXv7HbRUd<%eJ*)o6Gmr#k}I+ zdXjyo4OM}@O;_vNNVUM8nxD4{of@wt0vD2fU5pheiKLuZKX8d4TUX*Fp>Xz}huD>~ zy*-b*uf^uu-8Y%*l>Lway|?oDV&g5no$#eVd{GJ)-B*vxF=kWUTl;7p_gN}JguVT{ z4G;0y%Y4@1U|oiM6_zgWXr|P_BnI>{v9f(cwt6~+k~$_Uj}8ZhLm~MnV1xL!&h|YR zq7~}t*~B{ZNz?DVr(Irns0z{j{l>-p)&TNd)nU(Lubwr&eom(^hh`m1@RVKMpk*Z# z-wqTiB|{ZQ>Tv+e(#Kl$z)d`C3sw~FBI32=4$ZIJ7l1=%?C(^ooeF?5FCNK4JF!G5{3PmMBKHMr|U%X}MoOz1@8{j(C0RYQOGIcJ)h+|M(=Y zUW#)k>b3kXzY|3nlB~v^8J{NGUqeL)ARP!$W9hmUuKcZrCtn5!89Xxq2pD;9$|dBn z&jgRV>1OfIztZ%7?5tEYxjLF58)kim`kYKkf-V+O=mt*@HCzXFv1wd;Eo(j-M9H9aCQU0K4Mq2N(J+icZICtR3{`LO!u{If_*N=87fMh}NW* z7ARp7^DIq$+PZa2gqYhl@FU)>2f%ixci8ecJ#Q)}d%MLPn$CR@p4;_VFIvEv z-5!4S$A_cWC}LAuZDG0f-$JPecpw#WV?<8|6uuo{ou|y+?vwV{Vp2&Il3^M`rVX2& z%(&|wA*ADS*Zpg4$lQoAWOa9~(Spk2sho0R*<10b zI(HtCuDpLoo&Yd^vqq_0WMniNw9nexJXzZNCCNt6>T+SI6tRW*yaRTv-#+ZQE&&5o zc0-ir5={Rl1BwtEHoKWq*1V8ZdQ`+FpRQCXOS1Win2ztk%wKwxfwfo7c4oNS=}}Hc zM>DH$Xvt2Px{Ms2TjByyCjRz8&?Sf!KZHKusRe~3&e#0*<#6};CVM#0m;UJwMJ*;i zL^VDc6i&sZuNn*3#Avg_@@>TIpWjD5Djc)6`jFiHQy=%IcnPNLG3)2=BE>`w&H%F> zmTg_93o zgEUB5OJ}vK;#9bIXoqcVR4G^etY*nFPs`zKq|Y-moj7QBehorzj6+1pkk0_A_VG6; zLBJ1*oFG;=4nh!T*aLL-(4!RL#vZbGMlhSL=-^r*`1=LRZag;hF4L_wGA zMQ`A5YRtov2Cvge`Z(*%OM|gM2fDuq>YoxpwbiGntmn!v&;9+Y_CHq0zSxT(7a=Fd z>0LSl_}ZX?EZ(ymXpzQ zBt_O>D*-esKvjgJmooExvO`&RLvLUG^jVJnD$>?0(Iht=J1YtKBUB}*`y9<7%8Wl2 z-MZgp2gE0`Y16mqGQU3bfO4UA>XjBO-?gUMuVUDAAe2&TSTUN}Aq{-?Q%1k2wb&=| z4XoR%=J|B;<^%mZKsjD2Oj&|(eXIbl)zh7*C5D%ws8l1e$@d&X zZ=kEK$W^O2AOVUh0ovH<;Q=x_ZXa=18Sn?~pR1;&mQA~T#VTWBrnN9)fe<3@xi0~~ zQa~82ikl}%oq)lG_CZ1Ml`HYs#a7+t!bmPZew*^hb7G79(HO86^bVWXm3bnIMf55q zo=Ykg_93s|cV?bRmtUEmSLp(wYw`=L@Yhr z>rHlO+yeP~l<#Jci@3k!a2*SvjhM<|cNuB1F>w)aaQfZ5dAdA&6NqZx#I2Bd+4*xd zTJgH$2S@c8D%G`XIUQsxl#5EjJ*Lt*G(zgIvIzz1YXPsh;i; z#3~kru1h^FT&=Wpsjm77OINTCbAjH~nWZcG;nE|&pE>aydrpsRB{Glq$mcb21|VHc zD|M?Ao}Hzwrg4^lSV*^H{_xg_ z5LsbL9oG<+o<{OBc$F@=)6qsDW{!hLM^X&v=;w*!J<2;as<<(-#jxVp6d6{bo0d)( zWSj0$^AmN>(cydq@#fuchNgG@hZ;6V+zyXjXkO2vOhxc$25_NfK`IE-VC)zOYQQ#s zjq4v8eguLKsyX|Jl-e3qQwhynApmqqL|+OP3<*Xgp33Cz5%aR2q7o({W}yb7BL#5m zK56C=K4gq^I?JLbq6U3C55!(EmG->14J!{F1|FM(a4!{N52Qd2eE!Xjz1!b=H(udd zh(QM=#9?zMAQ7R>1qD>;HqHKxbjIk}As|iY@iV=hh+dG{_q(f7P zL0*H7y5ReL$IPsZKwE8oE}qz#O0rgGKcqulq3~|tHVifU(4ROIHsi<(j5KW^`$R_! zoGGe-$R9c0K&?S8%AB#VjY=GNM%sL^)c9%8IWUKrKXaDq!_0}T$S)uO2FvV zG>4|0mri^R>&(Fw{Wf)0+%tG0A9abd!z%r%((hiTx}C&d3<>fl5cEVaLn#;B9@oAq zNhnPT>*mHFG`CLLlo+93C_*fi;83kz|96BKS%n}5oH$0&TD9uLq84`befL=T?u6Ao ze+uiYPuWoNGB-%f>m2ik%}M?omeF@y7`DyPiK(Y8Is}+3Optv@ANcJZy*MU9>>*uk zB`&E6C9d3SU*2C7I-&F6&3q3k5RxdQ17)l^(UK;X>79^P7#&qMjPss_T*#U*Hx#u8 zyoN$G+u-KlXN7s}hK^%~WA-;#Md_K3?riq;W#AN{(>fFiWLpb^dsu$=brl7WR*c%C zU|aCB&#U<0Ri4pUm)E@iP%Di*$Tq{Wp~ceuaeh%qyi&bWZP$FgnHP$LrTd67zwl)v zcS^EoYkje=?(N)xzPdU~QkSz0lE#|4IYa<1I#Di_Gh4248k*$*935h&vxW$E5?NSg zH6dK0XI2h?vzXnrBfnDy_X=-3xDz}gDX`OIdl2%c)H;#BZ0JaZFgegUpt22_yvoL? zdP006k&t--YeJJ=&M7wVc5FoPZ!_r#xqajr1x!+TfmadH!8uH}@=C-TL`t!J1|ES?m4l7y& zkY(Z`LS&^RawoGD7A$+XxppKgycB(~%OkOpe-THFXBNgwWCPF2B6ACsg3$p|@DQdH)?h#sAw*2PdRe+m=cDUqM1xvH6ID=pSsLZ} zRc`r;9Q?HoYEGLk>bJ2mBP$;i`&HfU*%de-6(L30TDm;C*3zO(?HU9an@!>G9Px$V zFLgBa)iWUHcSE>RW1N`JwxY0}K~LSMF;k}>?}iIO!gORNcqbl6TCq_KXBwOZbIPsD zR3ge}!tK^H_3f&-RFROY7JZKp_;_Y5Fi6tj}%lH~YK!E@1p|PtsMNAMc%b-d< z9ZQgZ+Q%UTSyXDCIo7yKMkV+(YxkUfauedhibMHP-ZBzbZyzu|)!waYd9o_Yr#1ZH z8XFn98J_WSIo#Z#*!O^f8P1PPbR){M=d;gd|9pSF69cMVkbYfXKo944*j&LL8&fiA z)$H%LL!dJCIOrA@To%R0|7+ytgyHwJJXc%4)G5^#X~CBBhVS~GIpNyH{0qwKxREt_ zSjM$+1}!n;r~9X2Wm~Nxq8JU+#+u)m&8ejx#S!#bx>+@hgsKeKaOQl*tkQEsQ~JY+G-WKy#Ds)m(<9ys8!YvYJ~Gc+{W=?a##4xm z+vrZ0b6|8FKgpXx!Z-iGAtVray4)0(5<^B93I|1f0(Wm-i`X33bMP1p)c1Kt&oWU4 z2Rf#-&=KSGfK{tvI$4v~+?US0$)t>vlV3Z&f7#&oC}O(P9L-V>Oes~>(w*pQ0Nf^*|=!dW?>u2pE};~=A$sO=m^=4v1Q3l?^h$( z;efG90u#3K=xD>$k*-rU!gLw-gk4Znamlo`6C=Lo3ft4wM>~VtZul`EF28-Qd?*4a zI)AcE%S6U!22oK7P(=jC!{c&i*pWLaI|ctelLF*y5IXtfw~5do+x^CSm{6 z*9pVLu6IHuz%O=mGbfcl6w)$S?Y|!0Rble-IJ}W;b=nj?skYfDyL4{yaCM18k-R$~h!(SC<(1_5nM5J@ic>TFV3P~cm!WWGZB#p6bN3m>xW!&4DFH3+2l`=-` znMU%%{cRGwbuq922@uBNi?4mi1&j$9$nro*bx;Gq;gn5)P15%k4rvc{EI2TRT*WC( zy+#Q*6Vl&diJSp}yK6)D0-5RL0|nP)|C(BYPuo2SqEQj4B#ZXeqjK8OAdCiHhipJ9 zkCXIa%3vc~XO#cw=e#WD@L`6>`KVA+Let{6_(?ALD!c+!wV4(Hz@7)y7rCJ%G?8EZTtZ$`ZEiqsqWr)B3EVrNw zMgcIZVdJ!i(jSDKdC9H7HEI2x=ABGEje{P9QNPvqAu^T*u2>zDsmOnXrAleiT0k5t z>By=~Uh`5;N)@r6usfcrhMM2lKk%^AQBUj5_u&{>RhYyv>)Suzd@@_iLoQTdSW8mQ z8VFf%{Aak_b+Np~Et~+rndEQ`nph(qOSa zS(^>QODhfln>euGd>b2GPx?f_AySoAMHrukD2M;uOx=a|Mwv?#S@0R~cuf912H}_P z@nbXS17}l0~va(u52Qrx@;$C5SB!^SIDLf1!G=Kdyo~>qq&iw zG+laN3O%wm#m4mATj{0c1bjN{Y#wLqO)iqJN-67DE@}@f}8GQez1n)x4 zwFU&{5s%?GNl}`>zY(l(e!YGb2YszrbcE22PZ7bF0uP5nOP> z(1KT0LFynl+psA9Dy;M-03gMx5*4O?zKHlA6<_&>s6~+~VKo1iT-X-DIz!qvd7om9 zYS5+j81AQqEvD;583V1i{rG5l__dv+;K&1xt zC+ysV0s%q-BNljc$tDBDIcA1Ovoxp)zj}EL6hsKEPl%Rst}2yfUui`G$y`ygZO9W> zS!$mz=7p! zF?I7Q@Mj}T<;t0%^SE@c^E;r3CP@y&XF^SsF&!cm^wuhoqkGAdaQ_@rNrykM@ix(t zi93aJjcV%tX=TN||87h-G1L$d%m~9Klg1#os1aBbfZBd|v;rmKlhX1sFQMvZK++zuL$LRZ zl%_vLqwGKChp4o)$+IpaYur>V?;E?j6J*(;BPW#NvxozOspgo3k$4r|&FSm1=hf#v znLU0(;^UR>0n^|6IhlTY%0gS2@|gI17p5((xS_>BGrqt%b9BgZ=JcmRN?%gkzu3U^ zYjONq;(j+gonj`cKP*jMKx&%XB|K>k41%YGU?u*p99X(YXVdE{rnwkOt6;%WMqj;f0>1cuYm=b)t zwp`k@-M&W>ZJy;UVPDInRm28qCb~+{-T^gyn4p}MLPM@dixdxXL@n?wVmLbCF;aya z-~`AeZx)^=U?yRUdRP)G5}c@hZ(<8#CJ4RL4C|-eY24t*Lj);gfUJcRGOkzPV!33` zU%B4W_wU~6Ptp8x&+zz>J_0?e{}8JxOikp9g*wI`3{<~M+H#$-^9YtzEHA{ylg|dh zqh!6~ZEy!6iblr5p_N8sDSs)IL!K{~W$zPz{~eq99{Y%j=rONC5}6(C3=H|=gH>5i zCN3MTpDyEB{_+CHf+HhujlvvfcXTc%8{dS?GS@>DVvTAJmD*I#h1dKRcL0|wM-p2j zB-o1j)ex=+iExtv7rjOSCmJ2ZXr#lWW|ofpAmP8<=EE)I!;dVpP~S-;**m50JjuDJ zZXJhAt!pRr?`o@%Z^ByUz4U>g>cGH_ki2E(DMZRT48b~`Ayz|~j4cabqtA60jR6ty^uIILpLgg3@Y-I_MB=tOTC(!G9mL2EWvp z3UYf)YxTmHXbJ0|q}LJypcmYZeeNrdrhWaaU!g@;LheHBv8KgNStc1T^R+_5mPLX? znRKA`LtkJthsz>a@Ow#6Faw^5IQ;uKN(hew1lrV~<3v*=>-IPANOZj%hFGPPy0F~i*G!y+Qh3(L%i$Nc)>g$}E^e3QqHwBv| za@?wZLeR476vba<#n&!A%+0{NTavuWbuV+|A`{L9tNz}ht@R>p>9A$~_qlAy=S3Th z{x4@Aq3O?}pJDwZ%Hva{B^UWqu2uVwTDH*iMj<&iEhwGy?C~I2!N8)bOagGo>+_#Ey>xXA%haJ zMm{@|!3Mo=0$PR1oQyslS?!nKjS$v7qY7NF_ce$$XYzl|5VylCJkI;oyd(cfn}Fl$bLI=Eu4=OBZicFSM!N)3F~u+yRS6dLq>bbaa76w6_5A*~ zZ1iL_EoFq*Cfv+FbfDCR_CU7P{Pl#+D#E2CVQR#r2cBk8T2xBJyPr#6gu=bx$}e#o z-i)KNjSBpoMi5cfKBW*Xsln9qOZNMz$Uz=unAj)Yy43@t%j2*$iEv08##B8Vz_;$L z%H3GrFX;qloo+?Xej>8#pA05tp7G!|w0`Ub$U_p-lIfum@;^340aVlO%}gO_=4v@- z@y53+OlcGWgowv6)YcXyD(PhMN8SphXYqOUdGtM3b-Tv6ZM1T}oJxyWe<~>iTZ2~C z4dr?>(#cEmmDN|ZQ8)+q!LTZn4n-vm z4X7QqP!Zuuh#s)IsTCH;kOG!UP$EgUs&mibU^+e2M*IA@;V15AqxDyE!%^ z49?}|t4fu&e*Ce63x`fb4KPpa5^Qw{#-OFf{>Vx%`?Jpm0U;YfK2fc#rJ(-<2^uzp zis-L^cAz6-C3)u0us>K6%hpC)N4QeGpaw68FLZ>lNIPLeW8bal(Nsc^>?#r63lXh} zLD4<3!cUtYPA6O^Ld`V_;Z?-})Hm5ECgf1=A_gjnnaH*ugEWZs&5qGxJXr4;t?bzB zO?OwAqM>jG^+1P|+vo}k4CorDd=`pDPs$nets-FPNG!!;KVsFL!GCxn(Xq|_&^&0)|XTFQYXQK(#!9y=L$7h9G( z;j;i6U5OWIcY=kAq#PTE%g3PdYpz7udS6|fJN4>t`4`S}PLthGY!4bb!UohSXRy~j zM&u?>@H3#Yh;>`rT8(len3rlTxmR=ubgxLqz_>Og?Fbk=-$7(TbzKbXEu0Kar0GyT zA;SR`!@cJ`TGf?wwnBfVb)p0=`qY3SRzHy&4Uo|V9$HY&u)F|84C?ax!8C}PT_V3w zEO_-%v#{&0R$JiHWO1Z)a>0`r%11~+47sjAybq0=I_oTV{@*cDk@cXRj2@*~>Hfxq zd&lII!h1W%s8r1+iMR~u9{*$>dO7;!rf%id7td>oL&HF4;dyn-;^W5@shVqdOk&4Z7+ZMz-CPF{C7~_$OGmRe* zn1kJ{?AEe9k0nu6qh?ufdIeX8$nPu7N&}1&{c+&s;E1bvs0YR5!l=sFijzQIHv_}m zz~pqr#06MBSSMhAA^d^rcMNalgcI9-ma;zunVEI5{U5$_49fJm0W#Ee%q}E1JNAP5 z_OPp+bXbRUy0;<{EW^ z_q80X>6&J!pUg?7IaPJj0*%w-VVxEDs)UuaJbKOa7Cea(GqdkP9jVzJxSv8RlTNUc z-*2NNa1+8d6UsRM;O3|?atWx<@b~ir>A+W_IH9&(7ka^D6vh=OgHvSIQ&e;1d@H=h zMoGt8txfuzeH`+bIiVzj7ZZUTzh>Ru-vkvZ*Dj{&<<|ZRS#Dtl>2=m9yz!9vebe0& zCi)x!tZIXg?kxei%VEh(v#ji62@6)nPlG{l$7TcGYV-iPfZUmx&nPo^0F)W`_;cxFY-3+8YxukbC_jYX4(dCfC&X7!kox*}RCj zae382Ibl$=hfeEVf1vf$j;{*6l@X5e(M$Hq zcB#?eN;G>%F25OjDsj3kWMT|ziN23ho^*hRxKce+-g7Ic#65LmgKglfKXbMX&>3-u zk-n-zLDeCA3exeX|MVsNb^%hdh@jS zFI}E0&k&zXiyow}LSFQOz7wi^KZPS*8uD)%{05!#z80u`wM_kNV@$f06)a`8=-f zn^$|#^N#Yv26MOk|3ZHw&LNCQsALib2*JAgGj1pJ7L>A`AV3M@LJaE+Ymv%S$(=Au zR$B@1J8L2arD?F29r1~*_8fi1<50LnFh-4f>BnHSTq$!L2QnfG%pYSW5#cm@ZqECX zDuKC&1$E6>Z*I;98@tWHmTCixV5w$TG1sF9PHq7Og%s6`Kdz~x$7g=v@ZoJtsp_3J zS1CNdrBWuglIZnD<|j{giTR;mql-V^OTXLf1wuV*3Wy|;F!O~E#y%3&l9^X=H1TYW zTuetLGep;?mvRx+)^Ai{GupTiK7vXJu&T7{bWBKGP9W!3Vb$&B^9uw*+VV#b=Q3Sj z%&EmJiDjjATrk;RbMB5ctuelJ2vfZ8uY-ceZ%N4B{%TRWD%oTq(qS;nrI7^SKlG2k zv~0-tZHh-k+==WKf@r1e{n2Eh;=MK7`PORJ9!H5I%n>=3+3;Vn8-2a}uPclA^~w_- zG8aT}P@K!9@G=fvB@;o(79ZDVp=Y}KZRl#K}HyPz7zDzZ3PWDBr}QEj zII6m`?jjj2wMZnHn%C<;%tM9}WMdfh)0HCf$C1T7LB7Z;>S8A*cNLaPj{dy(jJdwT z;MKxTuDXuBQPkTj|kM$x$>;x!gsr_361!$-RND;uUKal zY8EJi;e9(N!60p%pQ;j3HjtxQxj1IOtn=}U70&e~S1J2g=MCu_S4r*g#$ov!DIZH% zh}aEQphu=c4CFZaXAqj)*_-02GA#Qo3|b!&G{WXeMI`ZO+PBYBFtPOD7ZW`f+0-GY z@4<%#a?~1-4*)kX>|yXj8SXG?0id@TryOSj2A_z|zfD~%>Vw*LOkcW7|JgyaFFZOg zdGK1j2V+>uDnGP;2>;#et!jFPzlIA{2;w11yn>>zdtvm$wm^8e>FEiR&X<ppD-J)sP+z1v`rhC|m=>f*(xU5iIuMX6)9BiMV1 zlCWhV=DlNX4xeZEf7Tq0H+()yu%jEygnIrFg-LzK1MX_3uqvQ2c3`%inHP8GBphu> zJj=on%~<*l`p_>a99x;6b^$8nE>`9W3)2C+_m~&3;PNiI)H2!kjO&_F4AIFGEAx`> zUnuG?xu6F;0RX_vo7oFA{6YLxF_n!J`7O(UxkclR#b%dVy-KFQs<<}qFJ}j4(FWf~ zi*|u@xv5U@j71JiNGiip9TWW*@{Q}s=zGVF#%ajKVzuFkvBx+K%&7|Xt`c?%PG*oG zSX!gYeLaHqZ%wG|d%D6&$AJV#Faf+?^)F@pubz9#d(z|9bqur>r=Rsksv1Ab`XyO8 zXI>{jT_xdZqPWt2`-)N>m)Yilb>JAJoqd$2!e~8zM;Q}>qu5N?r%4zKIJt_C*m9ZP zCqe36u5>C|!o5VTFOzCS_)xEZw#*FpC)3NQq!WegYwhs~?b-0Dl2#a<+z&G-$Gy|f zPGWu~V=2LddC!D>DX!~~yGc?Cj-ZXL1UcZyqK_FZQiDqIPGv-vJ}m1nDF6A; zx(^zX#&mH@EeT32BEXy)kE#^-kr)PP3(TF7w6G;eS#WGZB2em*s9u0OMUk8T$Pi#m zL|JT*2w^O(!iGzJz!VbguEJ{B>T;=c353Xbzvc$z7A4&UhA6*1Y>ce3dX2L?%E|6bg3sC6%g z8?Mw~($r5^nV5_hRWZQ&uNwqwow3q5ddT9)w*^w*IA@tHCOGH!xyt&B=N7ELZSzRdge~k z`y6WDw8<0wi7XmI<*Tg`b}wZE_1ufPV~`G5L;R~rQ+)nD!QXEXM$ zb-)VD-^QSVe7z)y7k_Vyw7*fiJ>v{eAqk_~*lcc+mLcNyAZjdty?l{>5ahNs$6e2z z=BcyOSl&`WQj_7zkaWl63KPzlr040d-VA$V$C}sn3$+XBC_k*sf;|@uQ@wdjdoljw zelDsjsZ5tHZO!rL;j&9n7AKdBQ62<821!ee+V3mja6VsH!m(fzHZlgRbqM^l9iY#4 zF%_LyS$g;qXV-o)m4Rh1QulS2RhH3M<@+~2#u;BQQ52r>= zN|+_^xI)e@R7hi}=XEGF_uYHR?{(#ipI}2r9jaut@3-F*5!3VY z2|nlUDHB`};i|Tvj3K>c(L4zA>ZYXTFX5>EBN+yDK@ZK03VtT<-=vR)Dt~EHv2n%6 z_a&uBL%(#f;_=Mz>uqB$<*`v*9-z3%7E)4_OmLaore(!qbrEI4kan}5sa6?dpB9UD zU%OeY(@K2BuW){__2xhsU%%4tvHxWgeU3q~_ic2!ow3&qSe;YCkgKn9!wzLTiCnet zpVgQN&jPyo&eD7cTa*M!xZeU|wpkVQM4~RXfJ}9!0II#y#&Nv`&E4~M<-t|$bHC3Y=1T^JIpanAd^-SnIfFl}+{SO` zp_WyBo#<~yV%H`pEevi18>IXd16Q?oUDx$1Z_|yW*i7Z9-d*{ps^>S2?h=5Ir}9I~ zQ&Jyb(W$sxt2tl~s8w&v%evFRTVLY{b zzOvG4XkCOixi$Z^ks1j2w zwO8UTXY8gN#7Wr7#K1NWnEa6*{5nD~|1`7fCv%te`b)6oKb7_I&sq0dW*;DV00??J zOOak|<#)WEv3frlL{k0zQTI#4RbkfOv8!p+r~oAh@g5$LU@x?%vPT>T3K*NvTkKvb zz^wlc*gp`1pcdzJ1TJ1NluF=rrt54-${UA$wvB}sI=t^++X0Btb;6iFmg|x9Oox2A zIJ#zkYI!)i&!D_I1@=Rx+?3k?pdg)zmqZ0hzxEwu&1GvhyI+cF{XR!qM8QleE|P>x zz~246yU=~PCluyTx zi_lHyR9{P z`zJF*YZ&kE;u9mQX1HgVqxHUj_s^aJV{b3gei_pEdbDa{;ltDDMCD6qrfEBX2@QyHM-YcaW&i}G z>igfNt$8J>l2yH_YI-Og6s{Ev*-YoyeCM~$jQ`9kVx8nCX$+qW_;ykTi+9z>B5I)_ zH|h-(?fOC#44WQuIR##wgX2%zRy%!j0T$xfyT*RM>pPxX;#R$^4zj+z79P0^MLfqu zB$!Uc)lO$)Z#C6W`nGfA!s3f1))$d6hT(Uqixka>Ehr`u;7}Y@obb+9EpKb*YzlNP zz@jiE9(8&=YaQM(J>P~m7s|23D>pTClArMgko%~ty$xA0w*M;SN$d!_D;>zsgiPVTAp2?7+Bep~Bo7l+1XLO7!8huQ(zqLk-^!yavo>*){ zGkc^PUYq)!xrrxjzTs^_yiM^81bWHBC=F(`w(lSIIcClmW{dv5Y~9R1ZLHRjof?uf z%prA($vTKR_@nsKyi!qJU3Nl`1w7~h*2zie8oywRU`4l>J18-Ocyi|zd*E2 zbRSQYz@sigGi$vRl$daRi)}nIALP;VL!k~P!knbd!HYm8V1V6UnY!gLTNT_Wwjm?} z4lX+WH%51W`uw3yK)p4uUw+k~@F0^2Z|mt#w&RldJ)zoC}Pwh?0%!d!881?BcId20yv4 zva8e$+`h&>#KUv~>)2UWy^bHohJx5v{hoyiYwO^wb<%?o-+7NBB%%Wn$Nx2;oSU!5 zJ0=>G-8q#3rW!h(Jg1LBS&6d0`g85VOun1~Mm4djZ1dLy8SqG(VlgGZ;XC4YIYseb zPCFB3=|1(Rmt=bnI{jOP8-D?JjyAkX3jE@ZbGd2s^>}`X>1aPcn_X>v?T-TXfVCGB zQ|5a(z!y1R+O-aBUpMD7#240`7DBAF*A{vuX1j!NIm;}lIOuDZj&cuC&PYjUw&C># zU|3CwwOk)K+8vO%qUK&}czsR|aV`lA;c9M-;WDn)CEHp=xyK8#`fujkKasy&Rj@y` z*LOUGm+u}G=gXncX}8JACeZr5qjlqFTjpSpZr&YAi*YDoJwG0bBVee#XeGveIrbs`tU0Cvxv6CaoZI;xPG=%}$Le;C>-h}tp6^EoZpYk-TcAIG9TabY3sQ*J6_y*up0S~CLP`f492?4A zk}rr{oDW3n^ue`19fkxil{%P`JiCvj(xdj!FTbzE^uKia?*D&jIB{Cqkr~FN3VtWsK z0;J|0*%a+{apGA*931eCZFX3S*?r1|oYxoaV@3=-FezU*3g|0)V&i<#uc?Y?1M50| zIbHTu#I!B@IqYr|{CFPaLAnsfhUDZtiWDIhLC|VI@L5U}DEbt7*to(ZrZeygS?rpJ zIn+%C?=5nksniF|+d18@xmLNzPXBu!7R4bT?tQ1YjwR?}xnpK=`Ds*$-EX+{cF}#b z^OS6H$}9ecHaJ(k#&{vMm=J;G_!ox`m_rbzNOImio*8RgbcI&cWOD0gFAQkC9f3KD$lMa-!Z?2f9~@Z5cOr94MSc$*KK+C z?QU^%?)6HovHf=U({~{f?lG|>g&zt)iHSPnr3YqAo3U2fp6+wJj8wjs zfjMW8$6xv3Nhl~*Qx7G9$PkR~o)=4R`%98r!`Dl{*RGhk@qgNLOTbE^VY|HQ&AaF1Y(P81!0SiC{&QWO{4^M7BJ5Tn}e+|FlbfSyNcJ>co z8N^-XWfkwHuDpze7?eDVEkCZH*DIN#T-S1p7`{R*JyQ%tUXQTaY!}C(g5#%7S#Dk_ zD6%B$w7Jn9{LJi+;aYAdDTcC&bUF9xJ6MXi3;8|ow+Ei@UIBszeYr3Ay{2z3_tUvZ zYq@+jb}!bIN-GDKx8Xf9H!m=Nj+zV%L(0P=a@#Nf z0u4Ib|CY=xtSsz3S%g_w!KK0Ea0;{X<`9L`H?EvGa^{H45%$v!9t*tm7+#4BmV9zD RoeH#q!PC{xWt~$(69Ai1I==t_ literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon-16x16.png b/pkgdown/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..308f88c83f40de7075c6e02dbd8ac55422309bfa GIT binary patch literal 1399 zcmZ{jc}&x17{_03BQj>tz?d#99y1aQh)hLY)KL`_5Ud=QqooIJx!Ve~T%{C>T!qq7 zpoO*^LR)&!BGf_x*fJ0Vx$lVLyx1a&kqKzrkH3~J*_-!yzwh(D?~^C_JkNXQy5D7+ zosK&J05;xNyaFNpcH4HCLF*A0+Z&LWM_=&006;6-`ZLM`@}1CE0(}9X9R`5T1Yi?7 zqQ3^I2RKU|M+n8XN{acsXf&H9fF6-1GJ8*VW(WKYds=aAU_c z{H=}kmFJ7Bu+vfoa(!*}$!OoJg|Pu`{al~+?bFGHUfE>3V5(iX&?|rcdg-r?t%ohV zhtiVAiqbJv`IN5qNx$~lP{*`R^gxt7-pZTNOO}VbM(#_eJL|?Yd=-Z}sw|yotD5R; z=xLKS<_;y&;ECLyM5- zMQhlk&KkyapSD+4sbHsyvoOk{c)fr=(oqi)(A5?+u@b}?QBoE`%S|=P%4Y_;w3Q6$ zop^OAxx2pb&nIJJD$cl?t1Cc5=5ctGkLe*iKB1E(>h*ArS_*)&* zAYrtY#7mhNSuUo9g=?mx_%Q)hi8rfALDiICNqU6h4jy6)QEEs*)Wigc(<0ai7(46| z7w<1f4izSc%2_x$6VsfD6vf>TMEf<;!WtQ9KF*I5>0J{1D;MY6lo=_+``3|z>nS14 zbflbxg{o7RiL4-8XCp3^NBKadsV4`^vZJI-w2&Gm&WNle22@~trF4|4kf<(>sij4T zXyIa7SaU8`losBUgNDe{-zWu8J4RCi{kB{CKf}_0#BkBv#F@YPrud*k+S9o>JBy&f zFIx|MO!rM2zS%$DZ@YgUn%nY^ZC_c04uARF=VR)axjdh=*W{Ss-5;fgtZt0;!OS=9 zI&n}Qlc=kgz0BG8xd6zqqImnltd^~9Y{Add=FZUXGO_dax&U{WKqGf!d7RAS-aK{cJNVS3$J(0qxb@D$agTd#w;d=S z3$FSM4LWO%%4IRck2VgwidR;?cNA13ZY|88@htXrxHhcUr_r`Hf4U|-K^=sn$(Ghb zgo$X%u+SrIWRd#8J|xtAc6KC0hkws$9I8-Nc9VED=W=qMuXx1FD3;Vo6E9s59j8yb z>vZu;t>l@vu(b8J3t3Oaf-^a+R}zDqz3*J|XX8U`lOL7p{^`@^hUgda`r?MQ{Ygu6 zOAGhJBo;F-T%V3z(a4|eE<4+Ge(4U>ln$%k0&ly3w0VQAEs zlk1@nu|pJC2nBm={#|dXwH)w-cuCxDFKwJWb zfTR9@z|n3;ITR2~gNIN8Q7KM|qy!ux7VAWzCSsiki4-&dslw-LyLKc69XT@SKlI4^ zMIbOcV0{d2ZFj)#YWW^BJ0~yt2?NILfEMmFG&?z9d}Q2bv>Kvc5&IkiEB3o7YZpCu PPzvA;^Yc<(L^A#cFnX1I literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..bece8a0121f60e201a00070349cda39becadea3b GIT binary patch literal 2761 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 NOLMf@Q@C5g{{VAXHZTAH literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon.ico b/pkgdown/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8bd883cc341ceadae1d7b84812a34ce0e62a8710 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 From 270759ea2e3cd43acd7a7463ad3b2d3bfebefcd5 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 15:44:38 +0100 Subject: [PATCH 19/24] Update docs --- NAMESPACE | 1 + R/build-logo.R | 15 +++++++++++++++ R/init.R | 9 ++++++--- man/build_favicon.Rd | 22 ++++++++++++++++++++++ man/init_site.Rd | 9 ++++++--- 5 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 man/build_favicon.Rd diff --git a/NAMESPACE b/NAMESPACE index 6ee5fc7bf..948874d56 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -106,6 +106,7 @@ export(as_pkgdown) export(autolink_html) export(build_article) export(build_articles) +export(build_favicon) export(build_home) export(build_news) export(build_reference) diff --git a/R/build-logo.R b/R/build-logo.R index 55d99f1e8..7d77646b4 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -10,6 +10,21 @@ build_logo <- function(pkg = ".") { } + +#' Create a complete set of favicons with different sizes from your package logo +#' +#' This function auto-detects the location of your package logo (with the name +#' `logo.csv` (recommended format) or `logo.png`) and runs it through the +#' API to build a complete set of favicons +#' with different sizes, as needed for modern web usage. +#' +#' You only need to run the function once. The favicon set will be stored in +#' `pkgdown/favicon` and copied by [init_site()] to the relevant location each +#' time the website is rebuilt. +#' +#' @inheritParams as_pkgdown +#' +#' @export build_favicon <- function(pkg = ".") { pkg <- as_pkgdown(pkg) diff --git a/R/init.R b/R/init.R index 7136b731a..601fdc6d5 100644 --- a/R/init.R +++ b/R/init.R @@ -18,9 +18,12 @@ #' `` after the default pkgdown CSS and JS. #' #' @section Favicon: -#' If you include you package logo in the standard location of -#' `man/figures/logo.png`, a favicon will be automatically created for -#' you. +#' You should manually run [build_favicon()] once to generate the favicon set +#' from your logo. The location location is auto-detected if use the name +#' `logo.svg` or `logo.png` and put it either at the root of your package or +#' in `man/figures`. The result of [build_favicon()] is stored in +#' `pkgdown/favicon` and will automatically be copied to the relevant location +#' when you run [init_site()]. #' #' @inheritParams build_articles #' @export diff --git a/man/build_favicon.Rd b/man/build_favicon.Rd new file mode 100644 index 000000000..8ff03e1b1 --- /dev/null +++ b/man/build_favicon.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/build-logo.R +\name{build_favicon} +\alias{build_favicon} +\title{Create a complete set of favicons with different sizes from your package logo} +\usage{ +build_favicon(pkg = ".") +} +\arguments{ +\item{pkg}{Path to package.} +} +\description{ +This function auto-detects the location of your package logo (with the name +\code{logo.csv} (recommended format) or \code{logo.png}) and runs it through the +\url{https://realfavicongenerator.net} API to build a complete set of favicons +with different sizes, as needed for modern web usage. +} +\details{ +You only need to run the function once. The favicon set will be stored in +\code{pkgdown/favicon} and copied by \code{\link[=init_site]{init_site()}} to the relevant location each +time the website is rebuilt. +} diff --git a/man/init_site.Rd b/man/init_site.Rd index f0f3118ad..6299f34d9 100644 --- a/man/init_site.Rd +++ b/man/init_site.Rd @@ -33,8 +33,11 @@ will be automatically copied to \code{docs/} and inserted into the \section{Favicon}{ -If you include you package logo in the standard location of -\code{man/figures/logo.png}, a favicon will be automatically created for -you. +You should manually run \code{\link[=build_favicon]{build_favicon()}} once to generate the favicon set +from your logo. The location location is auto-detected if use the name +\code{logo.svg} or \code{logo.png} and put it either at the root of your package or +in \code{man/figures}. The result of \code{\link[=build_favicon]{build_favicon()}} is stored in +\code{pkgdown/favicon} and will automatically be copied to the relevant location +when you run \code{\link[=init_site]{init_site()}}. } From 4931de9efce280951968fdc93c53af6c1d9cf399 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 17:43:58 +0100 Subject: [PATCH 20/24] Edit docs again to remove all mentions of favicon.ico --- R/build-home.R | 2 +- R/init.R | 12 ++++-------- man/build_home.Rd | 2 +- man/init_site.Rd | 12 ++++-------- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/R/build-home.R b/R/build-home.R index f3d10ab3a..43ecde781 100644 --- a/R/build-home.R +++ b/R/build-home.R @@ -28,7 +28,7 @@ #' # pkgdown #' ``` #' -#' [init_site()] will also automatically create a favicon.ico from your package +#' [init_site()] will also automatically create a favicon set from your package #' logo. #' #' @section YAML config - home: diff --git a/R/init.R b/R/init.R index 601fdc6d5..b1d48acf6 100644 --- a/R/init.R +++ b/R/init.R @@ -1,8 +1,7 @@ #' Initialise site infrastructure #' -#' This creates the output directory (`docs/`), `favicon.ico` (from the package -#' logo), a machine readable description of the site, and copies CSS/JS -#' assets and extra files. +#' This creates the output directory (`docs/`), a machine readable description +#' of the site, and copies CSS/JS assets and extra files. #' #' @section Build-ignored files: #' We recommend using `usethis::use_pkgdown()` to build-ignore `docs/` and @@ -19,11 +18,8 @@ #' #' @section Favicon: #' You should manually run [build_favicon()] once to generate the favicon set -#' from your logo. The location location is auto-detected if use the name -#' `logo.svg` or `logo.png` and put it either at the root of your package or -#' in `man/figures`. The result of [build_favicon()] is stored in -#' `pkgdown/favicon` and will automatically be copied to the relevant location -#' when you run [init_site()]. +#' from your logo. The result is stored in `pkgdown/favicon` and will +#' automatically be copied to the relevant location when you run [init_site()]. #' #' @inheritParams build_articles #' @export diff --git a/man/build_home.Rd b/man/build_home.Rd index bbefb03a3..1463e743e 100644 --- a/man/build_home.Rd +++ b/man/build_home.Rd @@ -48,7 +48,7 @@ If you have a package logo, you can include it at the top of your README in a level-one heading:\preformatted{# pkgdown } -\code{\link[=init_site]{init_site()}} will also automatically create a favicon.ico from your package +\code{\link[=init_site]{init_site()}} will also automatically create a favicon set from your package logo. } diff --git a/man/init_site.Rd b/man/init_site.Rd index 6299f34d9..1bd8ab3a6 100644 --- a/man/init_site.Rd +++ b/man/init_site.Rd @@ -10,9 +10,8 @@ init_site(pkg = ".") \item{pkg}{Path to package.} } \description{ -This creates the output directory (\code{docs/}), \code{favicon.ico} (from the package -logo), a machine readable description of the site, and copies CSS/JS -assets and extra files. +This creates the output directory (\code{docs/}), a machine readable description +of the site, and copies CSS/JS assets and extra files. } \section{Build-ignored files}{ @@ -34,10 +33,7 @@ will be automatically copied to \code{docs/} and inserted into the \section{Favicon}{ You should manually run \code{\link[=build_favicon]{build_favicon()}} once to generate the favicon set -from your logo. The location location is auto-detected if use the name -\code{logo.svg} or \code{logo.png} and put it either at the root of your package or -in \code{man/figures}. The result of \code{\link[=build_favicon]{build_favicon()}} is stored in -\code{pkgdown/favicon} and will automatically be copied to the relevant location -when you run \code{\link[=init_site]{init_site()}}. +from your logo. The result is stored in \code{pkgdown/favicon} and will +automatically be copied to the relevant location when you run \code{\link[=init_site]{init_site()}}. } From 8fa6f272d1dd40cc7675dc5ddea5902b273418a5 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 18:31:12 +0100 Subject: [PATCH 21/24] Add more formats in head template --- inst/templates/head.html | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/inst/templates/head.html b/inst/templates/head.html index dbe7ef446..43b6d8b50 100644 --- a/inst/templates/head.html +++ b/inst/templates/head.html @@ -4,9 +4,13 @@ {{{pagetitle}}} • {{#site}}{{title}}{{/site}} - - -" + + + + + + + From 06abab704464ee1b72c534e3842268e828dea240 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 18:46:27 +0100 Subject: [PATCH 22/24] Add username to NEWS item --- NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 89d0a10b0..b88646b51 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,7 +4,7 @@ better suited for modern web usage (e.g. retina display screens, desktop shortcuts, etc.). For this, it uses the API. As a side effect, this change also removes the dependency to the - magick package (#883). + magick package (@bisaloo, #883). * Navbar version now gets class "version" so you can more easily control the display if you want (#680). From d05833a34899bf77d236d4724d0c6a0b5113b905 Mon Sep 17 00:00:00 2001 From: Hugo Date: Tue, 13 Nov 2018 18:47:14 +0100 Subject: [PATCH 23/24] Do not declare ico favicon --- inst/templates/head.html | 1 - 1 file changed, 1 deletion(-) diff --git a/inst/templates/head.html b/inst/templates/head.html index 43b6d8b50..92239f3d9 100644 --- a/inst/templates/head.html +++ b/inst/templates/head.html @@ -4,7 +4,6 @@ {{{pagetitle}}} • {{#site}}{{title}}{{/site}} - From 8ac186456bad622c90514302233137e8467eaf1c Mon Sep 17 00:00:00 2001 From: Hugo Gruson Date: Tue, 13 Nov 2018 19:37:56 +0100 Subject: [PATCH 24/24] Remove unnecessary message --- R/build-logo.R | 2 -- 1 file changed, 2 deletions(-) diff --git a/R/build-logo.R b/R/build-logo.R index 7d77646b4..d72cf0d0d 100644 --- a/R/build-logo.R +++ b/R/build-logo.R @@ -36,8 +36,6 @@ build_favicon <- function(pkg = ".") { call. = FALSE) } - message("Creating favicon set.") - logo <- readBin(logo_path, what = "raw", n = fs::file_info(logo_path)$size) json_request <- list(