├── air.toml ├── .github ├── .gitignore ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature-request.md │ └── bug-report.md ├── workflows │ ├── pkgdown.yaml │ ├── pr-commands.yaml │ ├── rhub.yaml │ └── R-CMD-check.yaml └── CONTRIBUTING.md ├── pkgdown ├── assets │ ├── ace-1.2.3 │ │ ├── mode-text.js │ │ ├── mode-plain_text.js │ │ ├── theme-textmate.js │ │ └── mode-rdoc.js │ └── snippets │ │ └── snippets.js └── templates │ └── in-header.html ├── examples ├── .gitignore └── simple.Rmd ├── R ├── revealjs.R └── utils.R ├── inst ├── reveal.js-4.2.1 │ ├── plugin │ │ ├── menu │ │ │ ├── VERSION │ │ │ └── LICENSE │ │ ├── chalkboard │ │ │ ├── VERSION │ │ │ ├── img │ │ │ │ ├── sponge.png │ │ │ │ ├── blackboard.png │ │ │ │ ├── chalk-blue.png │ │ │ │ ├── chalk-green.png │ │ │ │ ├── chalk-red.png │ │ │ │ ├── chalk-white.png │ │ │ │ ├── whiteboard.png │ │ │ │ ├── chalk-orange.png │ │ │ │ ├── chalk-purple.png │ │ │ │ ├── chalk-yellow.png │ │ │ │ ├── boardmarker-blue.png │ │ │ │ ├── boardmarker-red.png │ │ │ │ ├── boardmarker-black.png │ │ │ │ ├── boardmarker-green.png │ │ │ │ ├── boardmarker-orange.png │ │ │ │ ├── boardmarker-purple.png │ │ │ │ └── boardmarker-yellow.png │ │ │ ├── style.css │ │ │ └── LICENSE │ │ ├── customcontrols │ │ │ ├── VERSION │ │ │ ├── LICENSE │ │ │ ├── style.css │ │ │ ├── README.md │ │ │ └── plugin.js │ │ ├── math │ │ │ ├── plugin.js │ │ │ ├── mathjax2.js │ │ │ ├── mathjax3.js │ │ │ └── katex.js │ │ ├── highlight │ │ │ ├── monokai.css │ │ │ └── zenburn.css │ │ └── zoom │ │ │ ├── zoom.esm.js │ │ │ └── zoom.js │ ├── .github │ │ ├── FUNDING.yml │ │ ├── workflows │ │ │ └── js.yml │ │ └── CONTRIBUTING.md │ ├── test │ │ ├── assets │ │ │ ├── external-script-a.js │ │ │ ├── external-script-b.js │ │ │ ├── external-script-c.js │ │ │ └── external-script-d.js │ │ ├── simple.md │ │ ├── test-dependencies.html │ │ ├── test-grid-navigation.html │ │ ├── test-dependencies-async.html │ │ ├── test-pdf.html │ │ ├── test-multiple-instances-es5.html │ │ ├── test-multiple-instances.html │ │ ├── test-plugins.html │ │ ├── test-iframe-backgrounds.html │ │ ├── test-iframes.html │ │ └── test-state.html │ ├── .npmignore │ ├── examples │ │ ├── assets │ │ │ ├── beeping.txt │ │ │ ├── beeping.wav │ │ │ ├── image1.png │ │ │ └── image2.png │ │ ├── markdown.md │ │ ├── barebones.html │ │ ├── media.html │ │ ├── transitions.html │ │ ├── multiple-presentations.html │ │ └── backgrounds.html │ ├── dist │ │ ├── theme │ │ │ └── fonts │ │ │ │ ├── league-gothic │ │ │ │ ├── LICENSE │ │ │ │ ├── league-gothic.eot │ │ │ │ ├── league-gothic.ttf │ │ │ │ ├── league-gothic.woff │ │ │ │ └── league-gothic.css │ │ │ │ └── source-sans-pro │ │ │ │ ├── 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 │ │ │ │ └── LICENSE │ │ └── reset.css │ ├── .gitignore │ ├── js │ │ ├── utils │ │ │ ├── constants.js │ │ │ ├── device.js │ │ │ ├── loader.js │ │ │ └── color.js │ │ ├── index.js │ │ ├── controllers │ │ │ ├── focus.js │ │ │ ├── progress.js │ │ │ ├── notes.js │ │ │ ├── pointer.js │ │ │ └── slidenumber.js │ │ └── components │ │ │ └── playback.js │ ├── LICENSE │ ├── css │ │ ├── theme │ │ │ ├── source │ │ │ │ ├── night.scss │ │ │ │ ├── serif.scss │ │ │ │ ├── league.scss │ │ │ │ ├── white.scss │ │ │ │ ├── black.scss │ │ │ │ ├── simple.scss │ │ │ │ ├── sky.scss │ │ │ │ ├── beige.scss │ │ │ │ ├── moon.scss │ │ │ │ ├── solarized.scss │ │ │ │ └── blood.scss │ │ │ ├── template │ │ │ │ ├── exposer.scss │ │ │ │ ├── settings.scss │ │ │ │ └── mixins.scss │ │ │ └── README.md │ │ ├── layout.scss │ │ └── print │ │ │ ├── pdf.scss │ │ │ └── paper.scss │ ├── index.html │ ├── README.md │ └── package.json └── rmarkdown │ └── templates │ └── revealjs_presentation │ └── template.yaml ├── LICENSE ├── tests ├── testthat.R ├── manual │ ├── .gitignore │ ├── test-incremental-locally.Rmd │ ├── test-incremental-pausing.Rmd │ ├── test-incremental-globally.Rmd │ ├── test-options-size.Rmd │ ├── test-plugin-chalkboard.Rmd │ ├── test-incremental-attributes.Rmd │ ├── test-widget-leaflet.Rmd │ └── test-widget-plotly.Rmd └── testthat │ ├── test-revealjs_presentation.R │ ├── test-themes.R │ ├── helpers.R │ └── test-utils.R ├── .gitignore ├── .vscode ├── extensions.json └── settings.json ├── NAMESPACE ├── revdep └── .gitignore ├── vignettes ├── articles │ ├── examples.yml │ └── examples.Rmd └── revealjs.Rmd ├── codecov.yml ├── revealjs.Rproj ├── .Rbuildignore ├── LICENSE.md ├── DESCRIPTION ├── _pkgdown.yml └── NEWS.md /air.toml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /pkgdown/assets/ace-1.2.3/mode-text.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *_files 3 | -------------------------------------------------------------------------------- /R/revealjs.R: -------------------------------------------------------------------------------- 1 | #' @import rmarkdown 2 | NULL 3 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/menu/VERSION: -------------------------------------------------------------------------------- 1 | 2.1.0 2 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/VERSION: -------------------------------------------------------------------------------- 1 | 4.1.5 2 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [hakimel] 2 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/customcontrols/VERSION: -------------------------------------------------------------------------------- 1 | 4.1.5 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2023 2 | COPYRIGHT HOLDER: revealjs R package authors 3 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/assets/external-script-a.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'A'; -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/assets/external-script-b.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'B'; -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/assets/external-script-c.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'C'; -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/assets/external-script-d.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'D'; -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(revealjs) 3 | 4 | test_check("revealjs") 5 | -------------------------------------------------------------------------------- /tests/manual/.gitignore: -------------------------------------------------------------------------------- 1 | *_files 2 | *.md 3 | *.html 4 | 5 | # ignore quarto test files 6 | *.qmd -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | reference 5 | inst/**/skeleton/skeleton.html 6 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "Posit.air-vscode" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(revealjs_presentation) 4 | import(rmarkdown) 5 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/.npmignore: -------------------------------------------------------------------------------- 1 | /test 2 | /examples 3 | .github 4 | .gulpfile 5 | .sass-cache 6 | gulpfile.js 7 | CONTRIBUTING.md -------------------------------------------------------------------------------- /revdep/.gitignore: -------------------------------------------------------------------------------- 1 | checks 2 | library 3 | checks.noindex 4 | library.noindex 5 | cloud.noindex 6 | data.sqlite 7 | *.html 8 | cloud/ -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/assets/beeping.txt: -------------------------------------------------------------------------------- 1 | Source: https://freesound.org/people/fennelliott/sounds/379419/ 2 | License: CC0 (public domain) -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/assets/beeping.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/examples/assets/beeping.wav -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/examples/assets/image1.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/examples/assets/image2.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/sponge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/sponge.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/simple.md: -------------------------------------------------------------------------------- 1 | ## Slide 1.1 2 | 3 | ```js 4 | var a = 1; 5 | ``` 6 | 7 | 8 | ## Slide 1.2 9 | 10 | 11 | 12 | ## Slide 2 -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "[r]": { 3 | "editor.formatOnSave": true, 4 | "editor.defaultFormatter": "Posit.air-vscode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/blackboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/blackboard.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-blue.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-green.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-red.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-white.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/whiteboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/whiteboard.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-orange.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-purple.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/chalk-yellow.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-blue.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-red.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-black.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-green.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-orange.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-purple.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/plugin/chalkboard/img/boardmarker-yellow.png -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.iml 3 | *.iws 4 | *.eml 5 | out/ 6 | .DS_Store 7 | .svn 8 | log/*.log 9 | tmp/** 10 | node_modules/ 11 | .sass-cache 12 | dist/*.map -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /inst/rmarkdown/templates/revealjs_presentation/template.yaml: -------------------------------------------------------------------------------- 1 | name: Reveal.js Presentation (HTML) 2 | description: > 3 | Template for HTML presentations based on reveal.js 4 | create_dir: false 5 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/revealjs/HEAD/inst/reveal.js-4.2.1/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /vignettes/articles/examples.yml: -------------------------------------------------------------------------------- 1 | # - title: Title to use 2 | # img: image local or url 3 | # href: link to the example 4 | # source: link to the source repo 5 | # # (optional) allows to filter examples 6 | # showcase: true 7 | # shiny: true 8 | -------------------------------------------------------------------------------- /tests/manual/test-incremental-locally.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Incremental locally" 3 | output: 4 | revealjs::revealjs_presentation: 5 | incremental: false 6 | --- 7 | 8 | ## Incremental list 9 | 10 | ::: incremental 11 | 12 | - Eat spaghetti 13 | - Drink wine 14 | 15 | ::: -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | comment: false 2 | 3 | coverage: 4 | status: 5 | project: 6 | default: 7 | target: auto 8 | threshold: 1% 9 | informational: true 10 | patch: 11 | default: 12 | target: auto 13 | threshold: 1% 14 | informational: true 15 | -------------------------------------------------------------------------------- /tests/manual/test-incremental-pausing.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Incremental by pausing" 3 | output: revealjs::revealjs_presentation 4 | --- 5 | 6 | # Pausing using pandoc syntax 7 | 8 | content before the pause 9 | 10 | . . . 11 | 12 | content after the pause 13 | 14 | . . . 15 | 16 | Content after another pause 17 | ```` -------------------------------------------------------------------------------- /tests/manual/test-incremental-globally.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Incremental globally" 3 | output: 4 | revealjs::revealjs_presentation: 5 | incremental: true 6 | --- 7 | 8 | ## list 9 | 10 | - item 1 11 | - item 2 12 | 13 | ## Non Incremental list 14 | 15 | ::: nonincremental 16 | 17 | - Eat spaghetti 18 | - Drink wine 19 | 20 | ::: -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | } ); -------------------------------------------------------------------------------- /revealjs.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | BuildType: Package 16 | PackageUseDevtools: Yes 17 | PackageInstallArgs: --no-multiarch --with-keep.source 18 | PackageRoxygenize: rd,collate,namespace 19 | -------------------------------------------------------------------------------- /tests/manual/test-options-size.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: 3 | revealjs::revealjs_presentation: 4 | reveal_options: 5 | width: "100%" 6 | height: "100%" 7 | margin: 0 8 | minScale: 1 9 | maxScale: 1 10 | --- 11 | 12 | # Test 13 | 14 | Content very long 15 | 16 | ```{r, echo = FALSE, results='asis'} 17 | cat(paste(lapply(replicate(100, sample(letters, sample.int(10, 1, TRUE), replace = TRUE)), paste0, collapse = ""), collapse = " ")) 18 | ``` 19 | 20 | 21 | -------------------------------------------------------------------------------- /pkgdown/assets/ace-1.2.3/mode-plain_text.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u}) -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Issue guide 4 | url: https://yihui.org/issue/ 5 | about: First time here or need a refresh? Please consult the issue guide before posting. 6 | - name: Ask a question on Posit Forum 7 | url: https://forum.posit.co/ 8 | about: Please ask and answer questions here. 9 | - name: Ask a question on Stack Overflow 10 | url: https://stackoverflow.com/questions/tagged/r+reveal.js 11 | about: Please ask and answer questions here. 12 | -------------------------------------------------------------------------------- /tests/manual/test-plugin-chalkboard.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "chalkboard plugin" 3 | output: 4 | revealjs::revealjs_presentation: 5 | self_contained: false 6 | reveal_plugins: ["chalkboard"] 7 | reveal_options: 8 | chalkboard: 9 | theme: whiteboard 10 | color: ['rgba(255, 0, 0, 0.3)', 'rgba(255, 0, 0, 0.3)'] 11 | --- 12 | 13 | # Configurations 14 | 15 | We are testing that color can be correctly change. 16 | Pen is now red in both mode: Click on the left icons and write in Red. 17 | 18 | Default is blue. 19 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/.github/workflows/js.yml: -------------------------------------------------------------------------------- 1 | name: tests 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | strategy: 11 | matrix: 12 | node-version: [10.x, 14.x, 16.x] 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Use Node.js ${{ matrix.node-version }} 17 | uses: actions/setup-node@v1 18 | with: 19 | node-version: ${{ matrix.node-version }} 20 | - run: npm install 21 | - run: npm run build --if-present 22 | - run: npm test 23 | env: 24 | CI: true 25 | -------------------------------------------------------------------------------- /tests/testthat/test-revealjs_presentation.R: -------------------------------------------------------------------------------- 1 | test_that("toc argument works", { 2 | skip_if_not_pandoc() 3 | skip_if_not_installed("xml2") 4 | rmd <- local_temp_draft() 5 | html <- .render_and_read( 6 | rmd, 7 | output_options = list( 8 | toc = TRUE, 9 | pandoc_args = c(pandoc_variable_arg("toc-title", "TOC")) 10 | ) 11 | ) 12 | toc <- xml2::xml_find_all(html, "//section[@id='TOC']") 13 | expect_length(toc, 1) 14 | expect_equal( 15 | xml2::xml_text( 16 | xml2::xml_find_all(toc, "./nav/*[contains(@id, 'toc-title')]") 17 | ), 18 | "TOC" 19 | ) 20 | }) 21 | -------------------------------------------------------------------------------- /vignettes/revealjs.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Learn revealjs " 3 | output: rmarkdown::html_vignette 4 | vignette: > 5 | %\VignetteIndexEntry{Learn revealjs } 6 | %\VignetteEngine{knitr::rmarkdown} 7 | %\VignetteEncoding{UTF-8} 8 | --- 9 | 10 | ```{r, include = FALSE} 11 | knitr::opts_chunk$set( 12 | collapse = TRUE, 13 | comment = "#>" 14 | ) 15 | ``` 16 | 17 | ## Overview 18 | 19 | If you are new to using revealjs, we encourage you to ... 20 | 21 | ## User Guide 22 | 23 | Written by ... 24 | 25 | ## Going further with examples 26 | 27 | Learn from examples at ... 28 | 29 | ## Cheatsheets 30 | 31 | You can access it at... 32 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/utils/constants.js: -------------------------------------------------------------------------------- 1 | 2 | export const SLIDES_SELECTOR = '.slides section'; 3 | export const HORIZONTAL_SLIDES_SELECTOR = '.slides>section'; 4 | export const VERTICAL_SLIDES_SELECTOR = '.slides>section.present>section'; 5 | 6 | // Methods that may not be invoked via the postMessage API 7 | export const POST_MESSAGE_METHOD_BLACKLIST = /registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener/; 8 | 9 | // Regex for retrieving the fragment style from a class attribute 10 | export const FRAGMENT_STYLE_REGEX = /fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/; -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/markdown.md: -------------------------------------------------------------------------------- 1 | # Markdown Demo 2 | 3 | 4 | 5 | ## External 1.1 6 | 7 | Content 1.1 8 | 9 | Note: This will only appear in the speaker notes window. 10 | 11 | 12 | ## External 1.2 13 | 14 | Content 1.2 15 | 16 | 17 | 18 | ## External 2 19 | 20 | Content 2.1 21 | 22 | 23 | 24 | ## External 3.1 25 | 26 | Content 3.1 27 | 28 | 29 | ## External 3.2 30 | 31 | Content 3.2 32 | 33 | 34 | ## External 3.3 (Image) 35 | 36 | ![External Image](https://s3.amazonaws.com/static.slid.es/logo/v2/slides-symbol-512x512.png) 37 | 38 | 39 | ## External 3.4 (Math) 40 | 41 | `\[ J(\theta_0,\theta_1) = \sum_{i=0} \]` 42 | -------------------------------------------------------------------------------- /pkgdown/templates/in-header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 14 | {{#includes}}{{{in_header}}}{{/includes}} 15 | -------------------------------------------------------------------------------- /vignettes/articles/examples.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Example projects" 3 | resource_files: 4 | - images/ 5 | --- 6 | 7 | ```{r setup, include = FALSE} 8 | library(quillt) 9 | ``` 10 | 11 | 12 | The examples below illustrate the use of revealjs with various packages and layouts. If you want to learn more about how the dashboards were created each example includes a link to its source code. 13 | 14 | 15 | ```{r, echo=FALSE} 16 | examples(yml = "examples.yml") 17 | ``` 18 | 19 | **blogdown** repo contains an example on how to dynamically generate the `example.yml` taking screenshot of the featured examples. See [`example.Rmd`](https://github.com/rstudio/blogdown/blob/master/vignettes/articles/examples.Rmd) in the repository. 20 | -------------------------------------------------------------------------------- /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^.*\.Rproj$ 2 | ^\.Rproj\.user$ 3 | README.* 4 | examples/ 5 | 6 | ^codecov\.yml$ 7 | ^\.github$ 8 | ^_pkgdown\.yml$ 9 | ^reference$ 10 | ^pkgdown$ 11 | ^vignettes/ 12 | ^tests/manual$ 13 | ^tools$ 14 | 15 | ^LICENSE\.md$ 16 | ^vignettes/articles$ 17 | inst/reveal.js-[^/]+/.github 18 | inst/reveal.js-[^/]+/.gitignore 19 | inst/reveal.js-[^/]+/.npmignore 20 | inst/reveal.js-[^/]+/css 21 | inst/reveal.js-[^/]+/demo.html 22 | inst/reveal.js-[^/]+/examples 23 | inst/reveal.js-[^/]+/gulpfile.js 24 | inst/reveal.js-[^/]+/index.html 25 | inst/reveal.js-[^/]+/js 26 | inst/reveal.js-[^/]+/package-lock.json 27 | inst/reveal.js-[^/]+/package.json 28 | inst/reveal.js-[^/]+/test 29 | ^[\.]?air\.toml$ 30 | ^\.vscode$ 31 | ^revdep$ 32 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/utils/device.js: -------------------------------------------------------------------------------- 1 | const UA = navigator.userAgent; 2 | const testElement = document.createElement( 'div' ); 3 | 4 | export const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) || 5 | ( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS 6 | 7 | export const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA ); 8 | 9 | export const isAndroid = /android/gi.test( UA ); 10 | 11 | // Flags if we should use zoom instead of transform to scale 12 | // up slides. Zoom produces crisper results but has a lot of 13 | // xbrowser quirks so we only use it in whitelisted browsers. 14 | export const supportsZoom = 'zoom' in testElement.style && !isMobile && 15 | ( isChrome || /Version\/[\d\.]+.*Safari/.test( UA ) ); -------------------------------------------------------------------------------- /pkgdown/assets/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | function loadSnippet(snippet, mode) { 4 | mode = mode || "markdown"; 5 | $("#" + snippet).addClass("snippet"); 6 | var editor = ace.edit(snippet); 7 | editor.setHighlightActiveLine(false); 8 | editor.setShowPrintMargin(false); 9 | editor.setReadOnly(true); 10 | editor.setShowFoldWidgets(false); 11 | editor.renderer.setDisplayIndentGuides(false); 12 | editor.setTheme("ace/theme/textmate"); 13 | editor.$blockScrolling = Infinity; 14 | editor.session.setMode("ace/mode/" + mode); 15 | editor.session.getSelection().clearSelection(); 16 | 17 | $.get("snippets/" + snippet + ".md", function(data) { 18 | editor.setValue(data, -1); 19 | editor.setOptions({ 20 | maxLines: editor.session.getLength() 21 | }); 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/barebones.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | reveal.js - Barebones 6 | 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |

