├── .github ├── CODE_OF_CONDUCT.md ├── dependabot.yaml └── workflows │ └── build-presentation.yaml ├── .gitignore ├── DESCRIPTION ├── LICENSE ├── README.md ├── _extensions └── quarto-ext │ └── fontawesome │ ├── _extension.yml │ ├── assets │ ├── css │ │ ├── all.css │ │ ├── all.min.css │ │ └── latex-fontsize.css │ └── webfonts │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff2 │ │ ├── fa-v4compatibility.ttf │ │ └── fa-v4compatibility.woff2 │ └── fontawesome.lua ├── index.html ├── index.qmd ├── index_files ├── figure-revealjs │ ├── cran_downloads-1.png │ ├── cran_downloads_print-1.png │ ├── ggbarstats_1-1.png │ ├── ggbetweenstats_1-1.png │ ├── ggbetweenstats_4-1.png │ ├── ggbetweenstats_5-1.png │ ├── ggbetweenstats_only_plot-1.png │ ├── ggcoefstats_1-1.png │ ├── ggcorrmat_1-1.png │ ├── ggdotplotstats_1-1.png │ ├── gghistostats_1-1.png │ ├── ggpiestats_1-1.png │ ├── ggpiestats_only_plot-1.png │ ├── ggscatterstats_1-1.png │ ├── ggwithinstats_1-1.png │ └── grouped_1-1.png └── libs │ ├── clipboard │ └── clipboard.min.js │ ├── quarto-contrib │ └── fontawesome6-1.2.0 │ │ ├── 1e21o67 │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff2 │ │ ├── fa-v4compatibility.ttf │ │ └── fa-v4compatibility.woff2 │ │ ├── all.min.css │ │ └── latex-fontsize.css │ ├── quarto-diagram │ ├── mermaid-init.js │ ├── mermaid.css │ └── mermaid.min.js │ ├── quarto-html │ ├── light-border.css │ ├── popper.min.js │ ├── quarto-syntax-highlighting-0815c480559380816a4d1ea211a47e91.css │ ├── quarto-syntax-highlighting-09b140d2d032adf2aedb8b099be3ee13.css │ ├── quarto-syntax-highlighting-19cd9126a9a9c64aacb03dc90954a64a.css │ ├── quarto-syntax-highlighting-226bd0f977fa82dfae4534cac220d79a.css │ ├── quarto-syntax-highlighting-443ac161e34e8c1eedb78f958e3d9213.css │ ├── quarto-syntax-highlighting-549806ee2085284f45b00abea8c6df48.css │ ├── quarto-syntax-highlighting-66ab7fd5e73b7f0a764e0d49b3e29ab1.css │ ├── quarto-syntax-highlighting-6bb072e51ab976e338d8fd19b221fbe5.css │ ├── quarto-syntax-highlighting-8c4c3d43a67d5579f14f1e6229e0c929.css │ ├── quarto-syntax-highlighting-985aa47af68dae11cd4d235c71fb941e.css │ ├── quarto-syntax-highlighting-a126389619fad6dbfb296a5315d49fef.css │ ├── quarto-syntax-highlighting-b2bd955b7378b94aa8c2ba4fafa553c9.css │ ├── quarto-syntax-highlighting-da03d714c310c60cec1d83284c92da2c.css │ ├── quarto-syntax-highlighting-e2dbac4cb4103ab08bd69bea3cb63eec.css │ ├── tabby.min.js │ ├── tippy.css │ └── tippy.umd.min.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-250687541b6fd0303e6fa9a425de9713.css │ │ ├── quarto-2c1b5f745a11cfad616ebade4a4a7d24.css │ │ ├── quarto-423d414d36ce366a9d05f36d06304417.css │ │ ├── quarto-826ceeb5b3197b51ce65239a2cb384ff.css │ │ └── quarto-8f3eebe07241f08526c91a7e9cbef8fd.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 ├── intro-to-ggstatsplot.Rproj ├── media ├── after_ggstats.PNG ├── cat_trademill.gif ├── cleveland.jpg ├── collage.jpeg ├── datasaurus.gif ├── dataviz.jpeg ├── ds_workflow.png ├── easystats_logo_wall.png ├── few.jpg ├── ggbooks.jpeg ├── ggplot2.jpeg ├── ggstats-contributions.png ├── ggstats-paper.png ├── ggstats-stars.png ├── golem-problem.jpeg ├── golem.jpg ├── logo.png ├── mcelreath.jpg ├── monkey.gif ├── outlier_example.R ├── packages.gif ├── pr-qa.png ├── presentations.jpeg ├── statsExpressions.png ├── stats_reporting_format.png ├── stats_reporting_format.pptx ├── statsexpr-contributions.png ├── this-is-fine.jpg ├── tufte.jpg ├── wilke.jpeg └── wilkinson.jpeg ├── slides.pdf ├── styles.css └── versions /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, caste, color, religion, or sexual 10 | identity and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the overall 26 | community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or advances of 31 | any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email address, 35 | without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at patilindrajeet.science@gmail.com. 63 | All complaints will be reviewed and investigated promptly and fairly. 64 | 65 | All community leaders are obligated to respect the privacy and security of the 66 | reporter of any incident. 67 | 68 | ## Enforcement Guidelines 69 | 70 | Community leaders will follow these Community Impact Guidelines in determining 71 | the consequences for any action they deem in violation of this Code of Conduct: 72 | 73 | ### 1. Correction 74 | 75 | **Community Impact**: Use of inappropriate language or other behavior deemed 76 | unprofessional or unwelcome in the community. 77 | 78 | **Consequence**: A private, written warning from community leaders, providing 79 | clarity around the nature of the violation and an explanation of why the 80 | behavior was inappropriate. A public apology may be requested. 81 | 82 | ### 2. Warning 83 | 84 | **Community Impact**: A violation through a single incident or series of 85 | actions. 86 | 87 | **Consequence**: A warning with consequences for continued behavior. No 88 | interaction with the people involved, including unsolicited interaction with 89 | those enforcing the Code of Conduct, for a specified period of time. This 90 | includes avoiding interactions in community spaces as well as external channels 91 | like social media. Violating these terms may lead to a temporary or permanent 92 | ban. 93 | 94 | ### 3. Temporary Ban 95 | 96 | **Community Impact**: A serious violation of community standards, including 97 | sustained inappropriate behavior. 98 | 99 | **Consequence**: A temporary ban from any sort of interaction or public 100 | communication with the community for a specified period of time. No public or 101 | private interaction with the people involved, including unsolicited interaction 102 | with those enforcing the Code of Conduct, is allowed during this period. 103 | Violating these terms may lead to a permanent ban. 104 | 105 | ### 4. Permanent Ban 106 | 107 | **Community Impact**: Demonstrating a pattern of violation of community 108 | standards, including sustained inappropriate behavior, harassment of an 109 | individual, or aggression toward or disparagement of classes of individuals. 110 | 111 | **Consequence**: A permanent ban from any sort of public interaction within the 112 | community. 113 | 114 | ## Attribution 115 | 116 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 117 | version 2.1, available at 118 | . 119 | 120 | Community Impact Guidelines were inspired by 121 | [Mozilla's code of conduct enforcement ladder][https://github.com/mozilla/inclusion]. 122 | 123 | For answers to common questions about this code of conduct, see the FAQ at 124 | . Translations are available at . 125 | 126 | [homepage]: https://www.contributor-covenant.org 127 | -------------------------------------------------------------------------------- /.github/dependabot.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | # Keep dependencies for GitHub Actions up-to-date 5 | - package-ecosystem: "github-actions" 6 | directory: "/" 7 | schedule: 8 | interval: "weekly" 9 | -------------------------------------------------------------------------------- /.github/workflows/build-presentation.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: [main, master] 4 | pull_request: 5 | branches: [main, master] 6 | schedule: 7 | # * is a special character in YAML so you have to quote this string 8 | # Trigger once a week, on a Sunday (0) 9 | - cron: "0 0 * * 0" 10 | 11 | name: Build Presentation 12 | 13 | jobs: 14 | build-presentation: 15 | runs-on: ubuntu-latest 16 | env: 17 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 18 | steps: 19 | - uses: actions/checkout@v4 20 | 21 | - uses: r-lib/actions/setup-pandoc@v2 22 | with: 23 | pandoc-version: "latest" 24 | 25 | - uses: quarto-dev/quarto-actions/setup@v2 26 | with: 27 | version: pre-release 28 | - run: | 29 | quarto --version 30 | quarto install extension quarto-ext/fontawesome --no-prompt 31 | 32 | - uses: r-lib/actions/setup-r@v2 33 | with: 34 | use-public-rspm: true 35 | 36 | - uses: r-lib/actions/setup-r-dependencies@v2 37 | with: 38 | pak-version: devel 39 | upgrade: 'TRUE' 40 | 41 | - name: Render slides 42 | run: | 43 | options(crayon.enabled = FALSE) 44 | quarto::quarto_render("index.qmd", output_format = "revealjs") 45 | shell: Rscript {0} 46 | 47 | - name: Build PDF using decktape 48 | run: | 49 | rm -rf slides 50 | mkdir slides && sudo chmod 777 slides 51 | sudo npm install -g --unsafe-perm=true --allow-root decktape 52 | docker run --rm -t -v `pwd`:/slides -v ~:/home/user astefanutti/decktape index.html slides/slides.pdf 53 | 54 | - name: Copy PDF slides to top-level directory 55 | run: | 56 | cp slides/slides.pdf . && rm -rf slides 57 | 58 | - uses: stefanzweifel/git-auto-commit-action@v5.2.0 59 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Meta 2 | doc 3 | # Windows image file caches 4 | Thumbs.db 5 | ehthumbs.db 6 | 7 | # Folder config file 8 | Desktop.ini 9 | # Recycle Bin used on file shares 10 | $RECYCLE.BIN/ 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | # Windows shortcuts 17 | *.lnk 18 | # ========================= 19 | # Operating System Files 20 | # OSX 21 | .DS_Store 22 | .AppleDouble 23 | .LSOverride 24 | # Thumbnails 25 | ._* 26 | # Files that might appear in the root of a volume 27 | .DocumentRevisions-V100 28 | .fseventsd 29 | .Spotlight-V100 30 | .TemporaryItems 31 | .Trashes 32 | .VolumeIcon.icns 33 | # Directories potentially created on remote AFP share 34 | .AppleDB 35 | .AppleDesktop 36 | Network Trash Folder 37 | Temporary Items 38 | .apdisk 39 | # R Studio files 40 | .Rproj.user 41 | .Rhistory 42 | .RData 43 | .Ruserdata 44 | inst/doc 45 | .httr-oauth 46 | revdep/checks 47 | revdep/library 48 | revdep/checks.noindex 49 | revdep/library.noindex 50 | revdep/data.sqlite 51 | /doc/ 52 | /Meta/ 53 | README.html 54 | 55 | index_cache/ 56 | index.rmarkdown 57 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Type: Presentation 2 | Package: intro-to-ggstatsplot 3 | Title: Statistical Visualizations with {ggstatsplot}: A Biography 4 | Version: 2.0 5 | Authors@R: 6 | person("Indrajeet", "Patil", , "patilindrajeet.science@gmail.com", role = c("cre", "aut", "cph"), 7 | comment = c(ORCID = "0000-0003-1995-6531")) 8 | Description: This presentation provides an introduction to the 9 | `{ggstatsplot}` package. This is not a package, and the DESCRIPTION 10 | file is included to make it easier to install required packages in 11 | GitHub Actions workflows. 12 | License: CC0 1.0 Universal 13 | URL: https://github.com/IndrajeetPatil/intro-to-ggstatsplot/, 14 | https://indrajeetpatil.github.io/intro-to-ggstatsplot/ 15 | BugReports: https://github.com/IndrajeetPatil/intro-to-ggstatsplot/issues 16 | Depends: 17 | bayestestR, 18 | datasauRus, 19 | downlit, 20 | ggiraphExtra, 21 | ggstatsplot, 22 | ggthemes, 23 | knitr, 24 | packageRank, 25 | quarto, 26 | reticulate, 27 | rstan, 28 | rstantools, 29 | statsExpressions, 30 | xml2 31 | Remotes: 32 | IndrajeetPatil/ggstatsplot, 33 | IndrajeetPatil/statsExpressions 34 | Encoding: UTF-8 35 | Roxygen: list(markdown = TRUE) 36 | RoxygenNote: 7.3.2 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Statistical Visualizations with {ggstatsplot}: A Biography 2 | 3 | This is a repository for presentation about the [`{ggstatsplot}`](https://indrajeetpatil.github.io/ggstatsplot/) (prepared using [Quarto](https://quarto.org/)). 4 | 5 | The slides are available here:
6 | 7 | 8 | There is also a dedicated website for this package:
9 | 10 | 11 | ## Setup 12 | 13 | You will need to install the following package- 14 | 15 | ```r 16 | install.packages("ggstatsplot") 17 | ``` 18 | 19 | -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/_extension.yml: -------------------------------------------------------------------------------- 1 | title: Font Awesome support 2 | author: Carlos Scheidegger 3 | version: 1.2.0 4 | quarto-required: ">=1.2.269" 5 | contributes: 6 | shortcodes: 7 | - fontawesome.lua 8 | -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css: -------------------------------------------------------------------------------- 1 | .fa-tiny { 2 | font-size: 0.5em; 3 | } 4 | .fa-scriptsize { 5 | font-size: 0.7em; 6 | } 7 | .fa-footnotesize { 8 | font-size: 0.8em; 9 | } 10 | .fa-small { 11 | font-size: 0.9em; 12 | } 13 | .fa-normalsize { 14 | font-size: 1em; 15 | } 16 | .fa-large { 17 | font-size: 1.2em; 18 | } 19 | .fa-Large { 20 | font-size: 1.5em; 21 | } 22 | .fa-LARGE { 23 | font-size: 1.75em; 24 | } 25 | .fa-huge { 26 | font-size: 2em; 27 | } 28 | .fa-Huge { 29 | font-size: 2.5em; 30 | } 31 | -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /_extensions/quarto-ext/fontawesome/fontawesome.lua: -------------------------------------------------------------------------------- 1 | local function ensureLatexDeps() 2 | quarto.doc.use_latex_package("fontawesome5") 3 | end 4 | 5 | local function ensureHtmlDeps() 6 | quarto.doc.add_html_dependency({ 7 | name = 'fontawesome6', 8 | version = '1.2.0', 9 | stylesheets = {'assets/css/all.min.css', 'assets/css/latex-fontsize.css'} 10 | }) 11 | end 12 | 13 | local function isEmpty(s) 14 | return s == nil or s == '' 15 | end 16 | 17 | local function isValidSize(size) 18 | local validSizes = { 19 | "tiny", 20 | "scriptsize", 21 | "footnotesize", 22 | "small", 23 | "normalsize", 24 | "large", 25 | "Large", 26 | "LARGE", 27 | "huge", 28 | "Huge" 29 | } 30 | for _, v in ipairs(validSizes) do 31 | if v == size then 32 | return size 33 | end 34 | end 35 | return "" 36 | end 37 | 38 | return { 39 | ["fa"] = function(args, kwargs) 40 | 41 | local group = "solid" 42 | local icon = pandoc.utils.stringify(args[1]) 43 | if #args > 1 then 44 | group = icon 45 | icon = pandoc.utils.stringify(args[2]) 46 | end 47 | 48 | local title = pandoc.utils.stringify(kwargs["title"]) 49 | if not isEmpty(title) then 50 | title = " title=\"" .. title .. "\"" 51 | end 52 | 53 | local label = pandoc.utils.stringify(kwargs["label"]) 54 | if isEmpty(label) then 55 | label = " aria-label=\"" .. icon .. "\"" 56 | else 57 | label = " aria-label=\"" .. label .. "\"" 58 | end 59 | 60 | local size = pandoc.utils.stringify(kwargs["size"]) 61 | 62 | -- detect html (excluding epub which won't handle fa) 63 | if quarto.doc.is_format("html:js") then 64 | ensureHtmlDeps() 65 | if not isEmpty(size) then 66 | size = " fa-" .. size 67 | end 68 | return pandoc.RawInline( 69 | 'html', 70 | "" 71 | ) 72 | -- detect pdf / beamer / latex / etc 73 | elseif quarto.doc.is_format("pdf") then 74 | ensureLatexDeps() 75 | if isEmpty(isValidSize(size)) then 76 | return pandoc.RawInline('tex', "\\faIcon{" .. icon .. "}") 77 | else 78 | return pandoc.RawInline('tex', "{\\" .. size .. "\\faIcon{" .. icon .. "}}") 79 | end 80 | else 81 | return pandoc.Null() 82 | end 83 | end 84 | } 85 | -------------------------------------------------------------------------------- /index_files/figure-revealjs/cran_downloads-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/cran_downloads-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/cran_downloads_print-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/cran_downloads_print-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggbarstats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggbarstats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggbetweenstats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggbetweenstats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggbetweenstats_4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggbetweenstats_4-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggbetweenstats_5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggbetweenstats_5-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggbetweenstats_only_plot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggbetweenstats_only_plot-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggcoefstats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggcoefstats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggcorrmat_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggcorrmat_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggdotplotstats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggdotplotstats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/gghistostats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/gghistostats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggpiestats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggpiestats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggpiestats_only_plot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggpiestats_only_plot-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggscatterstats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggscatterstats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/ggwithinstats_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/ggwithinstats_1-1.png -------------------------------------------------------------------------------- /index_files/figure-revealjs/grouped_1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/figure-revealjs/grouped_1-1.png -------------------------------------------------------------------------------- /index_files/libs/clipboard/clipboard.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * clipboard.js v2.0.11 3 | * https://clipboardjs.com/ 4 | * 5 | * Licensed MIT © Zeno Rocha 6 | */ 7 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light-border]>.tippy-arrow:after,.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=light-border]>.tippy-arrow:after{border-color:transparent;border-style:solid}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:after{border-top-color:rgba(0,8,16,.2);border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:rgba(0,8,16,.2);border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:after{border-left-color:rgba(0,8,16,.2);border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:rgba(0,8,16,.2)}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px} -------------------------------------------------------------------------------- /index_files/libs/quarto-html/quarto-syntax-highlighting-0815c480559380816a4d1ea211a47e91.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 | /* syntax highlight based on Pandoc's rules */ 40 | pre > code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | content: " code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | content: " code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | content: " code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | content: " code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | content: " 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 | font-style: inherit; 59 | } 60 | 61 | code span.at { 62 | color: #657422; 63 | font-style: inherit; 64 | } 65 | 66 | code span.ss { 67 | color: #20794D; 68 | font-style: inherit; 69 | } 70 | 71 | code span.an { 72 | color: #5E5E5E; 73 | font-style: inherit; 74 | } 75 | 76 | code span.fu { 77 | color: #4758AB; 78 | font-style: inherit; 79 | } 80 | 81 | code span.st { 82 | color: #20794D; 83 | font-style: inherit; 84 | } 85 | 86 | code span.cf { 87 | color: #003B4F; 88 | font-weight: bold; 89 | font-style: inherit; 90 | } 91 | 92 | code span.op { 93 | color: #5E5E5E; 94 | font-style: inherit; 95 | } 96 | 97 | code span.er { 98 | color: #AD0000; 99 | font-style: inherit; 100 | } 101 | 102 | code span.bn { 103 | color: #AD0000; 104 | font-style: inherit; 105 | } 106 | 107 | code span.al { 108 | color: #AD0000; 109 | font-style: inherit; 110 | } 111 | 112 | code span.va { 113 | color: #111111; 114 | font-style: inherit; 115 | } 116 | 117 | code span.bu { 118 | font-style: inherit; 119 | } 120 | 121 | code span.ex { 122 | font-style: inherit; 123 | } 124 | 125 | code span.pp { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | code span.in { 131 | color: #5E5E5E; 132 | font-style: inherit; 133 | } 134 | 135 | code span.vs { 136 | color: #20794D; 137 | font-style: inherit; 138 | } 139 | 140 | code span.wa { 141 | color: #5E5E5E; 142 | font-style: italic; 143 | } 144 | 145 | code span.do { 146 | color: #5E5E5E; 147 | font-style: italic; 148 | } 149 | 150 | code span.im { 151 | color: #00769E; 152 | font-style: inherit; 153 | } 154 | 155 | code span.ch { 156 | color: #20794D; 157 | font-style: inherit; 158 | } 159 | 160 | code span.dt { 161 | color: #AD0000; 162 | font-style: inherit; 163 | } 164 | 165 | code span.fl { 166 | color: #AD0000; 167 | font-style: inherit; 168 | } 169 | 170 | code span.co { 171 | color: #5E5E5E; 172 | font-style: inherit; 173 | } 174 | 175 | code span.cv { 176 | color: #5E5E5E; 177 | font-style: italic; 178 | } 179 | 180 | code span.cn { 181 | color: #8f5902; 182 | font-style: inherit; 183 | } 184 | 185 | code span.sc { 186 | color: #5E5E5E; 187 | font-style: inherit; 188 | } 189 | 190 | code span.dv { 191 | color: #AD0000; 192 | font-style: inherit; 193 | } 194 | 195 | code span.kw { 196 | color: #003B4F; 197 | font-weight: bold; 198 | font-style: inherit; 199 | } 200 | 201 | .prevent-inlining { 202 | content: " 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 | font-style: inherit; 59 | } 60 | 61 | code span.at { 62 | color: #657422; 63 | font-style: inherit; 64 | } 65 | 66 | code span.ss { 67 | color: #20794D; 68 | font-style: inherit; 69 | } 70 | 71 | code span.an { 72 | color: #5E5E5E; 73 | font-style: inherit; 74 | } 75 | 76 | code span.fu { 77 | color: #4758AB; 78 | font-style: inherit; 79 | } 80 | 81 | code span.st { 82 | color: #20794D; 83 | font-style: inherit; 84 | } 85 | 86 | code span.cf { 87 | color: #003B4F; 88 | font-weight: bold; 89 | font-style: inherit; 90 | } 91 | 92 | code span.op { 93 | color: #5E5E5E; 94 | font-style: inherit; 95 | } 96 | 97 | code span.er { 98 | color: #AD0000; 99 | font-style: inherit; 100 | } 101 | 102 | code span.bn { 103 | color: #AD0000; 104 | font-style: inherit; 105 | } 106 | 107 | code span.al { 108 | color: #AD0000; 109 | font-style: inherit; 110 | } 111 | 112 | code span.va { 113 | color: #111111; 114 | font-style: inherit; 115 | } 116 | 117 | code span.bu { 118 | font-style: inherit; 119 | } 120 | 121 | code span.ex { 122 | font-style: inherit; 123 | } 124 | 125 | code span.pp { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | code span.in { 131 | color: #5E5E5E; 132 | font-style: inherit; 133 | } 134 | 135 | code span.vs { 136 | color: #20794D; 137 | font-style: inherit; 138 | } 139 | 140 | code span.wa { 141 | color: #5E5E5E; 142 | font-style: italic; 143 | } 144 | 145 | code span.do { 146 | color: #5E5E5E; 147 | font-style: italic; 148 | } 149 | 150 | code span.im { 151 | color: #00769E; 152 | font-style: inherit; 153 | } 154 | 155 | code span.ch { 156 | color: #20794D; 157 | font-style: inherit; 158 | } 159 | 160 | code span.dt { 161 | color: #AD0000; 162 | font-style: inherit; 163 | } 164 | 165 | code span.fl { 166 | color: #AD0000; 167 | font-style: inherit; 168 | } 169 | 170 | code span.co { 171 | color: #5E5E5E; 172 | font-style: inherit; 173 | } 174 | 175 | code span.cv { 176 | color: #5E5E5E; 177 | font-style: italic; 178 | } 179 | 180 | code span.cn { 181 | color: #8f5902; 182 | font-style: inherit; 183 | } 184 | 185 | code span.sc { 186 | color: #5E5E5E; 187 | font-style: inherit; 188 | } 189 | 190 | code span.dv { 191 | color: #AD0000; 192 | font-style: inherit; 193 | } 194 | 195 | code span.kw { 196 | color: #003B4F; 197 | font-weight: bold; 198 | font-style: inherit; 199 | } 200 | 201 | .prevent-inlining { 202 | content: " 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 | font-style: inherit; 59 | } 60 | 61 | code span.at { 62 | color: #657422; 63 | font-style: inherit; 64 | } 65 | 66 | code span.ss { 67 | color: #20794D; 68 | font-style: inherit; 69 | } 70 | 71 | code span.an { 72 | color: #5E5E5E; 73 | font-style: inherit; 74 | } 75 | 76 | code span.fu { 77 | color: #4758AB; 78 | font-style: inherit; 79 | } 80 | 81 | code span.st { 82 | color: #20794D; 83 | font-style: inherit; 84 | } 85 | 86 | code span.cf { 87 | color: #003B4F; 88 | font-weight: bold; 89 | font-style: inherit; 90 | } 91 | 92 | code span.op { 93 | color: #5E5E5E; 94 | font-style: inherit; 95 | } 96 | 97 | code span.er { 98 | color: #AD0000; 99 | font-style: inherit; 100 | } 101 | 102 | code span.bn { 103 | color: #AD0000; 104 | font-style: inherit; 105 | } 106 | 107 | code span.al { 108 | color: #AD0000; 109 | font-style: inherit; 110 | } 111 | 112 | code span.va { 113 | color: #111111; 114 | font-style: inherit; 115 | } 116 | 117 | code span.bu { 118 | font-style: inherit; 119 | } 120 | 121 | code span.ex { 122 | font-style: inherit; 123 | } 124 | 125 | code span.pp { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | code span.in { 131 | color: #5E5E5E; 132 | font-style: inherit; 133 | } 134 | 135 | code span.vs { 136 | color: #20794D; 137 | font-style: inherit; 138 | } 139 | 140 | code span.wa { 141 | color: #5E5E5E; 142 | font-style: italic; 143 | } 144 | 145 | code span.do { 146 | color: #5E5E5E; 147 | font-style: italic; 148 | } 149 | 150 | code span.im { 151 | color: #00769E; 152 | font-style: inherit; 153 | } 154 | 155 | code span.ch { 156 | color: #20794D; 157 | font-style: inherit; 158 | } 159 | 160 | code span.dt { 161 | color: #AD0000; 162 | font-style: inherit; 163 | } 164 | 165 | code span.fl { 166 | color: #AD0000; 167 | font-style: inherit; 168 | } 169 | 170 | code span.co { 171 | color: #5E5E5E; 172 | font-style: inherit; 173 | } 174 | 175 | code span.cv { 176 | color: #5E5E5E; 177 | font-style: italic; 178 | } 179 | 180 | code span.cn { 181 | color: #8f5902; 182 | font-style: inherit; 183 | } 184 | 185 | code span.sc { 186 | color: #5E5E5E; 187 | font-style: inherit; 188 | } 189 | 190 | code span.dv { 191 | color: #AD0000; 192 | font-style: inherit; 193 | } 194 | 195 | code span.kw { 196 | color: #003B4F; 197 | font-weight: bold; 198 | font-style: inherit; 199 | } 200 | 201 | .prevent-inlining { 202 | content: " 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 | font-style: inherit; 59 | } 60 | 61 | code span.at { 62 | color: #657422; 63 | font-style: inherit; 64 | } 65 | 66 | code span.ss { 67 | color: #20794D; 68 | font-style: inherit; 69 | } 70 | 71 | code span.an { 72 | color: #5E5E5E; 73 | font-style: inherit; 74 | } 75 | 76 | code span.fu { 77 | color: #4758AB; 78 | font-style: inherit; 79 | } 80 | 81 | code span.st { 82 | color: #20794D; 83 | font-style: inherit; 84 | } 85 | 86 | code span.cf { 87 | color: #003B4F; 88 | font-weight: bold; 89 | font-style: inherit; 90 | } 91 | 92 | code span.op { 93 | color: #5E5E5E; 94 | font-style: inherit; 95 | } 96 | 97 | code span.er { 98 | color: #AD0000; 99 | font-style: inherit; 100 | } 101 | 102 | code span.bn { 103 | color: #AD0000; 104 | font-style: inherit; 105 | } 106 | 107 | code span.al { 108 | color: #AD0000; 109 | font-style: inherit; 110 | } 111 | 112 | code span.va { 113 | color: #111111; 114 | font-style: inherit; 115 | } 116 | 117 | code span.bu { 118 | font-style: inherit; 119 | } 120 | 121 | code span.ex { 122 | font-style: inherit; 123 | } 124 | 125 | code span.pp { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | code span.in { 131 | color: #5E5E5E; 132 | font-style: inherit; 133 | } 134 | 135 | code span.vs { 136 | color: #20794D; 137 | font-style: inherit; 138 | } 139 | 140 | code span.wa { 141 | color: #5E5E5E; 142 | font-style: italic; 143 | } 144 | 145 | code span.do { 146 | color: #5E5E5E; 147 | font-style: italic; 148 | } 149 | 150 | code span.im { 151 | color: #00769E; 152 | font-style: inherit; 153 | } 154 | 155 | code span.ch { 156 | color: #20794D; 157 | font-style: inherit; 158 | } 159 | 160 | code span.dt { 161 | color: #AD0000; 162 | font-style: inherit; 163 | } 164 | 165 | code span.fl { 166 | color: #AD0000; 167 | font-style: inherit; 168 | } 169 | 170 | code span.co { 171 | color: #5E5E5E; 172 | font-style: inherit; 173 | } 174 | 175 | code span.cv { 176 | color: #5E5E5E; 177 | font-style: italic; 178 | } 179 | 180 | code span.cn { 181 | color: #8f5902; 182 | font-style: inherit; 183 | } 184 | 185 | code span.sc { 186 | color: #5E5E5E; 187 | font-style: inherit; 188 | } 189 | 190 | code span.dv { 191 | color: #AD0000; 192 | font-style: inherit; 193 | } 194 | 195 | code span.kw { 196 | color: #003B4F; 197 | font-weight: bold; 198 | font-style: inherit; 199 | } 200 | 201 | .prevent-inlining { 202 | content: " code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | content: " code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | content: " 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 | font-style: inherit; 59 | } 60 | 61 | code span.at { 62 | color: #657422; 63 | font-style: inherit; 64 | } 65 | 66 | code span.ss { 67 | color: #20794D; 68 | font-style: inherit; 69 | } 70 | 71 | code span.an { 72 | color: #5E5E5E; 73 | font-style: inherit; 74 | } 75 | 76 | code span.fu { 77 | color: #4758AB; 78 | font-style: inherit; 79 | } 80 | 81 | code span.st { 82 | color: #20794D; 83 | font-style: inherit; 84 | } 85 | 86 | code span.cf { 87 | color: #003B4F; 88 | font-weight: bold; 89 | font-style: inherit; 90 | } 91 | 92 | code span.op { 93 | color: #5E5E5E; 94 | font-style: inherit; 95 | } 96 | 97 | code span.er { 98 | color: #AD0000; 99 | font-style: inherit; 100 | } 101 | 102 | code span.bn { 103 | color: #AD0000; 104 | font-style: inherit; 105 | } 106 | 107 | code span.al { 108 | color: #AD0000; 109 | font-style: inherit; 110 | } 111 | 112 | code span.va { 113 | color: #111111; 114 | font-style: inherit; 115 | } 116 | 117 | code span.bu { 118 | font-style: inherit; 119 | } 120 | 121 | code span.ex { 122 | font-style: inherit; 123 | } 124 | 125 | code span.pp { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | code span.in { 131 | color: #5E5E5E; 132 | font-style: inherit; 133 | } 134 | 135 | code span.vs { 136 | color: #20794D; 137 | font-style: inherit; 138 | } 139 | 140 | code span.wa { 141 | color: #5E5E5E; 142 | font-style: italic; 143 | } 144 | 145 | code span.do { 146 | color: #5E5E5E; 147 | font-style: italic; 148 | } 149 | 150 | code span.im { 151 | color: #00769E; 152 | font-style: inherit; 153 | } 154 | 155 | code span.ch { 156 | color: #20794D; 157 | font-style: inherit; 158 | } 159 | 160 | code span.dt { 161 | color: #AD0000; 162 | font-style: inherit; 163 | } 164 | 165 | code span.fl { 166 | color: #AD0000; 167 | font-style: inherit; 168 | } 169 | 170 | code span.co { 171 | color: #5E5E5E; 172 | font-style: inherit; 173 | } 174 | 175 | code span.cv { 176 | color: #5E5E5E; 177 | font-style: italic; 178 | } 179 | 180 | code span.cn { 181 | color: #8f5902; 182 | font-style: inherit; 183 | } 184 | 185 | code span.sc { 186 | color: #5E5E5E; 187 | font-style: inherit; 188 | } 189 | 190 | code span.dv { 191 | color: #AD0000; 192 | font-style: inherit; 193 | } 194 | 195 | code span.kw { 196 | color: #003B4F; 197 | font-weight: bold; 198 | font-style: inherit; 199 | } 200 | 201 | .prevent-inlining { 202 | content: " 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 | font-style: inherit; 59 | } 60 | 61 | code span.at { 62 | color: #657422; 63 | font-style: inherit; 64 | } 65 | 66 | code span.ss { 67 | color: #20794D; 68 | font-style: inherit; 69 | } 70 | 71 | code span.an { 72 | color: #5E5E5E; 73 | font-style: inherit; 74 | } 75 | 76 | code span.fu { 77 | color: #4758AB; 78 | font-style: inherit; 79 | } 80 | 81 | code span.st { 82 | color: #20794D; 83 | font-style: inherit; 84 | } 85 | 86 | code span.cf { 87 | color: #003B4F; 88 | font-weight: bold; 89 | font-style: inherit; 90 | } 91 | 92 | code span.op { 93 | color: #5E5E5E; 94 | font-style: inherit; 95 | } 96 | 97 | code span.er { 98 | color: #AD0000; 99 | font-style: inherit; 100 | } 101 | 102 | code span.bn { 103 | color: #AD0000; 104 | font-style: inherit; 105 | } 106 | 107 | code span.al { 108 | color: #AD0000; 109 | font-style: inherit; 110 | } 111 | 112 | code span.va { 113 | color: #111111; 114 | font-style: inherit; 115 | } 116 | 117 | code span.bu { 118 | font-style: inherit; 119 | } 120 | 121 | code span.ex { 122 | font-style: inherit; 123 | } 124 | 125 | code span.pp { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | code span.in { 131 | color: #5E5E5E; 132 | font-style: inherit; 133 | } 134 | 135 | code span.vs { 136 | color: #20794D; 137 | font-style: inherit; 138 | } 139 | 140 | code span.wa { 141 | color: #5E5E5E; 142 | font-style: italic; 143 | } 144 | 145 | code span.do { 146 | color: #5E5E5E; 147 | font-style: italic; 148 | } 149 | 150 | code span.im { 151 | color: #00769E; 152 | font-style: inherit; 153 | } 154 | 155 | code span.ch { 156 | color: #20794D; 157 | font-style: inherit; 158 | } 159 | 160 | code span.dt { 161 | color: #AD0000; 162 | font-style: inherit; 163 | } 164 | 165 | code span.fl { 166 | color: #AD0000; 167 | font-style: inherit; 168 | } 169 | 170 | code span.co { 171 | color: #5E5E5E; 172 | font-style: inherit; 173 | } 174 | 175 | code span.cv { 176 | color: #5E5E5E; 177 | font-style: italic; 178 | } 179 | 180 | code span.cn { 181 | color: #8f5902; 182 | font-style: inherit; 183 | } 184 | 185 | code span.sc { 186 | color: #5E5E5E; 187 | font-style: inherit; 188 | } 189 | 190 | code span.dv { 191 | color: #AD0000; 192 | font-style: inherit; 193 | } 194 | 195 | code span.kw { 196 | color: #003B4F; 197 | font-weight: bold; 198 | font-style: inherit; 199 | } 200 | 201 | .prevent-inlining { 202 | content: " code.sourceCode > span { 41 | color: #003B4F; 42 | } 43 | 44 | code.sourceCode > span { 45 | color: #003B4F; 46 | } 47 | 48 | div.sourceCode, 49 | div.sourceCode pre.sourceCode { 50 | color: #003B4F; 51 | } 52 | 53 | /* Normal */ 54 | code span { 55 | color: #003B4F; 56 | } 57 | 58 | /* Alert */ 59 | code span.al { 60 | color: #AD0000; 61 | font-style: inherit; 62 | } 63 | 64 | /* Annotation */ 65 | code span.an { 66 | color: #5E5E5E; 67 | font-style: inherit; 68 | } 69 | 70 | /* Attribute */ 71 | code span.at { 72 | color: #657422; 73 | font-style: inherit; 74 | } 75 | 76 | /* BaseN */ 77 | code span.bn { 78 | color: #AD0000; 79 | font-style: inherit; 80 | } 81 | 82 | /* BuiltIn */ 83 | code span.bu { 84 | font-style: inherit; 85 | } 86 | 87 | /* ControlFlow */ 88 | code span.cf { 89 | color: #003B4F; 90 | font-weight: bold; 91 | font-style: inherit; 92 | } 93 | 94 | /* Char */ 95 | code span.ch { 96 | color: #20794D; 97 | font-style: inherit; 98 | } 99 | 100 | /* Constant */ 101 | code span.cn { 102 | color: #8f5902; 103 | font-style: inherit; 104 | } 105 | 106 | /* Comment */ 107 | code span.co { 108 | color: #5E5E5E; 109 | font-style: inherit; 110 | } 111 | 112 | /* CommentVar */ 113 | code span.cv { 114 | color: #5E5E5E; 115 | font-style: italic; 116 | } 117 | 118 | /* Documentation */ 119 | code span.do { 120 | color: #5E5E5E; 121 | font-style: italic; 122 | } 123 | 124 | /* DataType */ 125 | code span.dt { 126 | color: #AD0000; 127 | font-style: inherit; 128 | } 129 | 130 | /* DecVal */ 131 | code span.dv { 132 | color: #AD0000; 133 | font-style: inherit; 134 | } 135 | 136 | /* Error */ 137 | code span.er { 138 | color: #AD0000; 139 | font-style: inherit; 140 | } 141 | 142 | /* Extension */ 143 | code span.ex { 144 | font-style: inherit; 145 | } 146 | 147 | /* Float */ 148 | code span.fl { 149 | color: #AD0000; 150 | font-style: inherit; 151 | } 152 | 153 | /* Function */ 154 | code span.fu { 155 | color: #4758AB; 156 | font-style: inherit; 157 | } 158 | 159 | /* Import */ 160 | code span.im { 161 | color: #00769E; 162 | font-style: inherit; 163 | } 164 | 165 | /* Information */ 166 | code span.in { 167 | color: #5E5E5E; 168 | font-style: inherit; 169 | } 170 | 171 | /* Keyword */ 172 | code span.kw { 173 | color: #003B4F; 174 | font-weight: bold; 175 | font-style: inherit; 176 | } 177 | 178 | /* Operator */ 179 | code span.op { 180 | color: #5E5E5E; 181 | font-style: inherit; 182 | } 183 | 184 | /* Other */ 185 | code span.ot { 186 | color: #003B4F; 187 | font-style: inherit; 188 | } 189 | 190 | /* Preprocessor */ 191 | code span.pp { 192 | color: #AD0000; 193 | font-style: inherit; 194 | } 195 | 196 | /* SpecialChar */ 197 | code span.sc { 198 | color: #5E5E5E; 199 | font-style: inherit; 200 | } 201 | 202 | /* SpecialString */ 203 | code span.ss { 204 | color: #20794D; 205 | font-style: inherit; 206 | } 207 | 208 | /* String */ 209 | code span.st { 210 | color: #20794D; 211 | font-style: inherit; 212 | } 213 | 214 | /* Variable */ 215 | code span.va { 216 | color: #111111; 217 | font-style: inherit; 218 | } 219 | 220 | /* VerbatimString */ 221 | code span.vs { 222 | color: #20794D; 223 | font-style: inherit; 224 | } 225 | 226 | /* Warning */ 227 | code span.wa { 228 | color: #5E5E5E; 229 | font-style: italic; 230 | } 231 | 232 | .prevent-inlining { 233 | 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} -------------------------------------------------------------------------------- /index_files/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 | } -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License 2 | 3 | Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. 4 | 5 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 6 | This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL 7 | 8 | —————————————————————————————- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | —————————————————————————————- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. 14 | 15 | The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. 16 | 17 | DEFINITIONS 18 | “Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. 19 | 20 | “Reserved Font Name” refers to any names specified as such after the copyright statement(s). 21 | 22 | “Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). 23 | 24 | “Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. 25 | 26 | “Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. 27 | 28 | PERMISSION & CONDITIONS 29 | Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 30 | 31 | 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 32 | 33 | 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 34 | 35 | 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 36 | 37 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 38 | 39 | 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. 40 | 41 | TERMINATION 42 | This license becomes null and void if any of the above conditions are not met. 43 | 44 | DISCLAIMER 45 | THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/libs/revealjs/plugin/math/math.esm.js: -------------------------------------------------------------------------------- 1 | const t=()=>{let t,e={messageStyle:"none",tex2jax:{inlineMath:[["$","$"],["\\(","\\)"]],skipTags:["script","noscript","style","textarea","pre"]},skipStartupTypeset:!0};return{id:"mathjax2",init:function(a){t=a;let n=t.getConfig().mathjax2||t.getConfig().math||{},i={...e,...n},s=(i.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js")+"?config="+(i.config||"TeX-AMS_HTML-full");i.tex2jax={...e.tex2jax,...n.tex2jax},i.mathjax=i.config=null,function(t,e){let a=document.querySelector("head"),n=document.createElement("script");n.type="text/javascript",n.src=t;let i=()=>{"function"==typeof e&&(e.call(),e=null)};n.onload=i,n.onreadystatechange=()=>{"loaded"===this.readyState&&i()},a.appendChild(n)}(s,(function(){MathJax.Hub.Config(i),MathJax.Hub.Queue(["Typeset",MathJax.Hub,t.getRevealElement()]),MathJax.Hub.Queue(t.layout),t.on("slidechanged",(function(t){MathJax.Hub.Queue(["Typeset",MathJax.Hub,t.currentSlide])}))}))}}},e=t; 2 | /*! 3 | * This plugin is a wrapper for the MathJax2, 4 | * MathJax3 and KaTeX typesetter plugins. 5 | */ 6 | var a=Plugin=Object.assign(e(),{KaTeX:()=>{let t,e={version:"latest",delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],ignoredTags:["script","noscript","style","textarea","pre"]};const a=t=>new Promise(((e,a)=>{const n=document.createElement("script");n.type="text/javascript",n.onload=e,n.onerror=a,n.src=t,document.head.append(n)}));return{id:"katex",init:function(n){t=n;let i=t.getConfig().katex||{},s={...e,...i};const{local:l,version:o,extensions:r,...c}=s;let d=s.local||"https://cdn.jsdelivr.net/npm/katex",p=s.local?"":"@"+s.version,u=d+p+"/dist/katex.min.css",h=d+p+"/dist/contrib/mhchem.min.js",x=d+p+"/dist/contrib/auto-render.min.js",m=[d+p+"/dist/katex.min.js"];s.extensions&&s.extensions.includes("mhchem")&&m.push(h),m.push(x);const f=()=>{renderMathInElement(n.getSlidesElement(),c),t.layout()};(t=>{let e=document.createElement("link");e.rel="stylesheet",e.href=t,document.head.appendChild(e)})(u),async function(t){for(const e of t)await a(e)}(m).then((()=>{t.isReady()?f():t.on("ready",f.bind(this))}))}}},MathJax2:t,MathJax3:()=>{let t,e={tex:{inlineMath:[["$","$"],["\\(","\\)"]]},options:{skipHtmlTags:["script","noscript","style","textarea","pre"]},startup:{ready:()=>{MathJax.startup.defaultReady(),MathJax.startup.promise.then((()=>{t.layout()}))}}};return{id:"mathjax3",init:function(a){t=a;let n=t.getConfig().mathjax3||{},i={...e,...n};i.tex={...e.tex,...n.tex},i.options={...e.options,...n.options},i.startup={...e.startup,...n.startup};let s=i.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js";i.mathjax=null,window.MathJax=i,function(t,e){let a=document.createElement("script");a.type="text/javascript",a.id="MathJax-script",a.src=t,a.async=!0,a.onload=()=>{"function"==typeof e&&(e.call(),e=null)},document.head.appendChild(a)}(s,(function(){t.addEventListener("slidechanged",(function(t){MathJax.typeset()}))}))}}}});export{a as default}; 7 | -------------------------------------------------------------------------------- /index_files/libs/revealjs/plugin/math/math.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).RevealMath=e()}(this,(function(){"use strict";const t=()=>{let t,e={messageStyle:"none",tex2jax:{inlineMath:[["$","$"],["\\(","\\)"]],skipTags:["script","noscript","style","textarea","pre"]},skipStartupTypeset:!0};return{id:"mathjax2",init:function(n){t=n;let a=t.getConfig().mathjax2||t.getConfig().math||{},i={...e,...a},s=(i.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js")+"?config="+(i.config||"TeX-AMS_HTML-full");i.tex2jax={...e.tex2jax,...a.tex2jax},i.mathjax=i.config=null,function(t,e){let n=document.querySelector("head"),a=document.createElement("script");a.type="text/javascript",a.src=t;let i=()=>{"function"==typeof e&&(e.call(),e=null)};a.onload=i,a.onreadystatechange=()=>{"loaded"===this.readyState&&i()},n.appendChild(a)}(s,(function(){MathJax.Hub.Config(i),MathJax.Hub.Queue(["Typeset",MathJax.Hub,t.getRevealElement()]),MathJax.Hub.Queue(t.layout),t.on("slidechanged",(function(t){MathJax.Hub.Queue(["Typeset",MathJax.Hub,t.currentSlide])}))}))}}},e=t;return Plugin=Object.assign(e(),{KaTeX:()=>{let t,e={version:"latest",delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],ignoredTags:["script","noscript","style","textarea","pre"]};const n=t=>new Promise(((e,n)=>{const a=document.createElement("script");a.type="text/javascript",a.onload=e,a.onerror=n,a.src=t,document.head.append(a)}));return{id:"katex",init:function(a){t=a;let i=t.getConfig().katex||{},s={...e,...i};const{local:o,version:l,extensions:r,...c}=s;let d=s.local||"https://cdn.jsdelivr.net/npm/katex",u=s.local?"":"@"+s.version,p=d+u+"/dist/katex.min.css",h=d+u+"/dist/contrib/mhchem.min.js",x=d+u+"/dist/contrib/auto-render.min.js",m=[d+u+"/dist/katex.min.js"];s.extensions&&s.extensions.includes("mhchem")&&m.push(h),m.push(x);const f=()=>{renderMathInElement(a.getSlidesElement(),c),t.layout()};(t=>{let e=document.createElement("link");e.rel="stylesheet",e.href=t,document.head.appendChild(e)})(p),async function(t){for(const e of t)await n(e)}(m).then((()=>{t.isReady()?f():t.on("ready",f.bind(this))}))}}},MathJax2:t,MathJax3:()=>{let t,e={tex:{inlineMath:[["$","$"],["\\(","\\)"]]},options:{skipHtmlTags:["script","noscript","style","textarea","pre"]},startup:{ready:()=>{MathJax.startup.defaultReady(),MathJax.startup.promise.then((()=>{t.layout()}))}}};return{id:"mathjax3",init:function(n){t=n;let a=t.getConfig().mathjax3||{},i={...e,...a};i.tex={...e.tex,...a.tex},i.options={...e.options,...a.options},i.startup={...e.startup,...a.startup};let s=i.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js";i.mathjax=null,window.MathJax=i,function(t,e){let n=document.createElement("script");n.type="text/javascript",n.id="MathJax-script",n.src=t,n.async=!0,n.onload=()=>{"function"==typeof e&&(e.call(),e=null)},document.head.appendChild(n)}(s,(function(){t.addEventListener("slidechanged",(function(t){MathJax.typeset()}))}))}}}})})); 2 | -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/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 | deck.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 = {...defaultOptions.options, ...revealOptions.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 | deck.addEventListener( 'slidechanged', function( event ) { 70 | MathJax.typeset(); 71 | } ); 72 | } ); 73 | 74 | } 75 | } 76 | 77 | }; 78 | -------------------------------------------------------------------------------- /index_files/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 | } ); -------------------------------------------------------------------------------- /index_files/libs/revealjs/plugin/notes/plugin.js: -------------------------------------------------------------------------------- 1 | import speakerViewHTML from './speaker-view.html' 2 | 3 | import { marked } from 'marked'; 4 | 5 | /** 6 | * Handles opening of and synchronization with the reveal.js 7 | * notes window. 8 | * 9 | * Handshake process: 10 | * 1. This window posts 'connect' to notes window 11 | * - Includes URL of presentation to show 12 | * 2. Notes window responds with 'connected' when it is available 13 | * 3. This window proceeds to send the current presentation state 14 | * to the notes window 15 | */ 16 | const Plugin = () => { 17 | 18 | let connectInterval; 19 | let speakerWindow = null; 20 | let deck; 21 | 22 | /** 23 | * Opens a new speaker view window. 24 | */ 25 | function openSpeakerWindow() { 26 | 27 | // If a window is already open, focus it 28 | if( speakerWindow && !speakerWindow.closed ) { 29 | speakerWindow.focus(); 30 | } 31 | else { 32 | speakerWindow = window.open( 'about:blank', 'reveal.js - Notes', 'width=1100,height=700' ); 33 | speakerWindow.marked = marked; 34 | speakerWindow.document.write( speakerViewHTML ); 35 | 36 | if( !speakerWindow ) { 37 | alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' ); 38 | return; 39 | } 40 | 41 | connect(); 42 | } 43 | 44 | } 45 | 46 | /** 47 | * Reconnect with an existing speaker view window. 48 | */ 49 | function reconnectSpeakerWindow( reconnectWindow ) { 50 | 51 | if( speakerWindow && !speakerWindow.closed ) { 52 | speakerWindow.focus(); 53 | } 54 | else { 55 | speakerWindow = reconnectWindow; 56 | window.addEventListener( 'message', onPostMessage ); 57 | onConnected(); 58 | } 59 | 60 | } 61 | 62 | /** 63 | * Connect to the notes window through a postmessage handshake. 64 | * Using postmessage enables us to work in situations where the 65 | * origins differ, such as a presentation being opened from the 66 | * file system. 67 | */ 68 | function connect() { 69 | 70 | const presentationURL = deck.getConfig().url; 71 | 72 | const url = typeof presentationURL === 'string' ? presentationURL : 73 | window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search; 74 | 75 | // Keep trying to connect until we get a 'connected' message back 76 | connectInterval = setInterval( function() { 77 | speakerWindow.postMessage( JSON.stringify( { 78 | namespace: 'reveal-notes', 79 | type: 'connect', 80 | state: deck.getState(), 81 | url 82 | } ), '*' ); 83 | }, 500 ); 84 | 85 | window.addEventListener( 'message', onPostMessage ); 86 | 87 | } 88 | 89 | /** 90 | * Calls the specified Reveal.js method with the provided argument 91 | * and then pushes the result to the notes frame. 92 | */ 93 | function callRevealApi( methodName, methodArguments, callId ) { 94 | 95 | let result = deck[methodName].apply( deck, methodArguments ); 96 | speakerWindow.postMessage( JSON.stringify( { 97 | namespace: 'reveal-notes', 98 | type: 'return', 99 | result, 100 | callId 101 | } ), '*' ); 102 | 103 | } 104 | 105 | /** 106 | * Posts the current slide data to the notes window. 107 | */ 108 | function post( event ) { 109 | 110 | let slideElement = deck.getCurrentSlide(), 111 | notesElements = slideElement.querySelectorAll( 'aside.notes' ), 112 | fragmentElement = slideElement.querySelector( '.current-fragment' ); 113 | 114 | let messageData = { 115 | namespace: 'reveal-notes', 116 | type: 'state', 117 | notes: '', 118 | markdown: false, 119 | whitespace: 'normal', 120 | state: deck.getState() 121 | }; 122 | 123 | // Look for notes defined in a slide attribute 124 | if( slideElement.hasAttribute( 'data-notes' ) ) { 125 | messageData.notes = slideElement.getAttribute( 'data-notes' ); 126 | messageData.whitespace = 'pre-wrap'; 127 | } 128 | 129 | // Look for notes defined in a fragment 130 | if( fragmentElement ) { 131 | let fragmentNotes = fragmentElement.querySelector( 'aside.notes' ); 132 | if( fragmentNotes ) { 133 | messageData.notes = fragmentNotes.innerHTML; 134 | messageData.markdown = typeof fragmentNotes.getAttribute( 'data-markdown' ) === 'string'; 135 | 136 | // Ignore other slide notes 137 | notesElements = null; 138 | } 139 | else if( fragmentElement.hasAttribute( 'data-notes' ) ) { 140 | messageData.notes = fragmentElement.getAttribute( 'data-notes' ); 141 | messageData.whitespace = 'pre-wrap'; 142 | 143 | // In case there are slide notes 144 | notesElements = null; 145 | } 146 | } 147 | 148 | // Look for notes defined in an aside element 149 | if( notesElements && notesElements.length ) { 150 | // Ignore notes inside of fragments since those are shown 151 | // individually when stepping through fragments 152 | notesElements = Array.from( notesElements ).filter( notesElement => notesElement.closest( '.fragment' ) === null ); 153 | 154 | messageData.notes = notesElements.map( notesElement => notesElement.innerHTML ).join( '\n' ); 155 | messageData.markdown = notesElements[0] && typeof notesElements[0].getAttribute( 'data-markdown' ) === 'string'; 156 | } 157 | 158 | speakerWindow.postMessage( JSON.stringify( messageData ), '*' ); 159 | 160 | } 161 | 162 | /** 163 | * Check if the given event is from the same origin as the 164 | * current window. 165 | */ 166 | function isSameOriginEvent( event ) { 167 | 168 | try { 169 | return window.location.origin === event.source.location.origin; 170 | } 171 | catch ( error ) { 172 | return false; 173 | } 174 | 175 | } 176 | 177 | function onPostMessage( event ) { 178 | 179 | // Only allow same-origin messages 180 | // (added 12/5/22 as a XSS safeguard) 181 | if( isSameOriginEvent( event ) ) { 182 | 183 | try { 184 | let data = JSON.parse( event.data ); 185 | if( data && data.namespace === 'reveal-notes' && data.type === 'connected' ) { 186 | clearInterval( connectInterval ); 187 | onConnected(); 188 | } 189 | else if( data && data.namespace === 'reveal-notes' && data.type === 'call' ) { 190 | callRevealApi( data.methodName, data.arguments, data.callId ); 191 | } 192 | } catch (e) {} 193 | 194 | } 195 | 196 | } 197 | 198 | /** 199 | * Called once we have established a connection to the notes 200 | * window. 201 | */ 202 | function onConnected() { 203 | 204 | // Monitor events that trigger a change in state 205 | deck.on( 'slidechanged', post ); 206 | deck.on( 'fragmentshown', post ); 207 | deck.on( 'fragmenthidden', post ); 208 | deck.on( 'overviewhidden', post ); 209 | deck.on( 'overviewshown', post ); 210 | deck.on( 'paused', post ); 211 | deck.on( 'resumed', post ); 212 | 213 | // Post the initial state 214 | post(); 215 | 216 | } 217 | 218 | return { 219 | id: 'notes', 220 | 221 | init: function( reveal ) { 222 | 223 | deck = reveal; 224 | 225 | if( !/receiver/i.test( window.location.search ) ) { 226 | 227 | // If the there's a 'notes' query set, open directly 228 | if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) { 229 | openSpeakerWindow(); 230 | } 231 | else { 232 | // Keep listening for speaker view hearbeats. If we receive a 233 | // heartbeat from an orphaned window, reconnect it. This ensures 234 | // that we remain connected to the notes even if the presentation 235 | // is reloaded. 236 | window.addEventListener( 'message', event => { 237 | 238 | if( !speakerWindow && typeof event.data === 'string' ) { 239 | let data; 240 | 241 | try { 242 | data = JSON.parse( event.data ); 243 | } 244 | catch( error ) {} 245 | 246 | if( data && data.namespace === 'reveal-notes' && data.type === 'heartbeat' ) { 247 | reconnectSpeakerWindow( event.source ); 248 | } 249 | } 250 | }); 251 | } 252 | 253 | // Open the notes when the 's' key is hit 254 | deck.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() { 255 | openSpeakerWindow(); 256 | } ); 257 | 258 | } 259 | 260 | }, 261 | 262 | open: openSpeakerWindow 263 | }; 264 | 265 | }; 266 | 267 | export default Plugin; 268 | -------------------------------------------------------------------------------- /index_files/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) || /view=print/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 | if (query_doc.has('print-pdf')) { 64 | query_doc.delete('print-pdf'); 65 | } else if (query_doc.has('view')) { 66 | query_doc.delete('view'); 67 | } 68 | }else{ 69 | query_doc.set( 'view', 'print' ); 70 | } 71 | url_doc.search = ( query_doc.toString() ? '?' + query_doc.toString() : '' ); 72 | window.location.href = url_doc.toString(); 73 | } 74 | 75 | function installKeyBindings(){ 76 | var config = Reveal.getConfig(); 77 | var shortcut = config.pdfExportShortcut || 'E'; 78 | Reveal.addKeyBinding({ 79 | keyCode: shortcut.toUpperCase().charCodeAt( 0 ), 80 | key: shortcut.toUpperCase(), 81 | description: 'PDF export mode' 82 | }, togglePdfExport ); 83 | installAltKeyBindings(); 84 | } 85 | 86 | function install(){ 87 | installKeyBindings(); 88 | setStylesheet( isPrintingPDF() ); 89 | } 90 | 91 | var Plugin = { 92 | } 93 | 94 | if( Reveal && Reveal.VERSION && Reveal.VERSION.length && Reveal.VERSION[ 0 ] == '3' ){ 95 | // reveal 3.x 96 | setStylesheet = setStylesheet3; 97 | installAltKeyBindings = installAltKeyBindings3; 98 | install(); 99 | }else{ 100 | // must be reveal 4.x 101 | setStylesheet = setStylesheet4; 102 | installAltKeyBindings = installAltKeyBindings4; 103 | Plugin.id = 'pdf-export'; 104 | Plugin.init = function( _Reveal ){ 105 | Reveal = _Reveal; 106 | install(); 107 | }; 108 | Plugin.togglePdfExport = function () { 109 | togglePdfExport(); 110 | }; 111 | } 112 | 113 | return Plugin; 114 | 115 | })( Reveal ); 116 | -------------------------------------------------------------------------------- /index_files/libs/revealjs/plugin/pdf-export/plugin.yml: -------------------------------------------------------------------------------- 1 | name: PdfExport 2 | script: pdfexport.js 3 | -------------------------------------------------------------------------------- /index_files/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 | -------------------------------------------------------------------------------- /index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js: -------------------------------------------------------------------------------- 1 | window.QuartoLineHighlight = function () { 2 | function isPrintView() { 3 | return /print-pdf/gi.test(window.location.search) || /view=print/gi.test(window.location.search); 4 | } 5 | 6 | const delimiters = { 7 | step: "|", 8 | line: ",", 9 | lineRange: "-", 10 | }; 11 | 12 | const regex = new RegExp( 13 | "^[\\d" + Object.values(delimiters).join("") + "]+$" 14 | ); 15 | 16 | function handleLinesSelector(deck, attr) { 17 | // if we are in printview with pdfSeparateFragments: false 18 | // then we'll also want to supress 19 | if (regex.test(attr)) { 20 | if (isPrintView() && deck.getConfig().pdfSeparateFragments !== true) { 21 | return false; 22 | } else { 23 | return true; 24 | } 25 | } else { 26 | return false; 27 | } 28 | } 29 | 30 | const kCodeLineNumbersAttr = "data-code-line-numbers"; 31 | const kFragmentIndex = "data-fragment-index"; 32 | 33 | function initQuartoLineHighlight(deck) { 34 | const divSourceCode = deck 35 | .getRevealElement() 36 | .querySelectorAll("div.sourceCode"); 37 | // Process each div created by Pandoc highlighting - numbered line are already included. 38 | divSourceCode.forEach((el) => { 39 | if (el.hasAttribute(kCodeLineNumbersAttr)) { 40 | const codeLineAttr = el.getAttribute(kCodeLineNumbersAttr); 41 | el.removeAttribute(kCodeLineNumbersAttr); 42 | if (handleLinesSelector(deck, codeLineAttr)) { 43 | // Only process if attr is a string to select lines to highlights 44 | // e.g "1|3,6|8-11" 45 | const codeBlock = el.querySelectorAll("pre code"); 46 | codeBlock.forEach((code) => { 47 | // move attributes on code block 48 | code.setAttribute(kCodeLineNumbersAttr, codeLineAttr); 49 | 50 | const scrollState = { currentBlock: code }; 51 | 52 | // Check if there are steps and duplicate code block accordingly 53 | const highlightSteps = splitLineNumbers(codeLineAttr); 54 | if (highlightSteps.length > 1) { 55 | // If the original code block has a fragment-index, 56 | // each clone should follow in an incremental sequence 57 | let fragmentIndex = parseInt( 58 | code.getAttribute(kFragmentIndex), 59 | 10 60 | ); 61 | fragmentIndex = 62 | typeof fragmentIndex !== "number" || isNaN(fragmentIndex) 63 | ? null 64 | : fragmentIndex; 65 | 66 | let stepN = 1; 67 | highlightSteps.slice(1).forEach( 68 | // Generate fragments for all steps except the original block 69 | (step) => { 70 | var fragmentBlock = code.cloneNode(true); 71 | fragmentBlock.setAttribute( 72 | "data-code-line-numbers", 73 | joinLineNumbers([step]) 74 | ); 75 | fragmentBlock.classList.add("fragment"); 76 | 77 | // Pandoc sets id on spans we need to keep unique 78 | fragmentBlock 79 | .querySelectorAll(":scope > span") 80 | .forEach((span) => { 81 | if (span.hasAttribute("id")) { 82 | span.setAttribute( 83 | "id", 84 | span.getAttribute("id").concat("-" + stepN) 85 | ); 86 | } 87 | }); 88 | stepN = ++stepN; 89 | 90 | // Add duplicated element after existing one 91 | code.parentNode.appendChild(fragmentBlock); 92 | 93 | // Each new element is highlighted based on the new attributes value 94 | highlightCodeBlock(fragmentBlock); 95 | 96 | if (typeof fragmentIndex === "number") { 97 | fragmentBlock.setAttribute(kFragmentIndex, fragmentIndex); 98 | fragmentIndex += 1; 99 | } else { 100 | fragmentBlock.removeAttribute(kFragmentIndex); 101 | } 102 | 103 | // Scroll highlights into view as we step through them 104 | fragmentBlock.addEventListener( 105 | "visible", 106 | scrollHighlightedLineIntoView.bind( 107 | this, 108 | fragmentBlock, 109 | scrollState 110 | ) 111 | ); 112 | fragmentBlock.addEventListener( 113 | "hidden", 114 | scrollHighlightedLineIntoView.bind( 115 | this, 116 | fragmentBlock.previousSibling, 117 | scrollState 118 | ) 119 | ); 120 | } 121 | ); 122 | code.removeAttribute(kFragmentIndex); 123 | code.setAttribute( 124 | kCodeLineNumbersAttr, 125 | joinLineNumbers([highlightSteps[0]]) 126 | ); 127 | } 128 | 129 | // Scroll the first highlight into view when the slide becomes visible. 130 | const slide = 131 | typeof code.closest === "function" 132 | ? code.closest("section:not(.stack)") 133 | : null; 134 | if (slide) { 135 | const scrollFirstHighlightIntoView = function () { 136 | scrollHighlightedLineIntoView(code, scrollState, true); 137 | slide.removeEventListener( 138 | "visible", 139 | scrollFirstHighlightIntoView 140 | ); 141 | }; 142 | slide.addEventListener("visible", scrollFirstHighlightIntoView); 143 | } 144 | 145 | highlightCodeBlock(code); 146 | }); 147 | } 148 | } 149 | }); 150 | } 151 | 152 | function highlightCodeBlock(codeBlock) { 153 | const highlightSteps = splitLineNumbers( 154 | codeBlock.getAttribute(kCodeLineNumbersAttr) 155 | ); 156 | 157 | if (highlightSteps.length) { 158 | // If we have at least one step, we generate fragments 159 | highlightSteps[0].forEach((highlight) => { 160 | // Add expected class on
 for reveal CSS
