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

ep_data_tables

v0.1.0

Published

Accessible, collaborative data tables for Etherpad with rich inline formatting and timeslider support.

Readme

ep_data_tables

Accessible, collaborative tables for Etherpad. Tables remain part of Etherpad's line-based document model, so cell content can retain hyperlinks, font styling, inline images, authorship colors, and compatible block styles.

Table editing in Etherpad

Features

  • Grid picker for creating tables
  • Add and remove rows or columns
  • Keyboard navigation between cells
  • Pointer-based column resizing and precise width controls
  • Optional caption, column headers, and row headers
  • Backward-compatible rendering of existing table metadata
  • Read-only table rendering in the Etherpad timeslider
  • Preservation of unknown metadata during intentional edits

Installation

From the Etherpad directory:

pnpm run plugins i ep_data_tables

Restart Etherpad after installation. This release supports Etherpad 3.3.2 and later 3.x releases on Node.js 20 or newer.

Editing tables

Use the table toolbar button to choose an initial size. The table menu supports row and column insertion or deletion, table deletion, and table properties.

The Table Properties dialog can set:

  • an accessible caption;
  • whether the first row contains column headers;
  • whether the first column contains row headers; and
  • exact column widths.

Keyboard users can move through cells with Tab and arrow-key navigation. Width controls provide a keyboard-accessible alternative to drag handles.

Data model and compatibility

Each table row remains one Etherpad line. A tbljson line attribute stores the table ID, row position, column count, widths, and additive accessibility metadata. Cell text remains ordinary attributed Etherpad content.

Historical width values are rendered without opening-time normalization. Intentional metadata changes normalize widths to 100 percent with at most four decimal places. Unknown metadata fields are retained so historical and future content can round-trip safely.

Legacy tables treat the first row as column headers by default. Live-editor cells keep the established <td> structure and expose header relationships through ARIA roles and references. The read-only timeslider uses native table-header elements.

Limitations

  • Merged cells are not supported.
  • Copying complete table structures between pads is not supported.
  • Very large tables can be expensive because Etherpad renders each row through its collaborative line model.
  • Mobile autocorrect, predictive text, dictation, handwriting input, IMEs, writing-assistance extensions, and other unusual text-entry paths may bypass the editor's input guards and split or otherwise disrupt a table row. Disable those features while editing tables if problems occur.

Export support

This package does not register HTML or document-export hooks. Install a separately reviewed table-export plugin if exported tables are required. Separating export behavior prevents a partial renderer from intercepting Etherpad's general export pipeline.

Development

pnpm install --frozen-lockfile
pnpm test
pnpm lint

The implementation is derived from the ep_tables5 family and is distributed under the Apache License 2.0. See LICENSE for details.