function makeEventPacket(eveType, targetInfo, event) {
    return {
        type: eveType,
        event: event,
        // target can only be an element that is not silent.
        target: targetInfo.target,
        // topTarget can be a silent element.
        topTarget: targetInfo.topTarget,
        cancelBubble: false,
        offsetX: event.zrX,
        offsetY: event.zrY,
        gestureEvent: event.gestureEvent,
        pinchX: event.pinchX,
        pinchY: event.pinchY,
        pinchScale: event.pinchScale,
        wheelDelta: event.zrDelta,
        zrByTouch: event.zrByTouch,
        which: event.which,
        stop: stopEvent
    };
}
[Drag outside]:

That is, triggering `mousemove` and `mouseup` event when the pointer is out of the
zrender area when dragging. That is important for the improvement of the user experience
when dragging something near the boundary without being terminated unexpectedly.

We originally consider to introduce new events like `pagemovemove` and `pagemouseup`
to resolve this issue. But some drawbacks of it is described in
https://github.com/ecomfe/zrender/pull/536#issuecomment-560286899

Instead, we referenced the specifications:
https://www.w3.org/TR/touch-events/#the-touchmove-event
https://www.w3.org/TR/2014/WD-DOM-Level-3-Events-20140925/#event-type-mousemove
where the the mousemove/touchmove can be continue to fire if the user began a drag
operation and the pointer has left the boundary. (for the mouse event, browsers
only do it on `document` and when the pointer has left the boundary of the browser.)

So the default `HandlerProxy` supports this feature similarly: if it is in the dragging
state (see `pointerCapture` in `HandlerProxy`), the `mousemove` and `mouseup` continue
to fire until release the pointer. That is implemented by listen to those event on
`document`.
If we implement some other `HandlerProxy` only for touch device, that would be easier.
The touch event support this feature by default.

Note:
There might be some cases that the mouse event can not be
received on `document`. For example,
(A) `useCapture` is not supported and some user defined event listeners on the ancestor
of zr dom throw Error .
(B) `useCapture` is not supported Some user defined event listeners on the ancestor of
zr dom call `stopPropagation`.
In these cases, the `mousemove` event might be keep triggered event
if the mouse is released. We try to reduce the side-effect in those cases.
That is, do nothing (especially, `findHover`) in those cases. See `isOutsideBoundary`.

Note:
If `HandlerProxy` listens to `document` with `useCapture`, `HandlerProxy` needs to
make sure `stopPropagation` and `preventDefault` doing nothing if and only if the event
target is not zrender dom. Becuase it is dangerous to enable users to call them in
`document` capture phase to prevent the propagation to any listener of the webpage.
But they are needed to work when the pointer inside the zrender dom.