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

joplin-plugin-visual-tables

v0.0.1

Published

A [Joplin](https://joplinapp.org/) plugin that renders tables as real, styled tables directly inside the Markdown editor — and lets you edit them visually without leaving the editor.

Readme

Visual Tables

A Joplin plugin that renders tables as real, styled tables directly inside the Markdown editor — and lets you edit them visually without leaving the editor.

Instead of staring at raw | --- | --- | syntax, you see a proper table. Click a cell to jump straight into editing, use hover controls to add rows and columns, or right-click for a full set of table operations.

Desktop only. Requires Joplin 3.5+.

Features

  • Live table rendering — tables are rendered as <table> elements inside the Markdown editor (CodeMirror 6), styled to match your Joplin theme.
  • Cursor-aware editing — the table a cell belongs to turns back into raw Markdown the moment your cursor or selection touches it, so it always stays fully editable as text.
  • Click to edit a cell — click any rendered cell and the caret lands exactly inside that cell's Markdown source.
  • Hover controls to grow the table
    • appears at the right edge to add a column;
    • appears at the bottom edge to add a row;
    • controls reveal themselves contextually as the mouse approaches the corresponding edge.
  • Right-click context menu with an icon toolbar:
    • Insert row above / below
    • Insert column left / right
    • Clear cell
    • Delete row / Delete column
    • The clicked cell is highlighted while the menu is open so you can see what the action applies to.
  • Toolbar button — an Insert table button in the Markdown editor toolbar inserts a ready-to-fill table template.
  • Theme-aware styling — all colors come from Joplin editor CSS variables, so tables and menus follow your light/dark theme.
  • Robust parsing — tables are detected from the editor's syntax tree (Lezer Markdown), empty cells are handled correctly, and escaped pipes (\|) inside cells are respected.

Usage

Insert a table

Click the Insert table button in the Markdown editor toolbar. A starter table is inserted at the cursor:

| Header 1 | Header 2 |
| --- | --- |
|  |  |
|  |  |

Edit a cell

Click any cell in a rendered table — the table switches to raw Markdown and the cursor is placed inside the cell you clicked. Move the cursor out of the table and it renders again automatically.

Add rows and columns

Hover over a rendered table:

  • move toward the right edge to reveal the add column button;
  • move toward the bottom edge to reveal the add row button.

Row / column operations

Right-click any cell to open the icon toolbar:

| Icon group | Actions | | --- | --- | | Rows | Insert row above, Insert row below | | Columns | Insert column left, Insert column right | | Cell | Clear cell | | Delete | Delete row, Delete column |

Some actions are disabled when they would break the table (e.g. you can't delete the last column, and the header / delimiter rows can't be removed). Hover an icon to see its tooltip.

How it works

The plugin registers a CodeMirror 6 content script (ContentScriptType.CodeMirrorPlugin). It:

  • finds tables via the editor's Lezer Markdown syntax tree;
  • replaces each table block with a rendered widget using a StateField-backed DecorationSet (block/replace decorations must come from a state field in CM6, not a view plugin);
  • skips rendering for any table that intersects the current selection, keeping it editable;
  • applies edits as single CodeMirror transactions computed from positions in the syntax tree, so the underlying Markdown formatting is preserved.

The plugin only activates in the CodeMirror 6 Markdown editor. In the legacy editor it does nothing.

Installation

From the Joplin plugin repository

  1. Open Joplin → Tools → Options → Plugins.
  2. Search for Visual Tables.
  3. Click Install and restart Joplin.

Manual installation

  1. Download the latest .jpl from the releases.
  2. Open Joplin → Tools → Options → Plugins.
  3. Use the gear/⚙ menu → Install from file and select the .jpl.
  4. Restart Joplin.

Building from source

npm install
npm run dist

License

MIT