161 |         codeBlock.parentNode.classList.add("code-wrapper");
162 | 
163 |         // Select lines to highlight
164 |         spanToHighlight = [];
165 |         if (typeof highlight.last === "number") {
166 |           spanToHighlight = [].slice.call(
167 |             codeBlock.querySelectorAll(
168 |               ":scope > span:nth-of-type(n+" +
169 |                 highlight.first +
170 |                 "):nth-of-type(-n+" +
171 |                 highlight.last +
172 |                 ")"
173 |             )
174 |           );
175 |         } else if (typeof highlight.first === "number") {
176 |           spanToHighlight = [].slice.call(
177 |             codeBlock.querySelectorAll(
178 |               ":scope > span:nth-of-type(" + highlight.first + ")"
179 |             )
180 |           );
181 |         }
182 |         if (spanToHighlight.length) {
183 |           // Add a class on  and  to select line to highlight
184 |           spanToHighlight.forEach((span) =>
185 |             span.classList.add("highlight-line")
186 |           );
187 |           codeBlock.classList.add("has-line-highlights");
188 |         }
189 |       });
190 |     }
191 |   }
192 | 
193 |   /**
194 |    * Animates scrolling to the first highlighted line
195 |    * in the given code block.
196 |    */
197 |   function scrollHighlightedLineIntoView(block, scrollState, skipAnimation) {
198 |     window.cancelAnimationFrame(scrollState.animationFrameID);
199 | 
200 |     // Match the scroll position of the currently visible
201 |     // code block
202 |     if (scrollState.currentBlock) {
203 |       block.scrollTop = scrollState.currentBlock.scrollTop;
204 |     }
205 | 
206 |     // Remember the current code block so that we can match
207 |     // its scroll position when showing/hiding fragments
208 |     scrollState.currentBlock = block;
209 | 
210 |     const highlightBounds = getHighlightedLineBounds(block);
211 |     let viewportHeight = block.offsetHeight;
212 | 
213 |     // Subtract padding from the viewport height
214 |     const blockStyles = window.getComputedStyle(block);
215 |     viewportHeight -=
216 |       parseInt(blockStyles.paddingTop) + parseInt(blockStyles.paddingBottom);
217 | 
218 |     // Scroll position which centers all highlights
219 |     const startTop = block.scrollTop;
220 |     let targetTop =
221 |       highlightBounds.top +
222 |       (Math.min(highlightBounds.bottom - highlightBounds.top, viewportHeight) -
223 |         viewportHeight) /
224 |         2;
225 | 
226 |     // Make sure the scroll target is within bounds
227 |     targetTop = Math.max(
228 |       Math.min(targetTop, block.scrollHeight - viewportHeight),
229 |       0
230 |     );
231 | 
232 |     if (skipAnimation === true || startTop === targetTop) {
233 |       block.scrollTop = targetTop;
234 |     } else {
235 |       // Don't attempt to scroll if there is no overflow
236 |       if (block.scrollHeight <= viewportHeight) return;
237 | 
238 |       let time = 0;
239 | 
240 |       const animate = function () {
241 |         time = Math.min(time + 0.02, 1);
242 | 
243 |         // Update our eased scroll position
244 |         block.scrollTop =
245 |           startTop + (targetTop - startTop) * easeInOutQuart(time);
246 | 
247 |         // Keep animating unless we've reached the end
248 |         if (time < 1) {
249 |           scrollState.animationFrameID = requestAnimationFrame(animate);
250 |         }
251 |       };
252 | 
253 |       animate();
254 |     }
255 |   }
256 | 
257 |   function getHighlightedLineBounds(block) {
258 |     const highlightedLines = block.querySelectorAll(".highlight-line");
259 |     if (highlightedLines.length === 0) {
260 |       return { top: 0, bottom: 0 };
261 |     } else {
262 |       const firstHighlight = highlightedLines[0];
263 |       const lastHighlight = highlightedLines[highlightedLines.length - 1];
264 | 
265 |       return {
266 |         top: firstHighlight.offsetTop,
267 |         bottom: lastHighlight.offsetTop + lastHighlight.offsetHeight,
268 |       };
269 |     }
270 |   }
271 | 
272 |   /**
273 |    * The easing function used when scrolling.
274 |    */
275 |   function easeInOutQuart(t) {
276 |     // easeInOutQuart
277 |     return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;
278 |   }
279 | 
280 |   function splitLineNumbers(lineNumbersAttr) {
281 |     // remove space
282 |     lineNumbersAttr = lineNumbersAttr.replace("/s/g", "");
283 |     // seperate steps (for fragment)
284 |     lineNumbersAttr = lineNumbersAttr.split(delimiters.step);
285 | 
286 |     // for each step, calculate first and last line, if any
287 |     return lineNumbersAttr.map((highlights) => {
288 |       // detect lines
289 |       const lines = highlights.split(delimiters.line);
290 |       return lines.map((range) => {
291 |         if (/^[\d-]+$/.test(range)) {
292 |           range = range.split(delimiters.lineRange);
293 |           const firstLine = parseInt(range[0], 10);
294 |           const lastLine = range[1] ? parseInt(range[1], 10) : undefined;
295 |           return {
296 |             first: firstLine,
297 |             last: lastLine,
298 |           };
299 |         } else {
300 |           return {};
301 |         }
302 |       });
303 |     });
304 |   }
305 | 
306 |   function joinLineNumbers(splittedLineNumbers) {
307 |     return splittedLineNumbers
308 |       .map(function (highlights) {
309 |         return highlights
310 |           .map(function (highlight) {
311 |             // Line range
312 |             if (typeof highlight.last === "number") {
313 |               return highlight.first + delimiters.lineRange + highlight.last;
314 |             }
315 |             // Single line
316 |             else if (typeof highlight.first === "number") {
317 |               return highlight.first;
318 |             }
319 |             // All lines
320 |             else {
321 |               return "";
322 |             }
323 |           })
324 |           .join(delimiters.line);
325 |       })
326 |       .join(delimiters.step);
327 |   }
328 | 
329 |   return {
330 |     id: "quarto-line-highlight",
331 |     init: function (deck) {
332 |       initQuartoLineHighlight(deck);
333 | 
334 |       // If we're printing to PDF, scroll the code highlights of
335 |       // all blocks in the deck into view at once
336 |       deck.on("pdf-ready", function () {
337 |         [].slice
338 |           .call(
339 |             deck
340 |               .getRevealElement()
341 |               .querySelectorAll(
342 |                 "pre code[data-code-line-numbers].current-fragment"
343 |               )
344 |           )
345 |           .forEach(function (block) {
346 |             scrollHighlightedLineIntoView(block, {}, true);
347 |           });
348 |       });
349 |     },
350 |   };
351 | };
352 | 


