Skip to content

Commit c2743e3

Browse files
author
Pavel Klimov
committed
fixed isses from AI
1 parent 613907f commit c2743e3

File tree

2 files changed

+44
-39
lines changed

2 files changed

+44
-39
lines changed

src/components/canvas/blocks/controllers/BlockController.ts

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,6 @@ import { EVENTS } from "../../../../utils/types/events";
1414
import { ESelectionStrategy } from "../../../../utils/types/types";
1515
import { Block } from "../Block";
1616

17-
const handlePointerDownEvent = (event: PointerEvent, block: Block, self: any) => {
18-
const blockState = selectBlockById(block.context.graph, block.props.id);
19-
const allowChangeBlockGeometry = isAllowChangeBlockGeometry(
20-
block.getConfigFlag("canChangeBlockGeometry") as ECanChangeBlockGeometry,
21-
blockState.selected
22-
);
23-
24-
if (!allowChangeBlockGeometry) return;
25-
26-
event.stopPropagation();
27-
28-
const blocksListState = self.context.graph.rootStore.blocksList;
29-
const selectedBlocksStates = getSelectedBlocks(blockState, blocksListState);
30-
const selectedBlocksComponents = selectedBlocksStates.map((block) => block.getViewComponent());
31-
32-
dragListener(block.context.ownerDocument)
33-
.on(EVENTS.DRAG_START, (_event: PointerEvent) => {
34-
block.context.graph.getGraphLayer().captureEvents(self);
35-
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_START, _event));
36-
})
37-
.on(EVENTS.DRAG_UPDATE, (_event: PointerEvent) => {
38-
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_UPDATE, _event));
39-
})
40-
.on(EVENTS.DRAG_END, (_event: PointerEvent) => {
41-
block.context.graph.getGraphLayer().releaseCapture();
42-
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_END, _event));
43-
});
44-
};
45-
4617
export class BlockController {
4718
private block: Block;
4819

@@ -74,7 +45,32 @@ export class BlockController {
7445
},
7546

7647
pointerdown(event: PointerEvent) {
77-
handlePointerDownEvent(event, block, this);
48+
const blockState = selectBlockById(block.context.graph, block.props.id);
49+
const allowChangeBlockGeometry = isAllowChangeBlockGeometry(
50+
block.getConfigFlag("canChangeBlockGeometry") as ECanChangeBlockGeometry,
51+
blockState.selected
52+
);
53+
54+
if (!allowChangeBlockGeometry) return;
55+
56+
event.stopPropagation();
57+
58+
const blocksListState = this.context.graph.rootStore.blocksList;
59+
const selectedBlocksStates = getSelectedBlocks(blockState, blocksListState);
60+
const selectedBlocksComponents = selectedBlocksStates.map((block) => block.getViewComponent());
61+
62+
dragListener(block.context.ownerDocument)
63+
.on(EVENTS.DRAG_START, (_event: PointerEvent) => {
64+
block.context.graph.getGraphLayer().captureEvents(this);
65+
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_START, _event));
66+
})
67+
.on(EVENTS.DRAG_UPDATE, (_event: PointerEvent) => {
68+
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_UPDATE, _event));
69+
})
70+
.on(EVENTS.DRAG_END, (_event: PointerEvent) => {
71+
block.context.graph.getGraphLayer().releaseCapture();
72+
dispatchEvents(selectedBlocksComponents, createCustomDragEvent(EVENTS.DRAG_END, _event));
73+
});
7874
},
7975
});
8076
}

src/components/canvas/layers/graphLayer/GraphLayer.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { ICamera } from "../../../../services/camera/CameraService";
77
import { getEventDelta } from "../../../../utils/functions";
88
import { EventedComponent } from "../../EventedComponent/EventedComponent";
99
import { Blocks } from "../../blocks/Blocks";
10+
import { BlockConnection } from "../../connections";
1011
import { BlockConnections } from "../../connections/BlockConnections";
1112

1213
import { DrawBelow, DrawOver } from "./helpers";
@@ -24,15 +25,8 @@ export type TGraphLayerContext = LayerContext & {
2425
graph: Graph;
2526
};
2627

27-
const rootBubblingEventTypes = new Set([
28-
"pointerdown",
29-
"pointerenter",
30-
"pointermove",
31-
"click",
32-
"dblclick",
33-
"contextmenu",
34-
]);
35-
const rootCapturingEventTypes = new Set(["pointerdown", "pointerenter", "pointermove"]);
28+
const rootBubblingEventTypes = new Set(["pointerdown", "pointerup", "click", "dblclick", "contextmenu"]);
29+
const rootCapturingEventTypes = new Set(["pointerdown", "pointerup"]);
3630

3731
export type GraphPointerEvent = CustomEvent<{
3832
target: EventedComponent;
@@ -49,6 +43,8 @@ export class GraphLayer extends Layer<TGraphLayerProps, TGraphLayerContext> {
4943

5044
private prevTargetComponent: EventedComponent;
5145

46+
private canEmulateClick?: boolean;
47+
5248
private pointerStartTarget?: EventedComponent;
5349

5450
private pointerStartEvent?: PointerEvent;
@@ -303,10 +299,23 @@ export class GraphLayer extends Layer<TGraphLayerProps, TGraphLayerContext> {
303299

304300
private tryEmulateClick(event: PointerEvent, target = this.targetComponent) {
305301
if (event.type === "pointerdown" && target !== undefined) {
302+
this.canEmulateClick = false;
306303
this.pointerStartTarget = target;
307304
this.pointerStartEvent = event;
308305
}
309306

307+
if (
308+
event.type === "pointerup" &&
309+
(this.pointerStartTarget === target ||
310+
// connections can be very close to each other
311+
(this.pointerStartTarget instanceof BlockConnection && target instanceof BlockConnection)) &&
312+
// pointerStartEvent can be undefined if mousedown/touchstart event happened over dialog backdrop
313+
this.pointerStartEvent &&
314+
getEventDelta(this.pointerStartEvent, event) < 3
315+
) {
316+
this.canEmulateClick = true;
317+
}
318+
310319
if (
311320
this.pointerStartEvent &&
312321
getEventDelta(this.pointerStartEvent, event) < 3 &&

0 commit comments

Comments
 (0)