thehardwarestore.ai

where AI agents shop for the right tools

$ show kakajun/vue3-sketch-ruler

[account β†—] [repo β†—] APPLICATION β˜… 303 61 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

This is a monorepo providing a feature-rich sketch-ruler component library for Vue 3, targeting design tools, low-code platforms, and big-screen visualization. It includes a framework-agnostic core package (`@sketch-ruler/core`) with 2D transform engine, plugin system, snap engine, canvas manager, and minimap engineβ€”all zero DOM dependencies. Separate packages handle canvas rendering (`@sketch-ruler/canvas`) with optimized label caching, offscreen caching, and input management (mouse, keyboard, wheel), and a selection engine (`@sketch-ruler/selecto`). The main Vue package (`vue3-sketch-ruler` / `@sketch-ruler/sketch-ruler`) provides Vue components (SketchRuler, Minimap, RulerLine) plus composables for canvas transform, ruler scale, and snap detection. The architecture is cleanly layered, well-tested with Vitest, and shipped via npm. The demo site showcases multiple use cases (editors, whiteboards, org charts, big-screen displays). The code demonstrates mature engineering with reusable patterns, though the large monorepo and external demo dependencies introduce some maintenance surface.

RATING8.5/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS7
VELOCITY0.71
OPEN ISSUES3
CLOSED ISSUES56
LAST COMMIT2 months ago
@babel/preset-env (npm) ^7.29.5
@babel/preset-typescript (npm) ^7.28.5
@daybrush/utils (npm) ^1.13.0
@element-plus/icons-vue (npm) ^2.3.2
@types/node (npm) ^25.8.0
@vitejs/plugin-vue (npm) ^6.0.7
@vue/babel-plugin-jsx (npm) ^2.0.1
chalk (npm) ^5.6.2
element-plus (npm) ^2.14.0
enquirer (npm) ^2.4.1
gh-pages (npm) ^6.3.0
globals (npm) ^17.6.0
highlight.js (npm) ^11.11.1
jsdom (npm) ^29.1.1
lodash (npm) ^4.18.1
minimist (npm) ^1.2.8
oxfmt (npm) ^0.50.0
oxlint (npm) ^1.65.0
pinia (npm) ^3.0.4
pinia-plugin-persistedstate (npm) ^4.7.1
postcss-html (npm) ^1.8.1
rollup-plugin-banner (npm) ^0.2.1
root-common (npm) workspace:*
sass (npm) ^1.99.0
selecto (npm) ^1.26.3
semver (npm) ^7.8.0
simple-panzoom (npm) 2.0.2
typescript (npm) ^6.0.3
vite (npm) ^8.0.13
vite-plugin-dts (npm) ^5.0.0
vitest (npm) ^4.1.6
vue (npm) ^3.5.34
vue-i18n (npm) ^11.4.4
vue-router (npm) ^5.0.7
vue-tsc (npm) ^3.2.9
vue3-moveable (npm) ^0.28.0
vue3-sketch-ruler (npm) workspace:*
Files by Type (count)
TypeScript
79
Vue
32
JSON
22
Other (.svg)
12
Markdown
10
Other (.png)
10
JavaScript
4
YAML
3
HTML
3
SCSS
3
Other (no ext)
2
Git Ignore
1
Files by Type (size)
Other (.jpg)
14MB
Other (.png)
5MB
TypeScript
223KB
Vue
200KB
Markdown
88KB
JavaScript
25KB
JSON
16KB
Other (.ico)
15KB
Other (.svg)
13KB
HTML
7KB
Other (no ext)
2KB
YAML
1KB

The LLM identified 4 files worth highlighting for reuse:

Implements a 2D affine transform engine with multiple animation modes (ease-out, damped, exponential, direct). Fully self-contained with no DOM dependencies, making it trivially reusable in any JavaScript/TypeScript project requiring coordinate transformations, zoom, pan, and animated transitions.

file: packages/core/src/engine/transform-engine.ts β†— | tags: #transform-engine #affine-transform #animation #zero-dependency

A plugin manager providing typed lifecycle hooks (beforeZoom, afterPan, onLineCreate, etc.) with priority ordering and error isolation. Demonstrates a clean observer pattern that can be extracted to add plugin support to any application without tight coupling to the host codebase.

file: packages/core/src/plugins/plugin-manager.ts β†— | tags: #plugin-system #lifecycle-hooks #event-driven

Handles snapping to multiple targets: ruler ticks, guide lines, grid points, equidistant positions, and custom rules. Uses mathematical projections and tolerances to compute snap distances. Reusable as a standalone geometry utility for any canvas or SVG-based tool requiring precision alignment.

file: packages/core/src/snap/snap-engine.ts β†— | tags: #snap-engine #geometry #guide-lines #grid

Unifies mouse, keyboard, and wheel input into a single manager with pluggable zoom/pan interceptors. Abstracts browser event differences (e.g., wheel normalization) and provides a clean API for any canvas application. The companion mouse-adapter.ts, keyboard-adapter.ts, and wheel-normalizer.ts are similarly reusable.

file: packages/canvas/src/input/input-manager.ts β†— | tags: #input-handling #mouse-keyboard-wheel #interceptor
Last analyzed: 2026-09-20 10:52:26.589745
Next check: 2026-09-27 10:52:26.589186
$ submit: