# svg.resize.js
An extension of [svg.js](https://github.com/svgdotjs/svg.js) which allows to resize elements which are selected with [svg.select.js](https://github.com/svgdotjs/svg.select.js)
# Demo
For a demo see http://svgdotjs.github.io/svg.resize.js/
# Get Started
Install `svg.js`, `svg.select.js` and `svg.resize.js` using npm:
```bash
npm i @svgdotjs/svg.js @svgdotjs/svg.select.js @svgdotjs/svg.resize.js
```
Or get it from a cnd:
```html
```
Select and resize a rectangle using this simple piece of code:
```ts
var canvas = new SVG().addTo('body').size(500, 500)
canvas.rect(50, 50).fill('red').select().resize()
```
# Usage
Activate resizing
```ts
rect.select().resize()
```
Deactivate resizing
```ts
rect.resize(false)
```
Preserve aspect ratio, resize around center and snap to grid:
```ts
rect.resize({ preserveAspectRatio: true, aroundCenter: true, grid: 10, degree: 0.1 })
```
# Options
- `preserveAspectRatio`: Preserve the aspect ratio of the element while resizing
- `aroundCenter`: Resize around the center of the element
- `grid`: Snaps the shape to a virtual grid while resizing
- `degree`: Snaps to an angle when rotating
# Events
While resizing, a `resize` event is fired. It contains the following properties (in `event.detail`):
- `box`: The resulting bounding box after the resize operation
- `angle`: The resulting rotation angle after the resize operation
- `eventType`: The type of resize operation (the event fired by the select plugin)
- `event`: The original event
- `handler`: The resize handler
```ts
rect.on('resize', (event) => {
console.log(event.detail)
})
```
# Contributing
```bash
git clone https://github.com/svgdotjs/svg.resize.js.git
cd svg.resize.js
npm install
npm run dev
```
# Migration from svg.js v2
- The option naming changed a bit. Please double check
- The former events were removed. The resize event now serves the same purpose