--------------------------------------------------------------------------------
/index_files/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 | 


--------------------------------------------------------------------------------
/index_files/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 |   z-index: 2;
 10 | }
 11 | 
 12 | .reveal .footer {
 13 |   display: block;
 14 |   position: fixed;
 15 |   bottom: 18px;
 16 |   width: 100%;
 17 |   margin: 0 auto;
 18 |   text-align: center;
 19 |   font-size: 18px;
 20 |   z-index: 2;
 21 | }
 22 | 
 23 | .reveal .footer > * {
 24 |   margin-top: 0;
 25 |   margin-bottom: 0;
 26 | }
 27 | 
 28 | .reveal .slide .footer {
 29 |   display: none;
 30 | }
 31 | 
 32 | .reveal .slide-number {
 33 |   bottom: 10px;
 34 |   right: 10px;
 35 |   font-size: 16px;
 36 |   background-color: transparent;
 37 | }
 38 | 
 39 | .reveal.has-logo .slide-number {
 40 |   bottom: initial;
 41 |   top: 8px;
 42 |   right: 8px;
 43 | }
 44 | 
 45 | .reveal .slide-number .slide-number-delimiter {
 46 |   margin: 0;
 47 | }
 48 | 
 49 | .reveal .slide-menu-button {
 50 |   left: 8px;
 51 |   bottom: 8px;
 52 | }
 53 | 
 54 | .reveal .slide-chalkboard-buttons {
 55 |   position: fixed;
 56 |   left: 12px;
 57 |   bottom: 8px;
 58 |   z-index: 30;
 59 |   font-size: 24px;
 60 | }
 61 | 
 62 | .reveal .slide-chalkboard-buttons.slide-menu-offset {
 63 |   left: 54px;
 64 | }
 65 | 
 66 | .reveal .slide-chalkboard-buttons > span {
 67 |   margin-right: 14px;
 68 |   cursor: pointer;
 69 | }
 70 | 
 71 | @media screen and (max-width: 800px) {
 72 |   .reveal .slide-logo {
 73 |     max-height: 1.1rem;
 74 |     bottom: -2px;
 75 |     right: 10px;
 76 |   }
 77 |   .reveal .footer {
 78 |     font-size: 14px;
 79 |     bottom: 12px;
 80 |   }
 81 |   .reveal .slide-number {
 82 |     font-size: 12px;
 83 |     bottom: 7px;
 84 |   }
 85 |   .reveal .slide-menu-button .fas::before {
 86 |     height: 1.3rem;
 87 |     width: 1.3rem;
 88 |     vertical-align: -0.125em;
 89 |     background-size: 1.3rem 1.3rem;
 90 |   }
 91 | 
 92 |   .reveal .slide-chalkboard-buttons .fas::before {
 93 |     height: 0.95rem;
 94 |     width: 0.95rem;
 95 |     background-size: 0.95rem 0.95rem;
 96 |     vertical-align: -0em;
 97 |   }
 98 | 
 99 |   .reveal .slide-chalkboard-buttons.slide-menu-offset {
100 |     left: 36px;
101 |   }
102 |   .reveal .slide-chalkboard-buttons > span {
103 |     margin-right: 9px;
104 |   }
105 | }
106 | 
107 | html.print-pdf .reveal .slide-menu-button,
108 | html.print-pdf .reveal .slide-chalkboard-buttons {
109 |   display: none;
110 | }
111 | 


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/quarto-support/plugin.yml:
--------------------------------------------------------------------------------
1 | name: QuartoSupport
2 | script: support.js
3 | stylesheet: footer.css
4 | config:
5 |   smaller: false
6 | 


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/reveal-menu/menu.css:
--------------------------------------------------------------------------------
  1 | .slide-menu-wrapper {
  2 |   font-family: 'Source Sans Pro', Helvetica, sans-serif;
  3 | }
  4 | 
  5 | .slide-menu-wrapper .slide-menu {
  6 |   background-color: #333;
  7 |   z-index: 200;
  8 |   position: fixed;
  9 |   top: 0;
 10 |   width: 300px;
 11 |   height: 100%;
 12 |   /*overflow-y: scroll;*/
 13 |   transition: transform 0.3s;
 14 |   font-size: 16px;
 15 |   font-weight: normal;
 16 | }
 17 | 
 18 | .slide-menu-wrapper .slide-menu.slide-menu--wide {
 19 |   width: 500px;
 20 | }
 21 | 
 22 | .slide-menu-wrapper .slide-menu.slide-menu--third {
 23 |   width: 33%;
 24 | }
 25 | 
 26 | .slide-menu-wrapper .slide-menu.slide-menu--half {
 27 |   width: 50%;
 28 | }
 29 | 
 30 | .slide-menu-wrapper .slide-menu.slide-menu--full {
 31 |   width: 95%;
 32 | }
 33 | 
 34 | /*
 35 |  * Slides menu
 36 |  */
 37 | 
 38 | .slide-menu-wrapper .slide-menu-items {
 39 |   margin: 0;
 40 |   padding: 0;
 41 |   width: 100%;
 42 |   border-bottom: solid 1px #555;
 43 | }
 44 | 
 45 | .slide-menu-wrapper .slide-menu-item,
 46 | .slide-menu-wrapper .slide-menu-item-vertical {
 47 |   display: block;
 48 |   text-align: left;
 49 |   padding: 10px 18px;
 50 |   color: #aaa;
 51 |   cursor: pointer;
 52 | }
 53 | 
 54 | .slide-menu-wrapper .slide-menu-item-vertical {
 55 |   padding-left: 30px;
 56 | }
 57 | 
 58 | .slide-menu-wrapper .slide-menu--wide .slide-menu-item-vertical,
 59 | .slide-menu-wrapper .slide-menu--third .slide-menu-item-vertical,
 60 | .slide-menu-wrapper .slide-menu--half .slide-menu-item-vertical,
 61 | .slide-menu-wrapper .slide-menu--full .slide-menu-item-vertical,
 62 | .slide-menu-wrapper .slide-menu--custom .slide-menu-item-vertical {
 63 |   padding-left: 50px;
 64 | }
 65 | 
 66 | .slide-menu-wrapper .slide-menu-item {
 67 |   border-top: solid 1px #555;
 68 | }
 69 | 
 70 | .slide-menu-wrapper .active-menu-panel li.selected {
 71 |   background-color: #222;
 72 |   color: white;
 73 | }
 74 | 
 75 | .slide-menu-wrapper .active-menu-panel li.active {
 76 |   color: #eee;
 77 | }
 78 | 
 79 | .slide-menu-wrapper .slide-menu-item.no-title .slide-menu-item-title,
 80 | .slide-menu-wrapper .slide-menu-item-vertical.no-title .slide-menu-item-title {
 81 |   font-style: italic;
 82 | }
 83 | 
 84 | .slide-menu-wrapper .slide-menu-item-number {
 85 |   color: #999;
 86 |   padding-right: 6px;
 87 | }
 88 | 
 89 | .slide-menu-wrapper .slide-menu-item i.far,
 90 | .slide-menu-wrapper .slide-menu-item i.fas,
 91 | .slide-menu-wrapper .slide-menu-item-vertical i.far,
 92 | .slide-menu-wrapper .slide-menu-item-vertical i.fas,
 93 | .slide-menu-wrapper .slide-menu-item svg.svg-inline--fa,
 94 | .slide-menu-wrapper .slide-menu-item-vertical svg.svg-inline--fa {
 95 |   padding-right: 12px;
 96 |   display: none;
 97 | }
 98 | 
 99 | .slide-menu-wrapper .slide-menu-item.past i.fas.past,
