onDragEnd(event) {
    this.drag.dragging = false;

    if (this.body.selectionBox.show) {
      this.body.selectionBox.show = false;
      const selectionBoxPosition = this.body.selectionBox.position;
      const selectionBoxPositionMinMax = {
        minX: Math.min(
          selectionBoxPosition.start.x,
          selectionBoxPosition.end.x
        ),
        minY: Math.min(
          selectionBoxPosition.start.y,
          selectionBoxPosition.end.y
        ),
        maxX: Math.max(
          selectionBoxPosition.start.x,
          selectionBoxPosition.end.x
        ),
        maxY: Math.max(
          selectionBoxPosition.start.y,
          selectionBoxPosition.end.y
        ),
      };

      const toBeSelectedNodes = this.body.nodeIndices.filter((nodeId) => {
        const node = this.body.nodes[nodeId];
        return (
          node.x >= selectionBoxPositionMinMax.minX &&
          node.x <= selectionBoxPositionMinMax.maxX &&
          node.y >= selectionBoxPositionMinMax.minY &&
          node.y <= selectionBoxPositionMinMax.maxY
        );
      });

      toBeSelectedNodes.forEach((nodeId) =>
        this.selectionHandler.selectObject(this.body.nodes[nodeId])
      );

      const pointer = this.getPointer(event.center);
      this.selectionHandler.commitAndEmit(pointer, event);
      this.selectionHandler.generateClickEvent(
        "dragEnd",
        event,
        this.getPointer(event.center),
        undefined,
        true
      );
      this.body.emitter.emit("_requestRedraw");
    } else {
      const selection = this.drag.selection;
      if (selection && selection.length) {
        selection.forEach(function (s) {
          // restore original xFixed and yFixed
          s.node.options.fixed.x = s.xFixed;
          s.node.options.fixed.y = s.yFixed;
        });
        this.selectionHandler.generateClickEvent(
          "dragEnd",
          event,
          this.getPointer(event.center)
        );
        this.body.emitter.emit("startSimulation");
      } else {
        this.selectionHandler.generateClickEvent(
          "dragEnd",
          event,
          this.getPointer(event.center),
          undefined,
          true
        );
        this.body.emitter.emit("_requestRedraw");
      }
    }
  }
handle drag start event
@param {Event} event
@private