# ToolEvent

Extends `[Event](Event%20701eceeb8e6f49ec8a30675a8da31f48.md)`

ToolEvent The ToolEvent object is received by the `Tool`’s mouse event handlers `tool.onMouseDown`, `tool.onMouseDrag`, `tool.onMouseMove` and `tool.onMouseUp`. The ToolEvent object is the only parameter passed to these functions and contains information about the mouse event.

## Properties

* `type`

  The type of tool event.

  * Values:
  * `'mousedown'`, `'mouseup'`, `'mousemove'`, `'mousedrag'`
  * Type:
  * `String`
* `point`

  The position of the mouse in project coordinates when the event was fired.

  * Type:
  * `Point`

  Example:

  ```jsx
  function onMouseDrag(event) {
      // the position of the mouse when it is dragged
      console.log(event.point);
  }

  function onMouseUp(event) {
      // the position of the mouse when it is released
      console.log(event.point);
  }
  ```
* `lastPoint`

  The position of the mouse in project coordinates when the previous event was fired.

  * Type:
  * `Point`
* `downPoint`

  The position of the mouse in project coordinates when the mouse button was last clicked.

  * Type:
  * `Point`
* `middlePoint`

  The point in the middle between `lastPoint` and `point`. This is a useful position to use when creating artwork based on the moving direction of the mouse, as returned by `delta`.

  * Type:
  * `Point`
* `delta`

  The difference between the current position and the last position of the mouse when the event was fired. In case of the mouseup event, the difference to the mousedown position is returned.

  * Type:
  * `Point`
* `count`

  The number of times the mouse event was fired.

  * Type:
  * `Number`
* `item`

  The item at the position of the mouse (if any).

  If the item is contained within one or more `Group` or `CompoundPath` items, the most top level group or compound path that it is contained within is returned.

  * Type:
  * `Item`

## Methods

* `toString()`
  * Returns:
  * `String` — a string representation of the tool event

## Properties inherited from `Event`

* `timeStamp`

  The time at which the event was created, in milliseconds since the epoch.

  Read only.

  * Type:
    * `Number`
* `modifiers`

  The current state of the keyboard modifiers.

  Read only.

  * Type:
    * `object`
  * See also:
    * `Key.modifiers`

## Methods inherited from `Event`

* `preventDefault()`

  Cancels the event if it is cancelable, without stopping further propagation of the event.
* `stopPropagation()`

  Prevents further propagation of the current event.
* `stop()`

  Cancels the event if it is cancelable, and stops stopping further propagation of the event. This is has the same effect as calling both `stopPropagation`() and `preventDefault`().

  Any handler can also return `false` to indicate that `stop()` should be called right after.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://paperjs.typogram.co/user-interaction-and-events/toolevent.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