100 | .slide-menu-wrapper .slide-menu-item-vertical.past i.fas.past,
101 | .slide-menu-wrapper .slide-menu-item.active i.fas.active,
102 | .slide-menu-wrapper .slide-menu-item-vertical.active i.fas.active,
103 | .slide-menu-wrapper .slide-menu-item.future i.far.future,
104 | .slide-menu-wrapper .slide-menu-item-vertical.future i.far.future,
105 | .slide-menu-wrapper .slide-menu-item.past svg.svg-inline--fa.past,
106 | .slide-menu-wrapper .slide-menu-item-vertical.past svg.svg-inline--fa.past,
107 | .slide-menu-wrapper .slide-menu-item.active svg.svg-inline--fa.active,
108 | .slide-menu-wrapper .slide-menu-item-vertical.active svg.svg-inline--fa.active,
109 | .slide-menu-wrapper .slide-menu-item.future svg.svg-inline--fa.future,
110 | .slide-menu-wrapper .slide-menu-item-vertical.future svg.svg-inline--fa.future {
111 |   display: inline-block;
112 | }
113 | 
114 | .slide-menu-wrapper .slide-menu-item.past i.fas.past,
115 | .slide-menu-wrapper .slide-menu-item-vertical.past i.fas.past,
116 | .slide-menu-wrapper .slide-menu-item.future i.far.future,
117 | .slide-menu-wrapper .slide-menu-item-vertical.future i.far.future,
118 | .slide-menu-wrapper .slide-menu-item.past svg.svg-inline--fa.past,
119 | .slide-menu-wrapper .slide-menu-item-vertical.past svg.svg-inline--fa.past,
120 | .slide-menu-wrapper .slide-menu-item.future svg.svg-inline--fa.future,
121 | .slide-menu-wrapper .slide-menu-item-vertical.future svg.svg-inline--fa.future {
122 |   opacity: 0.4;
123 | }
124 | 
125 | .slide-menu-wrapper .slide-menu-item.active i.fas.active,
126 | .slide-menu-wrapper .slide-menu-item-vertical.active i.fas.active,
127 | .slide-menu-wrapper .slide-menu-item.active svg.svg-inline--fa.active,
128 | .slide-menu-wrapper .slide-menu-item-vertical.active svg.svg-inline--fa.active {
129 |   opacity: 0.8;
130 | }
131 | 
132 | .slide-menu-wrapper .slide-menu--left {
133 |   left: 0;
134 |   -webkit-transform: translateX(-100%);
135 |   -ms-transform: translateX(-100%);
136 |   transform: translateX(-100%);
137 | }
138 | 
139 | .slide-menu-wrapper .slide-menu--left.active {
140 |   -webkit-transform: translateX(0);
141 |   -ms-transform: translateX(0);
142 |   transform: translateX(0);
143 | }
144 | 
145 | .slide-menu-wrapper .slide-menu--right {
146 |   right: 0;
147 |   -webkit-transform: translateX(100%);
148 |   -ms-transform: translateX(100%);
149 |   transform: translateX(100%);
150 | }
151 | 
152 | .slide-menu-wrapper .slide-menu--right.active {
153 |   -webkit-transform: translateX(0);
154 |   -ms-transform: translateX(0);
155 |   transform: translateX(0);
156 | }
157 | 
158 | .slide-menu-wrapper {
159 |   transition: transform 0.3s;
160 | }
161 | 
162 | /*
163 |  * Toolbar
164 |  */
165 | .slide-menu-wrapper .slide-menu-toolbar {
166 |   height: 60px;
167 |   width: 100%;
168 |   font-size: 12px;
169 |   display: table;
170 |   table-layout: fixed; /* ensures equal width */
171 |   margin: 0;
172 |   padding: 0;
173 |   border-bottom: solid 2px #666;
174 | }
175 | 
176 | .slide-menu-wrapper .slide-menu-toolbar > li {
177 |   display: table-cell;
178 |   line-height: 150%;
179 |   text-align: center;
180 |   vertical-align: middle;
181 |   cursor: pointer;
182 |   color: #aaa;
183 |   border-radius: 3px;
184 | }
185 | 
186 | .slide-menu-wrapper .slide-menu-toolbar > li.toolbar-panel-button i,
187 | .slide-menu-wrapper
188 |   .slide-menu-toolbar
189 |   > li.toolbar-panel-button
190 |   svg.svg-inline--fa {
191 |   font-size: 1.7em;
192 | }
193 | 
194 | .slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button {
195 |   color: white;
196 |   text-shadow: 0 1px black;
197 |   text-decoration: underline;
198 | }
199 | 
200 | .slide-menu-toolbar > li.toolbar-panel-button:hover {
201 |   color: white;
202 | }
203 | 
204 | .slide-menu-toolbar
205 |   > li.toolbar-panel-button:hover
206 |   span.slide-menu-toolbar-label,
207 | .slide-menu-wrapper
208 |   .slide-menu-toolbar
209 |   > li.active-toolbar-button
210 |   span.slide-menu-toolbar-label {
211 |   visibility: visible;
212 | }
213 | 
214 | /*
215 |  * Panels
216 |  */
217 | .slide-menu-wrapper .slide-menu-panel {
218 |   position: absolute;
219 |   width: 100%;
220 |   visibility: hidden;
221 |   height: calc(100% - 60px);
222 |   overflow-x: hidden;
223 |   overflow-y: auto;
224 |   color: #aaa;
225 | }
226 | 
227 | .slide-menu-wrapper .slide-menu-panel.active-menu-panel {
228 |   visibility: visible;
229 | }
230 | 
231 | .slide-menu-wrapper .slide-menu-panel h1,
232 | .slide-menu-wrapper .slide-menu-panel h2,
233 | .slide-menu-wrapper .slide-menu-panel h3,
234 | .slide-menu-wrapper .slide-menu-panel h4,
235 | .slide-menu-wrapper .slide-menu-panel h5,
236 | .slide-menu-wrapper .slide-menu-panel h6 {
237 |   margin: 20px 0 10px 0;
238 |   color: #fff;
239 |   line-height: 1.2;
240 |   letter-spacing: normal;
241 |   text-shadow: none;
242 | }
243 | 
244 | .slide-menu-wrapper .slide-menu-panel h1 {
245 |   font-size: 1.6em;
246 | }
247 | .slide-menu-wrapper .slide-menu-panel h2 {
248 |   font-size: 1.4em;
249 | }
250 | .slide-menu-wrapper .slide-menu-panel h3 {
251 |   font-size: 1.3em;
252 | }
253 | .slide-menu-wrapper .slide-menu-panel h4 {
254 |   font-size: 1.1em;
255 | }
256 | .slide-menu-wrapper .slide-menu-panel h5 {
257 |   font-size: 1em;
258 | }
259 | .slide-menu-wrapper .slide-menu-panel h6 {
260 |   font-size: 0.9em;
261 | }
262 | 
263 | .slide-menu-wrapper .slide-menu-panel p {
264 |   margin: 10px 0 5px 0;
265 | }
266 | 
267 | .slide-menu-wrapper .slide-menu-panel a {
268 |   color: #ccc;
269 |   text-decoration: underline;
270 | }
271 | 
272 | .slide-menu-wrapper .slide-menu-panel a:hover {
273 |   color: white;
274 | }
275 | 
276 | .slide-menu-wrapper .slide-menu-item a {
277 |   text-decoration: none;
278 | }
279 | 
280 | .slide-menu-wrapper .slide-menu-custom-panel {
281 |   width: calc(100% - 20px);
282 |   padding-left: 10px;
283 |   padding-right: 10px;
284 | }
285 | 
286 | .slide-menu-wrapper .slide-menu-custom-panel .slide-menu-items {
287 |   width: calc(100% + 20px);
288 |   margin-left: -10px;
289 |   margin-right: 10px;
290 | }
291 | 
292 | /*
293 |  * Theme and Transitions buttons
294 |  */
295 | 
296 | .slide-menu-wrapper div[data-panel='Themes'] li,
297 | .slide-menu-wrapper div[data-panel='Transitions'] li {
298 |   display: block;
299 |   text-align: left;
300 |   cursor: pointer;
301 |   color: #848484;
302 | }
303 | 
304 | /*
305 |  * Menu controls
306 |  */
307 | .reveal .slide-menu-button {
308 |   position: fixed;
309 |   left: 30px;
310 |   bottom: 30px;
311 |   z-index: 30;
312 |   font-size: 24px;
313 | }
314 | 
315 | /*
316 |  * Menu overlay
317 |  */
318 | 
319 | .slide-menu-wrapper .slide-menu-overlay {
320 |   position: fixed;
321 |   z-index: 199;
322 |   top: 0;
323 |   left: 0;
324 |   overflow: hidden;
325 |   width: 0;
326 |   height: 0;
327 |   background-color: #000;
328 |   opacity: 0;
329 |   transition: opacity 0.3s, width 0s 0.3s, height 0s 0.3s;
330 | }
331 | 
332 | .slide-menu-wrapper .slide-menu-overlay.active {
333 |   width: 100%;
334 |   height: 100%;
335 |   opacity: 0.7;
336 |   transition: opacity 0.3s;
337 | }
338 | 
339 | /*
340 |  * Hide menu for pdf printing
341 |  */
342 | body.print-pdf .slide-menu-wrapper .slide-menu,
343 | body.print-pdf .reveal .slide-menu-button,
344 | body.print-pdf .slide-menu-wrapper .slide-menu-overlay {
345 |   display: none;
346 | }
347 | 


