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

@alsandre/element-editor

v1.0.9

Published

A lightweight, plugin-based element editor for drag, resize, and tooltip interactions

Downloads

15

Readme

Element Editor

A lightweight, plugin-based element editor for drag, resize, and tooltip interactions.

Installation

npm

npm install @alsandre/element-editor

CDN

<script src="https://unpkg.com/@alsandre/element-editor/dist/element-editor.min.js"></script>

Quick Start

npm Usage

import {BannerEditor, DragPlugin, ResizePlugin, TooltipPlugin} from "@alsandre/element-editor";

const editor = new BannerEditor(element, container).use(DragPlugin).use(ResizePlugin).use(TooltipPlugin);

// Or use the convenience function
import {createEditor} from "@alsandre/element-editor";
const editor = createEditor(element, container);

CDN Usage

<script>
  const editor = new ElementEditor.BannerEditor(element, container).use(ElementEditor.DragPlugin).use(ElementEditor.ResizePlugin).use(ElementEditor.TooltipPlugin);
</script>

Events

editor.on("dragEnd", (data) => console.log("Position:", data.x, data.y));
editor.on("resizeActive", (data) => console.log("Size:", data.width, data.height));

Development Notes

Development Progress

  • ✅ setup html structure for preview and form (VERY SIMPLE)
  • ✅ setup form to preview sync
  • ✅ make preview box draggable
  • ✅ bind form to box
  • ✅ restrict ad box from moving out of preview container
  • ✅ decompose drag event
  • ✅ add resize handler
  • ✅ I decided to use existing drag system for resize, but it does not work as expected.
  • ✅ I need to decompose the drag event and add a resize event.
  • ✅ finetune and update dragcore and apply updates to main script
  • ✅ need to finilize the resize handler
  • ✅ add resizer to the top left corner
  • ✅ add resizer to the right center
  • ✅ add resizer to the remaining points
  • ✅ fix resize jump issue (canvas coordinate system mismatch)
  • ✅ add width and height input to form
  • ✅ sync form and preview
  • ✅ refactor handle types to compass directions (se, nw, e, etc.)
  • ✅ standardize handle positioning logic between static and resize states
  • ✅ convert to plugin architecture (BannerEditor core + DragPlugin, ResizePlugin, TooltipPlugin)
  • ✅ update functions section to use plugin system instead of direct object references
  • ✅ clean up legacy files and streamline script.js functions
  • ✅ package for npm and CDN distribution (element-editor)

Handle Type Conversion Table

Refactoring handle types from descriptive names to compass directions for cleaner code and direct CSS cursor mapping.

| Current | New | CSS Cursor | | --------------- | ---- | ----------- | | bottom-right | se | se-resize | | top-left | nw | nw-resize | | top-right | ne | ne-resize | | bottom-left | sw | sw-resize | | right-center | e | e-resize | | left-center | w | w-resize | | top-center | n | n-resize | | bottom-center | s | s-resize |