@bimetal/whiteboard-vue-components

Default Vue 3 whiteboard — infinite-canvas pan/zoom, shapes, drag/resize/rotate, connectors, freehand, smart guides, group, frames, comments, laser, style panel, theming.
2,250
Install
npm install @bimetal/whiteboard-vue-components
Latest Version:0.40.0
Vue:3
License:Apache-2.0
Last Updated:Oct 10, 2026
Links: npm
Maintainer: biederbe

@bimetal/whiteboard-vue-components

The default Vue 3 whiteboard for BIMETAL — a thin binding over the canonical @bimetal/whiteboard-headless controller. Every interaction decision (tool FSM, create/drag/marquee, pan/zoom math, input policy, lock) lives in the controller; this package owns only the DOM: converting clientX/Y → boardPoint through the viewport, wiring window pointer + wheel events, and rendering.

Features

  • Infinite canvas — pan (wheel/trackpad) and zoom-to-cursor (Ctrl/⌘+wheel).
  • Shape tools — rectangle, ellipse, diamond, text, sticky note, frame; create by dragging out the bounds (keyboard shortcuts v/r/o/d/t/n/f).
  • Select + move — click, marquee, multi-select; drag a whole selection as one undo. Lock/unlock, bring-to-front / send-to-back.
  • Transform — eight resize handles (rotation-aware) + a rotate knob on the single selection; a style panel (fill/stroke/width/dash/opacity/font).
  • Connectors — bound edges between shapes; endpoints re-route automatically on move/resize/rotate (the path is derived, never stored).
  • Freehand — a pen tool that captures a stroke and simplifies it (RDP).
  • Smart guides + snapping — dragging snaps edges/centres to other shapes (zoom-aware threshold) and shows alignment guides.
  • Align + distribute — align a multi-selection to its bounding box, or evenly distribute three-plus shapes — each one undo-able batch.
  • Group / ungroup — group ≥2 shapes under a container (Ctrl/⌘+G, dragging it moves the whole group); ungroup dissolves it (Ctrl/⌘+Shift+G).
  • Frames — drop a shape into a frame to nest it (one undo for move + reparent); drag it out to detach. The frame highlights as a drop target while dragging.
  • Duplicate / copy / paste — clone the selection (and its group children) at an offset — Ctrl/⌘+D, or Ctrl/⌘+C then Ctrl/⌘+V — each one undo-able batch.
  • Laser pointer — a transient fading trail for presenting (no shape, no undo).
  • Comments — pin a thread to a shape or a free point; edit, resolve/reopen, delete. Shape-anchored comments track the shape; deleting it cascades them away.
  • Edit text by double-click; undo toast; light/dark theming.

Event-sourced: the whole canvas is one aggregate — undo + full history for free.

Usage

<script setup lang="ts">
import { Whiteboard } from '@bimetal/whiteboard-vue-components';
import { createWhiteboardStore } from '@bimetal/whiteboard-data';
import '@bimetal/whiteboard-vue-components/styles';

const store = createWhiteboardStore();
// …seed the canvas…
</script>

<template>
  <Whiteboard :store="store" canvas-id="canvas-1" />
</template>

License

Apache-2.0

Related Packages

@lupinum/vue-board

Vue 3 board components and composables built on top of @lupinum/board-core.

931 1
@oh-just-another/diagram-vue

Vue 3 wrapper for the diagram editor — a thin component over the custom element.

0 9
@lupinum/board-core

Headless node-based board engine for spatial editors, diagramming tools, and whi...

1,067 1
@dumbshow/vue

The Vue editor for dumbshow: ComposerApp and its panes over @dumbshow/core — mou...

883 0
@syhr/sy-graph

Planar graphic config tool based on @meta2d.

5,060

Version History

Version Released Vue License
0.40.0 ^3.3.0 Apache-2.0
0.39.0 ^3.3.0 Apache-2.0
0.38.0 ^3.3.0 Apache-2.0
0.37.0 ^3.3.0 Apache-2.0
0.36.0 ^3.3.0 Apache-2.0
Pre-releases (3)
Version Released Vue License
1.0.0-rc.3 ^3.3.0 Apache-2.0
1.0.0-rc.2 ^3.3.0 Apache-2.0
1.0.0-rc.1 ^3.3.0 PolyForm-Noncommercial-1.0.0