--------------------------------------------------------------------------------
/index_files/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 | 


--------------------------------------------------------------------------------
/index_files/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 | 


--------------------------------------------------------------------------------
/index_files/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 |   togglePdfExport: revealMenuToolHandler(function () {
41 |     PdfExport.togglePdfExport();
42 |   }),
43 |   toggleScrollView: revealMenuToolHandler(function() {
44 |     Reveal.getPlugin("quarto-support").toggleScrollView();
45 |   })
46 | };
47 | 


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/search/plugin.js:
--------------------------------------------------------------------------------
  1 | /*!
  2 |  * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
  3 |  * by navigatating to that slide and highlighting it.
  4 |  *
  5 |  * @author Jon Snyder , February 2013
  6 |  */
  7 | 
  8 | const Plugin = () => {
  9 | 
 10 | 	// The reveal.js instance this plugin is attached to
 11 | 	let deck;
 12 | 
 13 | 	let searchElement;
 14 | 	let searchButton;
 15 | 	let searchInput;
 16 | 
 17 | 	let matchedSlides;
 18 | 	let currentMatchedIndex;
 19 | 	let searchboxDirty;
 20 | 	let hilitor;
 21 | 
 22 | 	function render() {
 23 | 
 24 | 		searchElement = document.createElement( 'div' );
 25 | 		searchElement.classList.add( 'searchbox' );
 26 | 		searchElement.style.position = 'absolute';
 27 | 		searchElement.style.top = '10px';
 28 | 		searchElement.style.right = '10px';
 29 | 		searchElement.style.zIndex = 10;
 30 | 
 31 | 		//embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/:
 32 | 		searchElement.innerHTML = `
 33 | 		`;
 34 | 
 35 | 		searchInput = searchElement.querySelector( '.searchinput' );
 36 | 		searchInput.style.width = '240px';
 37 | 		searchInput.style.fontSize = '14px';
 38 | 		searchInput.style.padding = '4px 6px';
 39 | 		searchInput.style.color = '#000';
 40 | 		searchInput.style.background = '#fff';
 41 | 		searchInput.style.borderRadius = '2px';
 42 | 		searchInput.style.border = '0';
 43 | 		searchInput.style.outline = '0';
 44 | 		searchInput.style.boxShadow = '0 2px 18px rgba(0, 0, 0, 0.2)';
 45 | 		searchInput.style['-webkit-appearance']  = 'none';
 46 | 
 47 | 		deck.getRevealElement().appendChild( searchElement );
 48 | 
 49 | 		// searchButton.addEventListener( 'click', function(event) {
 50 | 		// 	doSearch();
 51 | 		// }, false );
 52 | 
 53 | 		searchInput.addEventListener( 'keyup', function( event ) {
 54 | 			switch (event.keyCode) {
 55 | 				case 13:
 56 | 					event.preventDefault();
 57 | 					doSearch();
 58 | 					searchboxDirty = false;
 59 | 					break;
 60 | 				default:
 61 | 					searchboxDirty = true;
 62 | 			}
 63 | 		}, false );
 64 | 
 65 | 		closeSearch();
 66 | 
 67 | 	}
 68 | 
 69 | 	function openSearch() {
 70 | 		if( !searchElement ) render();
 71 | 
 72 | 		searchElement.style.display = 'inline';
 73 | 		searchInput.focus();
 74 | 		searchInput.select();
 75 | 	}
 76 | 
 77 | 	function closeSearch() {
 78 | 		if( !searchElement ) render();
 79 | 
 80 | 		searchElement.style.display = 'none';
 81 | 		if(hilitor) hilitor.remove();
 82 | 	}
 83 | 
 84 | 	function toggleSearch() {
 85 | 		if( !searchElement ) render();
 86 | 
 87 | 		if (searchElement.style.display !== 'inline') {
 88 | 			openSearch();
 89 | 		}
 90 | 		else {
 91 | 			closeSearch();
 92 | 		}
 93 | 	}
 94 | 
 95 | 	function doSearch() {
 96 | 		//if there's been a change in the search term, perform a new search:
 97 | 		if (searchboxDirty) {
 98 | 			var searchstring = searchInput.value;
 99 | 
100 | 			if (searchstring === '') {
101 | 				if(hilitor) hilitor.remove();
102 | 				matchedSlides = null;
103 | 			}
104 | 			else {
105 | 				//find the keyword amongst the slides
106 | 				hilitor = new Hilitor("slidecontent");
107 | 				matchedSlides = hilitor.apply(searchstring);
108 | 				currentMatchedIndex = 0;
109 | 			}
110 | 		}
111 | 
112 | 		if (matchedSlides) {
113 | 			//navigate to the next slide that has the keyword, wrapping to the first if necessary
114 | 			if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) {
115 | 				currentMatchedIndex = 0;
116 | 			}
117 | 			if (matchedSlides.length > currentMatchedIndex) {
118 | 				deck.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v);
119 | 				currentMatchedIndex++;
120 | 			}
121 | 		}
122 | 	}
123 | 
124 | 	// Original JavaScript code by Chirp Internet: www.chirp.com.au
125 | 	// Please acknowledge use of this code by including this header.
126 | 	// 2/2013 jon: modified regex to display any match, not restricted to word boundaries.
127 | 	function Hilitor(id, tag) {
128 | 
129 | 		var targetNode = document.getElementById(id) || document.body;
130 | 		var hiliteTag = tag || "EM";
131 | 		var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$");
132 | 		var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"];
133 | 		var wordColor = [];
134 | 		var colorIdx = 0;
135 | 		var matchRegex = "";
136 | 		var matchingSlides = [];
137 | 
138 | 		this.setRegex = function(input)
139 | 		{
140 | 			input = input.trim();
141 | 			matchRegex = new RegExp("(" + input + ")","i");
142 | 		}
143 | 
144 | 		this.getRegex = function()
145 | 		{
146 | 			return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " ");
147 | 		}
148 | 
149 | 		// recursively apply word highlighting
150 | 		this.hiliteWords = function(node)
151 | 		{
152 | 			if(node == undefined || !node) return;
153 | 			if(!matchRegex) return;
154 | 			if(skipTags.test(node.nodeName)) return;
155 | 
156 | 			if(node.hasChildNodes()) {
157 | 				for(var i=0; i < node.childNodes.length; i++)
158 | 					this.hiliteWords(node.childNodes[i]);
159 | 			}
160 | 			if(node.nodeType == 3) { // NODE_TEXT
161 | 				var nv, regs;
162 | 				if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) {
163 | 					//find the slide's section element and save it in our list of matching slides
164 | 					var secnode = node;
165 | 					while (secnode != null && secnode.nodeName != 'SECTION') {
166 | 						secnode = secnode.parentNode;
167 | 					}
168 | 
169 | 					var slideIndex = deck.getIndices(secnode);
170 | 					var slidelen = matchingSlides.length;
171 | 					var alreadyAdded = false;
172 | 					for (var i=0; i < slidelen; i++) {
173 | 						if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) {
174 | 							alreadyAdded = true;
175 | 						}
176 | 					}
177 | 					if (! alreadyAdded) {
178 | 						matchingSlides.push(slideIndex);
179 | 					}
180 | 
181 | 					if(!wordColor[regs[0].toLowerCase()]) {
182 | 						wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length];
183 | 					}
184 | 
185 | 					var match = document.createElement(hiliteTag);
186 | 					match.appendChild(document.createTextNode(regs[0]));
187 | 					match.style.backgroundColor = wordColor[regs[0].toLowerCase()];
188 | 					match.style.fontStyle = "inherit";
189 | 					match.style.color = "#000";
190 | 
191 | 					var after = node.splitText(regs.index);
192 | 					after.nodeValue = after.nodeValue.substring(regs[0].length);
193 | 					node.parentNode.insertBefore(match, after);
194 | 				}
195 | 			}
196 | 		};
197 | 
198 | 		// remove highlighting
199 | 		this.remove = function()
200 | 		{
201 | 			var arr = document.getElementsByTagName(hiliteTag);
202 | 			var el;
203 | 			while(arr.length && (el = arr[0])) {
204 | 				el.parentNode.replaceChild(el.firstChild, el);
205 | 			}
206 | 		};
207 | 
208 | 		// start highlighting at target node
209 | 		this.apply = function(input)
210 | 		{
211 | 			if(input == undefined || !input) return;
212 | 			this.remove();
213 | 			this.setRegex(input);
214 | 			this.hiliteWords(targetNode);
215 | 			return matchingSlides;
216 | 		};
217 | 
218 | 	}
219 | 
220 | 	return {
221 | 
222 | 		id: 'search',
223 | 
224 | 		init: reveal => {
225 | 
226 | 			deck = reveal;
227 | 			deck.registerKeyboardShortcut( 'CTRL + Shift + F', 'Search' );
228 | 
229 | 			document.addEventListener( 'keydown', function( event ) {
230 | 				if( event.key == "F" && (event.ctrlKey || event.metaKey) ) { //Control+Shift+f
231 | 					event.preventDefault();
232 | 					toggleSearch();
233 | 				}
234 | 			}, false );
235 | 
236 | 		},
237 | 
238 | 		open: openSearch
239 | 
240 | 	}
241 | };
242 | 
243 | export default Plugin;


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/search/search.esm.js:
--------------------------------------------------------------------------------
1 | /*!
2 |  * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
3 |  * by navigatating to that slide and highlighting it.
4 |  *
5 |  * @author Jon Snyder , February 2013
6 |  */
7 | const e=()=>{let e,t,n,l,i,o,r;function s(){t=document.createElement("div"),t.classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',n=t.querySelector(".searchinput"),n.style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){if(13===t.keyCode)t.preventDefault(),function(){if(o){var t=n.value;""===t?(r&&r.remove(),l=null):(r=new c("slidecontent"),l=r.apply(t),i=0)}l&&(l.length&&l.length<=i&&(i=0),l.length>i&&(e.slide(l[i].h,l[i].v),i++))}(),o=!1;else o=!0}),!1),d()}function a(){t||s(),t.style.display="inline",n.focus(),n.select()}function d(){t||s(),t.style.display="none",r&&r.remove()}function c(t,n){var l=document.getElementById(t)||document.body,i=n||"EM",o=new RegExp("^(?:"+i+"|SCRIPT|FORM)$"),r=["#ff6","#a0ffff","#9f9","#f99","#f6f"],s=[],a=0,d="",c=[];this.setRegex=function(e){e=e.trim(),d=new RegExp("("+e+")","i")},this.getRegex=function(){return d.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&d&&!o.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n{e=n,e.registerKeyboardShortcut("CTRL + Shift + F","Search"),document.addEventListener("keydown",(function(e){"F"==e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),t||s(),"inline"!==t.style.display?a():d())}),!1)},open:a}};export{e as default};
8 | 


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/search/search.js:
--------------------------------------------------------------------------------
1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealSearch=t()}(this,(function(){"use strict";
2 | /*!
3 | 	 * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
4 | 	 * by navigatating to that slide and highlighting it.
5 | 	 *
6 | 	 * @author Jon Snyder , February 2013
7 | 	 */return()=>{let e,t,n,i,o,l,r;function s(){t=document.createElement("div"),t.classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',n=t.querySelector(".searchinput"),n.style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){if(13===t.keyCode)t.preventDefault(),function(){if(l){var t=n.value;""===t?(r&&r.remove(),i=null):(r=new c("slidecontent"),i=r.apply(t),o=0)}i&&(i.length&&i.length<=o&&(o=0),i.length>o&&(e.slide(i[o].h,i[o].v),o++))}(),l=!1;else l=!0}),!1),d()}function a(){t||s(),t.style.display="inline",n.focus(),n.select()}function d(){t||s(),t.style.display="none",r&&r.remove()}function c(t,n){var i=document.getElementById(t)||document.body,o=n||"EM",l=new RegExp("^(?:"+o+"|SCRIPT|FORM)$"),r=["#ff6","#a0ffff","#9f9","#f99","#f6f"],s=[],a=0,d="",c=[];this.setRegex=function(e){e=e.trim(),d=new RegExp("("+e+")","i")},this.getRegex=function(){return d.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&d&&!l.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n{e=n,e.registerKeyboardShortcut("CTRL + Shift + F","Search"),document.addEventListener("keydown",(function(e){"F"==e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),t||s(),"inline"!==t.style.display?a():d())}),!1)},open:a}}}));
8 | 


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/zoom/plugin.js:
--------------------------------------------------------------------------------
  1 | /*!
  2 |  * reveal.js Zoom plugin
  3 |  */
  4 | const Plugin = {
  5 | 
  6 | 	id: 'zoom',
  7 | 
  8 | 	init: function( reveal ) {
  9 | 
 10 | 		reveal.getRevealElement().addEventListener( 'mousedown', function( event ) {
 11 | 			var defaultModifier = /Linux/.test( window.navigator.platform ) ? 'ctrl' : 'alt';
 12 | 
 13 | 			var modifier = ( reveal.getConfig().zoomKey ? reveal.getConfig().zoomKey : defaultModifier ) + 'Key';
 14 | 			var zoomLevel = ( reveal.getConfig().zoomLevel ? reveal.getConfig().zoomLevel : 2 );
 15 | 
 16 | 			if( event[ modifier ] && !reveal.isOverview() ) {
 17 | 				event.preventDefault();
 18 | 
 19 | 				zoom.to({
 20 | 					x: event.clientX,
 21 | 					y: event.clientY,
 22 | 					scale: zoomLevel,
 23 | 					pan: false
 24 | 				});
 25 | 			}
 26 | 		} );
 27 | 
 28 | 	},
 29 | 
 30 | 	destroy: () => {
 31 | 
 32 | 		zoom.reset();
 33 | 
 34 | 	}
 35 | 
 36 | };
 37 | 
 38 | export default () => Plugin;
 39 | 
 40 | /*!
 41 |  * zoom.js 0.3 (modified for use with reveal.js)
 42 |  * http://lab.hakim.se/zoom-js
 43 |  * MIT licensed
 44 |  *
 45 |  * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
 46 |  */
 47 | var zoom = (function(){
 48 | 
 49 | 	// The current zoom level (scale)
 50 | 	var level = 1;
 51 | 
 52 | 	// The current mouse position, used for panning
 53 | 	var mouseX = 0,
 54 | 		mouseY = 0;
 55 | 
 56 | 	// Timeout before pan is activated
 57 | 	var panEngageTimeout = -1,
 58 | 		panUpdateInterval = -1;
 59 | 
 60 | 	// Check for transform support so that we can fallback otherwise
 61 | 	var supportsTransforms = 	'transform' in document.body.style;
 62 | 
 63 | 	if( supportsTransforms ) {
 64 | 		// The easing that will be applied when we zoom in/out
 65 | 		document.body.style.transition = 'transform 0.8s ease';
 66 | 	}
 67 | 
 68 | 	// Zoom out if the user hits escape
 69 | 	document.addEventListener( 'keyup', function( event ) {
 70 | 		if( level !== 1 && event.keyCode === 27 ) {
 71 | 			zoom.out();
 72 | 		}
 73 | 	} );
 74 | 
 75 | 	// Monitor mouse movement for panning
 76 | 	document.addEventListener( 'mousemove', function( event ) {
 77 | 		if( level !== 1 ) {
 78 | 			mouseX = event.clientX;
 79 | 			mouseY = event.clientY;
 80 | 		}
 81 | 	} );
 82 | 
 83 | 	/**
 84 | 	 * Applies the CSS required to zoom in, prefers the use of CSS3
 85 | 	 * transforms but falls back on zoom for IE.
 86 | 	 *
 87 | 	 * @param {Object} rect
 88 | 	 * @param {Number} scale
 89 | 	 */
 90 | 	function magnify( rect, scale ) {
 91 | 
 92 | 		var scrollOffset = getScrollOffset();
 93 | 
 94 | 		// Ensure a width/height is set
 95 | 		rect.width = rect.width || 1;
 96 | 		rect.height = rect.height || 1;
 97 | 
 98 | 		// Center the rect within the zoomed viewport
 99 | 		rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2;
100 | 		rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2;
101 | 
102 | 		if( supportsTransforms ) {
103 | 			// Reset
104 | 			if( scale === 1 ) {
105 | 				document.body.style.transform = '';
106 | 			}
107 | 			// Scale
108 | 			else {
109 | 				var origin = scrollOffset.x +'px '+ scrollOffset.y +'px',
110 | 					transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')';
111 | 
112 | 				document.body.style.transformOrigin = origin;
113 | 				document.body.style.transform = transform;
114 | 			}
115 | 		}
116 | 		else {
117 | 			// Reset
118 | 			if( scale === 1 ) {
119 | 				document.body.style.position = '';
120 | 				document.body.style.left = '';
121 | 				document.body.style.top = '';
122 | 				document.body.style.width = '';
123 | 				document.body.style.height = '';
124 | 				document.body.style.zoom = '';
125 | 			}
126 | 			// Scale
127 | 			else {
128 | 				document.body.style.position = 'relative';
129 | 				document.body.style.left = ( - ( scrollOffset.x + rect.x ) / scale ) + 'px';
130 | 				document.body.style.top = ( - ( scrollOffset.y + rect.y ) / scale ) + 'px';
131 | 				document.body.style.width = ( scale * 100 ) + '%';
132 | 				document.body.style.height = ( scale * 100 ) + '%';
133 | 				document.body.style.zoom = scale;
134 | 			}
135 | 		}
136 | 
137 | 		level = scale;
138 | 
139 | 		if( document.documentElement.classList ) {
140 | 			if( level !== 1 ) {
141 | 				document.documentElement.classList.add( 'zoomed' );
142 | 			}
143 | 			else {
144 | 				document.documentElement.classList.remove( 'zoomed' );
145 | 			}
146 | 		}
147 | 	}
148 | 
149 | 	/**
150 | 	 * Pan the document when the mosue cursor approaches the edges
151 | 	 * of the window.
152 | 	 */
153 | 	function pan() {
154 | 		var range = 0.12,
155 | 			rangeX = window.innerWidth * range,
156 | 			rangeY = window.innerHeight * range,
157 | 			scrollOffset = getScrollOffset();
158 | 
159 | 		// Up
160 | 		if( mouseY < rangeY ) {
161 | 			window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) );
162 | 		}
163 | 		// Down
164 | 		else if( mouseY > window.innerHeight - rangeY ) {
165 | 			window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) );
166 | 		}
167 | 
168 | 		// Left
169 | 		if( mouseX < rangeX ) {
170 | 			window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y );
171 | 		}
172 | 		// Right
173 | 		else if( mouseX > window.innerWidth - rangeX ) {
174 | 			window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y );
175 | 		}
176 | 	}
177 | 
178 | 	function getScrollOffset() {
179 | 		return {
180 | 			x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset,
181 | 			y: window.scrollY !== undefined ? window.scrollY : window.pageYOffset
182 | 		}
183 | 	}
184 | 
185 | 	return {
186 | 		/**
187 | 		 * Zooms in on either a rectangle or HTML element.
188 | 		 *
189 | 		 * @param {Object} options
190 | 		 *   - element: HTML element to zoom in on
191 | 		 *   OR
192 | 		 *   - x/y: coordinates in non-transformed space to zoom in on
193 | 		 *   - width/height: the portion of the screen to zoom in on
194 | 		 *   - scale: can be used instead of width/height to explicitly set scale
195 | 		 */
196 | 		to: function( options ) {
197 | 
198 | 			// Due to an implementation limitation we can't zoom in
199 | 			// to another element without zooming out first
200 | 			if( level !== 1 ) {
201 | 				zoom.out();
202 | 			}
203 | 			else {
204 | 				options.x = options.x || 0;
205 | 				options.y = options.y || 0;
206 | 
207 | 				// If an element is set, that takes precedence
208 | 				if( !!options.element ) {
209 | 					// Space around the zoomed in element to leave on screen
210 | 					var padding = 20;
211 | 					var bounds = options.element.getBoundingClientRect();
212 | 
213 | 					options.x = bounds.left - padding;
214 | 					options.y = bounds.top - padding;
215 | 					options.width = bounds.width + ( padding * 2 );
216 | 					options.height = bounds.height + ( padding * 2 );
217 | 				}
218 | 
219 | 				// If width/height values are set, calculate scale from those values
220 | 				if( options.width !== undefined && options.height !== undefined ) {
221 | 					options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 );
222 | 				}
223 | 
224 | 				if( options.scale > 1 ) {
225 | 					options.x *= options.scale;
226 | 					options.y *= options.scale;
227 | 
228 | 					magnify( options, options.scale );
229 | 
230 | 					if( options.pan !== false ) {
231 | 
232 | 						// Wait with engaging panning as it may conflict with the
233 | 						// zoom transition
234 | 						panEngageTimeout = setTimeout( function() {
235 | 							panUpdateInterval = setInterval( pan, 1000 / 60 );
236 | 						}, 800 );
237 | 
238 | 					}
239 | 				}
240 | 			}
241 | 		},
242 | 
243 | 		/**
244 | 		 * Resets the document zoom state to its default.
245 | 		 */
246 | 		out: function() {
247 | 			clearTimeout( panEngageTimeout );
248 | 			clearInterval( panUpdateInterval );
249 | 
250 | 			magnify( { x: 0, y: 0 }, 1 );
251 | 
252 | 			level = 1;
253 | 		},
254 | 
255 | 		// Alias
256 | 		magnify: function( options ) { this.to( options ) },
257 | 		reset: function() { this.out() },
258 | 
259 | 		zoomLevel: function() {
260 | 			return level;
261 | 		}
262 | 	}
263 | 
264 | })();
265 | 


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/zoom/zoom.esm.js:
--------------------------------------------------------------------------------
 1 | /*!
 2 |  * reveal.js Zoom plugin
 3 |  */
 4 | const 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}))}))},destroy:()=>{o.reset()}};var t=()=>e,o=function(){var e=1,t=0,n=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,o){var n=r();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,l)if(1===o)document.body.style.transform="";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.transform=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 c(){var o=.12*window.innerWidth,i=.12*window.innerHeight,d=r();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 r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="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,s(t,t.scale),!1!==t.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();
 5 | /*!
 6 |  * zoom.js 0.3 (modified for use with reveal.js)
 7 |  * http://lab.hakim.se/zoom-js
 8 |  * MIT licensed
 9 |  *
10 |  * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
11 |  */export{t as default};
12 | 


--------------------------------------------------------------------------------
/index_files/libs/revealjs/plugin/zoom/zoom.js:
--------------------------------------------------------------------------------
 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=t()}(this,(function(){"use strict";
 2 | /*!
 3 | 	 * reveal.js Zoom plugin
 4 | 	 */const 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}))}))},destroy:()=>{t.reset()}};var t=function(){var e=1,o=0,n=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,o){var n=r();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,l)if(1===o)document.body.style.transform="";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.transform=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 c(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=r();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 r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="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,s(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();
 5 | /*!
 6 | 	 * zoom.js 0.3 (modified for use with reveal.js)
 7 | 	 * http://lab.hakim.se/zoom-js
 8 | 	 * MIT licensed
 9 | 	 *
10 | 	 * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
11 | 	 */return()=>e}));
12 | 


