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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@exnext/annihilation.js

v1.0.0

Published

The library to add the annihilation effects on DOM element.

Readme

annihilation.js

The library to add the annihilation effects on DOM element.

Live demo

Live demo

NPM

npm install @exnext/annihilation.js

Initialization

<script type='text/javascript' src='annihilation.js'></script>

or

import { annihilation } from '@exnext/annihilation';

Options

interface IAnnihilationOptions {
    element: string | HTMLElement;
    removeElement: boolean;
    columns?: number;
    rows?: number;
    animationCssClass?: string;
}

Details for columns and rows

If neither columns nor rows are defined then default value for columns is 10. For defined columns without rows, rows will be computed proportional by element size. The same is for defined rows without columns. You can also define values for columns and rows. Then piece (cell) of the converted image won't be square.

Executing annihilation

To execute annihilation on DOM element you should invoke doIt method after defined all properties and events. Look at examples below.

Events

To register event use the on method

on(name: string, callback: Function): this;
interface ICellParams {
    /* Number of columns */
    columns: number;
    /* Number of rows */
    rows: number;
    /* X-Position of cell */
    column: number;
    /* Y-Position of cell */
    row: number;
    /* DOM element to annihilation */
    element: HTMLElement;
    /* Cell, piece of annihilation element*/
    cell: HTMLElement;
}
interface IBeforeAnnihilation {
    /* DOM element to annihilation */
    element: HTMLElement;
    /* Prepared element used in annihilation effect */
    annihilationElement: HTMLElement;
}
export interface IAfterAnnihilation {
    /* DOM element to annihilation */
    element: HTMLElement;
}
interface ICellAnimationEnd {
    /* Still existing cells */
    cellsLeft: number;
    /* Cell details */
    cellParams: ICellParams;
}

Simple usage

<img src="image.jpg" id="img_demo" />

<script>
    annihilation({ element: '#img_demo' }).doIt();
</script>

Example usage

<img src="image.jpg" id="img_demo" />

<script>
    annihilation({
        element: '#img_demo',
        columns: 20,
        rows: 20,
        animationCssClass: 'animate__animated animate__zoomOut'
    })
        .on('created-cell', (params) => {
            let multiplier = params.row + params.column;
            params.cell.style.animationDelay = 0.05 * multiplier + 's';
        })
        .doIt();
</script>

Used with animate.css, bootstrap or others

You may use the popular library with prepared animations or another that you know. Look at the live demo to see some examples.

Preview render content before annihilation

The annihilation.js uses html2canvas library to create the image used for annihilation effects. Sometimes it doesn't look good, there could be some trouble with that. You can use annihilationPreview to check the converted image before using the main annihilation library.

<script type='text/javascript' src='annihilation.js'></script>

or

import { annihilationPreview } from '@exnext/annihilation';
<div id="demo">
    <img src="some_image.jpg" />
    <div> Any text </div>
</div>

<script>
    annihilationPreview({ element: '#demo' }).doIt();
</script>

TODO

  • replacing html2canvas library with something faster
  • adding more custom animation effects