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

@danielhaim/imageemitter

v1.2.1

Published

A utility for loading images with event emission, utilizing an extended EvEmitter.

Downloads

2

Readme

Image Emitter

npm version Downloads GitHub

ImageEmitter is a streamlined utility designed for image loading tasks through event-driven approach. The utility manages the loading of images and extends its functionality to categorize images based on their dimensions and format.

Key Attributes

  • Facilitates image loading with event-driven techniques.
  • Includes basic event handling methods such as done, progress, always, and fail.
  • Keeps track of image loading status including progress, completion, and potential errors.
  • Built using JavaScript ES6 for improved functionality and ease of understanding.

Demo

Table of Contents

Installation

You can install this module via npm:

$ npm i @danielhaim/image-emitter

Usage

import ImageEmitter from "@danielhaim/image-emitter";

// Initialize image loader for selected images
const imageEmitter = new ImageEmitter(document.querySelectorAll("img"));

// Event Listener: Image Loading Progress
imageEmitter.on("progress", (loadedCount, totalImages) => {
    console.log(`Progress: ${loadedCount}/${totalImages} images loaded.`);
});

// Event Listener: All Images Successfully Loaded
imageEmitter.on("done", () => {
    console.log("Success: All images have been loaded.");
});

// Event Listener: Image Loading Failure
imageEmitter.on("fail", () => {
    console.error("Error: One or more images failed to load.");
});

// Event Listener: Image Loading Completion (Regardless of Success/Failure)
imageEmitter.on("always", () => {
    console.log("Info: Image loading process completed.");
});

API

Classes and Methods

ImageEvents

A foundational class for event handling.

  • constructor(): Initializes the event and once-event handlers.
  • on(eventName, listener): Registers an event listener.
  • once(eventName, listener): Registers a one-time event listener.
  • off(eventName, listener): Removes an event listener.
  • emitEvent(eventName, args): Emits an event to all registered listeners.
  • allOff(): Removes all event listeners.

ImageEmitter

Extends ImageEvents for image loading.

  • constructor(elements): Initializes with a set of DOM elements.
  • initImages(): Prepares images for loading.
  • checkImages(): Checks and starts the loading process for all images.
  • loadImage(imgElement, callback): Loads a single image.
  • loadBackgroundImage(url, callback): Loads a background image.
  • progress(loadedCount, totalImages): Tracks the progress of image loading.
  • hasBackgroundImage(element): Checks if an element has a background image.
  • getBackgroundImageUrl(element): Retrieves the background image URL of an element.

ImageHelper

A utility class for image analysis and classification.

  • constructor(options): Initializes the class with custom size definitions and an option to use CSS classes or data attributes.
    • options.sizeDefinitions: Custom size definitions for classifying images (e.g., { sm: 600, md: 1200, lg: 1500, xl: Infinity }).
    • options.useClasses: Boolean to choose between using CSS classes or data attributes.
  • static getNaturalDimensions(img): Returns the natural dimensions of an image.
  • static getImageFormat(img): Determines the format of an image (landscape, portrait, square).
  • getImageSize(img): Classifies the size of an image based on custom size definitions.
  • classifyImage(img): Returns the format and size classification of an image.
  • classifyImages(images): Applies format and size classification to a collection of images by either adding CSS classes or data-img-format and data-img-size attributes.

Event Listeners

  • progress: Triggered during the image loading process, provides the count of loaded images and the total.
  • done: Triggered when all images are loaded successfully.
  • fail: Triggered if any image fails to load.
  • always: Triggered when the image loading process is completed, regardless of success or failure.

Repository Structure

├── LICENSE
├── README.md
├── __test__
│   ├── ImageEmitter.test.js
│   ├── ImageHelper.test.js
│   ├── test-image1.jpeg
│   ├── test-image2.jpeg
│   └── test-image3.jpeg
├── babel.config.js
├── dist
│   ├── imageEmitter.amd.js
│   └── imageEmitter.js
├── index.js
├── jest.config.js
├── package-lock.json
├── package.json
├── src
│   ├── ImageEvents.js
│   ├── ImageHelper.js
│   └── index.js
└── webpack.config.js