### 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.
49 lines
940 B
TypeScript
49 lines
940 B
TypeScript
import type { PointerEventState, UIEventState } from '../../event';
|
|
|
|
export type SupportedEvents =
|
|
| 'click'
|
|
| 'dblclick'
|
|
| 'pointerdown'
|
|
| 'pointerenter'
|
|
| 'pointerleave'
|
|
| 'pointermove'
|
|
| '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;
|
|
},
|
|
};
|
|
};
|