add transcript view ('r') for text-to-speech read-aloud extensions

Read-aloud browser extensions cannot walk a reveal.js deck: slides
outside the current one are display:none and the visible page text is
indexed only once at page load, so such extensions stop after the title
slide. Pressing 'r' now toggles a transcript view -- a single scrollable
page containing every slide's content and speaker notes (overview TOC
lists excluded, fragments shown, rebuilt on every open) -- which
extensions can read from start to finish. Styled in the ids theme;
closes on click or Escape.

Change-Id: Ia3df9dfa68b9699d318d747831ac8a0e270c8271
diff --git a/tests/testthat/test-slide_timing.R b/tests/testthat/test-slide_timing.R
index 219a60d..8159149 100644
--- a/tests/testthat/test-slide_timing.R
+++ b/tests/testthat/test-slide_timing.R
@@ -235,6 +235,24 @@
   expect_true(any(grepl("Überblick", html, fixed = TRUE)))
 })
 
+test_that("transcript view script is included", {
+  skip_if_not_pandoc()
+  rmd <- local_temp_rmd_file(
+    "---",
+    "title: Transcript test",
+    "output: revealjs.ids::revealjs_presentation",
+    "---",
+    "",
+    "## Slide",
+    "",
+    "::: notes",
+    "Note text",
+    ":::"
+  )
+  html <- .render_and_read(rmd, xml = FALSE)
+  expect_true(any(grepl("ids-transcript", html)))
+})
+
 test_that("a user-supplied totalTime is respected", {
   skip_if_not_pandoc()
   rmd <- local_temp_rmd_file(