├── .Rbuildignore ├── .Rprofile ├── .gitattributes ├── .github ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ └── issue_template.md ├── SUPPORT.md └── workflows │ └── publish.yml ├── .gitignore ├── 404.html ├── 404.qmd ├── Day_1 ├── Day1A_Practice.html ├── Day1A_Practice.qmd ├── Day1A_Slides.html ├── Day1A_Slides.qmd ├── Day1B_Practice.html ├── Day1B_Practice.qmd ├── Day1B_Slides.html ├── Day1B_Slides.qmd ├── r4ss_day1a.html ├── r4ss_day1a.qmd └── r4ss_day1b.qmd ├── Day_2 ├── Day2A_Practice.qmd ├── Day2A_Slides.qmd ├── Day2B_Practice.qmd ├── Day2B_Slides.qmd ├── r4ss_day2a.qmd └── r4ss_day2b.qmd ├── Day_3 ├── Day3A_Practice.qmd ├── Day3A_Slides.qmd ├── Day3B_Practice.qmd ├── Day3B_Slides.qmd ├── Extra_Slides.qmd ├── r4ss_day3a.qmd ├── r4ss_day3b.qmd └── r4ss_extraslides.qmd ├── Details ├── datasets.qmd ├── instructor.qmd └── schedule.qmd ├── LICENSE.md ├── README.md ├── _extensions └── jmgirard │ └── lordicon │ ├── _extension.yml │ ├── assets │ └── js │ │ └── bundle.js │ └── lordicon.lua ├── _freeze ├── Day_1 │ ├── Day1A_Practice │ │ └── execute-results │ │ │ └── html.json │ ├── Day1B_Practice │ │ └── execute-results │ │ │ └── html.json │ ├── r4ss_day1a │ │ └── execute-results │ │ │ └── html.json │ └── r4ss_day1b │ │ └── execute-results │ │ └── html.json ├── Day_2 │ ├── Day2A_Practice │ │ └── execute-results │ │ │ └── html.json │ ├── Day2B_Practice │ │ ├── execute-results │ │ │ └── html.json │ │ └── figure-html │ │ │ ├── unnamed-chunk-10-1.png │ │ │ ├── unnamed-chunk-11-1.png │ │ │ ├── unnamed-chunk-12-1.png │ │ │ ├── unnamed-chunk-13-1.png │ │ │ ├── unnamed-chunk-14-1.png │ │ │ ├── unnamed-chunk-15-1.png │ │ │ ├── unnamed-chunk-5-1.png │ │ │ ├── unnamed-chunk-6-1.png │ │ │ ├── unnamed-chunk-7-1.png │ │ │ ├── unnamed-chunk-8-1.png │ │ │ └── unnamed-chunk-9-1.png │ ├── r4ss_day2a │ │ └── execute-results │ │ │ └── html.json │ ├── r4ss_day2b │ │ ├── execute-results │ │ │ └── html.json │ │ └── figure-revealjs │ │ │ ├── dtg1-1.png │ │ │ ├── dtg2-1.png │ │ │ ├── dtg3-1.png │ │ │ ├── dtg4-1.png │ │ │ ├── geoms-1.png │ │ │ ├── geoms-2.png │ │ │ ├── graphics1-1.png │ │ │ ├── graphics1-2.png │ │ │ ├── graphics2-1.png │ │ │ └── graphics2-2.png │ └── r4ss_extraslides │ │ ├── execute-results │ │ └── html.json │ │ └── figure-revealjs │ │ ├── dtg1-1.png │ │ ├── dtg2-1.png │ │ ├── dtg3-1.png │ │ └── dtg4-1.png ├── Day_3 │ ├── Day3A_Practice │ │ ├── execute-results │ │ │ └── html.json │ │ └── figure-html │ │ │ ├── unnamed-chunk-7-1.png │ │ │ └── unnamed-chunk-9-1.png │ ├── Day3B_Practice │ │ ├── execute-results │ │ │ └── html.json │ │ └── figure-html │ │ │ ├── unnamed-chunk-4-1.png │ │ │ ├── unnamed-chunk-4-2.png │ │ │ ├── unnamed-chunk-4-3.png │ │ │ └── unnamed-chunk-7-1.png │ ├── r4ss_day3a │ │ └── execute-results │ │ │ └── html.json │ ├── r4ss_day3b │ │ └── execute-results │ │ │ └── html.json │ └── r4ss_extraslides │ │ ├── execute-results │ │ └── html.json │ │ └── figure-revealjs │ │ ├── dtg1-1.png │ │ ├── dtg2-1.png │ │ ├── dtg3-1.png │ │ └── dtg4-1.png ├── Details │ └── datasets │ │ └── execute-results │ │ └── html.json └── site_libs │ ├── clipboard │ └── clipboard.min.js │ ├── pagedtable-1.1 │ ├── css │ │ └── pagedtable.css │ └── js │ │ └── pagedtable.js │ └── revealjs │ ├── dist │ ├── reset.css │ ├── reveal.css │ ├── reveal.esm.js │ ├── reveal.esm.js.map │ ├── reveal.js │ ├── reveal.js.map │ └── theme │ │ ├── fonts │ │ ├── league-gothic │ │ │ ├── LICENSE │ │ │ ├── league-gothic.css │ │ │ ├── league-gothic.eot │ │ │ ├── league-gothic.ttf │ │ │ └── league-gothic.woff │ │ └── source-sans-pro │ │ │ ├── LICENSE │ │ │ ├── source-sans-pro-italic.eot │ │ │ ├── source-sans-pro-italic.ttf │ │ │ ├── source-sans-pro-italic.woff │ │ │ ├── source-sans-pro-regular.eot │ │ │ ├── source-sans-pro-regular.ttf │ │ │ ├── source-sans-pro-regular.woff │ │ │ ├── source-sans-pro-semibold.eot │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ ├── source-sans-pro-semibold.woff │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ └── source-sans-pro.css │ │ └── quarto.css │ └── plugin │ ├── highlight │ ├── highlight.esm.js │ ├── highlight.js │ ├── monokai.css │ ├── plugin.js │ └── zenburn.css │ ├── markdown │ ├── markdown.esm.js │ ├── markdown.js │ └── plugin.js │ ├── math │ ├── katex.js │ ├── math.esm.js │ ├── math.js │ ├── mathjax2.js │ ├── mathjax3.js │ └── plugin.js │ ├── notes │ ├── notes.esm.js │ ├── notes.js │ ├── plugin.js │ └── speaker-view.html │ ├── pdf-export │ ├── pdfexport.js │ └── plugin.yml │ ├── quarto-line-highlight │ ├── line-highlight.css │ ├── line-highlight.js │ └── plugin.yml │ ├── quarto-support │ ├── footer.css │ ├── plugin.yml │ └── support.js │ ├── reveal-menu │ ├── menu.css │ ├── menu.js │ ├── plugin.yml │ ├── quarto-menu.css │ └── quarto-menu.js │ ├── search │ ├── plugin.js │ ├── search.esm.js │ └── search.js │ └── zoom │ ├── plugin.js │ ├── zoom.esm.js │ └── zoom.js ├── _quarto.yml ├── _site ├── 404.html ├── Day_1 │ ├── Day1A_Practice.html │ ├── Day1A_Slides.html │ ├── Day1B_Practice.html │ ├── Day1B_Slides.html │ ├── r4ss_day1a.html │ └── r4ss_day1b.html ├── Day_2 │ ├── Day2A_Practice.html │ ├── Day2A_Slides.html │ ├── Day2B_Practice.html │ ├── Day2B_Practice_files │ │ └── figure-html │ │ │ ├── unnamed-chunk-10-1.png │ │ │ ├── unnamed-chunk-11-1.png │ │ │ ├── unnamed-chunk-12-1.png │ │ │ ├── unnamed-chunk-13-1.png │ │ │ ├── unnamed-chunk-14-1.png │ │ │ ├── unnamed-chunk-15-1.png │ │ │ ├── unnamed-chunk-5-1.png │ │ │ ├── unnamed-chunk-6-1.png │ │ │ ├── unnamed-chunk-7-1.png │ │ │ ├── unnamed-chunk-8-1.png │ │ │ └── unnamed-chunk-9-1.png │ ├── Day2B_Slides.html │ ├── r4ss_day2a.html │ └── r4ss_day2b.html ├── Day_3 │ ├── Day3A_Practice.html │ ├── Day3A_Practice_files │ │ └── figure-html │ │ │ ├── unnamed-chunk-7-1.png │ │ │ └── unnamed-chunk-9-1.png │ ├── Day3A_Slides.html │ ├── Day3B_Practice.html │ ├── Day3B_Practice_files │ │ └── figure-html │ │ │ ├── unnamed-chunk-4-1.png │ │ │ ├── unnamed-chunk-4-2.png │ │ │ ├── unnamed-chunk-4-3.png │ │ │ └── unnamed-chunk-7-1.png │ ├── Day3B_Slides.html │ ├── Extra_Slides.html │ ├── r4ss_day3a.html │ ├── r4ss_day3b.html │ └── r4ss_extraslides.html ├── Details │ ├── datasets.html │ ├── instructor.html │ └── schedule.html ├── LICENSE.html ├── construction.html ├── data │ ├── affairs.csv │ ├── cereal.csv │ ├── diary.csv │ ├── ds_salaries.csv │ ├── elicitation.csv │ ├── exercise.csv │ ├── gradebook.csv │ ├── interpersonal.csv │ ├── political.csv │ ├── salaries.csv │ └── yearspubs.csv ├── img │ ├── Girard_500x500.jpg │ ├── breaking_bad_wikipedia.png │ ├── construction_2780E3.svg │ ├── date_picker_2780E3.svg │ ├── growth_curve_2780E3.svg │ ├── maintenance_2780E3.svg │ ├── making_art_2780E3.svg │ ├── page_not_found_2780E3.svg │ ├── programmer_2780E3.svg │ ├── proud_coder_2780E3.svg │ ├── spreadsheets_2780E3.svg │ └── statistics_2780E3.svg ├── index.html ├── search.json ├── site_libs │ ├── bootstrap │ │ ├── bootstrap-icons.css │ │ ├── bootstrap-icons.woff │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.js │ ├── clipboard │ │ └── clipboard.min.js │ ├── pagedtable-1.1 │ │ ├── css │ │ │ └── pagedtable.css │ │ └── js │ │ │ └── pagedtable.js │ ├── quarto-contrib │ │ └── lord-icon-bundle-3.4.2 │ │ │ └── bundle.js │ ├── quarto-html │ │ ├── anchor.min.js │ │ ├── popper.min.js │ │ ├── quarto-html.min.css │ │ ├── quarto-syntax-highlighting.css │ │ ├── quarto.js │ │ ├── tabby.min.js │ │ ├── tippy.css │ │ └── tippy.umd.min.js │ ├── quarto-nav │ │ ├── headroom.min.js │ │ └── quarto-nav.js │ └── revealjs │ │ ├── dist │ │ ├── reset.css │ │ ├── reveal.css │ │ ├── reveal.esm.js │ │ ├── reveal.esm.js.map │ │ ├── reveal.js │ │ ├── reveal.js.map │ │ └── theme │ │ │ ├── fonts │ │ │ ├── league-gothic │ │ │ │ ├── LICENSE │ │ │ │ ├── league-gothic.css │ │ │ │ ├── league-gothic.eot │ │ │ │ ├── league-gothic.ttf │ │ │ │ └── league-gothic.woff │ │ │ └── source-sans-pro │ │ │ │ ├── LICENSE │ │ │ │ ├── source-sans-pro-italic.eot │ │ │ │ ├── source-sans-pro-italic.ttf │ │ │ │ ├── source-sans-pro-italic.woff │ │ │ │ ├── source-sans-pro-regular.eot │ │ │ │ ├── source-sans-pro-regular.ttf │ │ │ │ ├── source-sans-pro-regular.woff │ │ │ │ ├── source-sans-pro-semibold.eot │ │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ │ ├── source-sans-pro-semibold.woff │ │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ │ └── source-sans-pro.css │ │ │ └── quarto.css │ │ └── plugin │ │ ├── highlight │ │ ├── highlight.esm.js │ │ ├── highlight.js │ │ ├── monokai.css │ │ ├── plugin.js │ │ └── zenburn.css │ │ ├── markdown │ │ ├── markdown.esm.js │ │ ├── markdown.js │ │ └── plugin.js │ │ ├── math │ │ ├── katex.js │ │ ├── math.esm.js │ │ ├── math.js │ │ ├── mathjax2.js │ │ ├── mathjax3.js │ │ └── plugin.js │ │ ├── notes │ │ ├── notes.esm.js │ │ ├── notes.js │ │ ├── plugin.js │ │ └── speaker-view.html │ │ ├── pdf-export │ │ ├── pdfexport.js │ │ └── plugin.yml │ │ ├── quarto-line-highlight │ │ ├── line-highlight.css │ │ ├── line-highlight.js │ │ └── plugin.yml │ │ ├── quarto-support │ │ ├── footer.css │ │ ├── plugin.yml │ │ └── support.js │ │ ├── reveal-menu │ │ ├── menu.css │ │ ├── menu.js │ │ ├── plugin.yml │ │ ├── quarto-menu.css │ │ └── quarto-menu.js │ │ ├── search │ │ ├── plugin.js │ │ ├── search.esm.js │ │ └── search.js │ │ └── zoom │ │ ├── plugin.js │ │ ├── zoom.esm.js │ │ └── zoom.js └── styles.css ├── construction.html ├── construction.qmd ├── data ├── affairs.csv ├── cereal.csv ├── diary.csv ├── ds_salaries.csv ├── elicitation.csv ├── exercise.csv ├── gradebook.csv ├── interpersonal.csv ├── political.csv ├── salaries.csv └── yearspubs.csv ├── img ├── Day1A.png ├── Girard_500x500.jpg ├── aes.png ├── books_2780E3.svg ├── breaking_bad_wikipedia.png ├── construction_2780E3.svg ├── date_picker_2780E3.svg ├── educator_2780E3.svg ├── educator_357EDD.svg ├── exams_2780E3.svg ├── graphics.png ├── growth_curve_2780E3.svg ├── maintenance_2780E3.svg ├── making_art_2780E3.svg ├── otherscale.png ├── page_not_found_2780E3.svg ├── pair_programming_2780E3.svg ├── pair_programming_357EDD.svg ├── position.png ├── programmer_2780E3.svg ├── programmer_357EDD.svg ├── programming_2780E3.svg ├── programming_357EDD.svg ├── proud_coder_2780E3.svg ├── proud_coder_357EDD.svg ├── raw │ └── tibbles.pptx ├── rstudio_labels.jpg ├── software_engineer_2780E3.svg ├── software_engineer_357EDD.svg ├── spreadsheets_2780E3.svg ├── statistics_2780E3.svg ├── teaching_2780E3.svg ├── teaching_357EDD.svg ├── tibble.png ├── tidydata.png ├── traincar.png ├── vectors.png └── venn.png ├── index.qmd ├── r4ss.Rproj ├── renv.lock ├── renv ├── .gitignore ├── activate.R └── settings.dcf ├── site_libs ├── clipboard │ └── clipboard.min.js ├── pagedtable-1.1 │ ├── css │ │ └── pagedtable.css │ └── js │ │ └── pagedtable.js └── revealjs │ ├── dist │ ├── reset.css │ ├── reveal.css │ ├── reveal.esm.js │ ├── reveal.esm.js.map │ ├── reveal.js │ ├── reveal.js.map │ └── theme │ │ ├── fonts │ │ ├── league-gothic │ │ │ ├── LICENSE │ │ │ ├── league-gothic.css │ │ │ ├── league-gothic.eot │ │ │ ├── league-gothic.ttf │ │ │ └── league-gothic.woff │ │ └── source-sans-pro │ │ │ ├── LICENSE │ │ │ ├── source-sans-pro-italic.eot │ │ │ ├── source-sans-pro-italic.ttf │ │ │ ├── source-sans-pro-italic.woff │ │ │ ├── source-sans-pro-regular.eot │ │ │ ├── source-sans-pro-regular.ttf │ │ │ ├── source-sans-pro-regular.woff │ │ │ ├── source-sans-pro-semibold.eot │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ ├── source-sans-pro-semibold.woff │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ └── source-sans-pro.css │ │ └── quarto.css │ └── plugin │ ├── highlight │ ├── highlight.esm.js │ ├── highlight.js │ ├── monokai.css │ ├── plugin.js │ └── zenburn.css │ ├── markdown │ ├── markdown.esm.js │ ├── markdown.js │ └── plugin.js │ ├── math │ ├── katex.js │ ├── math.esm.js │ ├── math.js │ ├── mathjax2.js │ ├── mathjax3.js │ └── plugin.js │ ├── notes │ ├── notes.esm.js │ ├── notes.js │ ├── plugin.js │ └── speaker-view.html │ ├── pdf-export │ ├── pdfexport.js │ └── plugin.yml │ ├── quarto-line-highlight │ ├── line-highlight.css │ ├── line-highlight.js │ └── plugin.yml │ ├── quarto-support │ ├── footer.css │ ├── plugin.yml │ └── support.js │ ├── reveal-menu │ ├── menu.css │ ├── menu.js │ ├── plugin.yml │ ├── quarto-menu.css │ └── quarto-menu.js │ ├── search │ ├── plugin.js │ ├── search.esm.js │ └── search.js │ └── zoom │ ├── plugin.js │ ├── zoom.esm.js │ └── zoom.js ├── styles.css └── tachyons.css /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^renv$ 2 | ^renv\.lock$ 3 | ^LICENSE\.md$ 4 | ^\.github$ 5 | -------------------------------------------------------------------------------- /.Rprofile: -------------------------------------------------------------------------------- 1 | source("renv/activate.R") 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.qmd linguist-language=RMarkdown 2 | 3 | *.[Rr]md linguist-detectable 4 | *.qmd linguist-detectable 5 | 6 | *.html linguist-documentation 7 | 8 | .Rprofile linguist-generated 9 | renv/activate.R linguist-generated 10 | _freeze/** linguist-generated 11 | _site/** linguist-generated 12 | 13 | site_libs/** linguist-vendored 14 | _extensions/** linguist-vendored 15 | tachyons.css linguist-vendored 16 | -------------------------------------------------------------------------------- /.github/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to r4ss 2 | 3 | This outlines how to propose a change to r4ss. 4 | For more detailed info about contributing to this, and other tidyverse packages, please see the 5 | [**development contributing guide**](https://rstd.io/tidy-contrib). 6 | 7 | ## Fixing typos 8 | 9 | You can fix typos, spelling mistakes, or grammatical errors in the documentation directly using the GitHub web interface, as long as the changes are made in the _source_ file. 10 | This generally means you'll need to edit [roxygen2 comments](https://roxygen2.r-lib.org/articles/roxygen2.html) in an `.R`, not a `.Rd` file. 11 | You can find the `.R` file that generates the `.Rd` by reading the comment in the first line. 12 | 13 | ## Bigger changes 14 | 15 | If you want to make a bigger change, it's a good idea to first file an issue and make sure someone from the team agrees that it’s needed. 16 | If you’ve found a bug, please file an issue that illustrates the bug with a minimal 17 | [reprex](https://www.tidyverse.org/help/#reprex) (this will also help you write a unit test, if needed). 18 | 19 | ### Pull request process 20 | 21 | * Fork the package and clone onto your computer. If you haven't done this before, we recommend using `usethis::create_from_github("PittMethods/r4ss", fork = TRUE)`. 22 | 23 | * Install all development dependencies with `devtools::install_dev_deps()`, and then make sure the package passes R CMD check by running `devtools::check()`. 24 | If R CMD check doesn't pass cleanly, it's a good idea to ask for help before continuing. 25 | * Create a Git branch for your pull request (PR). We recommend using `usethis::pr_init("brief-description-of-change")`. 26 | 27 | * Make your changes, commit to git, and then create a PR by running `usethis::pr_push()`, and following the prompts in your browser. 28 | The title of your PR should briefly describe the change. 29 | The body of your PR should contain `Fixes #issue-number`. 30 | 31 | * For user-facing changes, add a bullet to the top of `NEWS.md` (i.e. just below the first header). Follow the style described in . 32 | 33 | ### Code style 34 | 35 | * New code should follow the tidyverse [style guide](https://style.tidyverse.org). 36 | You can use the [styler](https://CRAN.R-project.org/package=styler) package to apply these styles, but please don't restyle code that has nothing to do with your PR. 37 | 38 | * We use [roxygen2](https://cran.r-project.org/package=roxygen2), with [Markdown syntax](https://cran.r-project.org/web/packages/roxygen2/vignettes/rd-formatting.html), for documentation. 39 | 40 | * We use [testthat](https://cran.r-project.org/package=testthat) for unit tests. 41 | Contributions with test cases included are easier to accept. 42 | 43 | ## Code of Conduct 44 | 45 | Please note that the r4ss project is released with a 46 | [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By contributing to this 47 | project you agree to abide by its terms. 48 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/issue_template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report or feature request 3 | about: Describe a bug you've seen or make a case for a new feature 4 | --- 5 | 6 | Please briefly describe your problem and what output you expect. If you have a question, please don't use this form. Instead, ask on or . 7 | 8 | Please include a minimal reproducible example (AKA a reprex). If you've never heard of a [reprex](http://reprex.tidyverse.org/) before, start by reading . 9 | 10 | Brief description of the problem 11 | 12 | ```r 13 | # insert reprex here 14 | ``` 15 | -------------------------------------------------------------------------------- /.github/SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Getting help with r4ss 2 | 3 | Thanks for using r4ss! 4 | Before filing an issue, there are a few places to explore and pieces to put together to make the process as smooth as possible. 5 | 6 | ## Make a reprex 7 | 8 | Start by making a minimal **repr**oducible **ex**ample using the [reprex](https://reprex.tidyverse.org/) package. 9 | If you haven't heard of or used reprex before, you're in for a treat! 10 | Seriously, reprex will make all of your R-question-asking endeavors easier (which is a pretty insane ROI for the five to ten minutes it'll take you to learn what it's all about). 11 | For additional reprex pointers, check out the [Get help!](https://www.tidyverse.org/help/) section of the tidyverse site. 12 | 13 | ## Where to ask? 14 | 15 | Armed with your reprex, the next step is to figure out [where to ask](https://www.tidyverse.org/help/#where-to-ask). 16 | 17 | * If it's a question: start with [community.rstudio.com](https://community.rstudio.com/), and/or StackOverflow. There are more people there to answer questions. 18 | 19 | * If it's a bug: you're in the right place, [file an issue](https://github.com/PittMethods/r4ss/issues/new). 20 | 21 | * If you're not sure: let the community help you figure it out! 22 | If your problem _is_ a bug or a feature request, you can easily return here and report it. 23 | 24 | Before opening a new issue, be sure to [search issues and pull requests](https://github.com/PittMethods/r4ss/issues) to make sure the bug hasn't been reported and/or already fixed in the development version. 25 | By default, the search will be pre-populated with `is:issue is:open`. 26 | You can [edit the qualifiers](https://help.github.com/articles/searching-issues-and-pull-requests/) (e.g. `is:pr`, `is:closed`) as needed. 27 | For example, you'd simply remove `is:open` to search _all_ issues in the repo, open or closed. 28 | 29 | ## What happens next? 30 | 31 | To be as efficient as possible, development of tidyverse packages tends to be very bursty, so you shouldn't worry if you don't get an immediate response. 32 | Typically we don't look at a repo until a sufficient quantity of issues accumulates, then there’s a burst of intense activity as we focus our efforts. 33 | That makes development more efficient because it avoids expensive context switching between problems, at the cost of taking longer to get back to you. 34 | This process makes a good reprex particularly important because it might be multiple months between your initial report and when we start working on it. 35 | If we can’t reproduce the bug, we can’t fix it! 36 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: main 4 | 5 | name: Publish without rendering 6 | 7 | jobs: 8 | build-deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Check out repository 12 | uses: actions/checkout@v2 13 | 14 | - name: Set up Quarto 15 | uses: quarto-dev/quarto-actions/setup@v2 16 | with: 17 | # To install LaTeX to build PDF book 18 | tinytex: true 19 | # uncomment below and fill to pin a version 20 | # version: 0.9.600 21 | 22 | # add software dependencies here 23 | 24 | - name: Publish to GitHub Pages 25 | uses: quarto-dev/quarto-actions/publish@v2 26 | with: 27 | target: gh-pages 28 | render: false 29 | env: 30 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | /.quarto/ 6 | -------------------------------------------------------------------------------- /404.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Page Not Found" 3 | --- 4 | 5 | 6 | The page you requested cannot be found (perhaps it was moved or renamed). 7 | 8 | You may want to try searching to find the page's new location. 9 | 10 | ![](./img/page_not_found_2780E3.svg){.hero} 11 | -------------------------------------------------------------------------------- /Day_1/Day1A_Practice.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 1A Practice" 3 | format: html 4 | --- 5 | 6 | ![](../img/programmer_2780E3.svg){.hero} 7 | 8 | ## Question 1. 9 | 10 | Read what the user wanted to do and look at the command they sent to R. Fix the errors in the commands and calculate the answers. 11 | 12 | a) I want to add 20 and 0.2 and divide that sum by 4.1. But I get an error when I try:
`[20 + .2] \ 4.1` 13 | b) I want to multiply 6 by the sum of 2 and 1,300. But I get an error when I try:
`6 x (2 + 1,300)` 14 | 15 |

16 | Click here for the answer key 17 |
18 | 19 | **Answer (a)** 20 | 21 | Change the brackets `[]` to parentheses `()` because parentheses `()` are the order of operations operator in R. Also, change the backslash `\` to a forward slash `/` because forward slash `/` is the division operator in R. 22 | 23 | ```{r} 24 | #| comment: "#>" 25 | #| collapse: true 26 | 27 | (20 + .2) / 4.1 28 | ``` 29 | 30 | **Answer (b)** 31 | 32 | Change the `x` to an asterisk `*` because asterisk `*` is the multiplication operator in R. Also, remove the comma `,` from `1,300` because R doesn't use commas to delimit digits in large numbers. 33 | 34 | ```{r} 35 | #| comment: "#>" 36 | #| collapse: true 37 | 38 | 6 * (2 + 1300) 39 | ``` 40 | 41 |

42 | 43 | ## Question 2. 44 | 45 | Which of the following commands do you think will create an error in R? Why? 46 | 47 | a) `score@T1 <- 3.2` 48 | b) `score_at_T1 <- 3.2` 49 | c) `score at T1 <- 3.2` 50 | d) `1_score <- 3.2` 51 | e) `ScoreAtTime1 <- 3.2` 52 | 53 | Make your best guesses just by looking at the commands and then check your guesses by running the commands in R. 54 | 55 |

56 | Click here for the answer key 57 | 58 | > The following commands will create an error in R: **a** (`@` is not allowed in an object name), **c** (spaces are not allowed in an object name), and **d** (the first character in an object name cannot be a number). 59 | 60 |

61 | 62 | ## Resources 63 | 64 | - [R4DS Chapter 8](https://r4ds.had.co.nz/workflow-projects.html): Read more about projects 65 | 66 | - [R4DS Chapter 4](https://r4ds.had.co.nz/workflow-basics.html): Read about basic programming 67 | 68 | - [R4DS Chapter 27](https://r4ds.had.co.nz/r-markdown.html): Read more about RMarkdown 69 | 70 | ## Fun Stuff 71 | 72 | ### Literal Genie 73 | 74 | What it feels like to talk to R sometimes... 75 | 76 | 77 | -------------------------------------------------------------------------------- /Day_1/Day1A_Slides.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 1A Slides" 3 | format: 4 | html: 5 | css: ../styles.css 6 | --- 7 | 8 | 10 | 11 | *Note.* To view the slideshow in full screen mode, click inside it and press the "f" key on your keyboard.
12 | You can also use the menu by clicking on the icon at the bottom-left of each slide. 13 | -------------------------------------------------------------------------------- /Day_1/Day1B_Practice.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 1B Practice" 3 | format: 4 | html: 5 | df-print: paged 6 | --- 7 | 8 | ![](../img/spreadsheets_2780E3.svg){.hero} 9 | 10 | ## Question 1. 11 | 12 | a) Create a character vector named `flavors` that contains the following strings and print it: 13 | - Cookies & Cream 14 | - Americone Dream (R) 15 | - Bob Marley's 1 Love 16 | b) Use a function to calculate the number of strings in `flavors`. 17 | c) Use another function to calculate the number of characters in each string in `flavors`. 18 | d) Let R know how you feel about ice cream by using a function to either make all the characters in `flavors` uppercase (you LOVE ice cream) or lowercase (you don't love ice cream). 19 | 20 |

21 | Click here for the answer key 22 |
23 | 24 | **Answer (a)** 25 | ```{r} 26 | #| comment: "#>" 27 | #| collapse: true 28 | 29 | flavors <- c("Cookies & Cream", "Americone Dream (R)", "Bob Marley's 1 Love") 30 | flavors 31 | ``` 32 | 33 | **Answer (b)** 34 | ```{r} 35 | #| comment: "#>" 36 | #| collapse: true 37 | 38 | length(flavors) 39 | ``` 40 | 41 | **Answer (c)** 42 | ```{r} 43 | #| comment: "#>" 44 | #| collapse: true 45 | 46 | nchar(flavors) 47 | ``` 48 | 49 | **Answer (d)** 50 | ```{r} 51 | #| comment: "#>" 52 | #| collapse: true 53 | 54 | toupper(flavors) 55 | tolower(flavors) 56 | ``` 57 | 58 |
59 |

60 | 61 | ## Question 2. 62 | 63 | The following table summarizes the season information for the eight seasons of AMC's *Breaking Bad* show. 64 | 65 | a) Tidy up this data and save it to a tibble. Decide for yourself how to handle season 5 (should it be a single observation or two?). For the first and last aired dates, just store the year as a number. 66 | 67 | b) Save the tibble you created to a CSV file named "breaking_bad.csv". 68 | 69 | ![](../img/breaking_bad_wikipedia.png) 70 | 71 |

72 | Click here for the answer key
73 | 74 | **Answer (a)** 75 | 76 | Version with one observation for the season five parts 77 | 78 | ```{r} 79 | #| message: false 80 | 81 | library(tidyverse) 82 | season <- c(1, 2, 3, 4, 5) 83 | episodes <- c(7, 13, 13, 13, 16) 84 | first_air <- c(2008, 2009, 2010, 2011, 2012) 85 | last_air <- c(2008, 2009, 2010, 2011, 2013) 86 | network <- "AMC" 87 | breaking_bad <- 88 | tibble(season, episodes, first_air, last_air, network) 89 | breaking_bad 90 | ``` 91 | 92 | Version with two separate observations for the season five parts 93 | 94 | ```{r} 95 | library(tidyverse) 96 | season <- c(1, 2, 3, 4, 5.1, 5.2) 97 | episodes <- c(7, 13, 13, 13, 8, 8) 98 | first_air <- c(2008, 2009, 2010, 2011, 2012, 2013) 99 | last_air <- c(2008, 2009, 2010, 2011, 2012, 2013) 100 | network <- "AMC" 101 | breaking_bad <- 102 | tibble(season, episodes, first_air, last_air, network) 103 | breaking_bad 104 | ``` 105 | 106 | **Answer (b)** 107 | 108 | ```{r} 109 | #| message: false 110 | #| eval: false 111 | 112 | write_csv(breaking_bad, "breaking_bad.csv") 113 | ``` 114 | 115 | 116 |

117 | 118 | ## Resources 119 | - [R4DS Chapter 14](https://r4ds.had.co.nz/strings.html): Read more about strings 120 | 121 | - [Broman & Woo (2018)](https://www.tandfonline.com/doi/full/10.1080/00031305.2017.1375989): Read more about tidy data principles 122 | 123 | - [R4DS Chapter 10](https://r4ds.had.co.nz/tibbles.html): Read more about tibbles and data frames 124 | 125 | - [R4DS Chapter 11](https://r4ds.had.co.nz/data-import.html): Read more about data reading and writing 126 | 127 | ## Fun Stuff 128 | 129 | ### "Who's" on First? 130 | 131 | A lesson about the importance of strings... 132 | 133 | 134 | 135 | ### Fundamentals of Tidying 136 | 137 | She doesn't like formatting-as-data either... 138 | 139 | 140 | -------------------------------------------------------------------------------- /Day_1/Day1B_Slides.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 1B Slides" 3 | format: 4 | html: 5 | css: ../styles.css 6 | --- 7 | 8 | 10 | 11 | *Note.* To view the slideshow in full screen mode, click inside it and press the "f" key on your keyboard.
12 | You can also use the menu by clicking on the icon at the bottom-left of each slide. 13 | -------------------------------------------------------------------------------- /Day_2/Day2A_Slides.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 2A Slides" 3 | format: 4 | html: 5 | css: ../styles.css 6 | --- 7 | 8 | 10 | 11 | *Note.* To view the slideshow in full screen mode, click inside it and press the "f" key on your keyboard.
12 | You can also use the menu by clicking on the icon at the bottom-left of each slide. 13 | -------------------------------------------------------------------------------- /Day_2/Day2B_Slides.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 2B Slides" 3 | format: 4 | html: 5 | css: ../styles.css 6 | --- 7 | 8 | 10 | 11 | *Note.* To view the slideshow in full screen mode, click inside it and press the "f" key on your keyboard.
12 | You can also use the menu by clicking on the icon at the bottom-left of each slide. 13 | -------------------------------------------------------------------------------- /Day_3/Day3A_Practice.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 3A Practice" 3 | format: 4 | html: 5 | df-print: paged 6 | --- 7 | 8 | ![](../img/statistics_2780E3.svg){.hero} 9 | 10 | ```{r} 11 | #| echo: false 12 | #| message: false 13 | 14 | library(tidyverse) 15 | ``` 16 | 17 | ## Question 1. 18 | 19 | a) Download the [yearspubs](https://pittmethods.github.io/r4ss/data/yearspubs.csv) dataset from the [workshop website](https://pittmethods.github.io/r4ss/Details/datasets.html), copy it to your project folder, and read it into R. 20 | 21 | b) Estimate the correlation between academics' number of publications (`n_pubs`) and number of citations (`n_cites`) in this sample. 22 | 23 | c) Estimate the average number of citations for male and female academics (with 95\% confidence intervals). 24 | 25 | d) Estimate the effect size of this difference and test whether it is statistically significant. You can decide whether to use a parametric or nonparametric approach. 26 | 27 |

28 | Click here for the answer key 29 |
30 | 31 | **Answer (a)** 32 | 33 | ```{r} 34 | #| comment: "#>" 35 | #| eval: false 36 | #| collapse: true 37 | 38 | library(tidyverse) 39 | yearspubs <- read_csv("yearspubs.csv") 40 | yearspubs 41 | ``` 42 | 43 | ```{r} 44 | #| comment: "#>" 45 | #| echo: false 46 | #| collapse: true 47 | #| message: false 48 | 49 | yearspubs <- read_csv("../data/yearspubs.csv") 50 | yearspubs 51 | ``` 52 | 53 | **Answer (b)** 54 | 55 | ```{r} 56 | #| comment: "#>" 57 | #| collapse: true 58 | #| warning: false 59 | 60 | library(correlation) 61 | correlation(yearspubs) 62 | ``` 63 | 64 | The correlation between number of publications and citations is 0.34. 65 | 66 | **Answer (c)** 67 | 68 | ```{r} 69 | #| comment: "#>" 70 | #| collapse: true 71 | #| warning: false 72 | 73 | library(statsExpressions) 74 | centrality_description(yearspubs, x = sex, y = n_cites) 75 | ``` 76 | 77 | The average was estimates as 37.3 \[33.4, 43.5\] for females and 42.4 \[35.0, 48.7\] for males. 78 | 79 | **Answer (d)** 80 | 81 | ```{r} 82 | #| comment: "#>" 83 | #| collapse: true 84 | #| warning: false 85 | 86 | two_sample_test(yearspubs, x = sex, y = n_cites, type = "parametric") 87 | ``` 88 | 89 | The effect size was $g=-0.3$ but the difference was not significant $(p=.232)$. 90 | 91 | ```{r} 92 | #| message: false 93 | 94 | # Optionally: 95 | library(ggstatsplot) 96 | ggbetweenstats(yearspubs, x = sex, y = n_cites) 97 | ``` 98 | 99 | 100 |

101 | 102 | ## Question 2 103 | 104 | Using the `mpg` tibble from the \{tidyverse\} package, statistically test whether cars with the three different drive trains (`drv`) get significantly different city fuel efficiency (`cty`) on average. Calculate the effect size for this difference. 105 | 106 |

107 | Click here for the answer key 108 |
109 | 110 | ```{r} 111 | #| comment: "#>" 112 | #| collapse: true 113 | #| warning: false 114 | 115 | oneway_anova(mpg, x = drv, y = cty) 116 | ``` 117 | 118 | The effect size was $\omega^2=0.68$ and the difference was significant $(p<.001)$. 119 | 120 | ```{r} 121 | #| comment: "#>" 122 | #| collapse: true 123 | #| warning: false 124 | 125 | ggbetweenstats(mpg, x = drv, y = cty) 126 | ``` 127 | 128 |

129 | 130 | ## Question 3 131 | 132 | Did you bring your own data? If so, load it into R and explore it using the tools we learned this week. Wrangle it a bit and maybe do some basic statistics on it, estimating correlations and comparing group means. If not, then look through the datasets on the [workshop website](https://pittmethods.github.io/r4ss/Details/datasets.html) and find one that is interesting to you; do the same process I described above to practice your skills in a more self-directed manner. 133 | 134 | ## Resources 135 | 136 | - [Web](https://easystats.github.io/correlation/articles/types.html): Read more about the methods offered by the \{correlation\} package 137 | 138 | - [Web](https://indrajeetpatil.github.io/statsExpressions/articles/statsExpressions.html#expressions-for-plots): Read more about all the information in a \{ggstatsplot\} graphic 139 | 140 | - [Learning Statistics with R](https://learningstatisticswithr.com/): A free textbook on the ideas/theory underlying the statistical models we just discussed 141 | -------------------------------------------------------------------------------- /Day_3/Day3A_Slides.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 3A Slides" 3 | format: 4 | html: 5 | css: ../styles.css 6 | --- 7 | 8 | 10 | 11 | *Note.* To view the slideshow in full screen mode, click inside it and press the "f" key on your keyboard.
12 | You can also use the menu by clicking on the icon at the bottom-left of each slide. 13 | -------------------------------------------------------------------------------- /Day_3/Day3B_Slides.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Day 3B Slides" 3 | format: 4 | html: 5 | css: ../styles.css 6 | --- 7 | 8 | 10 | 11 | *Note.* To view the slideshow in full screen mode, click inside it and press the "f" key on your keyboard.
12 | You can also use the menu by clicking on the icon at the bottom-left of each slide. 13 | -------------------------------------------------------------------------------- /Day_3/Extra_Slides.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Extra Slides" 3 | format: 4 | html: 5 | css: ../styles.css 6 | --- 7 | 8 | 10 | 11 | *Note.* To view the slideshow in full screen mode, click inside it and press the "f" key on your keyboard.
12 | You can also use the menu by clicking on the icon at the bottom-left of each slide. 13 | -------------------------------------------------------------------------------- /Details/instructor.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Jeffrey Girard" 3 | about: 4 | template: trestles 5 | image: ../img/Girard_500x500.jpg 6 | links: 7 | - icon: link 8 | text: website 9 | href: https://www.jmgirard.com/ 10 | - icon: twitter 11 | text: twitter 12 | href: https://www.twitter.com/jeffreymgirard 13 | - icon: github 14 | text: github 15 | href: https://www.github.com/jmgirard 16 | --- 17 | 18 | 19 | 20 | ## Experience 21 | 22 | **University of Kansas** | Lawrence, KS
23 | Quantitative Area Head | 2022 – present
24 | E. Wright Assistant Professor | 2020 – present 25 | 26 | **Carnegie Mellon University** | Pittsburgh, PA
27 | Postdoctoral Research Fellow | 2018 – 2020 28 | 29 | ## Education 30 | 31 | **University of Pittsburgh** | Pittsburgh, PA
32 | PhD in Clinical Psychology | 2018 33 | 34 | **University of Pittsburgh** | Pittsburgh, PA
35 | MS in Clinical Psychology | 2013 36 | 37 | **University of Washington** | Seattle, WA
38 | BA in Psychology/Philosophy | 2008 39 | -------------------------------------------------------------------------------- /Details/schedule.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Schedule" 3 | --- 4 | 5 | ![](../img/date_picker_2780E3.svg){.hero} 6 | 7 | ## Day 1 8 | 9 | 10:30am – 3:30pm [EDT](https://time.is/EDT) (July 25, 2022) 10 | 11 | - Overview 12 | - Program I 13 | - Practice I 14 | - Program II 15 | - Wrangle I 16 | - Practice II 17 | 18 | Zoom Link: 19 | 20 | ## Day 2 21 | 22 | 10:30am – 3:30pm [EDT](https://time.is/EDT) (July 26, 2022) 23 | 24 | - Wrangle II 25 | - Program III 26 | - Practice III 27 | - Wrangle III 28 | - Visualize I/II 29 | - Practice IV 30 | 31 | Zoom Link: 32 | 33 | ## Day 3 34 | 35 | 10:30am – 3:30pm [EDT](https://time.is/EDT) (July 27, 2022) 36 | 37 | - Model I 38 | - Practice V 39 | - Model II 40 | - Practice VI 41 | - Consultation 42 | 43 | Zoom Link: 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # r4ss 2 | Materials for the "Introduction to R for Social Scientists" Workshop 3 | -------------------------------------------------------------------------------- /_extensions/jmgirard/lordicon/_extension.yml: -------------------------------------------------------------------------------- 1 | title: Lordicon support 2 | author: Jeffrey Girard 3 | version: 0.1.0 4 | contributes: 5 | shortcodes: 6 | - lordicon.lua 7 | -------------------------------------------------------------------------------- /_extensions/jmgirard/lordicon/lordicon.lua: -------------------------------------------------------------------------------- 1 | function ensureHtmlDeps() 2 | quarto.doc.addHtmlDependency({ 3 | name = 'lord-icon-bundle', 4 | version = '3.4.2', 5 | scripts = {'assets/js/bundle.js'} 6 | }) 7 | end 8 | 9 | 10 | return { 11 | ["li"] = function(args, kwargs) 12 | local code = pandoc.utils.stringify(args[1]) 13 | local trigger = pandoc.utils.stringify(kwargs['trigger']) 14 | local speed = pandoc.utils.stringify(kwargs['speed']) 15 | local delay = pandoc.utils.stringify(kwargs['delay']) 16 | local colors = pandoc.utils.stringify(kwargs['colors']) 17 | local stroke = pandoc.utils.stringify(kwargs['stroke']) 18 | local scale = pandoc.utils.stringify(kwargs['scale']) 19 | local x = pandoc.utils.stringify(kwargs['x']) 20 | local y = pandoc.utils.stringify(kwargs['y']) 21 | local class = pandoc.utils.stringify(kwargs['class']) 22 | 23 | local src = 'src="https://cdn.lordicon.com/' .. code .. '.json" ' 24 | 25 | if trigger ~= '' then 26 | trigger = 'trigger="' .. trigger .. '" ' 27 | end 28 | 29 | if speed ~= '' then 30 | speed = 'speed="' .. speed .. '" ' 31 | end 32 | 33 | if delay ~= '' then 34 | delay = 'delay="' .. delay .. '" ' 35 | end 36 | 37 | if colors ~= '' then 38 | colors = 'colors="' .. colors .. '" ' 39 | end 40 | 41 | if stroke ~= '' then 42 | stroke = 'stroke="' .. stroke .. '" ' 43 | end 44 | 45 | if scale ~= '' then 46 | scale = 'scale="' .. scale .. '" ' 47 | end 48 | 49 | if x ~= '' then 50 | x = 'axis-x="' .. x .. '" ' 51 | end 52 | 53 | if y ~= '' then 54 | y = 'axis-y="' .. y .. '" ' 55 | end 56 | 57 | if class ~= '' then 58 | class = 'class="' .. class .. '" ' 59 | end 60 | 61 | -- detect html 62 | if quarto.doc.isFormat("html:js") then 63 | ensureHtmlDeps() 64 | return pandoc.RawInline('html', '') 65 | else 66 | return pandoc.Null() 67 | end 68 | 69 | end 70 | } 71 | -------------------------------------------------------------------------------- /_freeze/Day_1/Day1A_Practice/execute-results/html.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "78f998561be6125f91dc686e6eb59522", 3 | "result": { 4 | "markdown": "---\ntitle: \"Day 1A Practice\"\nformat: html\n---\n\n\n![](../img/programmer_2780E3.svg){.hero}\n\n## Question 1.\n\nRead what the user wanted to do and look at the command they sent to R. Fix the errors in the commands and calculate the answers.\n\na) I want to add 20 and 0.2 and divide that sum by 4.1. But I get an error when I try:
`[20 + .2] \\ 4.1`\nb) I want to multiply 6 by the sum of 2 and 1,300. But I get an error when I try:
`6 x (2 + 1,300)`\n\n

\nClick here for the answer key\n
\n\n**Answer (a)**\n\nChange the brackets `[]` to parentheses `()` because parentheses `()` are the order of operations operator in R. Also, change the backslash `\\` to a forward slash `/` because forward slash `/` is the division operator in R.\n\n\n::: {.cell}\n\n```{.r .cell-code}\n(20 + .2) / 4.1\n#> [1] 4.926829\n```\n:::\n\n\n**Answer (b)**\n\nChange the `x` to an asterisk `*` because asterisk `*` is the multiplication operator in R. Also, remove the comma `,` from `1,300` because R doesn't use commas to delimit digits in large numbers.\n\n\n::: {.cell}\n\n```{.r .cell-code}\n6 * (2 + 1300)\n#> [1] 7812\n```\n:::\n\n\n

\n\n## Question 2.\n\nWhich of the following commands do you think will create an error in R? Why?\n\na) `score@T1 <- 3.2`\nb) `score_at_T1 <- 3.2`\nc) `score at T1 <- 3.2`\nd) `1_score <- 3.2`\ne) `ScoreAtTime1 <- 3.2`\n\nMake your best guesses just by looking at the commands and then check your guesses by running the commands in R.\n\n

\nClick here for the answer key\n\n> The following commands will create an error in R: **a** (`@` is not allowed in an object name), **c** (spaces are not allowed in an object name), and **d** (the first character in an object name cannot be a number).\n\n

\n\n## Resources\n\n- [R4DS Chapter 8](https://r4ds.had.co.nz/workflow-projects.html): Read more about projects\n\n- [R4DS Chapter 4](https://r4ds.had.co.nz/workflow-basics.html): Read about basic programming\n\n- [R4DS Chapter 27](https://r4ds.had.co.nz/r-markdown.html): Read more about RMarkdown\n\n## Fun Stuff\n\n### Literal Genie\n\nWhat it feels like to talk to R sometimes...\n\n\n", 5 | "supporting": [], 6 | "filters": [ 7 | "rmarkdown/pagebreak.lua" 8 | ], 9 | "includes": {}, 10 | "engineDependencies": {}, 11 | "preserve": {}, 12 | "postProcess": true 13 | } 14 | } -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-10-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-10-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-11-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-11-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-12-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-12-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-13-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-13-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-14-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-14-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-15-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-15-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-6-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-8-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-8-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/Day2B_Practice/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg1-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg2-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg3-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/dtg4-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/geoms-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/geoms-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/geoms-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/geoms-2.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics1-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics1-2.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics2-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_day2b/figure-revealjs/graphics2-2.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg1-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg2-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg3-1.png -------------------------------------------------------------------------------- /_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_2/r4ss_extraslides/figure-revealjs/dtg4-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/Day3A_Practice/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/Day3A_Practice/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/Day3A_Practice/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/Day3A_Practice/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-4-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-4-2.png -------------------------------------------------------------------------------- /_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-4-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-4-3.png -------------------------------------------------------------------------------- /_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/Day3B_Practice/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg1-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg2-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg3-1.png -------------------------------------------------------------------------------- /_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/Day_3/r4ss_extraslides/figure-revealjs/dtg4-1.png -------------------------------------------------------------------------------- /_freeze/site_libs/pagedtable-1.1/css/pagedtable.css: -------------------------------------------------------------------------------- 1 | .pagedtable { 2 | overflow: auto; 3 | padding-left: 8px; 4 | padding-right: 8px; 5 | } 6 | 7 | .pagedtable-wrapper { 8 | border: 1px solid #ccc; 9 | border-radius: 4px; 10 | margin-bottom: 10px; 11 | } 12 | 13 | .pagedtable table { 14 | width: 100%; 15 | max-width: 100%; 16 | margin: 0; 17 | } 18 | 19 | .pagedtable th { 20 | padding: 0 5px 0 5px; 21 | border: none; 22 | border-bottom: 2px solid #dddddd; 23 | 24 | min-width: 45px; 25 | } 26 | 27 | .pagedtable-empty th { 28 | display: none; 29 | } 30 | 31 | .pagedtable td { 32 | padding: 0 4px 0 4px; 33 | } 34 | 35 | .pagedtable .even { 36 | background-color: rgba(140, 140, 140, 0.1); 37 | } 38 | 39 | .pagedtable-padding-col { 40 | display: none; 41 | } 42 | 43 | .pagedtable a { 44 | -webkit-touch-callout: none; 45 | -webkit-user-select: none; 46 | -khtml-user-select: none; 47 | -moz-user-select: none; 48 | -ms-user-select: none; 49 | user-select: none; 50 | } 51 | 52 | .pagedtable-index-nav { 53 | cursor: pointer; 54 | padding: 0 5px 0 5px; 55 | float: right; 56 | border: 0; 57 | } 58 | 59 | .pagedtable-index-nav-disabled { 60 | cursor: default; 61 | text-decoration: none; 62 | color: #999; 63 | } 64 | 65 | a.pagedtable-index-nav-disabled:hover { 66 | text-decoration: none; 67 | color: #999; 68 | } 69 | 70 | .pagedtable-indexes { 71 | cursor: pointer; 72 | float: right; 73 | border: 0; 74 | } 75 | 76 | .pagedtable-index-current { 77 | cursor: default; 78 | text-decoration: none; 79 | font-weight: bold; 80 | color: #333; 81 | border: 0; 82 | } 83 | 84 | a.pagedtable-index-current:hover { 85 | text-decoration: none; 86 | font-weight: bold; 87 | color: #333; 88 | } 89 | 90 | .pagedtable-index { 91 | width: 30px; 92 | display: inline-block; 93 | text-align: center; 94 | border: 0; 95 | } 96 | 97 | .pagedtable-index-separator-left { 98 | display: inline-block; 99 | color: #333; 100 | font-size: 9px; 101 | padding: 0 0 0 0; 102 | cursor: default; 103 | } 104 | 105 | .pagedtable-index-separator-right { 106 | display: inline-block; 107 | color: #333; 108 | font-size: 9px; 109 | padding: 0 4px 0 0; 110 | cursor: default; 111 | } 112 | 113 | .pagedtable-footer { 114 | padding-top: 4px; 115 | padding-bottom: 5px; 116 | } 117 | 118 | .pagedtable-not-empty .pagedtable-footer { 119 | border-top: 2px solid #dddddd; 120 | } 121 | 122 | .pagedtable-info { 123 | overflow: hidden; 124 | color: #999; 125 | white-space: nowrap; 126 | text-overflow: ellipsis; 127 | } 128 | 129 | .pagedtable-header-name { 130 | overflow: hidden; 131 | text-overflow: ellipsis; 132 | } 133 | 134 | .pagedtable-header-type { 135 | color: #999; 136 | font-weight: 400; 137 | } 138 | 139 | .pagedtable-na-cell { 140 | font-style: italic; 141 | opacity: 0.3; 142 | } 143 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v4.0 | 20180602 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | main, menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, main, menu, nav, section { 29 | display: block; 30 | } -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('./league-gothic.eot'); 4 | src: url('./league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('./league-gothic.woff') format('woff'), 6 | url('./league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | src: url('./source-sans-pro-regular.eot'); 4 | src: url('./source-sans-pro-regular.eot?#iefix') format('embedded-opentype'), 5 | url('./source-sans-pro-regular.woff') format('woff'), 6 | url('./source-sans-pro-regular.ttf') format('truetype'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: 'Source Sans Pro'; 13 | src: url('./source-sans-pro-italic.eot'); 14 | src: url('./source-sans-pro-italic.eot?#iefix') format('embedded-opentype'), 15 | url('./source-sans-pro-italic.woff') format('woff'), 16 | url('./source-sans-pro-italic.ttf') format('truetype'); 17 | font-weight: normal; 18 | font-style: italic; 19 | } 20 | 21 | @font-face { 22 | font-family: 'Source Sans Pro'; 23 | src: url('./source-sans-pro-semibold.eot'); 24 | src: url('./source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'), 25 | url('./source-sans-pro-semibold.woff') format('woff'), 26 | url('./source-sans-pro-semibold.ttf') format('truetype'); 27 | font-weight: 600; 28 | font-style: normal; 29 | } 30 | 31 | @font-face { 32 | font-family: 'Source Sans Pro'; 33 | src: url('./source-sans-pro-semibolditalic.eot'); 34 | src: url('./source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'), 35 | url('./source-sans-pro-semibolditalic.woff') format('woff'), 36 | url('./source-sans-pro-semibolditalic.ttf') format('truetype'); 37 | font-weight: 600; 38 | font-style: italic; 39 | } 40 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/highlight/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | color: #ddd; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-keyword, 15 | .hljs-selector-tag, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-name { 19 | color: #f92672; 20 | } 21 | 22 | .hljs-code { 23 | color: #66d9ef; 24 | } 25 | 26 | .hljs-class .hljs-title { 27 | color: white; 28 | } 29 | 30 | .hljs-attribute, 31 | .hljs-symbol, 32 | .hljs-regexp, 33 | .hljs-link { 34 | color: #bf79db; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-bullet, 39 | .hljs-subst, 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-emphasis, 43 | .hljs-type, 44 | .hljs-built_in, 45 | .hljs-builtin-name, 46 | .hljs-selector-attr, 47 | .hljs-selector-pseudo, 48 | .hljs-addition, 49 | .hljs-variable, 50 | .hljs-template-tag, 51 | .hljs-template-variable { 52 | color: #a6e22e; 53 | } 54 | 55 | .hljs-comment, 56 | .hljs-quote, 57 | .hljs-deletion, 58 | .hljs-meta { 59 | color: #75715e; 60 | } 61 | 62 | .hljs-keyword, 63 | .hljs-selector-tag, 64 | .hljs-literal, 65 | .hljs-doctag, 66 | .hljs-title, 67 | .hljs-section, 68 | .hljs-type, 69 | .hljs-selector-id { 70 | font-weight: bold; 71 | } 72 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/highlight/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/math/katex.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for KaTeX. 4 | * 5 | * @author Hakim El Hattab 6 | * @author Gerhard Burger 7 | */ 8 | export const KaTeX = () => { 9 | let deck; 10 | 11 | let defaultOptions = { 12 | version: 'latest', 13 | delimiters: [ 14 | {left: '$$', right: '$$', display: true}, // Note: $$ has to come before $ 15 | {left: '$', right: '$', display: false}, 16 | {left: '\\(', right: '\\)', display: false}, 17 | {left: '\\[', right: '\\]', display: true} 18 | ], 19 | ignoredTags: ['script', 'noscript', 'style', 'textarea', 'pre'] 20 | } 21 | 22 | const loadCss = src => { 23 | let link = document.createElement('link'); 24 | link.rel = 'stylesheet'; 25 | link.href = src; 26 | document.head.appendChild(link); 27 | }; 28 | 29 | /** 30 | * Loads a JavaScript file and returns a Promise for when it is loaded 31 | * Credits: https://aaronsmith.online/easily-load-an-external-script-using-javascript/ 32 | */ 33 | const loadScript = src => { 34 | return new Promise((resolve, reject) => { 35 | const script = document.createElement('script') 36 | script.type = 'text/javascript' 37 | script.onload = resolve 38 | script.onerror = reject 39 | script.src = src 40 | document.head.append(script) 41 | }) 42 | }; 43 | 44 | async function loadScripts(urls) { 45 | for(const url of urls) { 46 | await loadScript(url); 47 | } 48 | } 49 | 50 | return { 51 | id: 'katex', 52 | 53 | init: function (reveal) { 54 | 55 | deck = reveal; 56 | 57 | let revealOptions = deck.getConfig().katex || {}; 58 | 59 | let options = {...defaultOptions, ...revealOptions}; 60 | const {local, version, extensions, ...katexOptions} = options; 61 | 62 | let baseUrl = options.local || 'https://cdn.jsdelivr.net/npm/katex'; 63 | let versionString = options.local ? '' : '@' + options.version; 64 | 65 | let cssUrl = baseUrl + versionString + '/dist/katex.min.css'; 66 | let katexUrl = baseUrl + versionString + '/dist/katex.min.js'; 67 | let mhchemUrl = baseUrl + versionString + '/dist/contrib/mhchem.min.js' 68 | let karUrl = baseUrl + versionString + '/dist/contrib/auto-render.min.js'; 69 | 70 | let katexScripts = [katexUrl]; 71 | if(options.extensions && options.extensions.includes("mhchem")) { 72 | katexScripts.push(mhchemUrl); 73 | } 74 | katexScripts.push(karUrl); 75 | 76 | const renderMath = () => { 77 | renderMathInElement(reveal.getSlidesElement(), katexOptions); 78 | deck.layout(); 79 | } 80 | 81 | loadCss(cssUrl); 82 | 83 | // For some reason dynamically loading with defer attribute doesn't result in the expected behavior, the below code does 84 | loadScripts(katexScripts).then(() => { 85 | if( deck.isReady() ) { 86 | renderMath(); 87 | } 88 | else { 89 | deck.on( 'ready', renderMath.bind( this ) ); 90 | } 91 | }); 92 | 93 | } 94 | } 95 | 96 | }; 97 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/math/mathjax2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax. 4 | * 5 | * @author Hakim El Hattab 6 | */ 7 | export const MathJax2 = () => { 8 | 9 | // The reveal.js instance this plugin is attached to 10 | let deck; 11 | 12 | let defaultOptions = { 13 | messageStyle: 'none', 14 | tex2jax: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ], 16 | skipTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 17 | }, 18 | skipStartupTypeset: true 19 | }; 20 | 21 | function loadScript( url, callback ) { 22 | 23 | let head = document.querySelector( 'head' ); 24 | let script = document.createElement( 'script' ); 25 | script.type = 'text/javascript'; 26 | script.src = url; 27 | 28 | // Wrapper for callback to make sure it only fires once 29 | let finish = () => { 30 | if( typeof callback === 'function' ) { 31 | callback.call(); 32 | callback = null; 33 | } 34 | } 35 | 36 | script.onload = finish; 37 | 38 | // IE 39 | script.onreadystatechange = () => { 40 | if ( this.readyState === 'loaded' ) { 41 | finish(); 42 | } 43 | } 44 | 45 | // Normal browsers 46 | head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'mathjax2', 52 | 53 | init: function( reveal ) { 54 | 55 | deck = reveal; 56 | 57 | let revealOptions = deck.getConfig().mathjax2 || deck.getConfig().math || {}; 58 | 59 | let options = { ...defaultOptions, ...revealOptions }; 60 | let mathjax = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js'; 61 | let config = options.config || 'TeX-AMS_HTML-full'; 62 | let url = mathjax + '?config=' + config; 63 | 64 | options.tex2jax = { ...defaultOptions.tex2jax, ...revealOptions.tex2jax }; 65 | 66 | options.mathjax = options.config = null; 67 | 68 | loadScript( url, function() { 69 | 70 | MathJax.Hub.Config( options ); 71 | 72 | // Typeset followed by an immediate reveal.js layout since 73 | // the typesetting process could affect slide height 74 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, deck.getRevealElement() ] ); 75 | MathJax.Hub.Queue( deck.layout ); 76 | 77 | // Reprocess equations in slides when they turn visible 78 | deck.on( 'slidechanged', function( event ) { 79 | 80 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] ); 81 | 82 | } ); 83 | 84 | } ); 85 | 86 | } 87 | } 88 | 89 | }; 90 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/math/mathjax3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax 3 4 | * 5 | * @author Hakim El Hattab 6 | * @author Gerhard Burger 7 | */ 8 | export const MathJax3 = () => { 9 | 10 | // The reveal.js instance this plugin is attached to 11 | let deck; 12 | 13 | let defaultOptions = { 14 | tex: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ] 16 | }, 17 | options: { 18 | skipHtmlTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 19 | }, 20 | startup: { 21 | ready: () => { 22 | MathJax.startup.defaultReady(); 23 | MathJax.startup.promise.then(() => { 24 | Reveal.layout(); 25 | }); 26 | } 27 | } 28 | }; 29 | 30 | function loadScript( url, callback ) { 31 | 32 | let script = document.createElement( 'script' ); 33 | script.type = "text/javascript" 34 | script.id = "MathJax-script" 35 | script.src = url; 36 | script.async = true 37 | 38 | // Wrapper for callback to make sure it only fires once 39 | script.onload = () => { 40 | if (typeof callback === 'function') { 41 | callback.call(); 42 | callback = null; 43 | } 44 | }; 45 | 46 | document.head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'mathjax3', 52 | init: function(reveal) { 53 | 54 | deck = reveal; 55 | 56 | let revealOptions = deck.getConfig().mathjax3 || {}; 57 | let options = {...defaultOptions, ...revealOptions}; 58 | options.tex = {...defaultOptions.tex, ...revealOptions.tex} 59 | options.options = {...options.options, ...defaultOptions.options} 60 | options.startup = {...defaultOptions.startup, ...revealOptions.startup} 61 | 62 | let url = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'; 63 | options.mathjax = null; 64 | 65 | window.MathJax = options; 66 | 67 | loadScript( url, function() { 68 | // Reprocess equations in slides when they turn visible 69 | Reveal.addEventListener( 'slidechanged', function( event ) { 70 | MathJax.typeset(); 71 | } ); 72 | } ); 73 | 74 | } 75 | } 76 | 77 | }; 78 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/math/plugin.js: -------------------------------------------------------------------------------- 1 | import {KaTeX} from "./katex"; 2 | import {MathJax2} from "./mathjax2"; 3 | import {MathJax3} from "./mathjax3"; 4 | 5 | const defaultTypesetter = MathJax2; 6 | 7 | /*! 8 | * This plugin is a wrapper for the MathJax2, 9 | * MathJax3 and KaTeX typesetter plugins. 10 | */ 11 | export default Plugin = Object.assign( defaultTypesetter(), { 12 | KaTeX, 13 | MathJax2, 14 | MathJax3 15 | } ); -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/pdf-export/pdfexport.js: -------------------------------------------------------------------------------- 1 | var PdfExport = ( function( _Reveal ){ 2 | 3 | var Reveal = _Reveal; 4 | var setStylesheet = null; 5 | var installAltKeyBindings = null; 6 | 7 | function getRevealJsPath(){ 8 | var regex = /\b[^/]+\/reveal.css$/i; 9 | var script = Array.from( document.querySelectorAll( 'link' ) ).find( function( e ){ 10 | return e.attributes.href && e.attributes.href.value.search( regex ) >= 0; 11 | }); 12 | if( !script ){ 13 | console.error( 'reveal.css could not be found in included elements. Did you rename this file?' ); 14 | return ''; 15 | } 16 | return script.attributes.href.value.replace( regex, '' ); 17 | } 18 | 19 | function setStylesheet3( pdfExport ){ 20 | var link = document.querySelector( '#print' ); 21 | if( !link ){ 22 | link = document.createElement( 'link' ); 23 | link.rel = 'stylesheet'; 24 | link.id = 'print'; 25 | document.querySelector( 'head' ).appendChild( link ); 26 | } 27 | var style = 'paper'; 28 | if( pdfExport ){ 29 | style = 'pdf'; 30 | } 31 | link.href = getRevealJsPath() + 'css/print/' + style + '.css'; 32 | } 33 | 34 | function setStylesheet4( pdfExport ){ 35 | } 36 | 37 | function installAltKeyBindings3(){ 38 | } 39 | 40 | function installAltKeyBindings4(){ 41 | if( isPrintingPDF() ){ 42 | var config = Reveal.getConfig(); 43 | var shortcut = config.pdfExportShortcut || 'E'; 44 | window.addEventListener( 'keydown', function( e ){ 45 | if( e.target.nodeName.toUpperCase() == 'BODY' 46 | && ( e.key.toUpperCase() == shortcut.toUpperCase() || e.keyCode == shortcut.toUpperCase().charCodeAt( 0 ) ) ){ 47 | e.preventDefault(); 48 | togglePdfExport(); 49 | return false; 50 | } 51 | }, true ); 52 | } 53 | } 54 | 55 | function isPrintingPDF(){ 56 | return ( /print-pdf/gi ).test( window.location.search ); 57 | } 58 | 59 | function togglePdfExport(){ 60 | var url_doc = new URL( document.URL ); 61 | var query_doc = new URLSearchParams( url_doc.searchParams ); 62 | if( isPrintingPDF() ){ 63 | query_doc.delete( 'print-pdf' ); 64 | }else{ 65 | query_doc.set( 'print-pdf', '' ); 66 | } 67 | url_doc.search = ( query_doc.toString() ? '?' + query_doc.toString() : '' ); 68 | window.location.href = url_doc.toString(); 69 | } 70 | 71 | function installKeyBindings(){ 72 | var config = Reveal.getConfig(); 73 | var shortcut = config.pdfExportShortcut || 'E'; 74 | Reveal.addKeyBinding({ 75 | keyCode: shortcut.toUpperCase().charCodeAt( 0 ), 76 | key: shortcut.toUpperCase(), 77 | description: 'PDF export mode' 78 | }, togglePdfExport ); 79 | installAltKeyBindings(); 80 | } 81 | 82 | function install(){ 83 | installKeyBindings(); 84 | setStylesheet( isPrintingPDF() ); 85 | } 86 | 87 | var Plugin = { 88 | } 89 | 90 | if( Reveal && Reveal.VERSION && Reveal.VERSION.length && Reveal.VERSION[ 0 ] == '3' ){ 91 | // reveal 3.x 92 | setStylesheet = setStylesheet3; 93 | installAltKeyBindings = installAltKeyBindings3; 94 | install(); 95 | }else{ 96 | // must be reveal 4.x 97 | setStylesheet = setStylesheet4; 98 | installAltKeyBindings = installAltKeyBindings4; 99 | Plugin.id = 'pdf-export'; 100 | Plugin.init = function( _Reveal ){ 101 | Reveal = _Reveal; 102 | install(); 103 | }; 104 | } 105 | 106 | return Plugin; 107 | 108 | })( Reveal ); 109 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/pdf-export/plugin.yml: -------------------------------------------------------------------------------- 1 | name: PdfExport 2 | script: pdfexport.js 3 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/quarto-line-highlight/line-highlight.css: -------------------------------------------------------------------------------- 1 | .reveal 2 | div.sourceCode 3 | pre 4 | code.has-line-highlights 5 | > span:not(.highlight-line) { 6 | opacity: 0.4; 7 | } 8 | 9 | .reveal pre.numberSource { 10 | padding-left: 0; 11 | } 12 | 13 | .reveal pre.numberSource code > span { 14 | left: -2.1em; 15 | } 16 | 17 | pre.numberSource code > span > a:first-child::before { 18 | left: -0.7em; 19 | } 20 | 21 | .reveal pre > code:not(:first-child).fragment { 22 | position: absolute; 23 | top: 0; 24 | left: 0; 25 | width: 100%; 26 | box-sizing: border-box; 27 | } 28 | 29 | .reveal div.sourceCode pre code { 30 | min-height: 100%; 31 | } 32 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/quarto-line-highlight/plugin.yml: -------------------------------------------------------------------------------- 1 | # adapted from https://github.com/hakimel/reveal.js/tree/master/plugin/highlight 2 | name: QuartoLineHighlight 3 | script: line-highlight.js 4 | stylesheet: line-highlight.css 5 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/quarto-support/footer.css: -------------------------------------------------------------------------------- 1 | .reveal .slide-logo { 2 | display: block; 3 | position: fixed; 4 | bottom: 0; 5 | right: 12px; 6 | max-height: 2.2rem; 7 | height: 100%; 8 | width: auto; 9 | } 10 | 11 | .reveal .footer { 12 | display: block; 13 | position: fixed; 14 | bottom: 18px; 15 | width: 100%; 16 | margin: 0 auto; 17 | text-align: center; 18 | font-size: 18px; 19 | z-index: 2; 20 | } 21 | 22 | .reveal .footer > * { 23 | margin-top: 0; 24 | margin-bottom: 0; 25 | } 26 | 27 | .reveal .slide .footer { 28 | display: none; 29 | } 30 | 31 | .reveal .slide-number { 32 | bottom: 10px; 33 | right: 10px; 34 | font-size: 16px; 35 | background-color: transparent; 36 | } 37 | 38 | .reveal.has-logo .slide-number { 39 | bottom: initial; 40 | top: 8px; 41 | right: 8px; 42 | } 43 | 44 | .reveal .slide-number .slide-number-delimiter { 45 | margin: 0; 46 | } 47 | 48 | .reveal .slide-menu-button { 49 | left: 8px; 50 | bottom: 8px; 51 | } 52 | 53 | .reveal .slide-chalkboard-buttons { 54 | position: fixed; 55 | left: 12px; 56 | bottom: 8px; 57 | z-index: 30; 58 | font-size: 24px; 59 | } 60 | 61 | .reveal .slide-chalkboard-buttons.slide-menu-offset { 62 | left: 54px; 63 | } 64 | 65 | .reveal .slide-chalkboard-buttons > span { 66 | margin-right: 14px; 67 | cursor: pointer; 68 | } 69 | 70 | @media screen and (max-width: 800px) { 71 | .reveal .slide-logo { 72 | max-height: 1.1rem; 73 | bottom: -2px; 74 | right: 10px; 75 | } 76 | .reveal .footer { 77 | font-size: 14px; 78 | bottom: 12px; 79 | } 80 | .reveal .slide-number { 81 | font-size: 12px; 82 | bottom: 7px; 83 | } 84 | .reveal .slide-menu-button .fas::before { 85 | height: 1.3rem; 86 | width: 1.3rem; 87 | vertical-align: -0.125em; 88 | background-size: 1.3rem 1.3rem; 89 | } 90 | 91 | .reveal .slide-chalkboard-buttons .fas::before { 92 | height: 0.95rem; 93 | width: 0.95rem; 94 | background-size: 0.95rem 0.95rem; 95 | vertical-align: -0em; 96 | } 97 | 98 | .reveal .slide-chalkboard-buttons.slide-menu-offset { 99 | left: 36px; 100 | } 101 | .reveal .slide-chalkboard-buttons > span { 102 | margin-right: 9px; 103 | } 104 | } 105 | 106 | html.print-pdf .reveal .slide-menu-button, 107 | html.print-pdf .reveal .slide-chalkboard-buttons { 108 | display: none; 109 | } 110 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/quarto-support/plugin.yml: -------------------------------------------------------------------------------- 1 | name: QuartoSupport 2 | script: support.js 3 | stylesheet: footer.css 4 | config: 5 | smaller: false 6 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/reveal-menu/plugin.yml: -------------------------------------------------------------------------------- 1 | name: RevealMenu 2 | script: [menu.js, quarto-menu.js] 3 | stylesheet: [menu.css, quarto-menu.css] 4 | config: 5 | menu: 6 | side: "left" 7 | useTextContentForMissingTitles: true 8 | markers: false 9 | loadIcons: false 10 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/reveal-menu/quarto-menu.css: -------------------------------------------------------------------------------- 1 | .slide-menu-wrapper .slide-tool-item { 2 | display: block; 3 | text-align: left; 4 | padding: 10px 18px; 5 | color: #aaa; 6 | cursor: pointer; 7 | border-top: solid 1px #555; 8 | } 9 | 10 | .slide-menu-wrapper .slide-tool-item a { 11 | text-decoration: none; 12 | } 13 | 14 | .slide-menu-wrapper .slide-tool-item kbd { 15 | font-family: monospace; 16 | margin-right: 10px; 17 | padding: 3px 8px; 18 | color: inherit; 19 | border: 1px solid; 20 | border-radius: 5px; 21 | border-color: #555; 22 | } 23 | 24 | .slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button { 25 | text-decoration: none; 26 | } 27 | 28 | .reveal .slide-menu-button { 29 | left: 8px; 30 | bottom: 8px; 31 | } 32 | 33 | .reveal .slide-menu-button .fas::before, 34 | .reveal .slide-chalkboard-buttons .fas::before, 35 | .slide-menu-wrapper .slide-menu-toolbar .fas::before { 36 | display: inline-block; 37 | height: 2.2rem; 38 | width: 2.2rem; 39 | content: ""; 40 | vertical-align: -0.125em; 41 | background-repeat: no-repeat; 42 | background-size: 2.2rem 2.2rem; 43 | } 44 | 45 | .reveal .slide-chalkboard-buttons .fas::before { 46 | height: 1.45rem; 47 | width: 1.45rem; 48 | background-size: 1.45rem 1.45rem; 49 | vertical-align: 0.1em; 50 | } 51 | 52 | .slide-menu-wrapper .slide-menu-toolbar .fas::before { 53 | height: 1.8rem; 54 | width: 1.8rem; 55 | background-size: 1.8rem 1.8rem; 56 | } 57 | 58 | .slide-menu-wrapper .slide-menu-toolbar .fa-images::before { 59 | background-image: url('data:image/svg+xml,'); 60 | } 61 | 62 | .slide-menu-wrapper .slide-menu-toolbar .fa-gear::before { 63 | background-image: url('data:image/svg+xml,'); 64 | } 65 | 66 | .slide-menu-wrapper .slide-menu-toolbar .fa-times::before { 67 | background-image: url('data:image/svg+xml,'); 68 | } 69 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/reveal-menu/quarto-menu.js: -------------------------------------------------------------------------------- 1 | window.revealMenuToolHandler = function (handler) { 2 | return function (event) { 3 | event.preventDefault(); 4 | handler(); 5 | Reveal.getPlugin("menu").closeMenu(); 6 | }; 7 | }; 8 | 9 | window.RevealMenuToolHandlers = { 10 | fullscreen: revealMenuToolHandler(function () { 11 | const element = document.documentElement; 12 | const requestMethod = 13 | element.requestFullscreen || 14 | element.webkitRequestFullscreen || 15 | element.webkitRequestFullScreen || 16 | element.mozRequestFullScreen || 17 | element.msRequestFullscreen; 18 | if (requestMethod) { 19 | requestMethod.apply(element); 20 | } 21 | }), 22 | speakerMode: revealMenuToolHandler(function () { 23 | Reveal.getPlugin("notes").open(); 24 | }), 25 | keyboardHelp: revealMenuToolHandler(function () { 26 | Reveal.toggleHelp(true); 27 | }), 28 | overview: revealMenuToolHandler(function () { 29 | Reveal.toggleOverview(true); 30 | }), 31 | toggleChalkboard: revealMenuToolHandler(function () { 32 | RevealChalkboard.toggleChalkboard(); 33 | }), 34 | toggleNotesCanvas: revealMenuToolHandler(function () { 35 | RevealChalkboard.toggleNotesCanvas(); 36 | }), 37 | downloadDrawings: revealMenuToolHandler(function () { 38 | RevealChalkboard.download(); 39 | }), 40 | }; 41 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/zoom/zoom.esm.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * reveal.js Zoom plugin 3 | */ 4 | var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e} 5 | -------------------------------------------------------------------------------- /_freeze/site_libs/revealjs/plugin/zoom/zoom.js: -------------------------------------------------------------------------------- 1 | !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=o()}(this,(function(){"use strict"; 2 | /*! 3 | * reveal.js Zoom plugin 4 | */var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(t){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;t[i]&&!e.isOverview()&&(t.preventDefault(),o.to({x:t.clientX,y:t.clientY,scale:d,pan:!1}))}))}},o=function(){var e=1,t=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(o,t){var n=l();if(o.width=o.width||1,o.height=o.height||1,o.x-=(window.innerWidth-o.width*t)/2,o.y-=(window.innerHeight-o.height*t)/2,s)if(1===t)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-o.x+"px,"+-o.y+"px) scale("+t+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===t?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+o.x)/t+"px",document.body.style.top=-(n.y+o.y)/t+"px",document.body.style.width=100*t+"%",document.body.style.height=100*t+"%",document.body.style.zoom=t);e=t,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var o=.12*window.innerWidth,i=.12*window.innerHeight,d=l();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),twindow.innerWidth-o&&window.scroll(d.x+(1-(window.innerWidth-t)/o)*(14/e),d.y)}function l(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(t){1!==e&&27===t.keyCode&&o.out()})),document.addEventListener("mousemove",(function(o){1!==e&&(t=o.clientX,n=o.clientY)})),{to:function(t){if(1!==e)o.out();else{if(t.x=t.x||0,t.y=t.y||0,t.element){var n=t.element.getBoundingClientRect();t.x=n.left-20,t.y=n.top-20,t.width=n.width+40,t.height=n.height+40}void 0!==t.width&&void 0!==t.height&&(t.scale=Math.max(Math.min(window.innerWidth/t.width,window.innerHeight/t.height),1)),t.scale>1&&(t.x*=t.scale,t.y*=t.scale,r(t,t.scale),!1!==t.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}})); 5 | -------------------------------------------------------------------------------- /_quarto.yml: -------------------------------------------------------------------------------- 1 | project: 2 | type: website 3 | resources: 4 | - "data/*.csv" 5 | 6 | website: 7 | title: "R4SS Workshop" 8 | navbar: 9 | background: primary 10 | right: 11 | - href: index.qmd 12 | text: Home 13 | - text: "Details" 14 | menu: 15 | - text: "Instructor" 16 | href: Details/instructor.qmd 17 | - text: "Schedule" 18 | href: Details/schedule.qmd 19 | - text: "Datasets" 20 | href: Details/datasets.qmd 21 | - text: "Day 1" 22 | menu: 23 | - text: "Day 1A Slides" 24 | href: Day_1/Day1A_Slides.qmd 25 | - text: "Day 1A Practice" 26 | href: Day_1/Day1A_Practice.qmd 27 | - text: "Day 1B Slides" 28 | href: Day_1/Day1B_Slides.qmd 29 | - text: "Day 1B Practice" 30 | href: Day_1/Day1B_Practice.qmd 31 | - text: "Day 2" 32 | menu: 33 | - text: "Day 2A Slides" 34 | href: Day_2/Day2A_Slides.qmd 35 | - text: "Day 2A Practice" 36 | href: Day_2/Day2A_Practice.qmd 37 | - text: "Day 2B Slides" 38 | href: Day_2/Day2B_Slides.qmd 39 | - text: "Day 2B Practice" 40 | href: Day_2/Day2B_Practice.qmd 41 | - text: "Day 3" 42 | menu: 43 | - text: "Day 3A Slides" 44 | href: Day_3/Day3A_Slides.qmd 45 | - text: "Day 3A Practice" 46 | href: Day_3/Day3A_Practice.qmd 47 | - text: "Day 3B Slides" 48 | href: Day_3/Day3B_Slides.qmd 49 | - text: "Day 3B Practice" 50 | href: Day_3/Day3B_Practice.qmd 51 | - text: "Extra Slides" 52 | href: Day_3/Extra_Slides.qmd 53 | - icon: github 54 | href: https://www.github.com/pittmethods/r4ss 55 | search: false 56 | page-footer: "Copyright 2022 © Jeffrey Girard" 57 | 58 | format: 59 | html: 60 | theme: cosmo 61 | css: styles.css 62 | 63 | execute: 64 | freeze: auto -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-10-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-10-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-11-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-11-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-12-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-12-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-13-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-13-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-14-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-14-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-15-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-15-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-6-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-8-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-8-1.png -------------------------------------------------------------------------------- /_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_2/Day2B_Practice_files/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /_site/Day_3/Day3A_Practice_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_3/Day3A_Practice_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /_site/Day_3/Day3A_Practice_files/figure-html/unnamed-chunk-9-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_3/Day3A_Practice_files/figure-html/unnamed-chunk-9-1.png -------------------------------------------------------------------------------- /_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-4-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-4-2.png -------------------------------------------------------------------------------- /_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-4-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-4-3.png -------------------------------------------------------------------------------- /_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/Day_3/Day3B_Practice_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /_site/data/cereal.csv: -------------------------------------------------------------------------------- 1 | name,mfr,type,calories,sodium,carbo,sugars,rating 2 | 100% Bran,Nabisco,cold,70,130,5,6,68.402973 3 | 100% Natural Bran,Quaker Oats,cold,120,15,8,8,33.983679 4 | All-Bran,Kelloggs,cold,70,260,7,5,59.425505 5 | All-Bran with Extra Fiber,Kelloggs,cold,50,140,8,0,93.704912 6 | Almond Delight,Ralston Purina,cold,110,200,14,8,34.384843 7 | Apple Cinnamon Cheerios,General Mills,cold,110,180,10.5,10,29.509541 8 | Apple Jacks,Kelloggs,cold,110,125,11,14,33.174094 9 | Basic 4,General Mills,cold,130,210,18,8,37.038562 10 | Bran Chex,Ralston Purina,cold,90,200,15,6,49.120253 11 | Bran Flakes,Post,cold,90,210,13,5,53.313813 12 | Cap'n'Crunch,Quaker Oats,cold,120,220,12,12,18.042851 13 | Cheerios,General Mills,cold,110,290,17,1,50.764999 14 | Cinnamon Toast Crunch,General Mills,cold,120,210,13,9,19.823573 15 | Clusters,General Mills,cold,110,140,13,7,40.400208 16 | Cocoa Puffs,General Mills,cold,110,180,12,13,22.736446 17 | Corn Chex,Ralston Purina,cold,110,280,22,3,41.445019 18 | Corn Flakes,Kelloggs,cold,100,290,21,2,45.863324 19 | Corn Pops,Kelloggs,cold,110,90,13,12,35.782791 20 | Count Chocula,General Mills,cold,110,180,12,13,22.396513 21 | Cracklin' Oat Bran,Kelloggs,cold,110,140,10,7,40.448772 22 | Cream of Wheat (Quick),Nabisco,hot,100,80,21,0,64.533816 23 | Crispix,Kelloggs,cold,110,220,21,3,46.895644 24 | Crispy Wheat & Raisins,General Mills,cold,100,140,11,10,36.176196 25 | Double Chex,Ralston Purina,cold,100,190,18,5,44.330856 26 | Froot Loops,Kelloggs,cold,110,125,11,13,32.207582 27 | Frosted Flakes,Kelloggs,cold,110,200,14,11,31.435973 28 | Frosted Mini-Wheats,Kelloggs,cold,100,0,14,7,58.345141 29 | Fruit & Fibre Dates; Walnuts; and Oats,Post,cold,120,160,12,10,40.917047 30 | Fruitful Bran,Kelloggs,cold,120,240,14,12,41.015492 31 | Fruity Pebbles,Post,cold,110,135,13,12,28.025765 32 | Golden Crisp,Post,cold,100,45,11,15,35.252444 33 | Golden Grahams,General Mills,cold,110,280,15,9,23.804043 34 | Grape Nuts Flakes,Post,cold,100,140,15,5,52.076897 35 | Grape-Nuts,Post,cold,110,170,17,3,53.371007 36 | Great Grains Pecan,Post,cold,120,75,13,4,45.811716 37 | Honey Graham Ohs,Quaker Oats,cold,120,220,12,11,21.871292 38 | Honey Nut Cheerios,General Mills,cold,110,250,11.5,10,31.072217 39 | Honey-comb,Post,cold,110,180,14,11,28.742414 40 | Just Right Crunchy Nuggets,Kelloggs,cold,110,170,17,6,36.523683 41 | Just Right Fruit & Nut,Kelloggs,cold,140,170,20,9,36.471512 42 | Kix,General Mills,cold,110,260,21,3,39.241114 43 | Life,Quaker Oats,cold,100,150,12,6,45.328074 44 | Lucky Charms,General Mills,cold,110,180,12,12,26.734515 45 | Maypo,American Home Food Products,hot,100,0,16,3,54.850917 46 | Muesli Raisins; Dates; & Almonds,Ralston Purina,cold,150,95,16,11,37.136863 47 | Muesli Raisins; Peaches; & Pecans,Ralston Purina,cold,150,150,16,11,34.139765 48 | Mueslix Crispy Blend,Kelloggs,cold,160,150,17,13,-999 49 | Multi-Grain Cheerios,General Mills,cold,100,220,15,6,40.105965 50 | Nut&Honey Crunch,Kelloggs,cold,120,190,15,9,29.924285 51 | Nutri-Grain Almond-Raisin,Kelloggs,cold,140,220,21,7,40.69232 52 | Nutri-grain Wheat,Kelloggs,cold,90,170,18,2,59.642837 53 | Oatmeal Raisin Crisp,General Mills,cold,130,170,13.5,10,30.450843 54 | Post Nat. Raisin Bran,Post,cold,120,200,11,14,37.840594 55 | Product 19,Kelloggs,cold,100,320,20,3,41.50354 56 | Puffed Rice,Quaker Oats,cold,50,0,13,0,60.756112 57 | Puffed Wheat,Quaker Oats,cold,50,0,10,0,63.005645 58 | Quaker Oat Squares,Quaker Oats,cold,100,135,14,6,49.511874 59 | Quaker Oatmeal,Quaker Oats,hot,100,0,-1,-1,50.828392 60 | Raisin Bran,Kelloggs,cold,120,210,14,12,39.259197 61 | Raisin Nut Bran,General Mills,cold,100,140,10.5,8,39.7034 62 | Raisin Squares,Kelloggs,cold,90,0,15,6,55.333142 63 | Rice Chex,Ralston Purina,cold,110,240,23,2,41.998933 64 | Rice Krispies,Kelloggs,cold,110,290,22,3,40.560159 65 | Shredded Wheat,Nabisco,cold,80,0,16,0,68.235885 66 | Shredded Wheat 'n'Bran,Nabisco,cold,90,0,19,0,74.472949 67 | Shredded Wheat spoon size,Nabisco,cold,90,0,20,0,-999 68 | Smacks,Kelloggs,cold,110,70,9,15,31.230054 69 | Special K,Kelloggs,cold,110,230,16,3,53.131324 70 | Strawberry Fruit Wheats,Nabisco,cold,90,15,15,5,59.363993 71 | Total Corn Flakes,General Mills,cold,110,200,21,3,38.839746 72 | Total Raisin Bran,General Mills,cold,140,190,15,14,28.592785 73 | Total Whole Grain,General Mills,cold,100,200,16,3,46.658844 74 | Triples,General Mills,cold,110,250,21,3,39.106174 75 | Trix,General Mills,cold,110,140,13,12,27.753301 76 | Wheat Chex,Ralston Purina,cold,100,230,17,3,49.787445 77 | Wheaties,General Mills,cold,100,200,17,3,51.592193 78 | Wheaties Honey Gold,General Mills,cold,110,200,16,8,36.187559 79 | -------------------------------------------------------------------------------- /_site/data/gradebook.csv: -------------------------------------------------------------------------------- 1 | student,test1,test2,test3,test4,test5 2 | 1,75,93,73,79,71 3 | 2,62,89,79,83,76 4 | 3,89,69,81,84,77 5 | 4,85,66,80,77,72 6 | 5,82,71,76,83,73 7 | 6,83,68,75,77,79 8 | 7,94,79,80,91,72 9 | 8,81,69,79,82,82 10 | 9,90,80,78,79,77 11 | 10,70,69,76,75,69 12 | -------------------------------------------------------------------------------- /_site/data/interpersonal.csv: -------------------------------------------------------------------------------- 1 | patient,treatment,time,problems 2 | 1,CBT,1,0.289325793 3 | 1,CBT,2,-0.26059518 4 | 2,IPT,1,-1.368177813 5 | 2,IPT,2,-1.542482601 6 | 3,CBT,1,0.141907266 7 | 3,CBT,2,-0.327664592 8 | 4,IPT,1,-0.871694881 9 | 4,IPT,2,-0.360437734 10 | 5,IPT,1,0.730721338 11 | 5,IPT,2,-1.384779539 12 | 8,CBT,1,0.818334222 13 | 8,CBT,2,0.218018043 14 | 9,CBT,1,-0.043698412 15 | 9,CBT,2,-0.389222044 16 | 10,IPT,1,-0.340962677 17 | 10,IPT,2,-0.404376811 18 | 11,CBT,1,0.380356846 19 | 11,CBT,2,-1.215905341 20 | 12,CBT,1,-0.372717726 21 | 12,CBT,2,-0.558054282 22 | 14,CBT,1,-1.488475406 23 | 14,CBT,2,-1.606410431 24 | 15,IPT,1,-0.725018242 25 | 15,IPT,2,-1.145613801 26 | 16,IPT,1,0.712133962 27 | 16,IPT,2,0.21645369 28 | 17,IPT,1,0.408231177 29 | 17,IPT,2,-0.282247969 30 | 18,IPT,1,0.153354804 31 | 18,IPT,2,0.0961151 32 | 19,CBT,1,0.122038468 33 | 19,CBT,2,-0.165681095 34 | 21,CBT,1,0.741029979 35 | 21,CBT,2,-1.000494844 36 | 22,CBT,1,-0.779513145 37 | 22,CBT,2,-0.524195031 38 | 23,CBT,1,-1.029835814 39 | 23,CBT,2,-1.269427323 40 | 25,IPT,1,0.598814767 41 | 25,IPT,2,-0.234938267 42 | 26,CBT,1,1.141810829 43 | 26,CBT,2,0.951364275 44 | 27,IPT,1,0.708120328 45 | 27,IPT,2,-1.477442177 46 | 29,CBT,1,-0.150138133 47 | 29,CBT,2,-0.061250461 48 | 30,CBT,1,0.671610721 49 | 30,CBT,2,0.783716587 50 | 31,CBT,1,-0.209185142 51 | 31,CBT,2,-0.801481298 52 | 32,CBT,1,-0.045345252 53 | 32,CBT,2,-0.953820065 54 | 33,CBT,1,-0.169971059 55 | 33,CBT,2,-0.442715237 56 | 34,IPT,1,0.141535527 57 | 34,IPT,2,0.076384926 58 | 35,IPT,1,-0.260762048 59 | 35,IPT,2,-0.199790781 60 | 36,CBT,1,0.297777361 61 | 36,CBT,2,0.229186473 62 | 37,IPT,1,-0.837608174 63 | 37,IPT,2,-0.66771749 64 | 39,IPT,1,0.203980908 65 | 39,IPT,2,0.019514962 66 | 40,CBT,1,0.354927303 67 | 40,CBT,2,0.087891794 68 | 42,IPT,1,-0.930012808 69 | 42,IPT,2,-0.75974317 70 | -------------------------------------------------------------------------------- /_site/data/political.csv: -------------------------------------------------------------------------------- 1 | student,year,sex,voting,read_news,read_edit,tv_news,ethical_practical,informed 2 | 1,1,1,Not Registered,3,1,0,2,2 3 | 2,4,1,Voted,1,1,3,2,2 4 | 3,2,0,Voted,4,1,3,2,3 5 | 4,3,1,Voted,3,1,0,3,2 6 | 5,1,1,Voted,2,0,0,2,3 7 | 6,2,1,Didn't Vote,3,1,3,2,4 8 | 7,1,0,Didn't Vote,4,1,0,4,4 9 | 8,3,1,Voted,2,1,1,2,3 10 | 9,4,0,Voted,3,1,0,4,3 11 | 10,4,1,Voted,3,0,4,3,3 12 | 11,3,0,Voted,4,1,0,4,3 13 | 12,4,1,Voted,2,0,2,2,3 14 | 13,1,1,Not Registered,2,0,3,2,2 15 | 14,1,0,Voted,3,0,4,3,3 16 | 15,3,1,Not Eligible,1,1,3,3,3 17 | 16,1,1,Didn't Vote,1,1,0,3,2 18 | 17,1,1,Didn't Vote,1,0,2,3,2 19 | 18,2,1,Voted,3,0,2,2,3 20 | 19,2,0,Not Registered,3,1,4,3,5 21 | 20,1,1,Voted,1,0,2,2,2 22 | 21,4,1,Voted,2,0,2,2,3 23 | 22,3,1,Didn't Vote,3,0,0,2,3 24 | 23,1,0,Voted,2,1,0,3,4 25 | 24,1,1,Not Registered,2,1,0,3,2 26 | 25,2,1,Voted,1,0,0,3,2 27 | 26,2,0,Voted,4,1,3,3,5 28 | 27,2,1,Voted,3,0,0,4,2 29 | 28,4,0,Not Registered,0,0,4,2,1 30 | 29,4,1,Voted,3,1,3,2,3 31 | 30,2,0,Not Registered,4,1,3,4,4 32 | 31,3,0,Not Registered,0,0,2,5,3 33 | 32,3,0,Didn't Vote,4,1,4,2,4 34 | 33,3,0,Not Registered,3,1,0,2,3 35 | 34,4,0,Voted,3,1,2,4,4 36 | 35,1,1,Didn't Vote,0,0,0,2,2 37 | 36,2,1,Voted,4,1,0,2,3 38 | 37,2,0,Voted,3,1,3,5,3 39 | 38,2,0,Not Registered,3,1,0,2,2 40 | 39,2,0,Voted,4,1,3,3,5 41 | 40,2,0,Voted,3,1,3,3,3 42 | 41,3,0,Not Registered,4,1,0,4,3 43 | 42,3,0,Voted,3,1,0,4,3 44 | 43,1,0,Not Eligible,2,0,1,4,2 45 | 44,3,0,Not Eligible,4,1,4,3,5 46 | 45,1,0,Voted,4,1,0,3,3 47 | 46,4,1,Voted,1,0,3,2,4 48 | 47,2,1,Voted,2,0,3,2,3 49 | 48,1,0,Not Registered,0,0,0,5,1 50 | 49,1,0,Not Registered,3,0,3,4,3 51 | 50,4,0,Voted,3,1,3,4,3 52 | 51,3,1,Voted,4,1,1,2,4 53 | 52,2,0,Not Eligible,3,0,3,3,3 54 | 53,4,0,Not Registered,4,1,4,2,3 55 | 54,2,0,Didn't Vote,4,1,0,3,3 56 | 55,1,1,Voted,2,0,0,2,3 57 | 56,2,1,Voted,3,0,3,2,3 58 | 57,1,0,Voted,3,0,0,2,3 59 | 58,3,1,Voted,3,0,4,3,4 60 | 59,2,0,Not Registered,4,0,3,3,4 61 | -------------------------------------------------------------------------------- /_site/data/yearspubs.csv: -------------------------------------------------------------------------------- 1 | yrs_since,n_pubs,sex,n_cites,salary 2 | 3,18,female,50,21876 3 | 6,3,female,26,54511 4 | 3,2,female,50,53425 5 | 8,17,male,34,61863 6 | 9,11,female,41,52926 7 | 6,6,male,37,47034 8 | 16,38,male,48,66432 9 | 10,48,male,56,61100 10 | 2,9,male,19,41934 11 | 5,22,male,29,97454 12 | 5,30,female,28,49832 13 | 6,21,male,31,47047 14 | 7,10,female,25,39115 15 | 11,27,male,40,59677 16 | 18,37,male,61,61458 17 | 6,8,male,32,54528 18 | 9,13,female,36,60327 19 | 7,6,male,69,56600 20 | 7,12,female,47,52542 21 | 3,29,female,29,50455 22 | 7,29,female,35,51647 23 | 5,7,male,35,62895 24 | 7,6,male,18,53740 25 | 13,69,male,90,75822 26 | 5,11,male,60,56596 27 | 8,9,female,30,55682 28 | 8,20,female,27,62091 29 | 7,41,female,35,42162 30 | 2,3,female,14,52646 31 | 13,27,male,56,74199 32 | 5,14,male,50,50729 33 | 3,23,male,25,70011 34 | 1,1,male,35,37939 35 | 3,7,male,1,39652 36 | 9,19,male,69,68987 37 | 3,11,male,69,55579 38 | 9,31,male,27,54671 39 | 3,9,male,50,57704 40 | 4,12,female,32,44045 41 | 10,32,male,33,51122 42 | 1,26,male,45,47082 43 | 11,12,male,54,60009 44 | 5,9,male,47,58632 45 | 1,6,male,29,38340 46 | 21,39,male,69,71219 47 | 7,16,female,47,53712 48 | 5,12,female,43,54782 49 | 16,50,male,55,83503 50 | 5,18,male,33,47212 51 | 4,6,female,28,52840 52 | 5,5,male,42,53650 53 | 11,20,male,24,50931 54 | 16,50,female,31,66784 55 | 3,6,female,27,49751 56 | 4,19,female,83,74343 57 | 4,11,female,49,57710 58 | 5,13,male,14,52676 59 | 6,3,female,36,41195 60 | 4,8,female,34,45662 61 | 8,11,female,70,47606 62 | 3,25,female,27,44301 63 | 4,4,female,28,58582 64 | -------------------------------------------------------------------------------- /_site/img/Girard_500x500.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/img/Girard_500x500.jpg -------------------------------------------------------------------------------- /_site/img/breaking_bad_wikipedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/img/breaking_bad_wikipedia.png -------------------------------------------------------------------------------- /_site/site_libs/bootstrap/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/bootstrap/bootstrap-icons.woff -------------------------------------------------------------------------------- /_site/site_libs/pagedtable-1.1/css/pagedtable.css: -------------------------------------------------------------------------------- 1 | .pagedtable { 2 | overflow: auto; 3 | padding-left: 8px; 4 | padding-right: 8px; 5 | } 6 | 7 | .pagedtable-wrapper { 8 | border: 1px solid #ccc; 9 | border-radius: 4px; 10 | margin-bottom: 10px; 11 | } 12 | 13 | .pagedtable table { 14 | width: 100%; 15 | max-width: 100%; 16 | margin: 0; 17 | } 18 | 19 | .pagedtable th { 20 | padding: 0 5px 0 5px; 21 | border: none; 22 | border-bottom: 2px solid #dddddd; 23 | 24 | min-width: 45px; 25 | } 26 | 27 | .pagedtable-empty th { 28 | display: none; 29 | } 30 | 31 | .pagedtable td { 32 | padding: 0 4px 0 4px; 33 | } 34 | 35 | .pagedtable .even { 36 | background-color: rgba(140, 140, 140, 0.1); 37 | } 38 | 39 | .pagedtable-padding-col { 40 | display: none; 41 | } 42 | 43 | .pagedtable a { 44 | -webkit-touch-callout: none; 45 | -webkit-user-select: none; 46 | -khtml-user-select: none; 47 | -moz-user-select: none; 48 | -ms-user-select: none; 49 | user-select: none; 50 | } 51 | 52 | .pagedtable-index-nav { 53 | cursor: pointer; 54 | padding: 0 5px 0 5px; 55 | float: right; 56 | border: 0; 57 | } 58 | 59 | .pagedtable-index-nav-disabled { 60 | cursor: default; 61 | text-decoration: none; 62 | color: #999; 63 | } 64 | 65 | a.pagedtable-index-nav-disabled:hover { 66 | text-decoration: none; 67 | color: #999; 68 | } 69 | 70 | .pagedtable-indexes { 71 | cursor: pointer; 72 | float: right; 73 | border: 0; 74 | } 75 | 76 | .pagedtable-index-current { 77 | cursor: default; 78 | text-decoration: none; 79 | font-weight: bold; 80 | color: #333; 81 | border: 0; 82 | } 83 | 84 | a.pagedtable-index-current:hover { 85 | text-decoration: none; 86 | font-weight: bold; 87 | color: #333; 88 | } 89 | 90 | .pagedtable-index { 91 | width: 30px; 92 | display: inline-block; 93 | text-align: center; 94 | border: 0; 95 | } 96 | 97 | .pagedtable-index-separator-left { 98 | display: inline-block; 99 | color: #333; 100 | font-size: 9px; 101 | padding: 0 0 0 0; 102 | cursor: default; 103 | } 104 | 105 | .pagedtable-index-separator-right { 106 | display: inline-block; 107 | color: #333; 108 | font-size: 9px; 109 | padding: 0 4px 0 0; 110 | cursor: default; 111 | } 112 | 113 | .pagedtable-footer { 114 | padding-top: 4px; 115 | padding-bottom: 5px; 116 | } 117 | 118 | .pagedtable-not-empty .pagedtable-footer { 119 | border-top: 2px solid #dddddd; 120 | } 121 | 122 | .pagedtable-info { 123 | overflow: hidden; 124 | color: #999; 125 | white-space: nowrap; 126 | text-overflow: ellipsis; 127 | } 128 | 129 | .pagedtable-header-name { 130 | overflow: hidden; 131 | text-overflow: ellipsis; 132 | } 133 | 134 | .pagedtable-header-type { 135 | color: #999; 136 | font-weight: 400; 137 | } 138 | 139 | .pagedtable-na-cell { 140 | font-style: italic; 141 | opacity: 0.3; 142 | } 143 | -------------------------------------------------------------------------------- /_site/site_libs/quarto-html/quarto-html.min.css: -------------------------------------------------------------------------------- 1 | /*# sourceMappingURL=0a6b880beb84f9b6f36107a76f82c5b1.css.map */ 2 | -------------------------------------------------------------------------------- /_site/site_libs/quarto-html/quarto-syntax-highlighting.css: -------------------------------------------------------------------------------- 1 | /* quarto syntax highlight colors */ 2 | :root { 3 | --quarto-hl-ot-color: #003B4F; 4 | --quarto-hl-at-color: #657422; 5 | --quarto-hl-ss-color: #20794D; 6 | --quarto-hl-an-color: #5E5E5E; 7 | --quarto-hl-fu-color: #4758AB; 8 | --quarto-hl-st-color: #20794D; 9 | --quarto-hl-cf-color: #003B4F; 10 | --quarto-hl-op-color: #5E5E5E; 11 | --quarto-hl-er-color: #AD0000; 12 | --quarto-hl-bn-color: #AD0000; 13 | --quarto-hl-al-color: #AD0000; 14 | --quarto-hl-va-color: #111111; 15 | --quarto-hl-bu-color: inherit; 16 | --quarto-hl-ex-color: inherit; 17 | --quarto-hl-pp-color: #AD0000; 18 | --quarto-hl-in-color: #5E5E5E; 19 | --quarto-hl-vs-color: #20794D; 20 | --quarto-hl-wa-color: #5E5E5E; 21 | --quarto-hl-do-color: #5E5E5E; 22 | --quarto-hl-im-color: #00769E; 23 | --quarto-hl-ch-color: #20794D; 24 | --quarto-hl-dt-color: #AD0000; 25 | --quarto-hl-fl-color: #AD0000; 26 | --quarto-hl-co-color: #5E5E5E; 27 | --quarto-hl-cv-color: #5E5E5E; 28 | --quarto-hl-cn-color: #8f5902; 29 | --quarto-hl-sc-color: #5E5E5E; 30 | --quarto-hl-dv-color: #AD0000; 31 | --quarto-hl-kw-color: #003B4F; 32 | } 33 | 34 | /* other quarto variables */ 35 | :root { 36 | --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 37 | } 38 | 39 | pre > code.sourceCode > span { 40 | color: #003B4F; 41 | } 42 | 43 | code span { 44 | color: #003B4F; 45 | } 46 | 47 | code.sourceCode > span { 48 | color: #003B4F; 49 | } 50 | 51 | div.sourceCode, 52 | div.sourceCode pre.sourceCode { 53 | color: #003B4F; 54 | } 55 | 56 | code span.ot { 57 | color: #003B4F; 58 | } 59 | 60 | code span.at { 61 | color: #657422; 62 | } 63 | 64 | code span.ss { 65 | color: #20794D; 66 | } 67 | 68 | code span.an { 69 | color: #5E5E5E; 70 | } 71 | 72 | code span.fu { 73 | color: #4758AB; 74 | } 75 | 76 | code span.st { 77 | color: #20794D; 78 | } 79 | 80 | code span.cf { 81 | color: #003B4F; 82 | } 83 | 84 | code span.op { 85 | color: #5E5E5E; 86 | } 87 | 88 | code span.er { 89 | color: #AD0000; 90 | } 91 | 92 | code span.bn { 93 | color: #AD0000; 94 | } 95 | 96 | code span.al { 97 | color: #AD0000; 98 | } 99 | 100 | code span.va { 101 | color: #111111; 102 | } 103 | 104 | code span.pp { 105 | color: #AD0000; 106 | } 107 | 108 | code span.in { 109 | color: #5E5E5E; 110 | } 111 | 112 | code span.vs { 113 | color: #20794D; 114 | } 115 | 116 | code span.wa { 117 | color: #5E5E5E; 118 | font-style: italic; 119 | } 120 | 121 | code span.do { 122 | color: #5E5E5E; 123 | font-style: italic; 124 | } 125 | 126 | code span.im { 127 | color: #00769E; 128 | } 129 | 130 | code span.ch { 131 | color: #20794D; 132 | } 133 | 134 | code span.dt { 135 | color: #AD0000; 136 | } 137 | 138 | code span.fl { 139 | color: #AD0000; 140 | } 141 | 142 | code span.co { 143 | color: #5E5E5E; 144 | } 145 | 146 | code span.cv { 147 | color: #5E5E5E; 148 | font-style: italic; 149 | } 150 | 151 | code span.cn { 152 | color: #8f5902; 153 | } 154 | 155 | code span.sc { 156 | color: #5E5E5E; 157 | } 158 | 159 | code span.dv { 160 | color: #AD0000; 161 | } 162 | 163 | code span.kw { 164 | color: #003B4F; 165 | } 166 | 167 | .prevent-inlining { 168 | content: ".tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} -------------------------------------------------------------------------------- /_site/site_libs/quarto-nav/headroom.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it 3 | * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js 4 | * License: MIT 5 | */ 6 | 7 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s}); 8 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v4.0 | 20180602 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | main, menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, main, menu, nav, section { 29 | display: block; 30 | } -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('./league-gothic.eot'); 4 | src: url('./league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('./league-gothic.woff') format('woff'), 6 | url('./league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /_site/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | src: url('./source-sans-pro-regular.eot'); 4 | src: url('./source-sans-pro-regular.eot?#iefix') format('embedded-opentype'), 5 | url('./source-sans-pro-regular.woff') format('woff'), 6 | url('./source-sans-pro-regular.ttf') format('truetype'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: 'Source Sans Pro'; 13 | src: url('./source-sans-pro-italic.eot'); 14 | src: url('./source-sans-pro-italic.eot?#iefix') format('embedded-opentype'), 15 | url('./source-sans-pro-italic.woff') format('woff'), 16 | url('./source-sans-pro-italic.ttf') format('truetype'); 17 | font-weight: normal; 18 | font-style: italic; 19 | } 20 | 21 | @font-face { 22 | font-family: 'Source Sans Pro'; 23 | src: url('./source-sans-pro-semibold.eot'); 24 | src: url('./source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'), 25 | url('./source-sans-pro-semibold.woff') format('woff'), 26 | url('./source-sans-pro-semibold.ttf') format('truetype'); 27 | font-weight: 600; 28 | font-style: normal; 29 | } 30 | 31 | @font-face { 32 | font-family: 'Source Sans Pro'; 33 | src: url('./source-sans-pro-semibolditalic.eot'); 34 | src: url('./source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'), 35 | url('./source-sans-pro-semibolditalic.woff') format('woff'), 36 | url('./source-sans-pro-semibolditalic.ttf') format('truetype'); 37 | font-weight: 600; 38 | font-style: italic; 39 | } 40 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/highlight/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | color: #ddd; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-keyword, 15 | .hljs-selector-tag, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-name { 19 | color: #f92672; 20 | } 21 | 22 | .hljs-code { 23 | color: #66d9ef; 24 | } 25 | 26 | .hljs-class .hljs-title { 27 | color: white; 28 | } 29 | 30 | .hljs-attribute, 31 | .hljs-symbol, 32 | .hljs-regexp, 33 | .hljs-link { 34 | color: #bf79db; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-bullet, 39 | .hljs-subst, 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-emphasis, 43 | .hljs-type, 44 | .hljs-built_in, 45 | .hljs-builtin-name, 46 | .hljs-selector-attr, 47 | .hljs-selector-pseudo, 48 | .hljs-addition, 49 | .hljs-variable, 50 | .hljs-template-tag, 51 | .hljs-template-variable { 52 | color: #a6e22e; 53 | } 54 | 55 | .hljs-comment, 56 | .hljs-quote, 57 | .hljs-deletion, 58 | .hljs-meta { 59 | color: #75715e; 60 | } 61 | 62 | .hljs-keyword, 63 | .hljs-selector-tag, 64 | .hljs-literal, 65 | .hljs-doctag, 66 | .hljs-title, 67 | .hljs-section, 68 | .hljs-type, 69 | .hljs-selector-id { 70 | font-weight: bold; 71 | } 72 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/highlight/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/math/katex.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for KaTeX. 4 | * 5 | * @author Hakim El Hattab 6 | * @author Gerhard Burger 7 | */ 8 | export const KaTeX = () => { 9 | let deck; 10 | 11 | let defaultOptions = { 12 | version: 'latest', 13 | delimiters: [ 14 | {left: '$$', right: '$$', display: true}, // Note: $$ has to come before $ 15 | {left: '$', right: '$', display: false}, 16 | {left: '\\(', right: '\\)', display: false}, 17 | {left: '\\[', right: '\\]', display: true} 18 | ], 19 | ignoredTags: ['script', 'noscript', 'style', 'textarea', 'pre'] 20 | } 21 | 22 | const loadCss = src => { 23 | let link = document.createElement('link'); 24 | link.rel = 'stylesheet'; 25 | link.href = src; 26 | document.head.appendChild(link); 27 | }; 28 | 29 | /** 30 | * Loads a JavaScript file and returns a Promise for when it is loaded 31 | * Credits: https://aaronsmith.online/easily-load-an-external-script-using-javascript/ 32 | */ 33 | const loadScript = src => { 34 | return new Promise((resolve, reject) => { 35 | const script = document.createElement('script') 36 | script.type = 'text/javascript' 37 | script.onload = resolve 38 | script.onerror = reject 39 | script.src = src 40 | document.head.append(script) 41 | }) 42 | }; 43 | 44 | async function loadScripts(urls) { 45 | for(const url of urls) { 46 | await loadScript(url); 47 | } 48 | } 49 | 50 | return { 51 | id: 'katex', 52 | 53 | init: function (reveal) { 54 | 55 | deck = reveal; 56 | 57 | let revealOptions = deck.getConfig().katex || {}; 58 | 59 | let options = {...defaultOptions, ...revealOptions}; 60 | const {local, version, extensions, ...katexOptions} = options; 61 | 62 | let baseUrl = options.local || 'https://cdn.jsdelivr.net/npm/katex'; 63 | let versionString = options.local ? '' : '@' + options.version; 64 | 65 | let cssUrl = baseUrl + versionString + '/dist/katex.min.css'; 66 | let katexUrl = baseUrl + versionString + '/dist/katex.min.js'; 67 | let mhchemUrl = baseUrl + versionString + '/dist/contrib/mhchem.min.js' 68 | let karUrl = baseUrl + versionString + '/dist/contrib/auto-render.min.js'; 69 | 70 | let katexScripts = [katexUrl]; 71 | if(options.extensions && options.extensions.includes("mhchem")) { 72 | katexScripts.push(mhchemUrl); 73 | } 74 | katexScripts.push(karUrl); 75 | 76 | const renderMath = () => { 77 | renderMathInElement(reveal.getSlidesElement(), katexOptions); 78 | deck.layout(); 79 | } 80 | 81 | loadCss(cssUrl); 82 | 83 | // For some reason dynamically loading with defer attribute doesn't result in the expected behavior, the below code does 84 | loadScripts(katexScripts).then(() => { 85 | if( deck.isReady() ) { 86 | renderMath(); 87 | } 88 | else { 89 | deck.on( 'ready', renderMath.bind( this ) ); 90 | } 91 | }); 92 | 93 | } 94 | } 95 | 96 | }; 97 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/math/mathjax2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax. 4 | * 5 | * @author Hakim El Hattab 6 | */ 7 | export const MathJax2 = () => { 8 | 9 | // The reveal.js instance this plugin is attached to 10 | let deck; 11 | 12 | let defaultOptions = { 13 | messageStyle: 'none', 14 | tex2jax: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ], 16 | skipTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 17 | }, 18 | skipStartupTypeset: true 19 | }; 20 | 21 | function loadScript( url, callback ) { 22 | 23 | let head = document.querySelector( 'head' ); 24 | let script = document.createElement( 'script' ); 25 | script.type = 'text/javascript'; 26 | script.src = url; 27 | 28 | // Wrapper for callback to make sure it only fires once 29 | let finish = () => { 30 | if( typeof callback === 'function' ) { 31 | callback.call(); 32 | callback = null; 33 | } 34 | } 35 | 36 | script.onload = finish; 37 | 38 | // IE 39 | script.onreadystatechange = () => { 40 | if ( this.readyState === 'loaded' ) { 41 | finish(); 42 | } 43 | } 44 | 45 | // Normal browsers 46 | head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'mathjax2', 52 | 53 | init: function( reveal ) { 54 | 55 | deck = reveal; 56 | 57 | let revealOptions = deck.getConfig().mathjax2 || deck.getConfig().math || {}; 58 | 59 | let options = { ...defaultOptions, ...revealOptions }; 60 | let mathjax = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js'; 61 | let config = options.config || 'TeX-AMS_HTML-full'; 62 | let url = mathjax + '?config=' + config; 63 | 64 | options.tex2jax = { ...defaultOptions.tex2jax, ...revealOptions.tex2jax }; 65 | 66 | options.mathjax = options.config = null; 67 | 68 | loadScript( url, function() { 69 | 70 | MathJax.Hub.Config( options ); 71 | 72 | // Typeset followed by an immediate reveal.js layout since 73 | // the typesetting process could affect slide height 74 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, deck.getRevealElement() ] ); 75 | MathJax.Hub.Queue( deck.layout ); 76 | 77 | // Reprocess equations in slides when they turn visible 78 | deck.on( 'slidechanged', function( event ) { 79 | 80 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] ); 81 | 82 | } ); 83 | 84 | } ); 85 | 86 | } 87 | } 88 | 89 | }; 90 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/math/mathjax3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax 3 4 | * 5 | * @author Hakim El Hattab 6 | * @author Gerhard Burger 7 | */ 8 | export const MathJax3 = () => { 9 | 10 | // The reveal.js instance this plugin is attached to 11 | let deck; 12 | 13 | let defaultOptions = { 14 | tex: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ] 16 | }, 17 | options: { 18 | skipHtmlTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 19 | }, 20 | startup: { 21 | ready: () => { 22 | MathJax.startup.defaultReady(); 23 | MathJax.startup.promise.then(() => { 24 | Reveal.layout(); 25 | }); 26 | } 27 | } 28 | }; 29 | 30 | function loadScript( url, callback ) { 31 | 32 | let script = document.createElement( 'script' ); 33 | script.type = "text/javascript" 34 | script.id = "MathJax-script" 35 | script.src = url; 36 | script.async = true 37 | 38 | // Wrapper for callback to make sure it only fires once 39 | script.onload = () => { 40 | if (typeof callback === 'function') { 41 | callback.call(); 42 | callback = null; 43 | } 44 | }; 45 | 46 | document.head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'mathjax3', 52 | init: function(reveal) { 53 | 54 | deck = reveal; 55 | 56 | let revealOptions = deck.getConfig().mathjax3 || {}; 57 | let options = {...defaultOptions, ...revealOptions}; 58 | options.tex = {...defaultOptions.tex, ...revealOptions.tex} 59 | options.options = {...options.options, ...defaultOptions.options} 60 | options.startup = {...defaultOptions.startup, ...revealOptions.startup} 61 | 62 | let url = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'; 63 | options.mathjax = null; 64 | 65 | window.MathJax = options; 66 | 67 | loadScript( url, function() { 68 | // Reprocess equations in slides when they turn visible 69 | Reveal.addEventListener( 'slidechanged', function( event ) { 70 | MathJax.typeset(); 71 | } ); 72 | } ); 73 | 74 | } 75 | } 76 | 77 | }; 78 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/math/plugin.js: -------------------------------------------------------------------------------- 1 | import {KaTeX} from "./katex"; 2 | import {MathJax2} from "./mathjax2"; 3 | import {MathJax3} from "./mathjax3"; 4 | 5 | const defaultTypesetter = MathJax2; 6 | 7 | /*! 8 | * This plugin is a wrapper for the MathJax2, 9 | * MathJax3 and KaTeX typesetter plugins. 10 | */ 11 | export default Plugin = Object.assign( defaultTypesetter(), { 12 | KaTeX, 13 | MathJax2, 14 | MathJax3 15 | } ); -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/pdf-export/pdfexport.js: -------------------------------------------------------------------------------- 1 | var PdfExport = ( function( _Reveal ){ 2 | 3 | var Reveal = _Reveal; 4 | var setStylesheet = null; 5 | var installAltKeyBindings = null; 6 | 7 | function getRevealJsPath(){ 8 | var regex = /\b[^/]+\/reveal.css$/i; 9 | var script = Array.from( document.querySelectorAll( 'link' ) ).find( function( e ){ 10 | return e.attributes.href && e.attributes.href.value.search( regex ) >= 0; 11 | }); 12 | if( !script ){ 13 | console.error( 'reveal.css could not be found in included elements. Did you rename this file?' ); 14 | return ''; 15 | } 16 | return script.attributes.href.value.replace( regex, '' ); 17 | } 18 | 19 | function setStylesheet3( pdfExport ){ 20 | var link = document.querySelector( '#print' ); 21 | if( !link ){ 22 | link = document.createElement( 'link' ); 23 | link.rel = 'stylesheet'; 24 | link.id = 'print'; 25 | document.querySelector( 'head' ).appendChild( link ); 26 | } 27 | var style = 'paper'; 28 | if( pdfExport ){ 29 | style = 'pdf'; 30 | } 31 | link.href = getRevealJsPath() + 'css/print/' + style + '.css'; 32 | } 33 | 34 | function setStylesheet4( pdfExport ){ 35 | } 36 | 37 | function installAltKeyBindings3(){ 38 | } 39 | 40 | function installAltKeyBindings4(){ 41 | if( isPrintingPDF() ){ 42 | var config = Reveal.getConfig(); 43 | var shortcut = config.pdfExportShortcut || 'E'; 44 | window.addEventListener( 'keydown', function( e ){ 45 | if( e.target.nodeName.toUpperCase() == 'BODY' 46 | && ( e.key.toUpperCase() == shortcut.toUpperCase() || e.keyCode == shortcut.toUpperCase().charCodeAt( 0 ) ) ){ 47 | e.preventDefault(); 48 | togglePdfExport(); 49 | return false; 50 | } 51 | }, true ); 52 | } 53 | } 54 | 55 | function isPrintingPDF(){ 56 | return ( /print-pdf/gi ).test( window.location.search ); 57 | } 58 | 59 | function togglePdfExport(){ 60 | var url_doc = new URL( document.URL ); 61 | var query_doc = new URLSearchParams( url_doc.searchParams ); 62 | if( isPrintingPDF() ){ 63 | query_doc.delete( 'print-pdf' ); 64 | }else{ 65 | query_doc.set( 'print-pdf', '' ); 66 | } 67 | url_doc.search = ( query_doc.toString() ? '?' + query_doc.toString() : '' ); 68 | window.location.href = url_doc.toString(); 69 | } 70 | 71 | function installKeyBindings(){ 72 | var config = Reveal.getConfig(); 73 | var shortcut = config.pdfExportShortcut || 'E'; 74 | Reveal.addKeyBinding({ 75 | keyCode: shortcut.toUpperCase().charCodeAt( 0 ), 76 | key: shortcut.toUpperCase(), 77 | description: 'PDF export mode' 78 | }, togglePdfExport ); 79 | installAltKeyBindings(); 80 | } 81 | 82 | function install(){ 83 | installKeyBindings(); 84 | setStylesheet( isPrintingPDF() ); 85 | } 86 | 87 | var Plugin = { 88 | } 89 | 90 | if( Reveal && Reveal.VERSION && Reveal.VERSION.length && Reveal.VERSION[ 0 ] == '3' ){ 91 | // reveal 3.x 92 | setStylesheet = setStylesheet3; 93 | installAltKeyBindings = installAltKeyBindings3; 94 | install(); 95 | }else{ 96 | // must be reveal 4.x 97 | setStylesheet = setStylesheet4; 98 | installAltKeyBindings = installAltKeyBindings4; 99 | Plugin.id = 'pdf-export'; 100 | Plugin.init = function( _Reveal ){ 101 | Reveal = _Reveal; 102 | install(); 103 | }; 104 | } 105 | 106 | return Plugin; 107 | 108 | })( Reveal ); 109 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/pdf-export/plugin.yml: -------------------------------------------------------------------------------- 1 | name: PdfExport 2 | script: pdfexport.js 3 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/quarto-line-highlight/line-highlight.css: -------------------------------------------------------------------------------- 1 | .reveal 2 | div.sourceCode 3 | pre 4 | code.has-line-highlights 5 | > span:not(.highlight-line) { 6 | opacity: 0.4; 7 | } 8 | 9 | .reveal pre.numberSource { 10 | padding-left: 0; 11 | } 12 | 13 | .reveal pre.numberSource code > span { 14 | left: -2.1em; 15 | } 16 | 17 | pre.numberSource code > span > a:first-child::before { 18 | left: -0.7em; 19 | } 20 | 21 | .reveal pre > code:not(:first-child).fragment { 22 | position: absolute; 23 | top: 0; 24 | left: 0; 25 | width: 100%; 26 | box-sizing: border-box; 27 | } 28 | 29 | .reveal div.sourceCode pre code { 30 | min-height: 100%; 31 | } 32 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/quarto-line-highlight/plugin.yml: -------------------------------------------------------------------------------- 1 | # adapted from https://github.com/hakimel/reveal.js/tree/master/plugin/highlight 2 | name: QuartoLineHighlight 3 | script: line-highlight.js 4 | stylesheet: line-highlight.css 5 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/quarto-support/footer.css: -------------------------------------------------------------------------------- 1 | .reveal .slide-logo { 2 | display: block; 3 | position: fixed; 4 | bottom: 0; 5 | right: 12px; 6 | max-height: 2.2rem; 7 | height: 100%; 8 | width: auto; 9 | } 10 | 11 | .reveal .footer { 12 | display: block; 13 | position: fixed; 14 | bottom: 18px; 15 | width: 100%; 16 | margin: 0 auto; 17 | text-align: center; 18 | font-size: 18px; 19 | z-index: 2; 20 | } 21 | 22 | .reveal .footer > * { 23 | margin-top: 0; 24 | margin-bottom: 0; 25 | } 26 | 27 | .reveal .slide .footer { 28 | display: none; 29 | } 30 | 31 | .reveal .slide-number { 32 | bottom: 10px; 33 | right: 10px; 34 | font-size: 16px; 35 | background-color: transparent; 36 | } 37 | 38 | .reveal.has-logo .slide-number { 39 | bottom: initial; 40 | top: 8px; 41 | right: 8px; 42 | } 43 | 44 | .reveal .slide-number .slide-number-delimiter { 45 | margin: 0; 46 | } 47 | 48 | .reveal .slide-menu-button { 49 | left: 8px; 50 | bottom: 8px; 51 | } 52 | 53 | .reveal .slide-chalkboard-buttons { 54 | position: fixed; 55 | left: 12px; 56 | bottom: 8px; 57 | z-index: 30; 58 | font-size: 24px; 59 | } 60 | 61 | .reveal .slide-chalkboard-buttons.slide-menu-offset { 62 | left: 54px; 63 | } 64 | 65 | .reveal .slide-chalkboard-buttons > span { 66 | margin-right: 14px; 67 | cursor: pointer; 68 | } 69 | 70 | @media screen and (max-width: 800px) { 71 | .reveal .slide-logo { 72 | max-height: 1.1rem; 73 | bottom: -2px; 74 | right: 10px; 75 | } 76 | .reveal .footer { 77 | font-size: 14px; 78 | bottom: 12px; 79 | } 80 | .reveal .slide-number { 81 | font-size: 12px; 82 | bottom: 7px; 83 | } 84 | .reveal .slide-menu-button .fas::before { 85 | height: 1.3rem; 86 | width: 1.3rem; 87 | vertical-align: -0.125em; 88 | background-size: 1.3rem 1.3rem; 89 | } 90 | 91 | .reveal .slide-chalkboard-buttons .fas::before { 92 | height: 0.95rem; 93 | width: 0.95rem; 94 | background-size: 0.95rem 0.95rem; 95 | vertical-align: -0em; 96 | } 97 | 98 | .reveal .slide-chalkboard-buttons.slide-menu-offset { 99 | left: 36px; 100 | } 101 | .reveal .slide-chalkboard-buttons > span { 102 | margin-right: 9px; 103 | } 104 | } 105 | 106 | html.print-pdf .reveal .slide-menu-button, 107 | html.print-pdf .reveal .slide-chalkboard-buttons { 108 | display: none; 109 | } 110 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/quarto-support/plugin.yml: -------------------------------------------------------------------------------- 1 | name: QuartoSupport 2 | script: support.js 3 | stylesheet: footer.css 4 | config: 5 | smaller: false 6 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/reveal-menu/plugin.yml: -------------------------------------------------------------------------------- 1 | name: RevealMenu 2 | script: [menu.js, quarto-menu.js] 3 | stylesheet: [menu.css, quarto-menu.css] 4 | config: 5 | menu: 6 | side: "left" 7 | useTextContentForMissingTitles: true 8 | markers: false 9 | loadIcons: false 10 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/reveal-menu/quarto-menu.css: -------------------------------------------------------------------------------- 1 | .slide-menu-wrapper .slide-tool-item { 2 | display: block; 3 | text-align: left; 4 | padding: 10px 18px; 5 | color: #aaa; 6 | cursor: pointer; 7 | border-top: solid 1px #555; 8 | } 9 | 10 | .slide-menu-wrapper .slide-tool-item a { 11 | text-decoration: none; 12 | } 13 | 14 | .slide-menu-wrapper .slide-tool-item kbd { 15 | font-family: monospace; 16 | margin-right: 10px; 17 | padding: 3px 8px; 18 | color: inherit; 19 | border: 1px solid; 20 | border-radius: 5px; 21 | border-color: #555; 22 | } 23 | 24 | .slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button { 25 | text-decoration: none; 26 | } 27 | 28 | .reveal .slide-menu-button { 29 | left: 8px; 30 | bottom: 8px; 31 | } 32 | 33 | .reveal .slide-menu-button .fas::before, 34 | .reveal .slide-chalkboard-buttons .fas::before, 35 | .slide-menu-wrapper .slide-menu-toolbar .fas::before { 36 | display: inline-block; 37 | height: 2.2rem; 38 | width: 2.2rem; 39 | content: ""; 40 | vertical-align: -0.125em; 41 | background-repeat: no-repeat; 42 | background-size: 2.2rem 2.2rem; 43 | } 44 | 45 | .reveal .slide-chalkboard-buttons .fas::before { 46 | height: 1.45rem; 47 | width: 1.45rem; 48 | background-size: 1.45rem 1.45rem; 49 | vertical-align: 0.1em; 50 | } 51 | 52 | .slide-menu-wrapper .slide-menu-toolbar .fas::before { 53 | height: 1.8rem; 54 | width: 1.8rem; 55 | background-size: 1.8rem 1.8rem; 56 | } 57 | 58 | .slide-menu-wrapper .slide-menu-toolbar .fa-images::before { 59 | background-image: url('data:image/svg+xml,'); 60 | } 61 | 62 | .slide-menu-wrapper .slide-menu-toolbar .fa-gear::before { 63 | background-image: url('data:image/svg+xml,'); 64 | } 65 | 66 | .slide-menu-wrapper .slide-menu-toolbar .fa-times::before { 67 | background-image: url('data:image/svg+xml,'); 68 | } 69 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/reveal-menu/quarto-menu.js: -------------------------------------------------------------------------------- 1 | window.revealMenuToolHandler = function (handler) { 2 | return function (event) { 3 | event.preventDefault(); 4 | handler(); 5 | Reveal.getPlugin("menu").closeMenu(); 6 | }; 7 | }; 8 | 9 | window.RevealMenuToolHandlers = { 10 | fullscreen: revealMenuToolHandler(function () { 11 | const element = document.documentElement; 12 | const requestMethod = 13 | element.requestFullscreen || 14 | element.webkitRequestFullscreen || 15 | element.webkitRequestFullScreen || 16 | element.mozRequestFullScreen || 17 | element.msRequestFullscreen; 18 | if (requestMethod) { 19 | requestMethod.apply(element); 20 | } 21 | }), 22 | speakerMode: revealMenuToolHandler(function () { 23 | Reveal.getPlugin("notes").open(); 24 | }), 25 | keyboardHelp: revealMenuToolHandler(function () { 26 | Reveal.toggleHelp(true); 27 | }), 28 | overview: revealMenuToolHandler(function () { 29 | Reveal.toggleOverview(true); 30 | }), 31 | toggleChalkboard: revealMenuToolHandler(function () { 32 | RevealChalkboard.toggleChalkboard(); 33 | }), 34 | toggleNotesCanvas: revealMenuToolHandler(function () { 35 | RevealChalkboard.toggleNotesCanvas(); 36 | }), 37 | downloadDrawings: revealMenuToolHandler(function () { 38 | RevealChalkboard.download(); 39 | }), 40 | }; 41 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/zoom/zoom.esm.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * reveal.js Zoom plugin 3 | */ 4 | var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e} 5 | -------------------------------------------------------------------------------- /_site/site_libs/revealjs/plugin/zoom/zoom.js: -------------------------------------------------------------------------------- 1 | !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=o()}(this,(function(){"use strict"; 2 | /*! 3 | * reveal.js Zoom plugin 4 | */var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(t){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;t[i]&&!e.isOverview()&&(t.preventDefault(),o.to({x:t.clientX,y:t.clientY,scale:d,pan:!1}))}))}},o=function(){var e=1,t=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(o,t){var n=l();if(o.width=o.width||1,o.height=o.height||1,o.x-=(window.innerWidth-o.width*t)/2,o.y-=(window.innerHeight-o.height*t)/2,s)if(1===t)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-o.x+"px,"+-o.y+"px) scale("+t+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===t?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+o.x)/t+"px",document.body.style.top=-(n.y+o.y)/t+"px",document.body.style.width=100*t+"%",document.body.style.height=100*t+"%",document.body.style.zoom=t);e=t,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var o=.12*window.innerWidth,i=.12*window.innerHeight,d=l();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),twindow.innerWidth-o&&window.scroll(d.x+(1-(window.innerWidth-t)/o)*(14/e),d.y)}function l(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(t){1!==e&&27===t.keyCode&&o.out()})),document.addEventListener("mousemove",(function(o){1!==e&&(t=o.clientX,n=o.clientY)})),{to:function(t){if(1!==e)o.out();else{if(t.x=t.x||0,t.y=t.y||0,t.element){var n=t.element.getBoundingClientRect();t.x=n.left-20,t.y=n.top-20,t.width=n.width+40,t.height=n.height+40}void 0!==t.width&&void 0!==t.height&&(t.scale=Math.max(Math.min(window.innerWidth/t.width,window.innerHeight/t.height),1)),t.scale>1&&(t.x*=t.scale,t.y*=t.scale,r(t,t.scale),!1!==t.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}})); 5 | -------------------------------------------------------------------------------- /construction.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Under Construction" 3 | --- 4 | 5 | This page is still under construction. Please check back in again in a few days! 6 | 7 | ![](./img/construction_2780E3.svg){.hero} 8 | -------------------------------------------------------------------------------- /data/cereal.csv: -------------------------------------------------------------------------------- 1 | name,mfr,type,calories,sodium,carbo,sugars,rating 2 | 100% Bran,Nabisco,cold,70,130,5,6,68.402973 3 | 100% Natural Bran,Quaker Oats,cold,120,15,8,8,33.983679 4 | All-Bran,Kelloggs,cold,70,260,7,5,59.425505 5 | All-Bran with Extra Fiber,Kelloggs,cold,50,140,8,0,93.704912 6 | Almond Delight,Ralston Purina,cold,110,200,14,8,34.384843 7 | Apple Cinnamon Cheerios,General Mills,cold,110,180,10.5,10,29.509541 8 | Apple Jacks,Kelloggs,cold,110,125,11,14,33.174094 9 | Basic 4,General Mills,cold,130,210,18,8,37.038562 10 | Bran Chex,Ralston Purina,cold,90,200,15,6,49.120253 11 | Bran Flakes,Post,cold,90,210,13,5,53.313813 12 | Cap'n'Crunch,Quaker Oats,cold,120,220,12,12,18.042851 13 | Cheerios,General Mills,cold,110,290,17,1,50.764999 14 | Cinnamon Toast Crunch,General Mills,cold,120,210,13,9,19.823573 15 | Clusters,General Mills,cold,110,140,13,7,40.400208 16 | Cocoa Puffs,General Mills,cold,110,180,12,13,22.736446 17 | Corn Chex,Ralston Purina,cold,110,280,22,3,41.445019 18 | Corn Flakes,Kelloggs,cold,100,290,21,2,45.863324 19 | Corn Pops,Kelloggs,cold,110,90,13,12,35.782791 20 | Count Chocula,General Mills,cold,110,180,12,13,22.396513 21 | Cracklin' Oat Bran,Kelloggs,cold,110,140,10,7,40.448772 22 | Cream of Wheat (Quick),Nabisco,hot,100,80,21,0,64.533816 23 | Crispix,Kelloggs,cold,110,220,21,3,46.895644 24 | Crispy Wheat & Raisins,General Mills,cold,100,140,11,10,36.176196 25 | Double Chex,Ralston Purina,cold,100,190,18,5,44.330856 26 | Froot Loops,Kelloggs,cold,110,125,11,13,32.207582 27 | Frosted Flakes,Kelloggs,cold,110,200,14,11,31.435973 28 | Frosted Mini-Wheats,Kelloggs,cold,100,0,14,7,58.345141 29 | Fruit & Fibre Dates; Walnuts; and Oats,Post,cold,120,160,12,10,40.917047 30 | Fruitful Bran,Kelloggs,cold,120,240,14,12,41.015492 31 | Fruity Pebbles,Post,cold,110,135,13,12,28.025765 32 | Golden Crisp,Post,cold,100,45,11,15,35.252444 33 | Golden Grahams,General Mills,cold,110,280,15,9,23.804043 34 | Grape Nuts Flakes,Post,cold,100,140,15,5,52.076897 35 | Grape-Nuts,Post,cold,110,170,17,3,53.371007 36 | Great Grains Pecan,Post,cold,120,75,13,4,45.811716 37 | Honey Graham Ohs,Quaker Oats,cold,120,220,12,11,21.871292 38 | Honey Nut Cheerios,General Mills,cold,110,250,11.5,10,31.072217 39 | Honey-comb,Post,cold,110,180,14,11,28.742414 40 | Just Right Crunchy Nuggets,Kelloggs,cold,110,170,17,6,36.523683 41 | Just Right Fruit & Nut,Kelloggs,cold,140,170,20,9,36.471512 42 | Kix,General Mills,cold,110,260,21,3,39.241114 43 | Life,Quaker Oats,cold,100,150,12,6,45.328074 44 | Lucky Charms,General Mills,cold,110,180,12,12,26.734515 45 | Maypo,American Home Food Products,hot,100,0,16,3,54.850917 46 | Muesli Raisins; Dates; & Almonds,Ralston Purina,cold,150,95,16,11,37.136863 47 | Muesli Raisins; Peaches; & Pecans,Ralston Purina,cold,150,150,16,11,34.139765 48 | Mueslix Crispy Blend,Kelloggs,cold,160,150,17,13,-999 49 | Multi-Grain Cheerios,General Mills,cold,100,220,15,6,40.105965 50 | Nut&Honey Crunch,Kelloggs,cold,120,190,15,9,29.924285 51 | Nutri-Grain Almond-Raisin,Kelloggs,cold,140,220,21,7,40.69232 52 | Nutri-grain Wheat,Kelloggs,cold,90,170,18,2,59.642837 53 | Oatmeal Raisin Crisp,General Mills,cold,130,170,13.5,10,30.450843 54 | Post Nat. Raisin Bran,Post,cold,120,200,11,14,37.840594 55 | Product 19,Kelloggs,cold,100,320,20,3,41.50354 56 | Puffed Rice,Quaker Oats,cold,50,0,13,0,60.756112 57 | Puffed Wheat,Quaker Oats,cold,50,0,10,0,63.005645 58 | Quaker Oat Squares,Quaker Oats,cold,100,135,14,6,49.511874 59 | Quaker Oatmeal,Quaker Oats,hot,100,0,-1,-1,50.828392 60 | Raisin Bran,Kelloggs,cold,120,210,14,12,39.259197 61 | Raisin Nut Bran,General Mills,cold,100,140,10.5,8,39.7034 62 | Raisin Squares,Kelloggs,cold,90,0,15,6,55.333142 63 | Rice Chex,Ralston Purina,cold,110,240,23,2,41.998933 64 | Rice Krispies,Kelloggs,cold,110,290,22,3,40.560159 65 | Shredded Wheat,Nabisco,cold,80,0,16,0,68.235885 66 | Shredded Wheat 'n'Bran,Nabisco,cold,90,0,19,0,74.472949 67 | Shredded Wheat spoon size,Nabisco,cold,90,0,20,0,-999 68 | Smacks,Kelloggs,cold,110,70,9,15,31.230054 69 | Special K,Kelloggs,cold,110,230,16,3,53.131324 70 | Strawberry Fruit Wheats,Nabisco,cold,90,15,15,5,59.363993 71 | Total Corn Flakes,General Mills,cold,110,200,21,3,38.839746 72 | Total Raisin Bran,General Mills,cold,140,190,15,14,28.592785 73 | Total Whole Grain,General Mills,cold,100,200,16,3,46.658844 74 | Triples,General Mills,cold,110,250,21,3,39.106174 75 | Trix,General Mills,cold,110,140,13,12,27.753301 76 | Wheat Chex,Ralston Purina,cold,100,230,17,3,49.787445 77 | Wheaties,General Mills,cold,100,200,17,3,51.592193 78 | Wheaties Honey Gold,General Mills,cold,110,200,16,8,36.187559 79 | -------------------------------------------------------------------------------- /data/gradebook.csv: -------------------------------------------------------------------------------- 1 | student,test1,test2,test3,test4,test5 2 | 1,75,93,73,79,71 3 | 2,62,89,79,83,76 4 | 3,89,69,81,84,77 5 | 4,85,66,80,77,72 6 | 5,82,71,76,83,73 7 | 6,83,68,75,77,79 8 | 7,94,79,80,91,72 9 | 8,81,69,79,82,82 10 | 9,90,80,78,79,77 11 | 10,70,69,76,75,69 12 | -------------------------------------------------------------------------------- /data/interpersonal.csv: -------------------------------------------------------------------------------- 1 | patient,treatment,time,problems 2 | 1,CBT,1,0.289325793 3 | 1,CBT,2,-0.26059518 4 | 2,IPT,1,-1.368177813 5 | 2,IPT,2,-1.542482601 6 | 3,CBT,1,0.141907266 7 | 3,CBT,2,-0.327664592 8 | 4,IPT,1,-0.871694881 9 | 4,IPT,2,-0.360437734 10 | 5,IPT,1,0.730721338 11 | 5,IPT,2,-1.384779539 12 | 8,CBT,1,0.818334222 13 | 8,CBT,2,0.218018043 14 | 9,CBT,1,-0.043698412 15 | 9,CBT,2,-0.389222044 16 | 10,IPT,1,-0.340962677 17 | 10,IPT,2,-0.404376811 18 | 11,CBT,1,0.380356846 19 | 11,CBT,2,-1.215905341 20 | 12,CBT,1,-0.372717726 21 | 12,CBT,2,-0.558054282 22 | 14,CBT,1,-1.488475406 23 | 14,CBT,2,-1.606410431 24 | 15,IPT,1,-0.725018242 25 | 15,IPT,2,-1.145613801 26 | 16,IPT,1,0.712133962 27 | 16,IPT,2,0.21645369 28 | 17,IPT,1,0.408231177 29 | 17,IPT,2,-0.282247969 30 | 18,IPT,1,0.153354804 31 | 18,IPT,2,0.0961151 32 | 19,CBT,1,0.122038468 33 | 19,CBT,2,-0.165681095 34 | 21,CBT,1,0.741029979 35 | 21,CBT,2,-1.000494844 36 | 22,CBT,1,-0.779513145 37 | 22,CBT,2,-0.524195031 38 | 23,CBT,1,-1.029835814 39 | 23,CBT,2,-1.269427323 40 | 25,IPT,1,0.598814767 41 | 25,IPT,2,-0.234938267 42 | 26,CBT,1,1.141810829 43 | 26,CBT,2,0.951364275 44 | 27,IPT,1,0.708120328 45 | 27,IPT,2,-1.477442177 46 | 29,CBT,1,-0.150138133 47 | 29,CBT,2,-0.061250461 48 | 30,CBT,1,0.671610721 49 | 30,CBT,2,0.783716587 50 | 31,CBT,1,-0.209185142 51 | 31,CBT,2,-0.801481298 52 | 32,CBT,1,-0.045345252 53 | 32,CBT,2,-0.953820065 54 | 33,CBT,1,-0.169971059 55 | 33,CBT,2,-0.442715237 56 | 34,IPT,1,0.141535527 57 | 34,IPT,2,0.076384926 58 | 35,IPT,1,-0.260762048 59 | 35,IPT,2,-0.199790781 60 | 36,CBT,1,0.297777361 61 | 36,CBT,2,0.229186473 62 | 37,IPT,1,-0.837608174 63 | 37,IPT,2,-0.66771749 64 | 39,IPT,1,0.203980908 65 | 39,IPT,2,0.019514962 66 | 40,CBT,1,0.354927303 67 | 40,CBT,2,0.087891794 68 | 42,IPT,1,-0.930012808 69 | 42,IPT,2,-0.75974317 70 | -------------------------------------------------------------------------------- /data/political.csv: -------------------------------------------------------------------------------- 1 | student,year,sex,voting,read_news,read_edit,tv_news,ethical_practical,informed 2 | 1,1,1,Not Registered,3,1,0,2,2 3 | 2,4,1,Voted,1,1,3,2,2 4 | 3,2,0,Voted,4,1,3,2,3 5 | 4,3,1,Voted,3,1,0,3,2 6 | 5,1,1,Voted,2,0,0,2,3 7 | 6,2,1,Didn't Vote,3,1,3,2,4 8 | 7,1,0,Didn't Vote,4,1,0,4,4 9 | 8,3,1,Voted,2,1,1,2,3 10 | 9,4,0,Voted,3,1,0,4,3 11 | 10,4,1,Voted,3,0,4,3,3 12 | 11,3,0,Voted,4,1,0,4,3 13 | 12,4,1,Voted,2,0,2,2,3 14 | 13,1,1,Not Registered,2,0,3,2,2 15 | 14,1,0,Voted,3,0,4,3,3 16 | 15,3,1,Not Eligible,1,1,3,3,3 17 | 16,1,1,Didn't Vote,1,1,0,3,2 18 | 17,1,1,Didn't Vote,1,0,2,3,2 19 | 18,2,1,Voted,3,0,2,2,3 20 | 19,2,0,Not Registered,3,1,4,3,5 21 | 20,1,1,Voted,1,0,2,2,2 22 | 21,4,1,Voted,2,0,2,2,3 23 | 22,3,1,Didn't Vote,3,0,0,2,3 24 | 23,1,0,Voted,2,1,0,3,4 25 | 24,1,1,Not Registered,2,1,0,3,2 26 | 25,2,1,Voted,1,0,0,3,2 27 | 26,2,0,Voted,4,1,3,3,5 28 | 27,2,1,Voted,3,0,0,4,2 29 | 28,4,0,Not Registered,0,0,4,2,1 30 | 29,4,1,Voted,3,1,3,2,3 31 | 30,2,0,Not Registered,4,1,3,4,4 32 | 31,3,0,Not Registered,0,0,2,5,3 33 | 32,3,0,Didn't Vote,4,1,4,2,4 34 | 33,3,0,Not Registered,3,1,0,2,3 35 | 34,4,0,Voted,3,1,2,4,4 36 | 35,1,1,Didn't Vote,0,0,0,2,2 37 | 36,2,1,Voted,4,1,0,2,3 38 | 37,2,0,Voted,3,1,3,5,3 39 | 38,2,0,Not Registered,3,1,0,2,2 40 | 39,2,0,Voted,4,1,3,3,5 41 | 40,2,0,Voted,3,1,3,3,3 42 | 41,3,0,Not Registered,4,1,0,4,3 43 | 42,3,0,Voted,3,1,0,4,3 44 | 43,1,0,Not Eligible,2,0,1,4,2 45 | 44,3,0,Not Eligible,4,1,4,3,5 46 | 45,1,0,Voted,4,1,0,3,3 47 | 46,4,1,Voted,1,0,3,2,4 48 | 47,2,1,Voted,2,0,3,2,3 49 | 48,1,0,Not Registered,0,0,0,5,1 50 | 49,1,0,Not Registered,3,0,3,4,3 51 | 50,4,0,Voted,3,1,3,4,3 52 | 51,3,1,Voted,4,1,1,2,4 53 | 52,2,0,Not Eligible,3,0,3,3,3 54 | 53,4,0,Not Registered,4,1,4,2,3 55 | 54,2,0,Didn't Vote,4,1,0,3,3 56 | 55,1,1,Voted,2,0,0,2,3 57 | 56,2,1,Voted,3,0,3,2,3 58 | 57,1,0,Voted,3,0,0,2,3 59 | 58,3,1,Voted,3,0,4,3,4 60 | 59,2,0,Not Registered,4,0,3,3,4 61 | -------------------------------------------------------------------------------- /data/yearspubs.csv: -------------------------------------------------------------------------------- 1 | yrs_since,n_pubs,sex,n_cites,salary 2 | 3,18,female,50,21876 3 | 6,3,female,26,54511 4 | 3,2,female,50,53425 5 | 8,17,male,34,61863 6 | 9,11,female,41,52926 7 | 6,6,male,37,47034 8 | 16,38,male,48,66432 9 | 10,48,male,56,61100 10 | 2,9,male,19,41934 11 | 5,22,male,29,97454 12 | 5,30,female,28,49832 13 | 6,21,male,31,47047 14 | 7,10,female,25,39115 15 | 11,27,male,40,59677 16 | 18,37,male,61,61458 17 | 6,8,male,32,54528 18 | 9,13,female,36,60327 19 | 7,6,male,69,56600 20 | 7,12,female,47,52542 21 | 3,29,female,29,50455 22 | 7,29,female,35,51647 23 | 5,7,male,35,62895 24 | 7,6,male,18,53740 25 | 13,69,male,90,75822 26 | 5,11,male,60,56596 27 | 8,9,female,30,55682 28 | 8,20,female,27,62091 29 | 7,41,female,35,42162 30 | 2,3,female,14,52646 31 | 13,27,male,56,74199 32 | 5,14,male,50,50729 33 | 3,23,male,25,70011 34 | 1,1,male,35,37939 35 | 3,7,male,1,39652 36 | 9,19,male,69,68987 37 | 3,11,male,69,55579 38 | 9,31,male,27,54671 39 | 3,9,male,50,57704 40 | 4,12,female,32,44045 41 | 10,32,male,33,51122 42 | 1,26,male,45,47082 43 | 11,12,male,54,60009 44 | 5,9,male,47,58632 45 | 1,6,male,29,38340 46 | 21,39,male,69,71219 47 | 7,16,female,47,53712 48 | 5,12,female,43,54782 49 | 16,50,male,55,83503 50 | 5,18,male,33,47212 51 | 4,6,female,28,52840 52 | 5,5,male,42,53650 53 | 11,20,male,24,50931 54 | 16,50,female,31,66784 55 | 3,6,female,27,49751 56 | 4,19,female,83,74343 57 | 4,11,female,49,57710 58 | 5,13,male,14,52676 59 | 6,3,female,36,41195 60 | 4,8,female,34,45662 61 | 8,11,female,70,47606 62 | 3,25,female,27,44301 63 | 4,4,female,28,58582 64 | -------------------------------------------------------------------------------- /img/Day1A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/Day1A.png -------------------------------------------------------------------------------- /img/Girard_500x500.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/Girard_500x500.jpg -------------------------------------------------------------------------------- /img/aes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/aes.png -------------------------------------------------------------------------------- /img/breaking_bad_wikipedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/breaking_bad_wikipedia.png -------------------------------------------------------------------------------- /img/graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/graphics.png -------------------------------------------------------------------------------- /img/otherscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/otherscale.png -------------------------------------------------------------------------------- /img/position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/position.png -------------------------------------------------------------------------------- /img/raw/tibbles.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/raw/tibbles.pptx -------------------------------------------------------------------------------- /img/rstudio_labels.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/rstudio_labels.jpg -------------------------------------------------------------------------------- /img/tibble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/tibble.png -------------------------------------------------------------------------------- /img/tidydata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/tidydata.png -------------------------------------------------------------------------------- /img/traincar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/traincar.png -------------------------------------------------------------------------------- /img/vectors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/vectors.png -------------------------------------------------------------------------------- /img/venn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/img/venn.png -------------------------------------------------------------------------------- /index.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Introduction to R for Social Scientists" 3 | --- 4 | 5 | A three-day workshop spanning programming, wrangling, visualization, and modeling in R.
Developed by [Jeffrey Girard](https://github.com/jmgirard) for the [Pittsburgh Summer Methodology Series](https://www.pittmethods.com/) (July 25–27, 2022). 6 | 7 | ![](./img/proud_coder_2780E3.svg){.hero} 8 | 9 | R is a popular software option for analyzing, wrangling, and visualizing data in the social, behavioral, and medical sciences. It is completely free, runs on all major platforms (i.e., Windows, Mac, and Linux), and offers a rich catalog of tools and techniques that are updated frequently. It is an excellent choice for a first programming language (when taught properly) and provides all the computational tools that most social scientists will ever need. 10 | 11 | The main hurdle for many social scientists learning R is that it is largely controlled using "syntax" (i.e., computer code) rather than point-and-click menus. This characteristic is actually one of R's greatest strengths, but can be intimidating to many without a background in computing. This three-day workshop is designed to ease the transition into using R. It aims to provide a solid foundation of conceptual knowledge and applied skills that build the confidence, curiosity, and motivation that will be required to continue learning and using R after the workshop ends. 12 | 13 | The workshop assumes that attendees have no prior knowledge of or experience with R, but does assume some knowledge of basic statistical tools (e.g., correlation and regression). Thus, it is best suited for students who have already completed an introductory statistics course (perhaps taught using point-and-click software). 14 | 15 | While there are many great educational resources for learning R, including some free video courses and textbooks, this workshop will provide a structured, guided, and communal environment that is tailor-built for researchers in the social, behavioral, and medical sciences. Thus, it emphasizes the concepts and skills most needed by such researchers. In particular, it teaches modern data science techniques using tools from the [**tidyverse**](https://www.tidyverse.org/) ecosystem (e.g., the [dplyr](https://dplyr.tidyverse.org/), [tidyr](https://tidyr.tidyverse.org/), and [ggplot2](https://ggplot2.tidyverse.org/) packages) and statistical techniques using tools from the [**easystats**](https://easystats.github.io/easystats/) ecosystem (e.g., the [parameters](https://easystats.github.io/parameters/), [performance](https://easystats.github.io/performance/), [modelbased](https://easystats.github.io/modelbased/), and [see](https://easystats.github.io/see/) packages). The beauty of these tools is that they are both beginner-friendly and scalable to solve more complex problems and interface with more advanced techniques. 16 | 17 | ------------------------------------------------------------------------ 18 | 19 | These materials may be re-used according to the [CC-BY License](./LICENSE.md). 20 | -------------------------------------------------------------------------------- /r4ss.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | -------------------------------------------------------------------------------- /renv/.gitignore: -------------------------------------------------------------------------------- 1 | library/ 2 | local/ 3 | cellar/ 4 | lock/ 5 | python/ 6 | staging/ 7 | -------------------------------------------------------------------------------- /renv/settings.dcf: -------------------------------------------------------------------------------- 1 | bioconductor.version: 2 | external.libraries: 3 | ignored.packages: 4 | package.dependency.fields: Imports, Depends, LinkingTo 5 | r.version: 6 | snapshot.type: implicit 7 | use.cache: TRUE 8 | vcs.ignore.cellar: TRUE 9 | vcs.ignore.library: TRUE 10 | vcs.ignore.local: TRUE 11 | -------------------------------------------------------------------------------- /site_libs/pagedtable-1.1/css/pagedtable.css: -------------------------------------------------------------------------------- 1 | .pagedtable { 2 | overflow: auto; 3 | padding-left: 8px; 4 | padding-right: 8px; 5 | } 6 | 7 | .pagedtable-wrapper { 8 | border: 1px solid #ccc; 9 | border-radius: 4px; 10 | margin-bottom: 10px; 11 | } 12 | 13 | .pagedtable table { 14 | width: 100%; 15 | max-width: 100%; 16 | margin: 0; 17 | } 18 | 19 | .pagedtable th { 20 | padding: 0 5px 0 5px; 21 | border: none; 22 | border-bottom: 2px solid #dddddd; 23 | 24 | min-width: 45px; 25 | } 26 | 27 | .pagedtable-empty th { 28 | display: none; 29 | } 30 | 31 | .pagedtable td { 32 | padding: 0 4px 0 4px; 33 | } 34 | 35 | .pagedtable .even { 36 | background-color: rgba(140, 140, 140, 0.1); 37 | } 38 | 39 | .pagedtable-padding-col { 40 | display: none; 41 | } 42 | 43 | .pagedtable a { 44 | -webkit-touch-callout: none; 45 | -webkit-user-select: none; 46 | -khtml-user-select: none; 47 | -moz-user-select: none; 48 | -ms-user-select: none; 49 | user-select: none; 50 | } 51 | 52 | .pagedtable-index-nav { 53 | cursor: pointer; 54 | padding: 0 5px 0 5px; 55 | float: right; 56 | border: 0; 57 | } 58 | 59 | .pagedtable-index-nav-disabled { 60 | cursor: default; 61 | text-decoration: none; 62 | color: #999; 63 | } 64 | 65 | a.pagedtable-index-nav-disabled:hover { 66 | text-decoration: none; 67 | color: #999; 68 | } 69 | 70 | .pagedtable-indexes { 71 | cursor: pointer; 72 | float: right; 73 | border: 0; 74 | } 75 | 76 | .pagedtable-index-current { 77 | cursor: default; 78 | text-decoration: none; 79 | font-weight: bold; 80 | color: #333; 81 | border: 0; 82 | } 83 | 84 | a.pagedtable-index-current:hover { 85 | text-decoration: none; 86 | font-weight: bold; 87 | color: #333; 88 | } 89 | 90 | .pagedtable-index { 91 | width: 30px; 92 | display: inline-block; 93 | text-align: center; 94 | border: 0; 95 | } 96 | 97 | .pagedtable-index-separator-left { 98 | display: inline-block; 99 | color: #333; 100 | font-size: 9px; 101 | padding: 0 0 0 0; 102 | cursor: default; 103 | } 104 | 105 | .pagedtable-index-separator-right { 106 | display: inline-block; 107 | color: #333; 108 | font-size: 9px; 109 | padding: 0 4px 0 0; 110 | cursor: default; 111 | } 112 | 113 | .pagedtable-footer { 114 | padding-top: 4px; 115 | padding-bottom: 5px; 116 | } 117 | 118 | .pagedtable-not-empty .pagedtable-footer { 119 | border-top: 2px solid #dddddd; 120 | } 121 | 122 | .pagedtable-info { 123 | overflow: hidden; 124 | color: #999; 125 | white-space: nowrap; 126 | text-overflow: ellipsis; 127 | } 128 | 129 | .pagedtable-header-name { 130 | overflow: hidden; 131 | text-overflow: ellipsis; 132 | } 133 | 134 | .pagedtable-header-type { 135 | color: #999; 136 | font-weight: 400; 137 | } 138 | 139 | .pagedtable-na-cell { 140 | font-style: italic; 141 | opacity: 0.3; 142 | } 143 | -------------------------------------------------------------------------------- /site_libs/revealjs/dist/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v4.0 | 20180602 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | main, menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, main, menu, nav, section { 29 | display: block; 30 | } -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('./league-gothic.eot'); 4 | src: url('./league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('./league-gothic.woff') format('woff'), 6 | url('./league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SMaRTWorkshops/r4ss/4d943a4f18cc04560f16cc46a155dde721a2ced5/site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /site_libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | src: url('./source-sans-pro-regular.eot'); 4 | src: url('./source-sans-pro-regular.eot?#iefix') format('embedded-opentype'), 5 | url('./source-sans-pro-regular.woff') format('woff'), 6 | url('./source-sans-pro-regular.ttf') format('truetype'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: 'Source Sans Pro'; 13 | src: url('./source-sans-pro-italic.eot'); 14 | src: url('./source-sans-pro-italic.eot?#iefix') format('embedded-opentype'), 15 | url('./source-sans-pro-italic.woff') format('woff'), 16 | url('./source-sans-pro-italic.ttf') format('truetype'); 17 | font-weight: normal; 18 | font-style: italic; 19 | } 20 | 21 | @font-face { 22 | font-family: 'Source Sans Pro'; 23 | src: url('./source-sans-pro-semibold.eot'); 24 | src: url('./source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'), 25 | url('./source-sans-pro-semibold.woff') format('woff'), 26 | url('./source-sans-pro-semibold.ttf') format('truetype'); 27 | font-weight: 600; 28 | font-style: normal; 29 | } 30 | 31 | @font-face { 32 | font-family: 'Source Sans Pro'; 33 | src: url('./source-sans-pro-semibolditalic.eot'); 34 | src: url('./source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'), 35 | url('./source-sans-pro-semibolditalic.woff') format('woff'), 36 | url('./source-sans-pro-semibolditalic.ttf') format('truetype'); 37 | font-weight: 600; 38 | font-style: italic; 39 | } 40 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/highlight/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | color: #ddd; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-keyword, 15 | .hljs-selector-tag, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-name { 19 | color: #f92672; 20 | } 21 | 22 | .hljs-code { 23 | color: #66d9ef; 24 | } 25 | 26 | .hljs-class .hljs-title { 27 | color: white; 28 | } 29 | 30 | .hljs-attribute, 31 | .hljs-symbol, 32 | .hljs-regexp, 33 | .hljs-link { 34 | color: #bf79db; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-bullet, 39 | .hljs-subst, 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-emphasis, 43 | .hljs-type, 44 | .hljs-built_in, 45 | .hljs-builtin-name, 46 | .hljs-selector-attr, 47 | .hljs-selector-pseudo, 48 | .hljs-addition, 49 | .hljs-variable, 50 | .hljs-template-tag, 51 | .hljs-template-variable { 52 | color: #a6e22e; 53 | } 54 | 55 | .hljs-comment, 56 | .hljs-quote, 57 | .hljs-deletion, 58 | .hljs-meta { 59 | color: #75715e; 60 | } 61 | 62 | .hljs-keyword, 63 | .hljs-selector-tag, 64 | .hljs-literal, 65 | .hljs-doctag, 66 | .hljs-title, 67 | .hljs-section, 68 | .hljs-type, 69 | .hljs-selector-id { 70 | font-weight: bold; 71 | } 72 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/highlight/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/math/katex.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for KaTeX. 4 | * 5 | * @author Hakim El Hattab 6 | * @author Gerhard Burger 7 | */ 8 | export const KaTeX = () => { 9 | let deck; 10 | 11 | let defaultOptions = { 12 | version: 'latest', 13 | delimiters: [ 14 | {left: '$$', right: '$$', display: true}, // Note: $$ has to come before $ 15 | {left: '$', right: '$', display: false}, 16 | {left: '\\(', right: '\\)', display: false}, 17 | {left: '\\[', right: '\\]', display: true} 18 | ], 19 | ignoredTags: ['script', 'noscript', 'style', 'textarea', 'pre'] 20 | } 21 | 22 | const loadCss = src => { 23 | let link = document.createElement('link'); 24 | link.rel = 'stylesheet'; 25 | link.href = src; 26 | document.head.appendChild(link); 27 | }; 28 | 29 | /** 30 | * Loads a JavaScript file and returns a Promise for when it is loaded 31 | * Credits: https://aaronsmith.online/easily-load-an-external-script-using-javascript/ 32 | */ 33 | const loadScript = src => { 34 | return new Promise((resolve, reject) => { 35 | const script = document.createElement('script') 36 | script.type = 'text/javascript' 37 | script.onload = resolve 38 | script.onerror = reject 39 | script.src = src 40 | document.head.append(script) 41 | }) 42 | }; 43 | 44 | async function loadScripts(urls) { 45 | for(const url of urls) { 46 | await loadScript(url); 47 | } 48 | } 49 | 50 | return { 51 | id: 'katex', 52 | 53 | init: function (reveal) { 54 | 55 | deck = reveal; 56 | 57 | let revealOptions = deck.getConfig().katex || {}; 58 | 59 | let options = {...defaultOptions, ...revealOptions}; 60 | const {local, version, extensions, ...katexOptions} = options; 61 | 62 | let baseUrl = options.local || 'https://cdn.jsdelivr.net/npm/katex'; 63 | let versionString = options.local ? '' : '@' + options.version; 64 | 65 | let cssUrl = baseUrl + versionString + '/dist/katex.min.css'; 66 | let katexUrl = baseUrl + versionString + '/dist/katex.min.js'; 67 | let mhchemUrl = baseUrl + versionString + '/dist/contrib/mhchem.min.js' 68 | let karUrl = baseUrl + versionString + '/dist/contrib/auto-render.min.js'; 69 | 70 | let katexScripts = [katexUrl]; 71 | if(options.extensions && options.extensions.includes("mhchem")) { 72 | katexScripts.push(mhchemUrl); 73 | } 74 | katexScripts.push(karUrl); 75 | 76 | const renderMath = () => { 77 | renderMathInElement(reveal.getSlidesElement(), katexOptions); 78 | deck.layout(); 79 | } 80 | 81 | loadCss(cssUrl); 82 | 83 | // For some reason dynamically loading with defer attribute doesn't result in the expected behavior, the below code does 84 | loadScripts(katexScripts).then(() => { 85 | if( deck.isReady() ) { 86 | renderMath(); 87 | } 88 | else { 89 | deck.on( 'ready', renderMath.bind( this ) ); 90 | } 91 | }); 92 | 93 | } 94 | } 95 | 96 | }; 97 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/math/mathjax2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax. 4 | * 5 | * @author Hakim El Hattab 6 | */ 7 | export const MathJax2 = () => { 8 | 9 | // The reveal.js instance this plugin is attached to 10 | let deck; 11 | 12 | let defaultOptions = { 13 | messageStyle: 'none', 14 | tex2jax: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ], 16 | skipTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 17 | }, 18 | skipStartupTypeset: true 19 | }; 20 | 21 | function loadScript( url, callback ) { 22 | 23 | let head = document.querySelector( 'head' ); 24 | let script = document.createElement( 'script' ); 25 | script.type = 'text/javascript'; 26 | script.src = url; 27 | 28 | // Wrapper for callback to make sure it only fires once 29 | let finish = () => { 30 | if( typeof callback === 'function' ) { 31 | callback.call(); 32 | callback = null; 33 | } 34 | } 35 | 36 | script.onload = finish; 37 | 38 | // IE 39 | script.onreadystatechange = () => { 40 | if ( this.readyState === 'loaded' ) { 41 | finish(); 42 | } 43 | } 44 | 45 | // Normal browsers 46 | head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'mathjax2', 52 | 53 | init: function( reveal ) { 54 | 55 | deck = reveal; 56 | 57 | let revealOptions = deck.getConfig().mathjax2 || deck.getConfig().math || {}; 58 | 59 | let options = { ...defaultOptions, ...revealOptions }; 60 | let mathjax = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js'; 61 | let config = options.config || 'TeX-AMS_HTML-full'; 62 | let url = mathjax + '?config=' + config; 63 | 64 | options.tex2jax = { ...defaultOptions.tex2jax, ...revealOptions.tex2jax }; 65 | 66 | options.mathjax = options.config = null; 67 | 68 | loadScript( url, function() { 69 | 70 | MathJax.Hub.Config( options ); 71 | 72 | // Typeset followed by an immediate reveal.js layout since 73 | // the typesetting process could affect slide height 74 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, deck.getRevealElement() ] ); 75 | MathJax.Hub.Queue( deck.layout ); 76 | 77 | // Reprocess equations in slides when they turn visible 78 | deck.on( 'slidechanged', function( event ) { 79 | 80 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] ); 81 | 82 | } ); 83 | 84 | } ); 85 | 86 | } 87 | } 88 | 89 | }; 90 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/math/mathjax3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax 3 4 | * 5 | * @author Hakim El Hattab 6 | * @author Gerhard Burger 7 | */ 8 | export const MathJax3 = () => { 9 | 10 | // The reveal.js instance this plugin is attached to 11 | let deck; 12 | 13 | let defaultOptions = { 14 | tex: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ] 16 | }, 17 | options: { 18 | skipHtmlTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 19 | }, 20 | startup: { 21 | ready: () => { 22 | MathJax.startup.defaultReady(); 23 | MathJax.startup.promise.then(() => { 24 | Reveal.layout(); 25 | }); 26 | } 27 | } 28 | }; 29 | 30 | function loadScript( url, callback ) { 31 | 32 | let script = document.createElement( 'script' ); 33 | script.type = "text/javascript" 34 | script.id = "MathJax-script" 35 | script.src = url; 36 | script.async = true 37 | 38 | // Wrapper for callback to make sure it only fires once 39 | script.onload = () => { 40 | if (typeof callback === 'function') { 41 | callback.call(); 42 | callback = null; 43 | } 44 | }; 45 | 46 | document.head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'mathjax3', 52 | init: function(reveal) { 53 | 54 | deck = reveal; 55 | 56 | let revealOptions = deck.getConfig().mathjax3 || {}; 57 | let options = {...defaultOptions, ...revealOptions}; 58 | options.tex = {...defaultOptions.tex, ...revealOptions.tex} 59 | options.options = {...options.options, ...defaultOptions.options} 60 | options.startup = {...defaultOptions.startup, ...revealOptions.startup} 61 | 62 | let url = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'; 63 | options.mathjax = null; 64 | 65 | window.MathJax = options; 66 | 67 | loadScript( url, function() { 68 | // Reprocess equations in slides when they turn visible 69 | Reveal.addEventListener( 'slidechanged', function( event ) { 70 | MathJax.typeset(); 71 | } ); 72 | } ); 73 | 74 | } 75 | } 76 | 77 | }; 78 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/math/plugin.js: -------------------------------------------------------------------------------- 1 | import {KaTeX} from "./katex"; 2 | import {MathJax2} from "./mathjax2"; 3 | import {MathJax3} from "./mathjax3"; 4 | 5 | const defaultTypesetter = MathJax2; 6 | 7 | /*! 8 | * This plugin is a wrapper for the MathJax2, 9 | * MathJax3 and KaTeX typesetter plugins. 10 | */ 11 | export default Plugin = Object.assign( defaultTypesetter(), { 12 | KaTeX, 13 | MathJax2, 14 | MathJax3 15 | } ); -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/pdf-export/pdfexport.js: -------------------------------------------------------------------------------- 1 | var PdfExport = ( function( _Reveal ){ 2 | 3 | var Reveal = _Reveal; 4 | var setStylesheet = null; 5 | var installAltKeyBindings = null; 6 | 7 | function getRevealJsPath(){ 8 | var regex = /\b[^/]+\/reveal.css$/i; 9 | var script = Array.from( document.querySelectorAll( 'link' ) ).find( function( e ){ 10 | return e.attributes.href && e.attributes.href.value.search( regex ) >= 0; 11 | }); 12 | if( !script ){ 13 | console.error( 'reveal.css could not be found in included elements. Did you rename this file?' ); 14 | return ''; 15 | } 16 | return script.attributes.href.value.replace( regex, '' ); 17 | } 18 | 19 | function setStylesheet3( pdfExport ){ 20 | var link = document.querySelector( '#print' ); 21 | if( !link ){ 22 | link = document.createElement( 'link' ); 23 | link.rel = 'stylesheet'; 24 | link.id = 'print'; 25 | document.querySelector( 'head' ).appendChild( link ); 26 | } 27 | var style = 'paper'; 28 | if( pdfExport ){ 29 | style = 'pdf'; 30 | } 31 | link.href = getRevealJsPath() + 'css/print/' + style + '.css'; 32 | } 33 | 34 | function setStylesheet4( pdfExport ){ 35 | } 36 | 37 | function installAltKeyBindings3(){ 38 | } 39 | 40 | function installAltKeyBindings4(){ 41 | if( isPrintingPDF() ){ 42 | var config = Reveal.getConfig(); 43 | var shortcut = config.pdfExportShortcut || 'E'; 44 | window.addEventListener( 'keydown', function( e ){ 45 | if( e.target.nodeName.toUpperCase() == 'BODY' 46 | && ( e.key.toUpperCase() == shortcut.toUpperCase() || e.keyCode == shortcut.toUpperCase().charCodeAt( 0 ) ) ){ 47 | e.preventDefault(); 48 | togglePdfExport(); 49 | return false; 50 | } 51 | }, true ); 52 | } 53 | } 54 | 55 | function isPrintingPDF(){ 56 | return ( /print-pdf/gi ).test( window.location.search ); 57 | } 58 | 59 | function togglePdfExport(){ 60 | var url_doc = new URL( document.URL ); 61 | var query_doc = new URLSearchParams( url_doc.searchParams ); 62 | if( isPrintingPDF() ){ 63 | query_doc.delete( 'print-pdf' ); 64 | }else{ 65 | query_doc.set( 'print-pdf', '' ); 66 | } 67 | url_doc.search = ( query_doc.toString() ? '?' + query_doc.toString() : '' ); 68 | window.location.href = url_doc.toString(); 69 | } 70 | 71 | function installKeyBindings(){ 72 | var config = Reveal.getConfig(); 73 | var shortcut = config.pdfExportShortcut || 'E'; 74 | Reveal.addKeyBinding({ 75 | keyCode: shortcut.toUpperCase().charCodeAt( 0 ), 76 | key: shortcut.toUpperCase(), 77 | description: 'PDF export mode' 78 | }, togglePdfExport ); 79 | installAltKeyBindings(); 80 | } 81 | 82 | function install(){ 83 | installKeyBindings(); 84 | setStylesheet( isPrintingPDF() ); 85 | } 86 | 87 | var Plugin = { 88 | } 89 | 90 | if( Reveal && Reveal.VERSION && Reveal.VERSION.length && Reveal.VERSION[ 0 ] == '3' ){ 91 | // reveal 3.x 92 | setStylesheet = setStylesheet3; 93 | installAltKeyBindings = installAltKeyBindings3; 94 | install(); 95 | }else{ 96 | // must be reveal 4.x 97 | setStylesheet = setStylesheet4; 98 | installAltKeyBindings = installAltKeyBindings4; 99 | Plugin.id = 'pdf-export'; 100 | Plugin.init = function( _Reveal ){ 101 | Reveal = _Reveal; 102 | install(); 103 | }; 104 | } 105 | 106 | return Plugin; 107 | 108 | })( Reveal ); 109 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/pdf-export/plugin.yml: -------------------------------------------------------------------------------- 1 | name: PdfExport 2 | script: pdfexport.js 3 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/quarto-line-highlight/line-highlight.css: -------------------------------------------------------------------------------- 1 | .reveal 2 | div.sourceCode 3 | pre 4 | code.has-line-highlights 5 | > span:not(.highlight-line) { 6 | opacity: 0.4; 7 | } 8 | 9 | .reveal pre.numberSource { 10 | padding-left: 0; 11 | } 12 | 13 | .reveal pre.numberSource code > span { 14 | left: -2.1em; 15 | } 16 | 17 | pre.numberSource code > span > a:first-child::before { 18 | left: -0.7em; 19 | } 20 | 21 | .reveal pre > code:not(:first-child).fragment { 22 | position: absolute; 23 | top: 0; 24 | left: 0; 25 | width: 100%; 26 | box-sizing: border-box; 27 | } 28 | 29 | .reveal div.sourceCode pre code { 30 | min-height: 100%; 31 | } 32 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/quarto-line-highlight/plugin.yml: -------------------------------------------------------------------------------- 1 | # adapted from https://github.com/hakimel/reveal.js/tree/master/plugin/highlight 2 | name: QuartoLineHighlight 3 | script: line-highlight.js 4 | stylesheet: line-highlight.css 5 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/quarto-support/footer.css: -------------------------------------------------------------------------------- 1 | .reveal .slide-logo { 2 | display: block; 3 | position: fixed; 4 | bottom: 0; 5 | right: 12px; 6 | max-height: 2.2rem; 7 | height: 100%; 8 | width: auto; 9 | } 10 | 11 | .reveal .footer { 12 | display: block; 13 | position: fixed; 14 | bottom: 18px; 15 | width: 100%; 16 | margin: 0 auto; 17 | text-align: center; 18 | font-size: 18px; 19 | z-index: 2; 20 | } 21 | 22 | .reveal .footer > * { 23 | margin-top: 0; 24 | margin-bottom: 0; 25 | } 26 | 27 | .reveal .slide .footer { 28 | display: none; 29 | } 30 | 31 | .reveal .slide-number { 32 | bottom: 10px; 33 | right: 10px; 34 | font-size: 16px; 35 | background-color: transparent; 36 | } 37 | 38 | .reveal.has-logo .slide-number { 39 | bottom: initial; 40 | top: 8px; 41 | right: 8px; 42 | } 43 | 44 | .reveal .slide-number .slide-number-delimiter { 45 | margin: 0; 46 | } 47 | 48 | .reveal .slide-menu-button { 49 | left: 8px; 50 | bottom: 8px; 51 | } 52 | 53 | .reveal .slide-chalkboard-buttons { 54 | position: fixed; 55 | left: 12px; 56 | bottom: 8px; 57 | z-index: 30; 58 | font-size: 24px; 59 | } 60 | 61 | .reveal .slide-chalkboard-buttons.slide-menu-offset { 62 | left: 54px; 63 | } 64 | 65 | .reveal .slide-chalkboard-buttons > span { 66 | margin-right: 14px; 67 | cursor: pointer; 68 | } 69 | 70 | @media screen and (max-width: 800px) { 71 | .reveal .slide-logo { 72 | max-height: 1.1rem; 73 | bottom: -2px; 74 | right: 10px; 75 | } 76 | .reveal .footer { 77 | font-size: 14px; 78 | bottom: 12px; 79 | } 80 | .reveal .slide-number { 81 | font-size: 12px; 82 | bottom: 7px; 83 | } 84 | .reveal .slide-menu-button .fas::before { 85 | height: 1.3rem; 86 | width: 1.3rem; 87 | vertical-align: -0.125em; 88 | background-size: 1.3rem 1.3rem; 89 | } 90 | 91 | .reveal .slide-chalkboard-buttons .fas::before { 92 | height: 0.95rem; 93 | width: 0.95rem; 94 | background-size: 0.95rem 0.95rem; 95 | vertical-align: -0em; 96 | } 97 | 98 | .reveal .slide-chalkboard-buttons.slide-menu-offset { 99 | left: 36px; 100 | } 101 | .reveal .slide-chalkboard-buttons > span { 102 | margin-right: 9px; 103 | } 104 | } 105 | 106 | html.print-pdf .reveal .slide-menu-button, 107 | html.print-pdf .reveal .slide-chalkboard-buttons { 108 | display: none; 109 | } 110 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/quarto-support/plugin.yml: -------------------------------------------------------------------------------- 1 | name: QuartoSupport 2 | script: support.js 3 | stylesheet: footer.css 4 | config: 5 | smaller: false 6 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/reveal-menu/plugin.yml: -------------------------------------------------------------------------------- 1 | name: RevealMenu 2 | script: [menu.js, quarto-menu.js] 3 | stylesheet: [menu.css, quarto-menu.css] 4 | config: 5 | menu: 6 | side: "left" 7 | useTextContentForMissingTitles: true 8 | markers: false 9 | loadIcons: false 10 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/reveal-menu/quarto-menu.css: -------------------------------------------------------------------------------- 1 | .slide-menu-wrapper .slide-tool-item { 2 | display: block; 3 | text-align: left; 4 | padding: 10px 18px; 5 | color: #aaa; 6 | cursor: pointer; 7 | border-top: solid 1px #555; 8 | } 9 | 10 | .slide-menu-wrapper .slide-tool-item a { 11 | text-decoration: none; 12 | } 13 | 14 | .slide-menu-wrapper .slide-tool-item kbd { 15 | font-family: monospace; 16 | margin-right: 10px; 17 | padding: 3px 8px; 18 | color: inherit; 19 | border: 1px solid; 20 | border-radius: 5px; 21 | border-color: #555; 22 | } 23 | 24 | .slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button { 25 | text-decoration: none; 26 | } 27 | 28 | .reveal .slide-menu-button { 29 | left: 8px; 30 | bottom: 8px; 31 | } 32 | 33 | .reveal .slide-menu-button .fas::before, 34 | .reveal .slide-chalkboard-buttons .fas::before, 35 | .slide-menu-wrapper .slide-menu-toolbar .fas::before { 36 | display: inline-block; 37 | height: 2.2rem; 38 | width: 2.2rem; 39 | content: ""; 40 | vertical-align: -0.125em; 41 | background-repeat: no-repeat; 42 | background-size: 2.2rem 2.2rem; 43 | } 44 | 45 | .reveal .slide-chalkboard-buttons .fas::before { 46 | height: 1.45rem; 47 | width: 1.45rem; 48 | background-size: 1.45rem 1.45rem; 49 | vertical-align: 0.1em; 50 | } 51 | 52 | .slide-menu-wrapper .slide-menu-toolbar .fas::before { 53 | height: 1.8rem; 54 | width: 1.8rem; 55 | background-size: 1.8rem 1.8rem; 56 | } 57 | 58 | .slide-menu-wrapper .slide-menu-toolbar .fa-images::before { 59 | background-image: url('data:image/svg+xml,'); 60 | } 61 | 62 | .slide-menu-wrapper .slide-menu-toolbar .fa-gear::before { 63 | background-image: url('data:image/svg+xml,'); 64 | } 65 | 66 | .slide-menu-wrapper .slide-menu-toolbar .fa-times::before { 67 | background-image: url('data:image/svg+xml,'); 68 | } 69 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/reveal-menu/quarto-menu.js: -------------------------------------------------------------------------------- 1 | window.revealMenuToolHandler = function (handler) { 2 | return function (event) { 3 | event.preventDefault(); 4 | handler(); 5 | Reveal.getPlugin("menu").closeMenu(); 6 | }; 7 | }; 8 | 9 | window.RevealMenuToolHandlers = { 10 | fullscreen: revealMenuToolHandler(function () { 11 | const element = document.documentElement; 12 | const requestMethod = 13 | element.requestFullscreen || 14 | element.webkitRequestFullscreen || 15 | element.webkitRequestFullScreen || 16 | element.mozRequestFullScreen || 17 | element.msRequestFullscreen; 18 | if (requestMethod) { 19 | requestMethod.apply(element); 20 | } 21 | }), 22 | speakerMode: revealMenuToolHandler(function () { 23 | Reveal.getPlugin("notes").open(); 24 | }), 25 | keyboardHelp: revealMenuToolHandler(function () { 26 | Reveal.toggleHelp(true); 27 | }), 28 | overview: revealMenuToolHandler(function () { 29 | Reveal.toggleOverview(true); 30 | }), 31 | toggleChalkboard: revealMenuToolHandler(function () { 32 | RevealChalkboard.toggleChalkboard(); 33 | }), 34 | toggleNotesCanvas: revealMenuToolHandler(function () { 35 | RevealChalkboard.toggleNotesCanvas(); 36 | }), 37 | downloadDrawings: revealMenuToolHandler(function () { 38 | RevealChalkboard.download(); 39 | }), 40 | }; 41 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/zoom/zoom.esm.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * reveal.js Zoom plugin 3 | */ 4 | var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e} 5 | -------------------------------------------------------------------------------- /site_libs/revealjs/plugin/zoom/zoom.js: -------------------------------------------------------------------------------- 1 | !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=o()}(this,(function(){"use strict"; 2 | /*! 3 | * reveal.js Zoom plugin 4 | */var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(t){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;t[i]&&!e.isOverview()&&(t.preventDefault(),o.to({x:t.clientX,y:t.clientY,scale:d,pan:!1}))}))}},o=function(){var e=1,t=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(o,t){var n=l();if(o.width=o.width||1,o.height=o.height||1,o.x-=(window.innerWidth-o.width*t)/2,o.y-=(window.innerHeight-o.height*t)/2,s)if(1===t)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-o.x+"px,"+-o.y+"px) scale("+t+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===t?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+o.x)/t+"px",document.body.style.top=-(n.y+o.y)/t+"px",document.body.style.width=100*t+"%",document.body.style.height=100*t+"%",document.body.style.zoom=t);e=t,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var o=.12*window.innerWidth,i=.12*window.innerHeight,d=l();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),twindow.innerWidth-o&&window.scroll(d.x+(1-(window.innerWidth-t)/o)*(14/e),d.y)}function l(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(t){1!==e&&27===t.keyCode&&o.out()})),document.addEventListener("mousemove",(function(o){1!==e&&(t=o.clientX,n=o.clientY)})),{to:function(t){if(1!==e)o.out();else{if(t.x=t.x||0,t.y=t.y||0,t.element){var n=t.element.getBoundingClientRect();t.x=n.left-20,t.y=n.top-20,t.width=n.width+40,t.height=n.height+40}void 0!==t.width&&void 0!==t.height&&(t.scale=Math.max(Math.min(window.innerWidth/t.width,window.innerHeight/t.height),1)),t.scale>1&&(t.x*=t.scale,t.y*=t.scale,r(t,t.scale),!1!==t.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}})); 5 | --------------------------------------------------------------------------------