export function handleMinimapEvent()

in src/state/minimapActionDispatcher.ts [52:92]


export function handleMinimapEvent(event: NormalizedEvent, diagramMaker: DiagramMaker) {
  if (event.type === Event.LEFT_CLICK && event.target.type === DiagramMakerMinimapType.CANVAS) {
    const state = diagramMaker.store.getState();
    if (!state.plugins)return;

    const offset  = event.offset;
    const position = getWorkspacePositionAfterClick(offset, state.workspace, state.plugins.minimap);

    diagramMaker.api.dispatch({
      payload: { position },
      type: WorkspaceActions.WORKSPACE_DRAG
    });

  } else if (event.type === Event.DRAG_START && event.target.type === DiagramMakerMinimapType.RECTANGLE) {
    const state = diagramMaker.store.getState();
    if (!state.plugins)return;

    const scale = getScale(state.workspace, state.plugins.minimap);
    const workspace = state.workspace;
    rectInitOffset = getRectOffset(workspace, scale);

  } else if (event.type === Event.DRAG && event.target.type === DiagramMakerMinimapType.RECTANGLE) {
    const state = diagramMaker.store.getState();
    if (!state.plugins)return;

    const rectInitPos = event.dragReference || { x:0, y:0 };
    const canvasPos = subtract(rectInitPos, rectInitOffset);

    const pos = event.position;
    const offset = event.offset || { x:0, y:0 };
    const rectPos = subtract(pos, offset);

    const rectOffset = subtract(rectPos, canvasPos);
    const position = getWorkspacePositionAfterDrag(rectOffset, state.workspace, state.plugins.minimap);

    diagramMaker.api.dispatch({
      payload: { position },
      type: WorkspaceActions.WORKSPACE_DRAG
    });
  }
}