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

pcb-trace-animation

v2.0.2

Published

A library for generating PCB-like line patterns on an HTML5 canvas.

Readme

Library that allows generating random line patterns that simulate PCB traces, Implementation example: Portafolio Jackestar

Use

npm i pcb-trace-animation

or pnpm, bun...

import PCBTraceAnimation from 'pcb-trace-animation';

Features

  • Small & dependency-free: Pure JS, renders to a <canvas> 2D context.
  • Configurable behaviour: Speed, colors, spacing, and randomness are adjustable via options.
  • Collision-aware: Internal grid tracking prevents traces from overlapping already-drawn paths.

Quick Start

  • Add a canvas to your HTML and include the script that exports PCBTraceAnimation.
<canvas id="trace" style="width:100%;height:100%;display:block"></canvas>
<script src="src/pcb-trace-animation.js"></script>
<script>
  const canvas = document.getElementById('trace');
  // Pass options as needed
  const anim = new PCBTraceAnimation(canvas, {
    traceColor: '#0f0',
    viaColor: '#ff0',
    speed: 4,
  });
  anim.start();
  // call anim.stop() to halt
</script>

Scope

  • new PCBTraceAnimation(traceElement, options = {}) : Create an instance.
    • traceElement - a <canvas> element (2D context will be used).
    • options - configuration object (see options list below).
  • start() : Initialize canvas/grid and begin the animation loop.
  • stop() : Stop the animation and disconnect resize observer if enabled.
  • drawLine(...), drawVia(...): Utility methods exist on the class (used internally). drawLine can be used to draw predefined lines programmatically: drawLine(posX, posY, length, isHorizontal = true, isInverted = false).

Defaults

The library accepts an options object. Defaults are taken from the implementation; core options include:

  • traceColor: #000 — color used for stroke lines (alias: color).
  • viaColor: #000 — fill color for vias.
  • autoResize: true — when enabled, keeps the canvas sized to window and reinitializes grid on resize.
  • speed: 4 — pixels per frame movement speed for trace segments.
  • gridResolution: Math.max(2, lineWidth || 3) — internal grid cell size used to track occupied areas.
  • lineSpacing: 10 — spacing between generated parallel lines.
  • minLength: 10 — minimum length for something like programmatic line placement (internal use).
  • lineWidth: 3 — line/stroke width.
  • lineMargin: 10 — margin from the start of a drawn line before placing generated segments.
  • lineAngleVariation: 0.008 — per-frame probability a moving segment turns 90°.
  • lineEndCoefficient: 0.005 — per-frame probability a moving segment ends and draws a via.

Use color as a shorthand for traceColor when convenient.

Example: Drawing a horizontal line programmatically

// Draw a horizontal full-width starter line at 30% height
anim.drawLine(0, 0.3, 1.0, true, false);

Demo & Example

See the repository example/ folder for a minimal runnable demo showing how to wire up the canvas and script.

License

MIT License

TODO

  • better DOC
  • no % logic
  • draw rectangle
  • angle draw
  • better comments
  • better CI/CD
  • better test
  • decent example
  • CDN/Module version