npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@gbaudrit/revealjs-speakerview

v0.1.0

Published

Speaker view plugin for Reveal.js

Readme

@gbaudrit/revealjs-speakerview

A speaker view plugin for Reveal.js with slide timers, pacing indicators, and live slide previews.

Features

  • Dual slide preview — current slide (zoomable) + next slide
  • Slide timer — countdown per slide based on data-pacing (minutes)
  • Global timer — total remaining based on data-total on the first slide
  • Pacing card — color-coded indicator (blue = ahead, green = on time, red = late)
  • Blinking background — visual alert when slide time is running out
  • Navigation badges — horizontal / vertical / fragment position
  • Speaker notes
  • Keyboard shortcutsS to open the speaker view (configurable)

Install

npm install @gbaudrit/revealjs-speakerview

Requires reveal.js >= 5 as a peer dependency.

Usage

import Reveal from 'reveal.js';
import Markdown from 'reveal.js/plugin/markdown/markdown.esm.js';
import SpeakerView from '@gbaudrit/revealjs-speakerview';

const deck = new Reveal({
  plugins: [Markdown, SpeakerView()]
});
deck.initialize();

The speaker window opens on S (configurable via openKey). It is served from
/speaker-view when using the Vite plugin, or from
/node_modules/@gbaudrit/revealjs-speakerview/dist/speaker.html otherwise.

Options

SpeakerView({
  // Route served by speakerViewVite() (default: '/speaker-view')
  // Override with the path to speaker.html if not using the Vite plugin
  speakerUrl: '/speaker-view',

  // Key to open the speaker view window (single uppercase letter, default: 'S')
  openKey: 'S',

  // Speaker view configuration (all optional — defaults shown)
  config: {
    // Timers
    DEFAULT_PACING_SEC:    60,    // fallback seconds per slide when no data-pacing

    // Blinking background alert
    BLINK_THRESHOLD:       0.3,   // < 1 = ratio of slide time remaining, >= 1 = seconds remaining
    BLINK_DURATION_MS:     300,   // blink cycle duration in ms
    BLINK_STOP_SEC:        30,    // stop blinking after N seconds
    BLINK_STOP_ON_ELAPSED: true,  // stop blinking immediately when slide time elapses

    // Pacing card color thresholds
    PACING_AHEAD_SEC:      60,    // seconds ahead threshold → blue
    PACING_LATE_SEC:       30,    // seconds late threshold → red
    PACING_GRADIENT_RANGE: 4,     // multiplier on PACING_AHEAD/LATE_SEC to reach full hue extreme

    // Pacing card hue/sat/lightness
    PACING_HUE_AHEAD:      240,   // hue (0-360) when very ahead — blue
    PACING_HUE_OK:         120,   // hue (0-360) when on time — green
    PACING_HUE_LATE:       0,     // hue (0-360) when very late — red
    PACING_SAT_OK:         45,    // saturation % at on-time center
    PACING_SAT_EXTREME:    80,    // saturation % at extremes
    PACING_LIT_OK:         44,    // lightness % at on-time center
    PACING_LIT_EXTREME:    32,    // lightness % at extremes

    // Slide-timer background gradient
    BG_HUE_FULL:           120,   // hue when full slide time remains — green
    BG_HUE_EMPTY:          0,     // hue when slide time is elapsed — red
    BG_SAT:                90,    // saturation %
    BG_LIT:                45,    // lightness %
    BG_ENABLED:            true,  // set to false to disable the background color

    // Layout & zoom
    DECK_SPLIT:            '40% 1fr', // grid-template-rows for the right column (next slide / notes)
    CURRENT_SLIDE_ZOOM:    1.3,   // zoom factor for the current slide preview
    NEXT_SLIDE_ZOOM:       1.3,   // zoom factor for the next slide preview
  }
})

Slide annotations

<!-- .slide: data-total="45" data-pacing="5" -->
# Title slide

---
<!-- .slide: data-pacing="10" -->
# Chapter
  • data-total (minutes) — on the first slide, sets the total presentation time
  • data-pacing (minutes) — per-slide planned duration

License

MIT