All files / packages/tools/src/eventListeners/mouse mouseDoubleClickListener.ts

0% Statements 0/9
0% Branches 0/2
0% Functions 0/1
0% Lines 0/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                                                                                                               
import { getEnabledElement, triggerEvent } from '@cornerstonejs/core';
import Events from '../../enums/Events';
import getMouseEventPoints from './getMouseEventPoints';
import { EventTypes, IPoints } from '../../types';
 
/**
 * Captures and normalizes the double click event. Emits as a cornerstoneTools3D
 * double click event.
 *
 * @param evt - The mouse event.
 */
function mouseDoubleClickListener(evt: MouseEvent): void {
  const element = <HTMLDivElement>evt.currentTarget;
 
  const { viewportId, renderingEngineId } = getEnabledElement(element);
 
  const startPoints = getMouseEventPoints(evt, element);
  const deltaPoints: IPoints = {
    page: [0, 0],
    client: [0, 0],
    canvas: [0, 0],
    world: [0, 0, 0],
  };
 
  const eventDetail: EventTypes.MouseDoubleClickEventDetail = {
    event: evt,
    eventName: Events.MOUSE_DOUBLE_CLICK,
    viewportId,
    renderingEngineId,
    camera: {},
    element,
    startPoints,
    lastPoints: startPoints,
    currentPoints: startPoints,
    deltaPoints,
  };
 
  const consumed = !triggerEvent(
    element,
    Events.MOUSE_DOUBLE_CLICK,
    eventDetail
  );
 
  if (consumed) {
    // The Events.MOUSE_DOUBLE_CLICK was consumed, thus no other listener should handle this 'dblclick' event.
 
    // Use stopImmediatePropagation to lessen the possibility that a third party 'dblclick'
    // listener receives this event. However, there still is no guarantee
    // that any third party listener has not already handled the event.
    evt.stopImmediatePropagation();
    evt.preventDefault();
  }
}
 
export default mouseDoubleClickListener;