--------------------------------------------------------------------------------
/intro-to-ggstatsplot.Rproj:
--------------------------------------------------------------------------------
 1 | Version: 1.0
 2 | 
 3 | RestoreWorkspace: No
 4 | SaveWorkspace: No
 5 | AlwaysSaveHistory: No
 6 | 
 7 | EnableCodeIndexing: Yes
 8 | UseSpacesForTab: Yes
 9 | NumSpacesForTab: 2
10 | Encoding: UTF-8
11 | 
12 | RnwWeave: Sweave
13 | LaTeX: pdfLaTeX
14 | 
15 | AutoAppendNewline: Yes
16 | StripTrailingWhitespace: Yes
17 | 
18 | QuitChildProcessesOnExit: Yes
19 | DisableExecuteRprofile: Yes
20 | 


--------------------------------------------------------------------------------
/media/after_ggstats.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/after_ggstats.PNG


--------------------------------------------------------------------------------
/media/cat_trademill.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/cat_trademill.gif


--------------------------------------------------------------------------------
/media/cleveland.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/cleveland.jpg


--------------------------------------------------------------------------------
/media/collage.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/collage.jpeg


--------------------------------------------------------------------------------
/media/datasaurus.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/datasaurus.gif


--------------------------------------------------------------------------------
/media/dataviz.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/dataviz.jpeg