Barebones Presentation

15 |

This example contains the bare minimum includes and markup required to run a reveal.js presentation.

16 |
17 | 18 |
19 |

No Theme

20 |

There's no theme included, so it will fall back on browser defaults.

21 |
22 | 23 |
24 |
25 | 26 | 27 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tests/manual/test-incremental-attributes.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Incremental using attributes" 3 | output: 4 | revealjs::revealjs_presentation: 5 | incremental: false 6 | --- 7 | 8 | # Equivalent to using fenced div 9 | 10 | Content before fade 11 | 12 | ::: fragment 13 | content after the pause 14 | ::: 15 | 16 | ::: fragment 17 | content after the pause 18 | ::: 19 | 20 | # attributes can be added on divs 21 | 22 | ::: fragment 23 | Fade in 24 | ::: 25 | 26 | ::: {.fragment .fade-out} 27 | Fade out 28 | ::: 29 | 30 | ::: {.fragment .highlight-red} 31 | Highlight red 32 | ::: 33 | 34 | ::: {.fragment .current-visible} 35 | Fade in, then out 36 | ::: 37 | 38 | # Working on spans too 39 | 40 | [Fade in]{.fragment} 41 | 42 | [Fade out]{.fragment .fade-out} 43 | 44 | [Highlight red]{.fragment .highlight-red} 45 | 46 | [Fade in, then out]{.fragment .current-visible} 47 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/style.css: -------------------------------------------------------------------------------- 1 | div.palette, div.boardhandle { 2 | position: absolute; 3 | /* 4 | height: 260px; 5 | margin: -130px 0 0 0px; 6 | */ 7 | top: 50%; 8 | transform: translateY(-50%); 9 | font-size: 24px; 10 | border-radius: 10px; 11 | border-top: 4px solid #222; 12 | border-right: 4px solid #222; 13 | border-bottom: 4px solid #222; 14 | background: black; 15 | transition: transform 0.3s; 16 | } 17 | 18 | div.palette { 19 | left: -10px; 20 | padding-left:10px; 21 | } 22 | 23 | div.boardhandle { 24 | right: -10px; 25 | padding-right:10px; 26 | } 27 | 28 | div.palette > ul, 29 | div.boardhandle > ul { 30 | list-style-type: none; 31 | margin: 0; 32 | padding: 0; 33 | } 34 | 35 | div.palette > ul > li, 36 | div.boardhandle > ul > li { 37 | margin: 10px; 38 | } 39 | 40 | @media print { 41 | div.palette, div.boardhandle, .chalkboard-button { 42 | display: none!important; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | } -------------------------------------------------------------------------------- /tests/manual/test-widget-leaflet.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Rmarkdown Presentation including Leaflet" 3 | output: 4 | revealjs::revealjs_presentation 5 | --- 6 | 7 | ```{r, include = FALSE} 8 | knitr::opts_chunk$set(echo = FALSE) 9 | knitr::opts_template$set(demo = list(echo = TRUE, eval = FALSE)) 10 | library(leaflet) 11 | ``` 12 | 13 | 14 | # Simple map 15 | 16 | ```{r simple} 17 | m <- leaflet() %>% 18 | addTiles() %>% # Add default OpenStreetMap map tiles 19 | addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R") 20 | m 21 | ``` 22 | 23 | ## Code 24 | 25 | ```{r simple, opts.label = "demo"} 26 | ``` 27 | 28 | # More complex example 29 | 30 | ```{r popups} 31 | library(htmltools) 32 | 33 | df <- read.csv(textConnection( 34 | "Name,Lat,Long 35 | Samurai Noodle,47.597131,-122.327298 36 | Kukai Ramen,47.6154,-122.327157 37 | Tsukushinbo,47.59987,-122.326726" 38 | )) 39 | 40 | leaflet(df) %>% addTiles() %>% 41 | addMarkers(~Long, ~Lat, popup = ~htmlEscape(Name)) 42 | ``` 43 | 44 | ## Code 45 | 46 | ```{r popups, opts.label = "demo"} 47 | ``` 48 | 49 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/menu/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2020 Greg Denehy 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2023 revealjs authors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | Please keep the [issue tracker](https://github.com/hakimel/reveal.js/issues) limited to **bug reports**. 3 | 4 | 5 | ### General Questions and Support 6 | If you have questions about how to use reveal.js the best place to ask is in the [Discussions](https://github.com/hakimel/reveal.js/discussions). Anything that isn't a bug report should be posted as a dicussion instead. 7 | 8 | 9 | ### Bug Reports 10 | When reporting a bug make sure to include information about which browser and operating system you are on as well as the necessary steps to reproduce the issue. If possible please include a link to a sample presentation where the bug can be tested. 11 | 12 | 13 | ### Pull Requests 14 | - Should be submitted from a feature/topic branch (not your master) 15 | - Should follow the coding style of the file you work in, most importantly: 16 | - Tabs to indent 17 | - Single-quoted strings 18 | 19 | 20 | ### Plugins 21 | Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines 22 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2011-2021 Hakim El Hattab, http://hakim.se, and reveal.js contributors 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/chalkboard/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 Asvin Goel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/customcontrols/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 Asvin Goel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/night.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700); 16 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); 17 | 18 | 19 | // Override theme settings (see ../template/settings.scss) 20 | $backgroundColor: #111; 21 | 22 | $mainFont: 'Open Sans', sans-serif; 23 | $linkColor: #e7ad52; 24 | $linkColorHover: lighten( $linkColor, 20% ); 25 | $headingFont: 'Montserrat', Impact, sans-serif; 26 | $headingTextShadow: none; 27 | $headingLetterSpacing: -0.03em; 28 | $headingTextTransform: none; 29 | $selectionBackgroundColor: #e7ad52; 30 | 31 | // Change text colors against light slide backgrounds 32 | @include light-bg-text-color(#222); 33 | 34 | 35 | // Theme template ------------------------------ 36 | @import "../template/theme"; 37 | // --------------------------------------------- -------------------------------------------------------------------------------- /examples/simple.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Untitled" 3 | output: 4 | revealjs::revealjs_presentation: 5 | self_contained: false 6 | reveal_plugins: 7 | - search 8 | - zoom 9 | - notes 10 | - chalkboard 11 | - menu 12 | reveal_options: 13 | chalkboard: 14 | theme: chalkboard 15 | toggleNotesButton: true 16 | menu: 17 | numbers: true 18 | --- 19 | 20 | ```{r setup, include=FALSE} 21 | knitr::opts_chunk$set(echo = FALSE) 22 | ``` 23 | 24 | ## R Markdown 25 | 26 | This is an R Markdown presentation. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see . 27 | 28 | When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. 29 | 30 | ## Slide with Bullets 31 | 32 | - Bullet 1 33 | - Bullet 2 34 | - Bullet 3 35 | 36 | 39 | 40 | ## Slide with R Output 41 | 42 | ```{r cars, echo = TRUE} 43 | summary(cars) 44 | ``` 45 | 46 | ## Slide with Plot 47 | 48 | ```{r pressure} 49 | plot(pressure) 50 | ``` 51 | 52 | -------------------------------------------------------------------------------- /tests/testthat/test-themes.R: -------------------------------------------------------------------------------- 1 | test_theme <- function(theme) { 2 | test_that(paste(theme, "theme"), { 3 | skip_if_not_pandoc() 4 | # don't run on cran because this is just to test after updates 5 | skip_on_cran() 6 | 7 | # work in a temp directory 8 | dir <- tempfile() 9 | dir.create(dir) 10 | oldwd <- setwd(dir) 11 | on.exit(setwd(oldwd), add = TRUE) 12 | 13 | # create a draft of a presentation 14 | testdoc <- "testdoc.Rmd" 15 | rmarkdown::draft( 16 | testdoc, 17 | system.file( 18 | "rmarkdown", 19 | "templates", 20 | "revealjs_presentation", 21 | package = "revealjs" 22 | ), 23 | create_dir = FALSE, 24 | edit = FALSE 25 | ) 26 | 27 | # render it with the specified theme 28 | capture.output({ 29 | output_file <- tempfile(fileext = ".html") 30 | output_format <- revealjs_presentation(theme = theme) 31 | rmarkdown::render( 32 | testdoc, 33 | output_format = output_format, 34 | output_file = output_file, 35 | quiet = TRUE 36 | ) 37 | expect_true(file.exists(output_file)) 38 | }) 39 | }) 40 | } 41 | 42 | # test all themes 43 | sapply(revealjs:::revealjs_themes(), test_theme) 44 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/template/exposer.scss: -------------------------------------------------------------------------------- 1 | // Exposes theme's variables for easy re-use in CSS for plugin authors 2 | 3 | :root { 4 | --r-background-color: #{$backgroundColor}; 5 | --r-main-font: #{$mainFont}; 6 | --r-main-font-size: #{$mainFontSize}; 7 | --r-main-color: #{$mainColor}; 8 | --r-block-margin: #{$blockMargin}; 9 | --r-heading-margin: #{$headingMargin}; 10 | --r-heading-font: #{$headingFont}; 11 | --r-heading-color: #{$headingColor}; 12 | --r-heading-line-height: #{$headingLineHeight}; 13 | --r-heading-letter-spacing: #{$headingLetterSpacing}; 14 | --r-heading-text-transform: #{$headingTextTransform}; 15 | --r-heading-text-shadow: #{$headingTextShadow}; 16 | --r-heading-font-weight: #{$headingFontWeight}; 17 | --r-heading1-text-shadow: #{$heading1TextShadow}; 18 | --r-heading1-size: #{$heading1Size}; 19 | --r-heading2-size: #{$heading2Size}; 20 | --r-heading3-size: #{$heading3Size}; 21 | --r-heading4-size: #{$heading4Size}; 22 | --r-code-font: #{$codeFont}; 23 | --r-link-color: #{$linkColor}; 24 | --r-link-color-dark: #{darken($linkColor , 15% )}; 25 | --r-link-color-hover: #{$linkColorHover}; 26 | --r-selection-background-color: #{$selectionBackgroundColor}; 27 | --r-selection-color: #{$selectionColor}; 28 | } 29 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/serif.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is brown. 4 | * 5 | * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. 6 | */ 7 | 8 | 9 | // Default mixins and settings ----------------- 10 | @import "../template/mixins"; 11 | @import "../template/settings"; 12 | // --------------------------------------------- 13 | 14 | 15 | 16 | // Override theme settings (see ../template/settings.scss) 17 | $mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 18 | $mainColor: #000; 19 | $headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 20 | $headingColor: #383D3D; 21 | $headingTextShadow: none; 22 | $headingTextTransform: none; 23 | $backgroundColor: #F0F1EB; 24 | $linkColor: #51483D; 25 | $linkColorHover: lighten( $linkColor, 20% ); 26 | $selectionBackgroundColor: #26351C; 27 | 28 | .reveal a { 29 | line-height: 1.3em; 30 | } 31 | 32 | // Change text colors against dark slide backgrounds 33 | @include dark-bg-text-color(#fff); 34 | 35 | 36 | // Theme template ------------------------------ 37 | @import "../template/theme"; 38 | // --------------------------------------------- 39 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/template/settings.scss: -------------------------------------------------------------------------------- 1 | // Base settings for all themes that can optionally be 2 | // overridden by the super-theme 3 | 4 | // Background of the presentation 5 | $backgroundColor: #2b2b2b; 6 | 7 | // Primary/body text 8 | $mainFont: 'Lato', sans-serif; 9 | $mainFontSize: 40px; 10 | $mainColor: #eee; 11 | 12 | // Vertical spacing between blocks of text 13 | $blockMargin: 20px; 14 | 15 | // Headings 16 | $headingMargin: 0 0 $blockMargin 0; 17 | $headingFont: 'League Gothic', Impact, sans-serif; 18 | $headingColor: #eee; 19 | $headingLineHeight: 1.2; 20 | $headingLetterSpacing: normal; 21 | $headingTextTransform: uppercase; 22 | $headingTextShadow: none; 23 | $headingFontWeight: normal; 24 | $heading1TextShadow: $headingTextShadow; 25 | 26 | $heading1Size: 3.77em; 27 | $heading2Size: 2.11em; 28 | $heading3Size: 1.55em; 29 | $heading4Size: 1.00em; 30 | 31 | $codeFont: monospace; 32 | 33 | // Links and actions 34 | $linkColor: #13DAEC; 35 | $linkColorHover: lighten( $linkColor, 20% ); 36 | 37 | // Text selection 38 | $selectionBackgroundColor: #FF5E99; 39 | $selectionColor: #fff; 40 | 41 | // Generates the presentation background, can be overridden 42 | // to return a background image or gradient 43 | @mixin bodyBackground() { 44 | background: $backgroundColor; 45 | } 46 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
Slide 1
20 |
Slide 2
21 |
22 |
23 | 24 | 25 | 26 | 27 | 28 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/test-dependencies.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Dependencies 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 | 28 | 29 | 30 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/utils/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Loads a JavaScript file from the given URL and executes it. 3 | * 4 | * @param {string} url Address of the .js file to load 5 | * @param {function} callback Method to invoke when the script 6 | * has loaded and executed 7 | */ 8 | export const loadScript = ( url, callback ) => { 9 | 10 | const script = document.createElement( 'script' ); 11 | script.type = 'text/javascript'; 12 | script.async = false; 13 | script.defer = false; 14 | script.src = url; 15 | 16 | if( typeof callback === 'function' ) { 17 | 18 | // Success callback 19 | script.onload = script.onreadystatechange = event => { 20 | if( event.type === 'load' || /loaded|complete/.test( script.readyState ) ) { 21 | 22 | // Kill event listeners 23 | script.onload = script.onreadystatechange = script.onerror = null; 24 | 25 | callback(); 26 | 27 | } 28 | }; 29 | 30 | // Error callback 31 | script.onerror = err => { 32 | 33 | // Kill event listeners 34 | script.onload = script.onreadystatechange = script.onerror = null; 35 | 36 | callback( new Error( 'Failed loading script: ' + script.src + '\n' + err ) ); 37 | 38 | }; 39 | 40 | } 41 | 42 | // Append the script at the end of 43 | const head = document.querySelector( 'head' ); 44 | head.insertBefore( script, head.lastChild ); 45 | 46 | } -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/league.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * League theme for reveal.js. 3 | * 4 | * This was the default theme pre-3.0.0. 5 | * 6 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | 9 | 10 | // Default mixins and settings ----------------- 11 | @import "../template/mixins"; 12 | @import "../template/settings"; 13 | // --------------------------------------------- 14 | 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(./fonts/league-gothic/league-gothic.css); 19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 20 | 21 | // Override theme settings (see ../template/settings.scss) 22 | $headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2); 23 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 24 | 25 | // Background generator 26 | @mixin bodyBackground() { 27 | @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) ); 28 | } 29 | 30 | // Change text colors against light slide backgrounds 31 | @include light-bg-text-color(#222); 32 | 33 | 34 | // Theme template ------------------------------ 35 | @import "../template/theme"; 36 | // --------------------------------------------- 37 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Type: Package 2 | Package: revealjs 3 | Title: R Markdown Format for 'reveal.js' Presentations 4 | Version: 0.9.1.9007 5 | Authors@R: c( 6 | person("Christophe", "Dervieux", , "cderv@posit.co", role = "cre"), 7 | person("JJ", "Allaire", , "jj@posit.co", role = c("aut")), 8 | person("Hakim", "El Hattab", role = c("aut", "cph"), 9 | comment = "reveal.js, https://github.com/hakimel/reveal.js"), 10 | person("Asvin", "Goel", , "goel@telematique.eu", role = c("ctb", "cph"), 11 | comment = "chalkboard plugin"), 12 | person("Greg", "Denehy", role = c("ctb", "cph"), 13 | comment = "menu plugin"), 14 | person("Posit Software, PBC", role = c("cph", "fnd")) 15 | ) 16 | Description: R Markdown format for 'reveal.js' presentations, a framework 17 | for easily creating beautiful presentations using HTML. 18 | License: MIT + file LICENSE 19 | URL: https://github.com/rstudio/revealjs 20 | BugReports: https://github.com/rstudio/revealjs/issues 21 | Depends: 22 | R (>= 3.0) 23 | Imports: 24 | rmarkdown (>= 1.7) 25 | Suggests: 26 | bslib, 27 | testthat (>= 3.0.0), 28 | withr (>= 2.4.2), 29 | xfun (>= 0.21), 30 | xml2 31 | Config/testthat/edition: 3 32 | Encoding: UTF-8 33 | Roxygen: list(markdown = TRUE) 34 | RoxygenNote: 7.3.2 35 | Config/Needs/website: pkgdown, tidyverse/tidytemplate, rstudio/quillt 36 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/customcontrols/style.css: -------------------------------------------------------------------------------- 1 | #customcontrols { 2 | z-index: 40; 3 | position: fixed; 4 | left: 70px; 5 | bottom: 30px; 6 | text-align: center; 7 | font-size: 24px; 8 | } 9 | 10 | #customcontrols button { 11 | background: none; 12 | color: var(--r-link-color); 13 | border: none; 14 | padding: 0; 15 | font: inherit; 16 | cursor: pointer; 17 | outline: inherit; 18 | z-index: 40; 19 | } 20 | 21 | #customcontrols button:hover { 22 | color: var(--r-link-color-hover); 23 | } 24 | 25 | #customcontrols > ul { 26 | position: fixed; 27 | left: 54px; 28 | bottom: 64px; 29 | list-style-type: none; 30 | overflow: hidden; 31 | margin: 0; 32 | padding: 0; 33 | border: 1px solid var(--r-link-color); 34 | border-radius: 5px; 35 | padding: 10px; 36 | background-color: var(--r-background-color) 37 | } 38 | 39 | #customcontrols ul > li { 40 | margin: 0px 5px; 41 | padding: 0px 5px; 42 | float: left; 43 | } 44 | 45 | #customcontrols.collapsed #collapse-customcontrols, #customcontrols.collapsed > ul { 46 | display: none; 47 | } 48 | 49 | #customcontrols:not(.collapsed) #expand-customcontrols { 50 | display: none; 51 | } 52 | 53 | @media only screen and (min-width: 500px) { 54 | #customcontrols > button { 55 | display: none; 56 | } 57 | #customcontrols > ul { 58 | bottom: 20px; 59 | border: none; 60 | background: none; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/white.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * White theme for reveal.js. This is the opposite of the 'black' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(./fonts/source-sans-pro/source-sans-pro.css); 16 | 17 | 18 | // Override theme settings (see ../template/settings.scss) 19 | $backgroundColor: #fff; 20 | 21 | $mainColor: #222; 22 | $headingColor: #222; 23 | 24 | $mainFontSize: 42px; 25 | $mainFont: 'Source Sans Pro', Helvetica, sans-serif; 26 | $headingFont: 'Source Sans Pro', Helvetica, sans-serif; 27 | $headingTextShadow: none; 28 | $headingLetterSpacing: normal; 29 | $headingTextTransform: uppercase; 30 | $headingFontWeight: 600; 31 | $linkColor: #2a76dd; 32 | $linkColorHover: lighten( $linkColor, 15% ); 33 | $selectionBackgroundColor: lighten( $linkColor, 25% ); 34 | 35 | $heading1Size: 2.5em; 36 | $heading2Size: 1.6em; 37 | $heading3Size: 1.3em; 38 | $heading4Size: 1.0em; 39 | 40 | // Change text colors against dark slide backgrounds 41 | @include dark-bg-text-color(#fff); 42 | 43 | 44 | // Theme template ------------------------------ 45 | @import "../template/theme"; 46 | // --------------------------------------------- 47 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/black.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. This is the opposite of the 'white' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(./fonts/source-sans-pro/source-sans-pro.css); 16 | 17 | 18 | // Override theme settings (see ../template/settings.scss) 19 | $backgroundColor: #191919; 20 | 21 | $mainColor: #fff; 22 | $headingColor: #fff; 23 | 24 | $mainFontSize: 42px; 25 | $mainFont: 'Source Sans Pro', Helvetica, sans-serif; 26 | $headingFont: 'Source Sans Pro', Helvetica, sans-serif; 27 | $headingTextShadow: none; 28 | $headingLetterSpacing: normal; 29 | $headingTextTransform: uppercase; 30 | $headingFontWeight: 600; 31 | $linkColor: #42affa; 32 | $linkColorHover: lighten( $linkColor, 15% ); 33 | $selectionBackgroundColor: lighten( $linkColor, 25% ); 34 | 35 | $heading1Size: 2.5em; 36 | $heading2Size: 1.6em; 37 | $heading3Size: 1.3em; 38 | $heading4Size: 1.0em; 39 | 40 | // Change text colors against light slide backgrounds 41 | @include light-bg-text-color(#222); 42 | 43 | 44 | // Theme template ------------------------------ 45 | @import "../template/theme"; 46 | // --------------------------------------------- 47 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/simple.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is darkblue. 4 | * 5 | * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. 6 | * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | 9 | 10 | // Default mixins and settings ----------------- 11 | @import "../template/mixins"; 12 | @import "../template/settings"; 13 | // --------------------------------------------- 14 | 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); 19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 20 | 21 | 22 | // Override theme settings (see ../template/settings.scss) 23 | $mainFont: 'Lato', sans-serif; 24 | $mainColor: #000; 25 | $headingFont: 'News Cycle', Impact, sans-serif; 26 | $headingColor: #000; 27 | $headingTextShadow: none; 28 | $headingTextTransform: none; 29 | $backgroundColor: #fff; 30 | $linkColor: #00008B; 31 | $linkColorHover: lighten( $linkColor, 20% ); 32 | $selectionBackgroundColor: rgba(0, 0, 0, 0.99); 33 | 34 | // Change text colors against dark slide backgrounds 35 | @include dark-bg-text-color(#fff); 36 | 37 | 38 | // Theme template ------------------------------ 39 | @import "../template/theme"; 40 | // --------------------------------------------- -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Feature request" 3 | about: Suggest an idea for this package 4 | title: '[FR]' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | 29 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/sky.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Sky theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); 17 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); 18 | 19 | 20 | // Override theme settings (see ../template/settings.scss) 21 | $mainFont: 'Open Sans', sans-serif; 22 | $mainColor: #333; 23 | $headingFont: 'Quicksand', sans-serif; 24 | $headingColor: #333; 25 | $headingLetterSpacing: -0.08em; 26 | $headingTextShadow: none; 27 | $backgroundColor: #f7fbfc; 28 | $linkColor: #3b759e; 29 | $linkColorHover: lighten( $linkColor, 20% ); 30 | $selectionBackgroundColor: #134674; 31 | 32 | // Fix links so they are not cut off 33 | .reveal a { 34 | line-height: 1.3em; 35 | } 36 | 37 | // Background generator 38 | @mixin bodyBackground() { 39 | @include radial-gradient( #add9e4, #f7fbfc ); 40 | } 41 | 42 | // Change text colors against dark slide backgrounds 43 | @include dark-bg-text-color(#fff); 44 | 45 | 46 | 47 | // Theme template ------------------------------ 48 | @import "../template/theme"; 49 | // --------------------------------------------- 50 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/beige.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Beige theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @import url(./fonts/league-gothic/league-gothic.css); 17 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 18 | 19 | 20 | // Override theme settings (see ../template/settings.scss) 21 | $mainColor: #333; 22 | $headingColor: #333; 23 | $headingTextShadow: none; 24 | $backgroundColor: #f7f3de; 25 | $linkColor: #8b743d; 26 | $linkColorHover: lighten( $linkColor, 20% ); 27 | $selectionBackgroundColor: rgba(79, 64, 28, 0.99); 28 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 29 | 30 | // Background generator 31 | @mixin bodyBackground() { 32 | @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) ); 33 | } 34 | 35 | // Change text colors against dark slide backgrounds 36 | @include dark-bg-text-color(#fff); 37 | 38 | 39 | // Theme template ------------------------------ 40 | @import "../template/theme"; 41 | // --------------------------------------------- 42 | -------------------------------------------------------------------------------- /.github/workflows/pkgdown.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | release: 8 | types: [published] 9 | workflow_dispatch: 10 | 11 | name: pkgdown.yaml 12 | 13 | permissions: read-all 14 | 15 | jobs: 16 | pkgdown: 17 | runs-on: ubuntu-latest 18 | # Only restrict concurrency for non-PR jobs 19 | concurrency: 20 | group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} 21 | env: 22 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 23 | permissions: 24 | contents: write 25 | steps: 26 | - uses: actions/checkout@v4 27 | 28 | - uses: r-lib/actions/setup-pandoc@v2 29 | 30 | - uses: r-lib/actions/setup-r@v2 31 | with: 32 | use-public-rspm: true 33 | 34 | - uses: r-lib/actions/setup-r-dependencies@v2 35 | with: 36 | extra-packages: any::pkgdown, local::. 37 | needs: website 38 | 39 | - name: Build site 40 | run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) 41 | shell: Rscript {0} 42 | 43 | - name: Deploy to GitHub pages 🚀 44 | if: github.event_name != 'pull_request' 45 | uses: JamesIves/github-pages-deploy-action@v4.5.0 46 | with: 47 | clean: false 48 | branch: gh-pages 49 | folder: docs 50 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to revealjs 2 | 3 | We welcome contributions to the **revealjs** package. 4 | 5 | You can contribute in many ways: 6 | 7 | * By opening issues to give feedback and share ideas. 8 | * By fixing typos in documentations 9 | * By submitting Pull Request (PR) to fix some opened issues 10 | * By submitting Pull Request (PR) to suggest some new features. (It is considered good practice to open issues before to discuss ideas) 11 | 12 | ## To submit a contribution using a Pull Request: 13 | 14 | 1. [Fork](https://github.com/rstudio/revealjs/fork) the repository and make your changes in a new branch specific to the PR. It is ok to edit a file in this repository using the `Edit` button on Github if the change is simple enough. 15 | 16 | 2. For significant changes (e.g not required for fixing typos), ensure that you have signed the [individual](https://posit.co/wp-content/uploads/2023/04/2023-03-13_TC_Indiv_contrib_agreement.pdf) or [corporate](https://posit.co/wp-content/uploads/2023/04/2023-03-13_TC_Corp_contrib_agreement.pdf) contributor agreement as appropriate. You can send the signed copy to . 17 | 18 | 3. Submit the [pull request](https://help.github.com/articles/using-pull-requests). It is ok to submit as draft if you are still working on it but would like some feedback from us. It always good to share in the open that you are working on it. 19 | 20 | We'll try to be as responsive as possible in reviewing and accepting pull requests. Appreciate your contributions very much! 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Bug report" 3 | about: Report an error or unexpected behavior you saw while using this package 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | 35 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/moon.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Dark theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | 6 | 7 | // Default mixins and settings ----------------- 8 | @import "../template/mixins"; 9 | @import "../template/settings"; 10 | // --------------------------------------------- 11 | 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(./fonts/league-gothic/league-gothic.css); 16 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 17 | 18 | /** 19 | * Solarized colors by Ethan Schoonover 20 | */ 21 | html * { 22 | color-profile: sRGB; 23 | rendering-intent: auto; 24 | } 25 | 26 | // Solarized colors 27 | $base03: #002b36; 28 | $base02: #073642; 29 | $base01: #586e75; 30 | $base00: #657b83; 31 | $base0: #839496; 32 | $base1: #93a1a1; 33 | $base2: #eee8d5; 34 | $base3: #fdf6e3; 35 | $yellow: #b58900; 36 | $orange: #cb4b16; 37 | $red: #dc322f; 38 | $magenta: #d33682; 39 | $violet: #6c71c4; 40 | $blue: #268bd2; 41 | $cyan: #2aa198; 42 | $green: #859900; 43 | 44 | // Override theme settings (see ../template/settings.scss) 45 | $mainColor: $base1; 46 | $headingColor: $base2; 47 | $headingTextShadow: none; 48 | $backgroundColor: $base03; 49 | $linkColor: $blue; 50 | $linkColorHover: lighten( $linkColor, 20% ); 51 | $selectionBackgroundColor: $magenta; 52 | 53 | // Change text colors against light slide backgrounds 54 | @include light-bg-text-color(#222); 55 | 56 | // Theme template ------------------------------ 57 | @import "../template/theme"; 58 | // --------------------------------------------- 59 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/README.md: -------------------------------------------------------------------------------- 1 | ## Dependencies 2 | 3 | Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment installed before proceeding: https://revealjs.com/installation/#full-setup 4 | 5 | ## Creating a Theme 6 | 7 | To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled from Sass to CSS (see the [gulpfile](https://github.com/hakimel/reveal.js/blob/master/gulpfile.js)) when you run `npm run build -- css-themes`. 8 | 9 | Each theme file does four things in the following order: 10 | 11 | 1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)** 12 | Shared utility functions. 13 | 14 | 2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)** 15 | Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3. 16 | 17 | 3. **Override** 18 | This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please. 19 | 20 | 4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)** 21 | The template theme file which will generate final CSS output based on the currently defined variables. 22 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | -------------------------------------------------------------------------------- /tests/testthat/helpers.R: -------------------------------------------------------------------------------- 1 | local_temp_rmd_file <- function(..., .env = parent.frame()) { 2 | path <- withr::local_tempfile(.local_envir = .env, fileext = ".Rmd") 3 | xfun::write_utf8(c(...), path) 4 | path 5 | } 6 | 7 | local_temp_draft <- function(.env = parent.frame()) { 8 | path <- withr::local_tempfile(.local_envir = .env, fileext = ".Rmd") 9 | # TODO: Use `rmarkdown::draft()` when rmarkdown 2.12 is out. 10 | pkg_file <- getFromNamespace("pkg_file", "rmarkdown") 11 | template_path <- pkg_file( 12 | "rmarkdown", 13 | "templates", 14 | "revealjs_presentation", 15 | package = "revealjs" 16 | ) 17 | rmarkdown::draft(path, template_path, edit = FALSE) 18 | } 19 | 20 | .render_and_read <- function(input, xml = TRUE, ...) { 21 | skip_if_not_pandoc() 22 | output_file <- withr::local_tempfile(fileext = ".html") 23 | res <- rmarkdown::render(input, output_file = output_file, quiet = TRUE, ...) 24 | if (xml) { 25 | xml2::read_html(res) 26 | } else { 27 | xfun::read_utf8(res) 28 | } 29 | } 30 | 31 | # Use to test pandoc availability or version lower than 32 | skip_if_not_pandoc <- function(ver = NULL) { 33 | if (!pandoc_available(ver)) { 34 | msg <- if (is.null(ver)) { 35 | "Pandoc is not available" 36 | } else { 37 | sprintf("Version of Pandoc is lower than %s.", ver) 38 | } 39 | skip(msg) 40 | } 41 | } 42 | 43 | # Use to test version greater than 44 | skip_if_pandoc <- function(ver = NULL) { 45 | if (pandoc_available(ver)) { 46 | msg <- if (is.null(ver)) { 47 | "Pandoc is available" 48 | } else { 49 | sprintf("Version of Pandoc is greater than %s.", ver) 50 | } 51 | skip(msg) 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/solarized.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Light theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | 6 | 7 | // Default mixins and settings ----------------- 8 | @import "../template/mixins"; 9 | @import "../template/settings"; 10 | // --------------------------------------------- 11 | 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(./fonts/league-gothic/league-gothic.css); 16 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 17 | 18 | 19 | /** 20 | * Solarized colors by Ethan Schoonover 21 | */ 22 | html * { 23 | color-profile: sRGB; 24 | rendering-intent: auto; 25 | } 26 | 27 | // Solarized colors 28 | $base03: #002b36; 29 | $base02: #073642; 30 | $base01: #586e75; 31 | $base00: #657b83; 32 | $base0: #839496; 33 | $base1: #93a1a1; 34 | $base2: #eee8d5; 35 | $base3: #fdf6e3; 36 | $yellow: #b58900; 37 | $orange: #cb4b16; 38 | $red: #dc322f; 39 | $magenta: #d33682; 40 | $violet: #6c71c4; 41 | $blue: #268bd2; 42 | $cyan: #2aa198; 43 | $green: #859900; 44 | 45 | // Override theme settings (see ../template/settings.scss) 46 | $mainColor: $base00; 47 | $headingColor: $base01; 48 | $headingTextShadow: none; 49 | $backgroundColor: $base3; 50 | $linkColor: $blue; 51 | $linkColorHover: lighten( $linkColor, 20% ); 52 | $selectionBackgroundColor: $magenta; 53 | 54 | // Background generator 55 | // @mixin bodyBackground() { 56 | // @include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) ); 57 | // } 58 | 59 | 60 | 61 | // Theme template ------------------------------ 62 | @import "../template/theme"; 63 | // --------------------------------------------- 64 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/index.js: -------------------------------------------------------------------------------- 1 | import Deck, { VERSION } from './reveal.js' 2 | 3 | /** 4 | * Expose the Reveal class to the window. To create a 5 | * new instance: 6 | * let deck = new Reveal( document.querySelector( '.reveal' ), { 7 | * controls: false 8 | * } ); 9 | * deck.initialize().then(() => { 10 | * // reveal.js is ready 11 | * }); 12 | */ 13 | let Reveal = Deck; 14 | 15 | 16 | /** 17 | * The below is a thin shell that mimics the pre 4.0 18 | * reveal.js API and ensures backwards compatibility. 19 | * This API only allows for one Reveal instance per 20 | * page, whereas the new API above lets you run many 21 | * presentations on the same page. 22 | * 23 | * Reveal.initialize( { controls: false } ).then(() => { 24 | * // reveal.js is ready 25 | * }); 26 | */ 27 | 28 | let enqueuedAPICalls = []; 29 | 30 | Reveal.initialize = options => { 31 | 32 | // Create our singleton reveal.js instance 33 | Object.assign( Reveal, new Deck( document.querySelector( '.reveal' ), options ) ); 34 | 35 | // Invoke any enqueued API calls 36 | enqueuedAPICalls.map( method => method( Reveal ) ); 37 | 38 | return Reveal.initialize(); 39 | 40 | } 41 | 42 | /** 43 | * The pre 4.0 API let you add event listener before 44 | * initializing. We maintain the same behavior by 45 | * queuing up premature API calls and invoking all 46 | * of them when Reveal.initialize is called. 47 | */ 48 | [ 'configure', 'on', 'off', 'addEventListener', 'removeEventListener', 'registerPlugin' ].forEach( method => { 49 | Reveal[method] = ( ...args ) => { 50 | enqueuedAPICalls.push( deck => deck[method].call( null, ...args ) ); 51 | } 52 | } ); 53 | 54 | Reveal.isReady = () => false; 55 | 56 | Reveal.VERSION = VERSION; 57 | 58 | export default Reveal; -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | reveal.js 4 | 5 |

6 | 7 | Slides 8 |

9 | 10 | reveal.js is an open source HTML presentation framework. It enables anyone with a web browser to create fully featured and beautiful presentations for free. [Check out the live demo](https://revealjs.com/). 11 | 12 | The framework comes with a broad range of features including [nested slides](https://revealjs.com/vertical-slides/), [Markdown support](https://revealjs.com/markdown/), [Auto-Animate](https://revealjs.com/auto-animate/), [PDF export](https://revealjs.com/pdf-export/), [speaker notes](https://revealjs.com/speaker-view/), [LaTeX typesetting](https://revealjs.com/math/), [syntax highlighted code](https://revealjs.com/code/) and much more. 13 | 14 |

15 | Get Started 16 |

17 | 18 | ## Documentation 19 | The full reveal.js documentation is available at [revealjs.com](https://revealjs.com). 20 | 21 | ## Online Editor 22 | Want to create your presentation using a visual editor? Try the official reveal.js presentation platform for free at [Slides.com](https://slides.com). It's made by the same people behind reveal.js. 23 | 24 | ## License 25 | 26 | MIT licensed 27 | 28 | Copyright (C) 2011-2021 Hakim El Hattab, https://hakim.se 29 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/layout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Layout helpers. 3 | */ 4 | 5 | // Stretch an element vertically based on available space 6 | .reveal .stretch, 7 | .reveal .r-stretch { 8 | max-width: none; 9 | max-height: none; 10 | } 11 | 12 | .reveal pre.stretch code, 13 | .reveal pre.r-stretch code { 14 | height: 100%; 15 | max-height: 100%; 16 | box-sizing: border-box; 17 | } 18 | 19 | // Text that auto-fits it's container 20 | .reveal .r-fit-text { 21 | display: inline-block; // https://github.com/rikschennink/fitty#performance 22 | white-space: nowrap; 23 | } 24 | 25 | // Stack multiple elements on top of each other 26 | .reveal .r-stack { 27 | display: grid; 28 | } 29 | 30 | .reveal .r-stack > * { 31 | grid-area: 1/1; 32 | margin: auto; 33 | } 34 | 35 | // Horizontal and vertical stacks 36 | .reveal .r-vstack, 37 | .reveal .r-hstack { 38 | display: flex; 39 | 40 | img, video { 41 | min-width: 0; 42 | min-height: 0; 43 | object-fit: contain; 44 | } 45 | } 46 | 47 | .reveal .r-vstack { 48 | flex-direction: column; 49 | align-items: center; 50 | justify-content: center; 51 | } 52 | 53 | .reveal .r-hstack { 54 | flex-direction: row; 55 | align-items: center; 56 | justify-content: center; 57 | } 58 | 59 | // Naming based on tailwindcss 60 | .reveal .items-stretch { align-items: stretch; } 61 | .reveal .items-start { align-items: flex-start; } 62 | .reveal .items-center { align-items: center; } 63 | .reveal .items-end { align-items: flex-end; } 64 | 65 | .reveal .justify-between { justify-content: space-between; } 66 | .reveal .justify-around { justify-content: space-around; } 67 | .reveal .justify-start { justify-content: flex-start; } 68 | .reveal .justify-center { justify-content: center; } 69 | .reveal .justify-end { justify-content: flex-end; } 70 | -------------------------------------------------------------------------------- /R/utils.R: -------------------------------------------------------------------------------- 1 | # function to lookup reveal resource 2 | reveal_resources <- function(...) { 3 | system.file( 4 | "rmarkdown/templates/revealjs_presentation/resources", 5 | ..., 6 | package = "revealjs" 7 | ) 8 | } 9 | 10 | 11 | revealjs_lib_path <- function(...) { 12 | pkg <- system.file(package = "revealjs") 13 | lib_folder <- list.files(pkg, pattern = "reveal.js-")[1] 14 | system.file(lib_folder, ..., package = "revealjs") 15 | } 16 | 17 | revealjs_version <- function() { 18 | as.numeric_version(gsub(".*reveal\\.js-(.*)$", "\\1", revealjs_lib_path())) 19 | } 20 | 21 | # Convert boolean from R to JS boolean 22 | jsbool <- function(value) ifelse(value, "true", "false") 23 | 24 | # transfrom reveal option as pandoc variable 25 | process_reveal_option <- function(option, value) { 26 | if (is.logical(value)) { 27 | value <- jsbool(value) 28 | } else if (is.character(value)) { 29 | # Special handling for some vector options 30 | if ( 31 | # chalkboard plugin options 32 | # e.g: color: [ 'rgba(0,0,255,1)', 'rgba(255,255,255,0.5)' ] 33 | grepl("chalkboard-(background|draw)", option) || 34 | # e.g autoAnimateStyles: ['opacity','color'] 35 | grepl("autoAnimateStyles", option) 36 | ) { 37 | if (length(value) > 1 || !grepl("^\\[.*\\]$", value)) { 38 | value <- sprintf( 39 | "[%s]", 40 | paste(paste0("'", value, "'"), collapse = ", ") 41 | ) 42 | } 43 | } 44 | # Add quotes around some config that can be several type 45 | # like number or percent unit or slideNumber = true or slideNumber = 'c/t' 46 | if ( 47 | option %in% 48 | c("slideNumber") || 49 | (option %in% c("width", "height") && grepl("%$", value)) 50 | ) { 51 | value <- paste0("'", value, "'") 52 | } 53 | } 54 | pandoc_variable_arg(option, value) 55 | } 56 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/template/mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin vertical-gradient( $top, $bottom ) { 2 | background: $top; 3 | background: -moz-linear-gradient( top, $top 0%, $bottom 100% ); 4 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) ); 5 | background: -webkit-linear-gradient( top, $top 0%, $bottom 100% ); 6 | background: -o-linear-gradient( top, $top 0%, $bottom 100% ); 7 | background: -ms-linear-gradient( top, $top 0%, $bottom 100% ); 8 | background: linear-gradient( top, $top 0%, $bottom 100% ); 9 | } 10 | 11 | @mixin horizontal-gradient( $top, $bottom ) { 12 | background: $top; 13 | background: -moz-linear-gradient( left, $top 0%, $bottom 100% ); 14 | background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) ); 15 | background: -webkit-linear-gradient( left, $top 0%, $bottom 100% ); 16 | background: -o-linear-gradient( left, $top 0%, $bottom 100% ); 17 | background: -ms-linear-gradient( left, $top 0%, $bottom 100% ); 18 | background: linear-gradient( left, $top 0%, $bottom 100% ); 19 | } 20 | 21 | @mixin radial-gradient( $outer, $inner, $type: circle ) { 22 | background: $outer; 23 | background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 24 | background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) ); 25 | background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 26 | background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 27 | background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 28 | background: radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 29 | } 30 | 31 | @mixin light-bg-text-color( $color ) { 32 | section.has-light-background { 33 | &, h1, h2, h3, h4, h5, h6 { 34 | color: $color; 35 | } 36 | } 37 | } 38 | 39 | @mixin dark-bg-text-color( $color ) { 40 | section.has-dark-background { 41 | &, h1, h2, h3, h4, h5, h6 { 42 | color: $color; 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/utils/color.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Converts various color input formats to an {r:0,g:0,b:0} object. 3 | * 4 | * @param {string} color The string representation of a color 5 | * @example 6 | * colorToRgb('#000'); 7 | * @example 8 | * colorToRgb('#000000'); 9 | * @example 10 | * colorToRgb('rgb(0,0,0)'); 11 | * @example 12 | * colorToRgb('rgba(0,0,0)'); 13 | * 14 | * @return {{r: number, g: number, b: number, [a]: number}|null} 15 | */ 16 | export const colorToRgb = ( color ) => { 17 | 18 | let hex3 = color.match( /^#([0-9a-f]{3})$/i ); 19 | if( hex3 && hex3[1] ) { 20 | hex3 = hex3[1]; 21 | return { 22 | r: parseInt( hex3.charAt( 0 ), 16 ) * 0x11, 23 | g: parseInt( hex3.charAt( 1 ), 16 ) * 0x11, 24 | b: parseInt( hex3.charAt( 2 ), 16 ) * 0x11 25 | }; 26 | } 27 | 28 | let hex6 = color.match( /^#([0-9a-f]{6})$/i ); 29 | if( hex6 && hex6[1] ) { 30 | hex6 = hex6[1]; 31 | return { 32 | r: parseInt( hex6.substr( 0, 2 ), 16 ), 33 | g: parseInt( hex6.substr( 2, 2 ), 16 ), 34 | b: parseInt( hex6.substr( 4, 2 ), 16 ) 35 | }; 36 | } 37 | 38 | let rgb = color.match( /^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i ); 39 | if( rgb ) { 40 | return { 41 | r: parseInt( rgb[1], 10 ), 42 | g: parseInt( rgb[2], 10 ), 43 | b: parseInt( rgb[3], 10 ) 44 | }; 45 | } 46 | 47 | let rgba = color.match( /^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([\d]+|[\d]*.[\d]+)\s*\)$/i ); 48 | if( rgba ) { 49 | return { 50 | r: parseInt( rgba[1], 10 ), 51 | g: parseInt( rgba[2], 10 ), 52 | b: parseInt( rgba[3], 10 ), 53 | a: parseFloat( rgba[4] ) 54 | }; 55 | } 56 | 57 | return null; 58 | 59 | } 60 | 61 | /** 62 | * Calculates brightness on a scale of 0-255. 63 | * 64 | * @param {string} color See colorToRgb for supported formats. 65 | * @see {@link colorToRgb} 66 | */ 67 | export const colorBrightness = ( color ) => { 68 | 69 | if( typeof color === 'string' ) color = colorToRgb( color ); 70 | 71 | if( color ) { 72 | return ( color.r * 299 + color.g * 587 + color.b * 114 ) / 1000; 73 | } 74 | 75 | return null; 76 | 77 | } -------------------------------------------------------------------------------- /_pkgdown.yml: -------------------------------------------------------------------------------- 1 | destination: reference 2 | 3 | # website will be referenced on https://pkgs.rstudio.com/ 4 | # Open a PR in https://github.com/rstudio/pkgs.rstudio.com 5 | url: https://pkgs.rstudio.com/revealjs/ 6 | 7 | template: 8 | package: tidytemplate 9 | bootstrap: 5 10 | bslib: 11 | primary: "#096B72" 12 | navbar-background: "#e6f3fc" 13 | trailing_slash_redirect: true 14 | opengraph: 15 | image: 16 | src: man/figures/logo.png 17 | alt: "revealjs package" 18 | twitter: 19 | creator: "@rstudio" 20 | card: summary 21 | 22 | development: 23 | version_tooltip: "Development version" 24 | 25 | home: 26 | links: 27 | - text: Learn more about R Markdown 28 | href: "https://rmarkdown.rstudio.com" 29 | 30 | # custom footer for rmarkdown ecosystem 31 | footer: 32 | structure: 33 | left: [rmd] 34 | right: [developed_by, p, built_with] 35 | components: 36 | p: "\n\n" 37 | rmd: | 38 | **revealjs** is a part of the **R Markdown** ecosystem of packages for creating 39 | computational documents in R.
Learn more at 40 | [rmarkdown.rstudio.com](https://rmarkdown.rstudio.com/). 41 | 42 | # structure of website themed for R Markdown ecosystem 43 | navbar: 44 | structure: 45 | left: [intro, examples, articles, reference, news] 46 | components: 47 | examples: 48 | text: Examples 49 | href: articles/examples.html 50 | 51 | # Add articles menu using 52 | # https://pkgdown.r-lib.org/dev/reference/build_articles.html#index-and-navbar 53 | # articles: 54 | 55 | news: 56 | releases: 57 | - text: "No blog post" 58 | # - text: Version 0.2 59 | # href: 60 | 61 | # structure example 62 | # reference: 63 | # - title: Output formats 64 | # desc: > 65 | # These output formats are for building ... 66 | # contents: 67 | # 68 | # - title: Previewing and rendering books 69 | # contents: 70 | # 71 | # - title: Publishing 72 | # desc: > 73 | # Publish... 74 | # 75 | # - title: Helper functions 76 | # desc: > 77 | # These functions are utility functions when working with **revealjs**. 78 | # contents: 79 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/test-grid-navigation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Grid 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 | 40 | 41 | 42 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/media.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Video, Audio and Iframes 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 |
20 | 21 |
22 |

Examples of embedded Video, Audio and Iframes

23 |
24 | 25 |
26 |

Iframe

27 | 28 |
29 | 30 |
31 |

Iframe Background

32 |
33 | 34 |
35 |

Video

36 | 37 |
38 | 39 |
40 |

Background Video

41 |
42 | 43 |
44 |

Auto-playing audio

45 | 46 |
47 | 48 |
49 |

Audio inside slide fragments

50 |
51 | Beep 1 52 | 53 |
54 |
55 | Beep 2 56 | 57 |
58 |
59 | 60 |
61 |

Audio with controls

62 | 63 |
64 | 65 |
66 | 67 |
68 | 69 | 70 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/customcontrols/README.md: -------------------------------------------------------------------------------- 1 | # Custom controls 2 | 3 | This plugin allows to add responsive custom controls to reveal.js which allow arbitrary positioning, layout, and behaviour of the controls. 4 | 5 | [Check out the live demo](https://rajgoel.github.io/reveal.js-demos/customcontrols-demo.html) 6 | 7 | 8 | ## Installation 9 | 10 | Copy the files `plugin.js` and `style.css` into the plugin folder of your reveal.js presentation, i.e. ```plugin/customcontrols``` and load the plugin as shown below. 11 | 12 | ```html 13 | 14 | 15 | 16 | 23 | ``` 24 | 25 | Note, without configuration you need to add 26 | 27 | ```javascript 28 | 29 | ``` 30 | 31 | between `````` and `````` of your HTML file because the defaults use [Font Awesome](http://fontawesome.io/). 32 | 33 | 34 | 35 | ## Configuration 36 | 37 | The plugin can be configured by adding custom controls and changing the layout of the slide number, e.g., by: 38 | 39 | 40 | ```javascript 41 | Reveal.initialize({ 42 | // ... 43 | customcontrols: { 44 | controls: [ 45 | { 46 | id: 'toggle-overview', 47 | title: 'Toggle overview (O)', 48 | icon: '', 49 | action: 'Reveal.toggleOverview();' 50 | }, 51 | { icon: '', 52 | title: 'Toggle chalkboard (B)', 53 | action: 'RevealChalkboard.toggleChalkboard();' 54 | }, 55 | { icon: '', 56 | title: 'Toggle notes canvas (C)', 57 | action: 'RevealChalkboard.toggleNotesCanvas();' 58 | } 59 | ] 60 | }, 61 | // ... 62 | 63 | }); 64 | ``` 65 | 66 | The `id` and `title` are optional. The configuration should be self explaining and any number of controls can be added. The style file can be altered to control the layout and responsiveness of the custom controls. 67 | 68 | ## License 69 | 70 | MIT licensed 71 | 72 | Copyright (C) 2020 Asvin Goel 73 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/test-dependencies-async.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Async Dependencies 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 | 28 | 29 | 30 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/test-pdf.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test PDF exports 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 | 75 | 76 | 77 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/controllers/focus.js: -------------------------------------------------------------------------------- 1 | import { closest } from '../utils/util.js' 2 | 3 | /** 4 | * Manages focus when a presentation is embedded. This 5 | * helps us only capture keyboard from the presentation 6 | * a user is currently interacting with in a page where 7 | * multiple presentations are embedded. 8 | */ 9 | 10 | const STATE_FOCUS = 'focus'; 11 | const STATE_BLUR = 'blur'; 12 | 13 | export default class Focus { 14 | 15 | constructor( Reveal ) { 16 | 17 | this.Reveal = Reveal; 18 | 19 | this.onRevealPointerDown = this.onRevealPointerDown.bind( this ); 20 | this.onDocumentPointerDown = this.onDocumentPointerDown.bind( this ); 21 | 22 | } 23 | 24 | /** 25 | * Called when the reveal.js config is updated. 26 | */ 27 | configure( config, oldConfig ) { 28 | 29 | if( config.embedded ) { 30 | this.blur(); 31 | } 32 | else { 33 | this.focus(); 34 | this.unbind(); 35 | } 36 | 37 | } 38 | 39 | bind() { 40 | 41 | if( this.Reveal.getConfig().embedded ) { 42 | this.Reveal.getRevealElement().addEventListener( 'pointerdown', this.onRevealPointerDown, false ); 43 | } 44 | 45 | } 46 | 47 | unbind() { 48 | 49 | this.Reveal.getRevealElement().removeEventListener( 'pointerdown', this.onRevealPointerDown, false ); 50 | document.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false ); 51 | 52 | } 53 | 54 | focus() { 55 | 56 | if( this.state !== STATE_FOCUS ) { 57 | this.Reveal.getRevealElement().classList.add( 'focused' ); 58 | document.addEventListener( 'pointerdown', this.onDocumentPointerDown, false ); 59 | } 60 | 61 | this.state = STATE_FOCUS; 62 | 63 | } 64 | 65 | blur() { 66 | 67 | if( this.state !== STATE_BLUR ) { 68 | this.Reveal.getRevealElement().classList.remove( 'focused' ); 69 | document.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false ); 70 | } 71 | 72 | this.state = STATE_BLUR; 73 | 74 | } 75 | 76 | isFocused() { 77 | 78 | return this.state === STATE_FOCUS; 79 | 80 | } 81 | 82 | onRevealPointerDown( event ) { 83 | 84 | this.focus(); 85 | 86 | } 87 | 88 | onDocumentPointerDown( event ) { 89 | 90 | let revealElement = closest( event.target, '.reveal' ); 91 | if( !revealElement || revealElement !== this.Reveal.getRevealElement() ) { 92 | this.blur(); 93 | } 94 | 95 | } 96 | 97 | } -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/css/theme/source/blood.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Blood theme for reveal.js 3 | * Author: Walther http://github.com/Walther 4 | * 5 | * Designed to be used with highlight.js theme 6 | * "monokai_sublime.css" available from 7 | * https://github.com/isagalaev/highlight.js/ 8 | * 9 | * For other themes, change $codeBackground accordingly. 10 | * 11 | */ 12 | 13 | // Default mixins and settings ----------------- 14 | @import "../template/mixins"; 15 | @import "../template/settings"; 16 | // --------------------------------------------- 17 | 18 | // Include theme-specific fonts 19 | 20 | @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); 21 | 22 | // Colors used in the theme 23 | $blood: #a23; 24 | $coal: #222; 25 | $codeBackground: #23241f; 26 | 27 | $backgroundColor: $coal; 28 | 29 | // Main text 30 | $mainFont: Ubuntu, 'sans-serif'; 31 | $mainColor: #eee; 32 | 33 | // Headings 34 | $headingFont: Ubuntu, 'sans-serif'; 35 | $headingTextShadow: 2px 2px 2px $coal; 36 | 37 | // h1 shadow, borrowed humbly from 38 | // (c) Default theme by Hakim El Hattab 39 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 40 | 41 | // Links 42 | $linkColor: $blood; 43 | $linkColorHover: lighten( $linkColor, 20% ); 44 | 45 | // Text selection 46 | $selectionBackgroundColor: $blood; 47 | $selectionColor: #fff; 48 | 49 | // Change text colors against dark slide backgrounds 50 | @include light-bg-text-color(#222); 51 | 52 | 53 | // Theme template ------------------------------ 54 | @import "../template/theme"; 55 | // --------------------------------------------- 56 | 57 | // some overrides after theme template import 58 | 59 | .reveal p { 60 | font-weight: 300; 61 | text-shadow: 1px 1px $coal; 62 | } 63 | 64 | section.has-light-background { 65 | p, h1, h2, h3, h4 { 66 | text-shadow: none; 67 | } 68 | } 69 | 70 | .reveal h1, 71 | .reveal h2, 72 | .reveal h3, 73 | .reveal h4, 74 | .reveal h5, 75 | .reveal h6 { 76 | font-weight: 700; 77 | } 78 | 79 | .reveal p code { 80 | background-color: $codeBackground; 81 | display: inline-block; 82 | border-radius: 7px; 83 | } 84 | 85 | .reveal small code { 86 | vertical-align: baseline; 87 | } -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/transitions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Slide Transitions 8 | 9 | 10 | 11 | 21 | 22 | 23 | 24 | 25 |
26 | 27 |
28 | 29 |
30 |

Default

31 |
32 | 33 |
34 |

Default

35 |
36 | 37 |
38 |

data-transition: zoom

39 |
40 | 41 |
42 |

data-transition: zoom-in fade-out

43 |
44 | 45 |
46 |

Default

47 |
48 | 49 |
50 |

data-transition: convex

51 |
52 | 53 |
54 |

data-transition: convex-in concave-out

55 |
56 | 57 |
58 |
59 |

Default

60 |
61 |
62 |

data-transition: concave

63 |
64 |
65 |

data-transition: convex-in fade-out

66 |
67 |
68 |

Default

69 |
70 |
71 | 72 |
73 |

data-transition: none

74 |
75 | 76 |
77 |

Default

78 |
79 | 80 |
81 | 82 |
83 | 84 | 85 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/test-multiple-instances-es5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Iframes 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 |
20 | 27 |
28 | 29 |
30 | 37 |
38 | 39 | 40 | 41 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/customcontrols/plugin.js: -------------------------------------------------------------------------------- 1 | /***************************************************************** 2 | ** Author: Asvin Goel, goel@telematique.eu 3 | ** 4 | ** A plugin replacing the default controls by custom controls. 5 | ** 6 | ** Version: 2.0.0 7 | ** 8 | ** License: MIT license (see LICENSE.md) 9 | ** 10 | ******************************************************************/ 11 | window.RevealCustomControls = window.RevealCustomControls || { 12 | id: 'RevealCustomControls', 13 | init: function(deck) { 14 | initCustomControls(deck); 15 | } 16 | }; 17 | 18 | const initCustomControls = function(Reveal){ 19 | var config = Reveal.getConfig().customcontrols || {}; 20 | 21 | var collapseIcon = config.collapseIcon || ''; 22 | var expandIcon = config.expandIcon || ''; 23 | var tooltip = config.tooltip || 'Show/hide controls'; 24 | 25 | var div = document.createElement( 'div' ); 26 | div.id = 'customcontrols'; 27 | 28 | var toggleButton = document.createElement( 'button' ); 29 | toggleButton.title = tooltip; 30 | toggleButton.innerHTML = '' + collapseIcon + '' + '' + expandIcon + ''; 31 | 32 | toggleButton.addEventListener('click', function( event ) { 33 | var div = document.querySelector("div#customcontrols"); 34 | if ( div.classList.contains('collapsed') ) { 35 | div.classList.remove('collapsed'); 36 | } 37 | else { 38 | div.classList.add('collapsed'); 39 | } 40 | }); 41 | 42 | div.appendChild(toggleButton); 43 | 44 | var controls = document.createElement( 'ul' ); 45 | for (var i = 0; i < config.controls.length; i++ ) { 46 | var control = document.createElement( 'li' ); 47 | if ( config.controls[i].id ) { 48 | control.id = config.controls[i].id; 49 | } 50 | control.innerHTML = ''; 51 | controls.appendChild( control ); 52 | } 53 | div.appendChild( controls ); 54 | 55 | 56 | document.querySelector(".reveal").appendChild( div ); 57 | 58 | document.addEventListener( 'resize', function( event ) { 59 | // expand controls to make sure they are visible 60 | var div = document.querySelector("div#customcontrols.collapsed"); 61 | if ( div ) { 62 | div.classList.remove('collapsed'); 63 | } 64 | } ); 65 | 66 | return this; 67 | 68 | }; 69 | 70 | -------------------------------------------------------------------------------- /pkgdown/assets/ace-1.2.3/theme-textmate.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/plugin/math/mathjax3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax 3 4 | * 5 | * @author Hakim El Hattab 6 | * @author Gerhard Burger 7 | */ 8 | export const MathJax3 = () => { 9 | 10 | // The reveal.js instance this plugin is attached to 11 | let deck; 12 | 13 | let defaultOptions = { 14 | tex: { 15 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ] 16 | }, 17 | options: { 18 | skipHtmlTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 19 | }, 20 | startup: { 21 | ready: () => { 22 | MathJax.startup.defaultReady(); 23 | MathJax.startup.promise.then(() => { 24 | Reveal.layout(); 25 | }); 26 | } 27 | } 28 | }; 29 | 30 | function loadScript( url, callback ) { 31 | 32 | let script = document.createElement( 'script' ); 33 | script.type = "text/javascript" 34 | script.id = "MathJax-script" 35 | script.src = url; 36 | script.async = true 37 | 38 | // Wrapper for callback to make sure it only fires once 39 | script.onload = () => { 40 | if (typeof callback === 'function') { 41 | callback.call(); 42 | callback = null; 43 | } 44 | }; 45 | 46 | document.head.appendChild( script ); 47 | 48 | } 49 | 50 | return { 51 | id: 'mathjax3', 52 | init: function(reveal) { 53 | 54 | deck = reveal; 55 | 56 | let revealOptions = deck.getConfig().mathjax3 || {}; 57 | let options = {...defaultOptions, ...revealOptions}; 58 | options.tex = {...defaultOptions.tex, ...revealOptions.tex} 59 | options.options = {...options.options, ...defaultOptions.options} 60 | options.startup = {...defaultOptions.startup, ...revealOptions.startup} 61 | 62 | let url = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'; 63 | options.mathjax = null; 64 | 65 | window.MathJax = options; 66 | 67 | loadScript( url, function() { 68 | // Reprocess equations in slides when they turn visible 69 | Reveal.addEventListener( 'slidechanged', function( event ) { 70 | MathJax.typeset(); 71 | } ); 72 | } ); 73 | 74 | } 75 | } 76 | 77 | }; 78 | -------------------------------------------------------------------------------- /tests/manual/test-widget-plotly.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Rmarkdown Presentation including Plotly" 3 | output: 4 | revealjs::revealjs_presentation 5 | --- 6 | 7 | # Setup 8 | 9 | ```{r, message=FALSE} 10 | knitr::opts_chunk$set(echo = FALSE) 11 | knitr::opts_template$set(demo = list(echo = TRUE, eval = FALSE)) 12 | xfun::pkg_attach2("plotly") 13 | xfun::pkg_load2("ggplot2") 14 | data(economics, package = "ggplot2") 15 | ``` 16 | 17 | 18 | # Simple example 19 | 20 | ```{r simple} 21 | set.seed(99) 22 | plot_ly() %>% 23 | add_trace( 24 | type = "scatter", 25 | mode = "markers+lines+text", 26 | x = 4:6, 27 | y = 4:6, 28 | text = replicate(3, praise::praise("You are ${adjective}! 🙌")), 29 | textposition = "right", 30 | hoverinfo = "text", 31 | textfont = list(family = "Roboto Condensed", size = 16) 32 | ) %>% 33 | layout(xaxis = list(range = c(3, 8))) 34 | ``` 35 | 36 | ## Code 37 | 38 | ```{r simple, opts.label = "demo"} 39 | ``` 40 | 41 | # Several plots 42 | 43 | ```{r multiple} 44 | p1 <- plot_ly(economics, x = ~date, y = ~unemploy) %>% 45 | add_lines(name = "unemploy") 46 | p2 <- plot_ly(economics, x = ~date, y = ~uempmed) %>% 47 | add_lines(name = "uempmed") 48 | subplot(p1, p2) 49 | ``` 50 | 51 | ## Code 52 | 53 | ```{r multiple, opts.label = "demo"} 54 | ``` 55 | 56 | 57 | # Events handler 58 | 59 | ```{r events, message=FALSE} 60 | xfun::pkg_attach2("htmlwidgets") 61 | plot_ly(mtcars, x = ~wt, y = ~mpg) %>% 62 | onRender(" 63 | function(el) { 64 | el.on('plotly_hover', function(d) { 65 | console.log('Hover: ', d); 66 | }); 67 | el.on('plotly_click', function(d) { 68 | console.log('Click: ', d); 69 | }); 70 | el.on('plotly_selected', function(d) { 71 | console.log('Select: ', d); 72 | }); 73 | } 74 | ") 75 | ``` 76 | 77 | ## Code 78 | 79 | ```{r events, opts.label = "demo"} 80 | ``` 81 | 82 | # Symbols 83 | 84 | ```{r symbols} 85 | vals <- schema(F)$traces$scatter$attributes$marker$symbol$values 86 | vals <- grep("-", vals, value = T) 87 | plot_ly() %>% 88 | add_markers( 89 | x = rep(1:12, each = 11, length.out = length(vals)), 90 | y = rep(1:11, times = 12, length.out = length(vals)), 91 | text = vals, 92 | hoverinfo = "text", 93 | marker = list( 94 | symbol = vals, 95 | size = 30, 96 | line = list( 97 | color = "black", 98 | width = 2 99 | ) 100 | ) 101 | ) 102 | ``` 103 | 104 | ## Code 105 | 106 | ```{r symbols, opts.label = "demo"} 107 | ``` 108 | 109 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/controllers/progress.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates a visual progress bar for the presentation. 3 | */ 4 | export default class Progress { 5 | 6 | constructor( Reveal ) { 7 | 8 | this.Reveal = Reveal; 9 | 10 | this.onProgressClicked = this.onProgressClicked.bind( this ); 11 | 12 | } 13 | 14 | render() { 15 | 16 | this.element = document.createElement( 'div' ); 17 | this.element.className = 'progress'; 18 | this.Reveal.getRevealElement().appendChild( this.element ); 19 | 20 | this.bar = document.createElement( 'span' ); 21 | this.element.appendChild( this.bar ); 22 | 23 | } 24 | 25 | /** 26 | * Called when the reveal.js config is updated. 27 | */ 28 | configure( config, oldConfig ) { 29 | 30 | this.element.style.display = config.progress ? 'block' : 'none'; 31 | 32 | } 33 | 34 | bind() { 35 | 36 | if( this.Reveal.getConfig().progress && this.element ) { 37 | this.element.addEventListener( 'click', this.onProgressClicked, false ); 38 | } 39 | 40 | } 41 | 42 | unbind() { 43 | 44 | if ( this.Reveal.getConfig().progress && this.element ) { 45 | this.element.removeEventListener( 'click', this.onProgressClicked, false ); 46 | } 47 | 48 | } 49 | 50 | /** 51 | * Updates the progress bar to reflect the current slide. 52 | */ 53 | update() { 54 | 55 | // Update progress if enabled 56 | if( this.Reveal.getConfig().progress && this.bar ) { 57 | 58 | let scale = this.Reveal.getProgress(); 59 | 60 | // Don't fill the progress bar if there's only one slide 61 | if( this.Reveal.getTotalSlides() < 2 ) { 62 | scale = 0; 63 | } 64 | 65 | this.bar.style.transform = 'scaleX('+ scale +')'; 66 | 67 | } 68 | 69 | } 70 | 71 | getMaxWidth() { 72 | 73 | return this.Reveal.getRevealElement().offsetWidth; 74 | 75 | } 76 | 77 | /** 78 | * Clicking on the progress bar results in a navigation to the 79 | * closest approximate horizontal slide using this equation: 80 | * 81 | * ( clickX / presentationWidth ) * numberOfSlides 82 | * 83 | * @param {object} event 84 | */ 85 | onProgressClicked( event ) { 86 | 87 | this.Reveal.onUserInput( event ); 88 | 89 | event.preventDefault(); 90 | 91 | let slides = this.Reveal.getSlides(); 92 | let slidesTotal = slides.length; 93 | let slideIndex = Math.floor( ( event.clientX / this.getMaxWidth() ) * slidesTotal ); 94 | 95 | if( this.Reveal.getConfig().rtl ) { 96 | slideIndex = slidesTotal - slideIndex; 97 | } 98 | 99 | let targetIndices = this.Reveal.getIndices(slides[slideIndex]); 100 | this.Reveal.slide( targetIndices.h, targetIndices.v ); 101 | 102 | } 103 | 104 | 105 | } -------------------------------------------------------------------------------- /.github/workflows/pr-commands.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | issue_comment: 5 | types: [created] 6 | 7 | name: pr-commands.yaml 8 | 9 | permissions: read-all 10 | 11 | jobs: 12 | document: 13 | if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/document') }} 14 | name: document 15 | runs-on: ubuntu-latest 16 | env: 17 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 18 | permissions: 19 | contents: write 20 | steps: 21 | - uses: actions/checkout@v4 22 | 23 | - uses: r-lib/actions/pr-fetch@v2 24 | with: 25 | repo-token: ${{ secrets.GITHUB_TOKEN }} 26 | 27 | - uses: r-lib/actions/setup-r@v2 28 | with: 29 | use-public-rspm: true 30 | 31 | - uses: r-lib/actions/setup-r-dependencies@v2 32 | with: 33 | extra-packages: any::roxygen2 34 | needs: pr-document 35 | 36 | - name: Document 37 | run: roxygen2::roxygenise() 38 | shell: Rscript {0} 39 | 40 | - name: commit 41 | run: | 42 | git config --local user.name "$GITHUB_ACTOR" 43 | git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" 44 | git add man/\* NAMESPACE 45 | git commit -m 'Document' 46 | 47 | - uses: r-lib/actions/pr-push@v2 48 | with: 49 | repo-token: ${{ secrets.GITHUB_TOKEN }} 50 | 51 | style: 52 | if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/style') }} 53 | name: style 54 | runs-on: ubuntu-latest 55 | env: 56 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 57 | permissions: 58 | contents: write 59 | steps: 60 | - uses: actions/checkout@v4 61 | 62 | - uses: r-lib/actions/pr-fetch@v2 63 | with: 64 | repo-token: ${{ secrets.GITHUB_TOKEN }} 65 | 66 | - uses: r-lib/actions/setup-r@v2 67 | 68 | - name: Install dependencies 69 | run: install.packages("styler") 70 | shell: Rscript {0} 71 | 72 | - name: Style 73 | run: styler::style_pkg() 74 | shell: Rscript {0} 75 | 76 | - name: commit 77 | run: | 78 | git config --local user.name "$GITHUB_ACTOR" 79 | git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" 80 | git add \*.R 81 | git commit -m 'Style' 82 | 83 | - uses: r-lib/actions/pr-push@v2 84 | with: 85 | repo-token: ${{ secrets.GITHUB_TOKEN }} 86 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reveal.js", 3 | "version": "4.2.1", 4 | "description": "The HTML Presentation Framework", 5 | "homepage": "https://revealjs.com", 6 | "subdomain": "revealjs", 7 | "main": "dist/reveal.js", 8 | "module": "dist/reveal.esm.js", 9 | "license": "MIT", 10 | "scripts": { 11 | "test": "gulp test", 12 | "start": "gulp serve", 13 | "build": "gulp build" 14 | }, 15 | "author": { 16 | "name": "Hakim El Hattab", 17 | "email": "hakim.elhattab@gmail.com", 18 | "web": "https://hakim.se" 19 | }, 20 | "repository": { 21 | "type": "git", 22 | "url": "git://github.com/hakimel/reveal.js.git" 23 | }, 24 | "engines": { 25 | "node": ">=10.0.0" 26 | }, 27 | "keywords": [ 28 | "reveal", 29 | "slides", 30 | "presentation" 31 | ], 32 | "devDependencies": { 33 | "@babel/core": "^7.14.3", 34 | "@babel/eslint-parser": "^7.14.3", 35 | "@babel/preset-env": "^7.14.2", 36 | "@rollup/plugin-babel": "^5.3.0", 37 | "@rollup/plugin-commonjs": "^19.0.0", 38 | "@rollup/plugin-node-resolve": "^13.0.0", 39 | "babel-plugin-transform-html-import-to-string": "0.0.1", 40 | "colors": "^1.4.0", 41 | "core-js": "^3.12.1", 42 | "fitty": "^2.3.0", 43 | "glob": "^7.1.7", 44 | "gulp": "^4.0.2", 45 | "gulp-autoprefixer": "^5.0.0", 46 | "gulp-clean-css": "^4.2.0", 47 | "gulp-connect": "^5.7.0", 48 | "gulp-eslint": "^6.0.0", 49 | "gulp-header": "^2.0.9", 50 | "gulp-tap": "^2.0.0", 51 | "gulp-zip": "^4.2.0", 52 | "highlight.js": "^10.0.3", 53 | "marked": "^2.0.3", 54 | "node-qunit-puppeteer": "^2.1.0", 55 | "qunit": "^2.17.2", 56 | "rollup": "^2.48.0", 57 | "rollup-plugin-terser": "^7.0.2", 58 | "sass": "^1.39.2", 59 | "yargs": "^15.1.0" 60 | }, 61 | "browserslist": "> 0.5%, IE 11, not dead", 62 | "eslintConfig": { 63 | "env": { 64 | "browser": true, 65 | "es6": true 66 | }, 67 | "parser": "@babel/eslint-parser", 68 | "parserOptions": { 69 | "sourceType": "module", 70 | "allowImportExportEverywhere": true, 71 | "requireConfigFile": false 72 | }, 73 | "globals": { 74 | "module": false, 75 | "console": false, 76 | "unescape": false, 77 | "define": false, 78 | "exports": false 79 | }, 80 | "rules": { 81 | "curly": 0, 82 | "eqeqeq": 2, 83 | "wrap-iife": [ 84 | 2, 85 | "any" 86 | ], 87 | "no-use-before-define": [ 88 | 2, 89 | { 90 | "functions": false 91 | } 92 | ], 93 | "new-cap": 2, 94 | "no-caller": 2, 95 | "dot-notation": 0, 96 | "no-eq-null": 2, 97 | "no-unused-expressions": 0 98 | } 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/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 | -------------------------------------------------------------------------------- /tests/testthat/test-utils.R: -------------------------------------------------------------------------------- 1 | test_that("reveal options are passed as pandoc variables", { 2 | expect_equal(process_reveal_option("a", "b"), pandoc_variable_arg("a", "b")) 3 | }) 4 | 5 | test_that("reveal options with boolean are transformed to JS bool", { 6 | expect_equal( 7 | process_reveal_option("a", TRUE), 8 | pandoc_variable_arg("a", "true") 9 | ) 10 | expect_equal( 11 | process_reveal_option("a", FALSE), 12 | pandoc_variable_arg("a", "false") 13 | ) 14 | }) 15 | 16 | test_that("reveal options slideNumbers is treated specifically", { 17 | expect_equal( 18 | process_reveal_option("slideNumber", "c/t"), 19 | pandoc_variable_arg("slideNumber", "'c/t'") 20 | ) 21 | expect_equal( 22 | process_reveal_option("slideNumber", TRUE), 23 | pandoc_variable_arg("slideNumber", "true") 24 | ) 25 | }) 26 | 27 | test_that("reveal options width / heigh in % are quoted", { 28 | expect_equal( 29 | process_reveal_option("width", "50%"), 30 | pandoc_variable_arg("width", "'50%'") 31 | ) 32 | expect_equal( 33 | process_reveal_option("height", "50%"), 34 | pandoc_variable_arg("height", "'50%'") 35 | ) 36 | expect_equal( 37 | process_reveal_option("width", 5), 38 | pandoc_variable_arg("width", "5") 39 | ) 40 | expect_equal( 41 | process_reveal_option("height", 5), 42 | pandoc_variable_arg("height", "5") 43 | ) 44 | }) 45 | 46 | test_that("reveal options for chalkboard plugins special handling", { 47 | expect_equal( 48 | process_reveal_option("chalkboard-background", "rgba(255,255,255,0.5)"), 49 | pandoc_variable_arg("chalkboard-background", "['rgba(255,255,255,0.5)']") 50 | ) 51 | expect_equal( 52 | process_reveal_option( 53 | "chalkboard-background", 54 | "['rgba(127,127,127,.1)', path + 'img/blackboard.png' ]" 55 | ), 56 | pandoc_variable_arg( 57 | "chalkboard-background", 58 | "['rgba(127,127,127,.1)', path + 'img/blackboard.png' ]" 59 | ) 60 | ) 61 | expect_equal( 62 | process_reveal_option("chalkboard-draw", c("a", "b")), 63 | pandoc_variable_arg("chalkboard-draw", "['a', 'b']") 64 | ) 65 | expect_equal( 66 | process_reveal_option("chalkboard-other", "dummy"), 67 | pandoc_variable_arg("chalkboard-other", "dummy") 68 | ) 69 | }) 70 | 71 | test_that("reveal options for autoAnimateStyles handling", { 72 | expect_equal( 73 | process_reveal_option("autoAnimateStyles", "padding"), 74 | pandoc_variable_arg("autoAnimateStyles", "['padding']") 75 | ) 76 | expect_equal( 77 | process_reveal_option("autoAnimateStyles", c("color", "padding")), 78 | pandoc_variable_arg("autoAnimateStyles", "['color', 'padding']") 79 | ) 80 | }) 81 | 82 | test_that("revealjs lib path is found in package", { 83 | expect_match(revealjs_lib_path(), "revealjs/(inst/)?reveal\\.js-") 84 | expect_true(dir.exists(revealjs_lib_path())) 85 | }) 86 | 87 | test_that("Version of revealjs can be retrieved", { 88 | expect_s3_class(revealjs_version(), "numeric_version") 89 | }) 90 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/test/test-multiple-instances.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Iframes 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 |
20 | 27 |
28 | 29 |
30 | 37 |
38 | 39 | 96 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/examples/multiple-presentations.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Multiple Presentations 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |
21 |
Deck 1, Slide 1
22 |
Deck 1, Slide 2
23 |
24 |

 25 | 							import React, { useState } from 'react';
 26 | 							function Example() {
 27 | 							  const [count, setCount] = useState(0);
 28 | 							}
 29 | 						
30 |
31 |
32 |
33 | 34 |
35 |
36 |
Deck 2, Slide 1
37 |
Deck 2, Slide 2
38 |
39 | 46 |
47 |
48 |

The Lorenz Equations

49 | 50 | \[\begin{aligned} 51 | \dot{x} & = \sigma(y-x) \\ 52 | \dot{y} & = \rho x - y - xz \\ 53 | \dot{z} & = -\beta z + xy 54 | \end{aligned} \] 55 |
56 |
57 |
58 |
59 | 60 | 68 | 69 | 70 | 71 | 72 | 73 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /inst/reveal.js-4.2.1/js/controllers/notes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Handles the showing and 3 | */ 4 | export default class Notes { 5 | 6 | constructor( Reveal ) { 7 | 8 | this.Reveal = Reveal; 9 | 10 | } 11 | 12 | render() { 13 | 14 | this.element = document.createElement( 'div' ); 15 | this.element.className = 'speaker-notes'; 16 | this.element.setAttribute( 'data-prevent-swipe', '' ); 17 | this.element.setAttribute( 'tabindex', '0' ); 18 | this.Reveal.getRevealElement().appendChild( this.element ); 19 | 20 | } 21 | 22 | /** 23 | * Called when the reveal.js config is updated. 24 | */ 25 | configure( config, oldConfig ) { 26 | 27 | if( config.showNotes ) { 28 | this.element.setAttribute( 'data-layout', typeof config.showNotes === 'string' ? config.showNotes : 'inline' ); 29 | } 30 | 31 | } 32 | 33 | /** 34 | * Pick up notes from the current slide and display them 35 | * to the viewer. 36 | * 37 | * @see {@link config.showNotes} 38 | */ 39 | update() { 40 | 41 | if( this.Reveal.getConfig().showNotes && this.element && this.Reveal.getCurrentSlide() && !this.Reveal.print.isPrintingPDF() ) { 42 | 43 | this.element.innerHTML = this.getSlideNotes() || 'No notes on this slide.'; 44 | 45 | } 46 | 47 | } 48 | 49 | /** 50 | * Updates the visibility of the speaker notes sidebar that 51 | * is used to share annotated slides. The notes sidebar is 52 | * only visible if showNotes is true and there are notes on 53 | * one or more slides in the deck. 54 | */ 55 | updateVisibility() { 56 | 57 | if( this.Reveal.getConfig().showNotes && this.hasNotes() && !this.Reveal.print.isPrintingPDF() ) { 58 | this.Reveal.getRevealElement().classList.add( 'show-notes' ); 59 | } 60 | else { 61 | this.Reveal.getRevealElement().classList.remove( 'show-notes' ); 62 | } 63 | 64 | } 65 | 66 | /** 67 | * Checks if there are speaker notes for ANY slide in the 68 | * presentation. 69 | */ 70 | hasNotes() { 71 | 72 | return this.Reveal.getSlidesElement().querySelectorAll( '[data-notes], aside.notes' ).length > 0; 73 | 74 | } 75 | 76 | /** 77 | * Checks if this presentation is running inside of the 78 | * speaker notes window. 79 | * 80 | * @return {boolean} 81 | */ 82 | isSpeakerNotesWindow() { 83 | 84 | return !!window.location.search.match( /receiver/gi ); 85 | 86 | } 87 | 88 | /** 89 | * Retrieves the speaker notes from a slide. Notes can be 90 | * defined in two ways: 91 | * 1. As a data-notes attribute on the slide
92 | * 2. As an