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

react-morphable

v1.0.0

Published

A resizable, rotatable and draggable div as a component for React

Downloads

8

Readme

React-Morphable

View the Demo

A simple div that can be resized, rotated and / or dragged.

You can either use the <Morphable> element directly, without taking care about the position / size / rotation state of the div (while still getting access to it), or <MorphableCore> if you want the control of position / size / rotation state.

Installation

Using npm:

$ npm install --save react-morphable

Usage

import { Morphable, MorphableCore } from 'react-morphable';

render() {
  return (
    <Morphable>
      // children
    </Morphable>
  );

  // or

  return (
    <MorphableCore
      position={this.state.position}
      size={this.state.size}
      rotation={this.state.rotation}
    >
      // children
    </MorphableCore>
  );

}

Props

These props apply only to <MorphableCore>.

Prop | Type | Default --- | --- | --- position | { width: number, height: number } | { width: 150, height: 150 } size | { x: number, y: number } | { x: 0, y: 0} rotation | number | 0

These props apply to both <MorphableCore> and <Morphable>. Note regarding CSS classes : react-morphable uses React-JSS, therefore it's not feasible to edit directly the class of a div as the class name is not fixed. That's why the prop classProps has been added (classes prop is already taken by react-JSS, we couldn't use it), thanks to which you can give any class name you want to any HTML element inside react-morphable, allowing to customize anything.

Prop | Type | Default --- | --- | --- children | React.Element | any isMorphable | bool | true lockAspectRatio | bool | false disableDrag | bool | false disableResize | bool | false disableRotation | bool | false disableGuides | bool | true disableBounds | {forDrag: forResize: true} | {forDrag: true, forResize: true (always, not yet set-up)} bounds | {top: left: bottom: right: } | { top: 0, left: 0, bottom: 0, right: 0 } magnetismGrids | { drag: resize: rotation: } | { drag: 5, resize: 5, rotation: 5 } debug | bool | false onHandleMouseDown | func({ e }) | void onDragStart | func({ e }) | void onDrag | func({ e, x, y }) | void onDragStop | func({ e }) | void onResizeStart | func({ e }) | void onResize | func({ e, x, y, width, height }) | void onResizeStop | func({ e }) | void onRotateStart | func({ e }) | void onRotate | func({ e, rotation }) | void onRotateEnd | func({ e }) | void styles | { root: , rootTransformed: , corner: , topLeftCorner: , topRightCorner: , bottomLeftCorner: , bottomRightCorner: , middleTopCorner: , middleRightCorner: , middleBottomCorner: , middleLeftCorner: , middleTopAboveCorner: } | void classProps | { root: , rootTransformed: , corner: , topLeftCorner: , topRightCorner: , bottomLeftCorner: , bottomRightCorner: , middleTopCorner: , middleRightCorner: , middleBottomCorner: , middleLeftCorner: , middleTopAboveCorner: } | void

To-do

  • [x] styles
  • [x] classes
  • [x] bounds for drag
  • [ ] bounds for resize
  • [ ] minimum height, minimum width
  • [ ] accessibility
  • [ ] refactoring ?