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 🙏

© 2024 – Pkg Stats / Ryan Hefner

clipper2-js

v1.2.4

Published

![npm](https://img.shields.io/npm/v/clipper2-js)

Downloads

420

Readme

clipper2-js

npm

A native Typescript/Javascript port of Clipper2

image

Overview

clipper2-js was ported from the original Clipper2 C# implementation. However, the Java implementation was used as guidance for some conversion solutions

Clipper2 performs all clipping operations using integer coordinates internally. Since Javascript doesn't have a native integer data type, all values are rounded. To avoid precision loss, its recommended to scale up any values before adding paths and scale down, by the same factor, the clipped results.

The Clipper class provides static methods for clipping, path-offsetting, minkowski-sums and path simplification. For more complex clipping operations (e.g. when clipping open paths or when outputs are expected to include polygons nested within holes of others), use the Clipper64 class directly.

Documentation

Clipper2 HTML documentation

Example

const subj = new Paths64();
const clip = new Paths64();
subj.push(Clipper.makePath([ 100, 50, 10, 79, 65, 2, 65, 98, 10, 21 ]));
clip.push(Clipper.makePath([98, 63, 4, 68, 77, 8, 52, 100, 19, 12]));
const solution = Clipper.Intersect(subj, clip, FillRule.NonZero);

Developer Notes

  • An Angular project is used to host clipper2-js, but the library does not depend on Angular.
  • Jest is used for unit tests
  • All line units tests are passing. Some polygon tests are still failing and needs further investigation. However, the example demonstrates its basically working.

Support

Bug fixes will be integrated when original clipper2 has new releases.

Conversion to Typescript

  • ChatGPT did most of the code conversion. It took a few more days to get resulting code to compile. A few more days to add unit tests and remove bugs I'd introduced.
  • Context or return objects are used to replicate C# ref (pass-by-reference) behaviour.
  • Uses lower-case (x, y) for point coordinates.
  • Variables and methods have been renamed to camelCase
  • Jest units test included