1.0.0 • Published 1 year ago

@rbuljan/zoompan v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

ZoomPan

Zoomable and pannable area with scrollbars.
Inspired by graphical editors like Photoshop.

Supports Pinch gesture for scaling

Zoom pan area - Image edit software scroll area

Example

See: example/index.html for a use-case.

Getting started

npm i @rbuljan/zoompan

HTML:

<!-- index.html -->
<div id="myEditor"></div>

I.e: using Vite.js

// main.js

import "@rbuljan/zoompan/zoompan.css";
import ZoomPan from "@rbuljan/zoompan";

const ZP = new ZoomPan("#myEditor", {
  width: 800,
  height: 600,
  onInit() {
    this.elCanvas.style.backgroundColor = "gold";
    this.elCanvas.textContent = "Hello ZoomPan!";
  },
  onChange() {
    console.log(this);
  },
  // other options here...
});

console.log(ZP);

Options

NameTypeDefaultDescription
widthNumber800Canvas width
heightNumber600Canvas height
offsetXNumber0Canvas offset X (from center)
offsetYNumber0Canvas offset Y (from center)
scaleNumber1Initial Scale (if not fitted on init)
scaleOldNumberscaleOld Scale value (before changed)
scaleFactorNumber0.2Scale factor
scaleMinNumber0.05Scale min value
scaleMaxNumber10Scale max value
transitionDurationNumber250ms transition duration
paddNumber40Min visible canvas padd
panStepNumber50Pixels pan step value
scrollbarsBooleantrueShow scrollbars
scrollbarsWidthNumber14px scrollbars size
fitOnInitBooleantrueFix canvas into viewport on init
canDragBooleantrueIf canvas can be pointer-dragged
canPinchBooleantrueAllow two-finger pinch

Options Events

NameDescription
onInit()Triggered on class instantiation
onScale()Triggered on scale change
onPan()Triggered on pan (pointermove)
onChange()Triggered on: init, pan, scale
onPanStart()Triggered on pan (pointerdown)
onPanEnd()Triggered on pan (pointerup)

Methods

NameReturnsDescription
panTo(offsetX, offsetY)Pan canvas to new offset (canvas center)
scaleTo(scale [, originX, originY])Scale canvas from point origin (canvas center)
scaleUp()Scale up. Alias for scaleDelta(1)
scaleDown()Scale down. Alias for scaleDelta(-1)
scaleDelta(delta)Scale by delta
resize(width, height)Change canvas width and height
updateScrollbars()Reposition and resize scrollbars
fit()Fit canvas into viewport center (contain)
getArea(){width, height}Get fictive "scroll area" size
getCanvas(){x, y, width, height}Get Canvas data
getViewport(){x, y, width, height}Get Viewport data
getPointerOrigin(Event){originX, originY}Get pointer XY relative to viewport center
getWheelDelta(Event)numberGet wheel delta +1 or -1 on wheel-down
calcScaleDelta(delta)numberGet the new scale value from delta

Licence

MIT