--------------------------------------------------------------------------------
/media/ds_workflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/ds_workflow.png


--------------------------------------------------------------------------------
/media/easystats_logo_wall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/easystats_logo_wall.png


--------------------------------------------------------------------------------
/media/few.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/few.jpg


--------------------------------------------------------------------------------
/media/ggbooks.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/ggbooks.jpeg


--------------------------------------------------------------------------------
/media/ggplot2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/ggplot2.jpeg


--------------------------------------------------------------------------------
/media/ggstats-contributions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/ggstats-contributions.png


--------------------------------------------------------------------------------
/media/ggstats-paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/ggstats-paper.png


--------------------------------------------------------------------------------
/media/ggstats-stars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/ggstats-stars.png


--------------------------------------------------------------------------------
/media/golem-problem.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/golem-problem.jpeg


--------------------------------------------------------------------------------
/media/golem.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/golem.jpg


--------------------------------------------------------------------------------
/media/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/logo.png


--------------------------------------------------------------------------------
/media/mcelreath.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/mcelreath.jpg


--------------------------------------------------------------------------------
/media/monkey.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/monkey.gif


--------------------------------------------------------------------------------
/media/outlier_example.R:
--------------------------------------------------------------------------------
 1 | library(ggstatsplot)
 2 | library(datasauRus)
 3 | here::here()
 4 | 
 5 | set.seed(123)
 6 | df <- dplyr::filter(datasaurus_dozen, dataset == "dino")
 7 | 
 8 | ggplot2::ggsave(
 9 |   ggscatterstats(df, x, y,
10 |     type = "p",
11 |     ggtheme = hrbrthemes::theme_ipsum_tw(),
12 |     title = "Relationship between x and y"
13 |   ),
14 |   filename = file.path(here::here(), "media", "after_ggstats.PNG"),
15 |   height = 5,
16 |   width = 6,
17 |   units = "in"
18 | )
19 | 


