@photobox/interact

0.2.0 • Public • Published

Interact

Add interactions to elements: drag, resize, rotate.

Build status

CircleCI

Demo

To run the demo, just do yarn build and open /demo/dist/demo.html in your browser.

How to use

const listener = (event) => {
  /*
    event.target: HTMLElement: Interactable object
    event.currentTarget: HTMLElement: : Interactable object
    event.interaction: String: Current action: ['move', 'resize', 'rotate', null]
    event.edges: Object: Edges being moved on resize: {
      top: Boolean
      left: Boolean
      right: Boolean
      bottom: Boolean
    }
    event.rect: Object: Selection position on move: {
      top: Number
      left: Number
    }, Selection box on resize: {
      top: Number
      left: Number
      width: Number
      height: Number
    }
    event.rotate: Number: Rotation degree on rotate
    event.rotated: Boolean
  */
};

// interactable can be eaither a selector or a HTMLElement
Interaction.create(interactable, {
  // Enable resizing for the interactable. Default: false
  isResizable: true,
  // Enable dragging for the interactable. Default: false
  isDraggable: true,
  // Enable rotation for the interactable. Default: false
  isRotatable: true,
  // The rotation pivot. Default: [0, 0] (top, left)
  pivot: [0.5, 0.5],
  // The angle of rotation. Default: 5 (in degrees)
  rotationAngle: 15
})
// Event fired when the selection zone appears
.on('select', listener)
// Event fired when the selection zone dissapears
.on('unselect', listener)
// Event fired when a pointing device button is pressed on the interactable
.on('down', listener)
// Event fired when a pointing device button is released over the interactable
.on('up', listener)
// Event fired when the interactable is being moved
.on('move', listener)
// Event fired when the interactable is being resized
.on('resize', listener)
// Event fired when the interactable is being rotated
.on('rotate', listener);

Test

Just run yarn test.

You may want to use the demo app just to be sure everything's still OK :)

Publish

Use yarn version:[patch|minor|major] to update version. A commit is created with version bump in package.json. A tag is created too. If pushed to git, circleci will deploy a new version on npm.js from that tag.

❯ yarn version:patch
yarn run v1.7.0
$ yarn version --patch
info Current version: 0.0.24
info New version: 0.0.25
✨  Done in 3.79s.

❯ git push origin v0.0.25

Readme

Keywords

none

Package Sidebar

Install

npm i @photobox/interact

Weekly Downloads

23

Version

0.2.0

License

SEE LICENSE IN <LICENSE>

Unpacked Size

18.8 kB

Total Files

5

Last publish

Collaborators