New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

canvas-area

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

canvas-area

lightweight html container element as a controller parent for one or more canvas elements. It allows zoom, pan and resize interactions

  • 0.4.5
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

canvas-area

What is it ... ?

canvas-area is a lightweight custom html element as a controller parent for one or more canvas elements. It allows zoom, pan and resize interactions.

Show me ...

show

Where is the markup code ...

<canvas-area id="ca" width="401" height="301" resizable="both">
    <canvas id="c"></canvas>
</canvas-area>

Attributes

  • width: width of element in px.
  • height: height of element in px.
  • resizable: one of ['none', 'horizontal', 'vertical', 'both'].
  • cartesian: true or false

Example please ...

try it out ...

Show me the scripting API ...

canvas-area behaves as a standard html container element with known inherited DOM properties and methods. Additionally it offers properties ...

PropertyTypeValueDefault
widthNumberwidth of element in px300 px
heightNumberheight of element in px150 px
resizableStringone of ['none', 'horizontal', 'vertical', 'both']'none'
cursorStringsimple interface to CSS cursor attribute.'auto'
view{x,y,scl}origin location x,y in px and scaling factor scl{0,0,1}
cartesianBooleantrue: y-axis pointing up,
false: y-axis pointing down
false

... methods ...

MethodArgumentsReturnsComment
pan({dx,dy})dx: delta x
dy: delta y
undefinedorigin displacement. Modifies view property
zoom({x,y,scl})x: x-center
y: y-center
scl: factor
undefinedzoom about point {x,y} by factor scl. Modifies view property
pntToUsr({x,y})pointpointtransform argument point (device coordinates) to result point (user coordinates) with respect to view property
notify(key,value)key: event type
value: event data
undefinednotify observers of event type key about event value
on(key,handler)key: event type
handler: event handler
undefinedregister handler with event type key.

... and events, which can be observed via observe method.

TypeObjectValue
'pointer'{x,y,...}*User has moved the pointer.
'drag'{x,y,...}*User has moved the pointer with left button down.
'resize'{width,height}User did resize canvas-area element
'view'{x,y,scl}User modified the view property via pan, zoom, ...
'buttondown'{x,y,...}*User has pressed the pointer device's button down.
'buttonup'{x,y,...}*User has released the pointer device's button.
'pointerenter'{x,y,...}*pointer has entered the canvas-area.
'pointerleave'{x,y,...}*pointer has left the canvas-area.

{x,y,...}* custom event data object:

PropertyDescription
x,yPointer location in device coordinates.
dx,dyPointer displacement in device coordinates since last pointer event.
buttonsDevice buttons pressed (1:left, 2: right, 4: middle button).
deltaMouse wheel delta units.

CDN

Use following link for canvas-area.js.

  • https://gitcdn.xyz/cdn/goessner/canvas-area/master/canvas-area.js

FAQ

  • Can we use multiple canvases with canvas-area ?

    • canvas-area is a container element for potentially multiple canvas elements.
    • Multiple canvases are mostly used as layers stacked on top of each others in practice. Please note here:
      • for every canvas element except the first one use position:absolute; style.
      • stacking level can be made explicite using z-index: 5; style.
      • canvas elements are transparent by default. So avoid giving them individual background colors.
      • canvas-area is managing the resize of its canvas children, but not their - then necessary - redraw.
      • canvas-area is managing the view parameters for pan and zoom, but does not apply those values to the canvas contexes. Do that by yourself while redrawing or by using the on('view',...) handler.
  • Does not work properly with Mobile Device X and Touch Screen Y ?

    • Desktop browsers only are addressed primarily at current.
    • Implementation of touch events is experimental (pan works with touch and resize also using a pen now).
    • Issues with Microsoft Edge.
  • Can you implement feature X and possibly feature Y ?

    • canvas-area serves my personal needs very well as it is.
    • So ... no, I won't.
    • Please go ahead and implement it by yourself.
    • If you think, your enhancement is of common interest, you are very welcome, to send me a pull request.

Changelog

[0.4.5] on January 19, 2018

  • chainable method on(key,handler) added.
  • method observe(key,handler) marked as deprecated. Use on(key,handler) instead.
  • renamed event property buttons to btn in [drag,pointer,buttondown,buttonup,pointerenter,pointerleave] event.
  • necessary styles display: block; overflow: hidden; automatically added as inline style while constructing.

[0.4.0] on January 06, 2018

  • Initial release.

License

canvas-area is licensed under the MIT License

© Stefan Gössner

Keywords

FAQs

Package last updated on 19 Jan 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc