Files
AFFiNE/blocksuite/framework/std/src/gfx/interactivity/event.ts
doouding e0e84d302d 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.
2025-04-22 08:18:24 +00:00

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;
},
};
};