New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@ludovicm67/simple-whiteboard

Package Overview
Dependencies
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ludovicm67/simple-whiteboard

Simple Whiteboard is a simple and lightweight web component that can be integrated in any web application

latest
Source
npmnpm
Version
0.7.0
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

Simple Whiteboard

NPM FOSSA Status

Home · Docs · Demo

Simple Whiteboard is a simple web-based whiteboard application that allows users to draw on a canvas.

The application is built as a Web Component using LitElement. This allows the whiteboard to be easily embedded in any web application regardless of the framework used.

Features

  • Different drawing tools:
    • Rectangle
    • Circle
    • Line
    • Arrow
    • Pen
    • Text
    • Sticky note
    • Picture
  • Move the canvas using the Move tool, the middle mouse button, or scrolling
  • Reorder items in the stacking order (bring forward / send backward / to front / to back)
  • Erase items by dragging the Eraser over them
  • Clear the canvas
  • Undo / redo (Ctrl/Cmd+Z, Ctrl/Cmd+Shift+Z)
  • Support mouse and touch input
  • Optional dotted grid background
  • Pan & pinch-to-zoom (zoom follows the cursor / pinch center)
  • Export as a PNG image: the current view, the full board, or a selected area

Usage

Add the <simple-whiteboard> element to your page and drop the default tools in its tools slot:

<simple-whiteboard locale="en">
  <simple-whiteboard--tool-defaults slot="tools"></simple-whiteboard--tool-defaults>
</simple-whiteboard>

Attributes

AttributeTypeDefaultDescription
localestringenThe UI language.
dotted-backgroundbooleantrueRender a dotted grid behind the content. Use ="false" to hide.
hide-locale-pickerbooleanfalseHide the language picker from the menu.
hide-tool-optionsbooleanfalseHide the floating tool-options panel (useful for a compact/embedded board).
skip-clear-confirmationbooleanfalseClear the board without asking for a confirmation first.
debugbooleanfalseLog debug information and show the pointer coordinates.

Undo / redo

Every drawing, edit, move, resize, deletion and clear can be undone and redone, either with the toolbar buttons, the keyboard (Ctrl/Cmd+Z to undo, Ctrl/Cmd+Shift+Z or Ctrl+Y to redo), or programmatically:

whiteboard.undo();
whiteboard.redo();
whiteboard.canUndo(); // boolean
whiteboard.canRedo(); // boolean

A history-changed event (detail: { canUndo, canRedo }) is emitted whenever availability changes, so a host application can keep its own controls in sync.

Theming

The look can be tweaked with CSS custom properties, for example:

simple-whiteboard {
  --sw-accent: #7c3aed;
}

Performance

The whiteboard is designed to stay light on the CPU:

  • redraws are coalesced with requestAnimationFrame, so many updates in the same frame only trigger a single render;
  • items that are outside the visible viewport are skipped (viewport culling);
  • the dotted background only computes and draws the dots that are visible.

Development

npm install        # install the dependencies
npm run dev        # start the dev server
npm test           # run the unit tests (Node's built-in test runner)
npm run test:e2e   # run the Playwright end-to-end tests
npm run build      # type-check and build the library -> dist/
npm run build:site # build the marketing site      -> dist-site/

There are two layers of tests: fast unit tests for the pure lib/controller modules (npm test), and end-to-end tests under e2e/ that drive the real component in a browser — drawing, editing, undo/redo, export, the menu, i18n, cross-tab sync and the site pages (npm run test:e2e, which starts the dev server automatically). The first run needs the browser: npx playwright install chromium.

The dev server serves three pages:

PageDescription
/Landing page (index.html)
/app.htmlThe interactive whiteboard demo
/api.htmlAPI reference (attributes, methods, events, …)
/404.htmlNot-found page (served by GitHub Pages)

Site assets live in public/ (favicons, robots.txt); sitemap.xml is generated at build time, taking each page's lastmod from its last git commit. None of them are copied into the published package.

There are two separate build outputs:

  • npm run build produces dist/ — the library only (JS bundle, source map and TypeScript declarations). This is what gets published to npm (files: ["dist"]); it contains no HTML.
  • npm run build:site produces dist-site/ — the three pages above, bundled for hosting (this is what the GitHub Pages workflow deploys).

Used Technologies

  • LitElement - A simple base class for creating fast, lightweight web components.
  • TypeScript - A typed superset of JavaScript that compiles to plain JavaScript.
  • Rough.js - A small graphics library that lets you draw in a sketchy, hand-drawn-like, style.
  • Perfect Freehand - A tiny library for rendering perfect freehand lines.
  • Lucide Icons - Beautiful & consistent icons.

License

Simple Whiteboard is licensed under the MIT License.

FOSSA Status

Keywords

whiteboard

FAQs

Package last updated on 25 Aug 2026

Related posts