refactor: moving connector label to connector view (#11738)

### Changed
Moved connector label moving logic from `default-tool` to connector view.

#### Other infrastructure changes:​​
- Gfx element view now can handles drag events
- Added `context.preventDefault()` support to bypass built-in interactions in extension
- Handle the pointer events in element view will bypass the built-in interactions automatically

> The built-in interactions include element dragging, click selection, drag-to-scale operations, etc.
This commit is contained in:
doouding
2025-04-22 08:18:24 +00:00
parent 21bf009553
commit e0e84d302d
12 changed files with 305 additions and 130 deletions

View File

@@ -1,3 +1,5 @@
import type { PointerEventState, UIEventState } from '../../event';
export type SupportedEvents =
| 'click'
| 'dblclick'
@@ -5,4 +7,42 @@ export type SupportedEvents =
| 'pointerenter'
| 'pointerleave'
| 'pointermove'
| 'pointerup';
| 'pointerup'
| 'dragstart'
| 'dragmove'
| 'dragend';
export type GfxInteractivityContext<
EventState extends UIEventState = PointerEventState,
RawEvent extends Event = EventState['event'],
> = {
event: EventState;
/**
* The raw dom event.
*/
raw: RawEvent;
/**
* Prevent the default gfx interaction
*/
preventDefault: () => void;
};
export const createInteractionContext = (event: PointerEventState) => {
let preventDefaultState = false;
return {
context: {
event,
raw: event.raw,
preventDefault: () => {
preventDefaultState = true;
event.raw.preventDefault();
},
},
get preventDefaultState() {
return preventDefaultState;
},
};
};