///
import { EventEmitter } from "events";
export type PlainObject = {
[k: string]: T;
};
export type PartialButFor = Pick & Partial> & {
[others: string]: any;
};
export type NonEmptyArray = [T, ...T[]];
export interface Coordinates {
x: number;
y: number;
}
export interface CameraState extends Coordinates {
angle: number;
ratio: number;
}
export type MouseInteraction = "click" | "doubleClick" | "rightClick" | "wheel" | "down" | "up" | "leave" | "enter";
export interface MouseCoords extends Coordinates {
sigmaDefaultPrevented: boolean;
preventSigmaDefault(): void;
original: MouseEvent;
}
export interface WheelCoords extends MouseCoords {
delta: number;
}
export interface TouchCoords {
touches: Coordinates[];
original: TouchEvent;
}
export interface Dimensions {
width: number;
height: number;
}
export type Extent = [number, number];
export interface DisplayData {
label: string | null;
size: number;
color: string;
hidden: boolean;
forceLabel: boolean;
zIndex: number;
type: string;
}
export interface NodeDisplayData extends Coordinates, DisplayData {
highlighted: boolean;
}
export type EdgeDisplayData = DisplayData;
export type CoordinateConversionOverride = {
cameraState?: CameraState;
matrix?: Float32Array;
viewportDimensions?: Dimensions;
graphDimensions?: Dimensions;
padding?: number;
};
export interface RenderParams {
width: number;
height: number;
sizeRatio: number;
zoomRatio: number;
pixelRatio: number;
cameraAngle: number;
correctionRatio: number;
matrix: Float32Array;
invMatrix: Float32Array;
downSizingRatio: number;
minEdgeThickness: number;
antiAliasingFeather: number;
}
export type Listener = (...args: any[]) => void;
export type EventsMapping = Record;
interface ITypedEventEmitter {
rawEmitter: EventEmitter;
eventNames(): Array;
setMaxListeners(n: number): this;
getMaxListeners(): number;
emit(type: Event, ...args: Parameters): boolean;
addListener(type: Event, listener: Events[Event]): this;
on(type: Event, listener: Events[Event]): this;
once(type: Event, listener: Events[Event]): this;
prependListener(type: Event, listener: Events[Event]): this;
prependOnceListener(type: Event, listener: Events[Event]): this;
removeListener(type: Event, listener: Events[Event]): this;
off(type: Event, listener: Events[Event]): this;
removeAllListeners(type?: Event): this;
listeners(type: Event): Events[Event][];
listenerCount(type: Event): number;
rawListeners(type: Event): Events[Event][];
}
declare const TypedEventEmitter_base: new () => ITypedEventEmitter;
export declare class TypedEventEmitter extends TypedEventEmitter_base {
constructor();
}
export interface SigmaEventPayload {
event: MouseCoords;
preventSigmaDefault(): void;
}
export type SigmaStageEventPayload = SigmaEventPayload;
export interface SigmaNodeEventPayload extends SigmaEventPayload {
node: string;
}
export interface SigmaEdgeEventPayload extends SigmaEventPayload {
edge: string;
}
export type SigmaStageEvents = {
[E in MouseInteraction as `${E}Stage`]: (payload: SigmaStageEventPayload) => void;
};
export type SigmaNodeEvents = {
[E in MouseInteraction as `${E}Node`]: (payload: SigmaNodeEventPayload) => void;
};
export type SigmaEdgeEvents = {
[E in MouseInteraction as `${E}Edge`]: (payload: SigmaEdgeEventPayload) => void;
};
export type SigmaAdditionalEvents = {
beforeClear(): void;
afterClear(): void;
beforeProcess(): void;
afterProcess(): void;
beforeRender(): void;
afterRender(): void;
resize(): void;
kill(): void;
};
export type SigmaEvents = SigmaStageEvents & SigmaNodeEvents & SigmaEdgeEvents & SigmaAdditionalEvents;
export type { CameraEvents } from "./core/camera.js";
export type { MouseCaptorEvents } from "./core/captors/mouse.js";
export type { TouchCaptorEvents, FakeSigmaMouseEvent } from "./core/captors/touch.js";