@equinor/esv-intersection
Version:
Intersection component package with testing and automatic documentation.
100 lines (84 loc) • 1.99 kB
text/typescript
import { ZoomTransform } from 'd3-zoom';
import { Graphics } from 'pixi.js';
import Vector2 from '@equinor/videx-vector2';
import { ScaleLinear } from 'd3-scale';
import { ExtendedCurveInterpolator } from './control/ExtendedCurveInterpolator';
import { CurveInterpolator } from 'curve-interpolator';
interface LayerEvent {
elm?: HTMLElement;
}
export interface OnMountEvent extends LayerEvent {
elm: HTMLElement;
width?: number;
height?: number;
}
export type OnUnmountEvent = LayerEvent;
export interface OnResizeEvent extends LayerEvent {
width: number;
height: number;
}
export interface OnRescaleEvent extends LayerEvent {
xScale: ScaleLinear<number, number, never>;
yScale: ScaleLinear<number, number, never>;
xBounds: [number, number];
yBounds: [number, number];
zFactor: number;
viewportRatio: number;
xRatio: number;
yRatio: number;
width: number;
height: number;
transform: ZoomTransform;
}
export interface OnUpdateEvent<T> extends LayerEvent {
data?: T;
}
export interface ZoomAndPanOptions {
maxZoomLevel: number;
minZoomLevel: number;
}
export interface Connector {
end: string;
endScale: number;
}
export interface Annotation {
title: string;
label: string;
color: string;
group: string;
md?: number;
pos?: [number, number];
}
export interface MDPoint {
point: number[];
normal?: Vector2;
md: number; // Currently calculated MD
}
export interface WellItemGraphics {
graphics: Graphics;
}
export interface ScaleOptions {
xMin?: number;
xMax?: number;
yMin?: number;
yMax?: number;
xBounds?: [number, number];
yBounds?: [number, number];
}
export interface Interpolators {
trajectory: CurveInterpolator;
curtain: ExtendedCurveInterpolator;
curve?: ExtendedCurveInterpolator;
}
export interface Trajectory {
points: number[][];
offset: number;
}
export type BoundingBox = {
x: number;
y: number;
width: number;
height: number;
offsetX?: number;
offsetY?: number;
};