--------------------------------------------------------------------------------
/media/packages.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/packages.gif


--------------------------------------------------------------------------------
/media/pr-qa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/pr-qa.png


--------------------------------------------------------------------------------
/media/presentations.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/presentations.jpeg


--------------------------------------------------------------------------------
/media/statsExpressions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/statsExpressions.png


--------------------------------------------------------------------------------
/media/stats_reporting_format.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/stats_reporting_format.png


--------------------------------------------------------------------------------
/media/stats_reporting_format.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/stats_reporting_format.pptx


--------------------------------------------------------------------------------
/media/statsexpr-contributions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/statsexpr-contributions.png


--------------------------------------------------------------------------------
/media/this-is-fine.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/this-is-fine.jpg


--------------------------------------------------------------------------------
/media/tufte.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/tufte.jpg


--------------------------------------------------------------------------------
/media/wilke.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/wilke.jpeg


--------------------------------------------------------------------------------
/media/wilkinson.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/media/wilkinson.jpeg


--------------------------------------------------------------------------------
/slides.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndrajeetPatil/intro-to-ggstatsplot/6a2a7e9d0981cbb3cdc3749cb848b5ed542228dd/slides.pdf


--------------------------------------------------------------------------------
/styles.css:
--------------------------------------------------------------------------------
1 | .slide-number-a {
2 |   font-size: 20px;
3 | }
4 | 


--------------------------------------------------------------------------------
/versions:
--------------------------------------------------------------------------------
 1 | ## Versions
 2 | 
 3 | These slides are from presentations given at various events:
 4 | 
 5 | - **Abuja R User Group**, online talk, February, 26, 2022.
 6 | 
 7 | - **Social Psychology online colloquium series**, Tilburg University,
 8 | Netherlands, March, 19, 2021.
 9 | 
10 | - **Department of Decision Neuroscience and Nutrition**, German Institute of
11 | Human Nutrition Potsdam-Rehbruecke, online talk, March, 2, 2021.
12 | 
13 | - **Oslo useR! Group**, online talk, February, 18, 2021.
14 | 
15 | - **R-Ladies Tunis**, online talk, December, 15, 2020.
16 | 
17 | - **Methods Talk series** (Psychology Department, New York University), NYC,
18 | NY, March, 28, 2019.
19 | 
20 | - **Greater Boston useR Group meeting**, Boston, MA, March, 26, 2019.
21 | 
22 | - **Harvard Psych Method Dinners**, William James Hall, Harvard University,
23 | Cambridge, MA, USA, February 5, 2019.
24 | 
25 | 


--------------------------------------------------------------------------------