@tldraw/core
Version:
The tldraw core renderer and utilities.
272 lines • 9.21 kB
TypeScript
import type React from 'react';
export declare enum TLPerformanceMode {
TransformSelected = "transform_selected",
TranslateSelected = "translate_selected",
TransformAll = "transform_all",
TranslateAll = "translate_all"
}
export declare type TLAssets = Record<string, TLAsset>;
export interface TLAsset {
id: string;
type: string;
}
export declare type Patch<T> = Partial<{
[P in keyof T]: T | Partial<T> | Patch<T[P]>;
}>;
export declare type TLForwardedRef<T> = ((instance: T | null) => void) | React.MutableRefObject<T | null> | null;
export interface TLPage<T extends TLShape = TLShape, B extends TLBinding = TLBinding> {
id: string;
name?: string;
childIndex?: number;
shapes: Record<string, T>;
bindings: Record<string, B>;
}
export interface TLPageState {
id: string;
selectedIds: string[];
camera: {
point: number[];
zoom: number;
};
brush?: TLBounds | null;
pointedId?: string | null;
hoveredId?: string | null;
editingId?: string | null;
bindingId?: string | null;
}
export interface TLUser<T extends TLShape> {
id: string;
color: string;
point: number[];
selectedIds: string[];
session?: boolean;
}
export declare type TLUsers<T extends TLShape, U extends TLUser<T> = TLUser<T>> = Record<string, U>;
export declare type TLSnapLine = number[][];
export interface TLHandle {
id: string;
index: number;
point: number[];
}
export interface TLShape {
id: string;
type: string;
parentId: string;
childIndex: number;
name: string;
point: number[];
assetId?: string;
rotation?: number;
children?: string[];
handles?: Record<string, TLHandle>;
isGhost?: boolean;
isHidden?: boolean;
isLocked?: boolean;
isGenerated?: boolean;
isAspectRatioLocked?: boolean;
}
export interface TLComponentProps<T extends TLShape, E = any, M = any> {
shape: T;
asset?: TLAsset;
isEditing: boolean;
isBinding: boolean;
isHovered: boolean;
isSelected: boolean;
isGhost?: boolean;
isChildOfSelected?: boolean;
bounds: TLBounds;
meta: M;
onShapeChange?: TLShapeChangeHandler<T, any>;
onShapeBlur?: TLShapeBlurHandler<any>;
events: {
onPointerDown: (e: React.PointerEvent<E>) => void;
onPointerUp: (e: React.PointerEvent<E>) => void;
onPointerEnter: (e: React.PointerEvent<E>) => void;
onPointerMove: (e: React.PointerEvent<E>) => void;
onPointerLeave: (e: React.PointerEvent<E>) => void;
};
ref?: React.Ref<E> | undefined;
}
export interface TLShapeProps<T extends TLShape, E = any, M = any> extends TLComponentProps<T, E, M> {
ref: TLForwardedRef<E>;
shape: T;
}
export interface TLBinding {
id: string;
toId: string;
fromId: string;
}
export interface TLTheme {
accent?: string;
brushFill?: string;
brushStroke?: string;
brushDashStroke?: string;
selectFill?: string;
selectStroke?: string;
binding: string;
background?: string;
foreground?: string;
grid?: string;
}
export declare type TLWheelEventHandler = (info: TLPointerInfo<string>, e: React.WheelEvent<Element> | WheelEvent) => void;
export declare type TLDropEventHandler = (e: React.DragEvent<Element>) => void;
export declare type TLPinchEventHandler = (info: TLPointerInfo<string>, e: React.WheelEvent<Element> | WheelEvent | React.TouchEvent<Element> | TouchEvent | React.PointerEvent<Element> | PointerEventInit) => void;
export declare type TLShapeChangeHandler<T extends TLShape, K = any> = (shape: {
id: string;
} & Partial<T>, info?: K) => void;
export declare type TLShapeBlurHandler<K = any> = (info?: K) => void;
export declare type TLKeyboardEventHandler = (key: string, info: TLKeyboardInfo, e: KeyboardEvent) => void;
export declare type TLPointerEventHandler = (info: TLPointerInfo<string>, e: React.PointerEvent) => void;
export declare type TLShapeCloneHandler = (info: TLPointerInfo<'top' | 'right' | 'bottom' | 'left' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'>, e: React.PointerEvent) => void;
export declare type TLShapeLinkHandler = (info: TLPointerInfo<'link'>, e: React.PointerEvent) => void;
export declare type TLCanvasEventHandler = (info: TLPointerInfo<'canvas'>, e: React.PointerEvent) => void;
export declare type TLBoundsEventHandler = (info: TLPointerInfo<'bounds'>, e: React.PointerEvent) => void;
export declare type TLBoundsHandleEventHandler = (info: TLPointerInfo<TLBoundsHandle>, e: React.PointerEvent) => void;
export interface TLCallbacks<T extends TLShape> {
onPan: TLWheelEventHandler;
onZoom: TLWheelEventHandler;
onPinchStart: TLPinchEventHandler;
onPinch: TLPinchEventHandler;
onPinchEnd: TLPinchEventHandler;
onPointerMove: TLPointerEventHandler;
onPointerUp: TLPointerEventHandler;
onPointerDown: TLPointerEventHandler;
onPointCanvas: TLCanvasEventHandler;
onDoubleClickCanvas: TLCanvasEventHandler;
onRightPointCanvas: TLCanvasEventHandler;
onDragCanvas: TLCanvasEventHandler;
onReleaseCanvas: TLCanvasEventHandler;
onDragOver: TLDropEventHandler;
onDrop: TLDropEventHandler;
onPointShape: TLPointerEventHandler;
onDoubleClickShape: TLPointerEventHandler;
onRightPointShape: TLPointerEventHandler;
onDragShape: TLPointerEventHandler;
onHoverShape: TLPointerEventHandler;
onUnhoverShape: TLPointerEventHandler;
onReleaseShape: TLPointerEventHandler;
onPointBounds: TLBoundsEventHandler;
onDoubleClickBounds: TLBoundsEventHandler;
onRightPointBounds: TLBoundsEventHandler;
onDragBounds: TLBoundsEventHandler;
onHoverBounds: TLBoundsEventHandler;
onUnhoverBounds: TLBoundsEventHandler;
onReleaseBounds: TLBoundsEventHandler;
onPointBoundsHandle: TLBoundsHandleEventHandler;
onDoubleClickBoundsHandle: TLBoundsHandleEventHandler;
onRightPointBoundsHandle: TLBoundsHandleEventHandler;
onDragBoundsHandle: TLBoundsHandleEventHandler;
onHoverBoundsHandle: TLBoundsHandleEventHandler;
onUnhoverBoundsHandle: TLBoundsHandleEventHandler;
onReleaseBoundsHandle: TLBoundsHandleEventHandler;
onPointHandle: TLPointerEventHandler;
onDoubleClickHandle: TLPointerEventHandler;
onRightPointHandle: TLPointerEventHandler;
onDragHandle: TLPointerEventHandler;
onHoverHandle: TLPointerEventHandler;
onUnhoverHandle: TLPointerEventHandler;
onReleaseHandle: TLPointerEventHandler;
onShapeChange: TLShapeChangeHandler<T, any>;
onShapeBlur: TLShapeBlurHandler<any>;
onShapeClone: TLShapeCloneHandler;
onRenderCountChange: (ids: string[]) => void;
onError: (error: Error) => void;
onBoundsChange: (bounds: TLBounds) => void;
onKeyDown: TLKeyboardEventHandler;
onKeyUp: TLKeyboardEventHandler;
}
export interface TLBounds {
minX: number;
minY: number;
maxX: number;
maxY: number;
width: number;
height: number;
rotation?: number;
}
export interface TLBoundsWithCenter extends TLBounds {
midX: number;
midY: number;
}
export declare enum TLBoundsEdge {
Top = "top_edge",
Right = "right_edge",
Bottom = "bottom_edge",
Left = "left_edge"
}
export declare enum TLBoundsCorner {
TopLeft = "top_left_corner",
TopRight = "top_right_corner",
BottomRight = "bottom_right_corner",
BottomLeft = "bottom_left_corner"
}
export declare type TLBoundsHandle = TLBoundsCorner | TLBoundsEdge | 'rotate' | 'center' | 'left' | 'right';
export interface TLPointerInfo<T extends string = string> {
target: T;
pointerId: number;
origin: number[];
point: number[];
delta: number[];
pressure: number;
shiftKey: boolean;
ctrlKey: boolean;
metaKey: boolean;
altKey: boolean;
spaceKey: boolean;
}
export interface TLKeyboardInfo {
origin: number[];
point: number[];
key: string;
keys: string[];
shiftKey: boolean;
ctrlKey: boolean;
metaKey: boolean;
altKey: boolean;
}
export interface TLTransformInfo<T extends TLShape> {
type: TLBoundsEdge | TLBoundsCorner;
initialShape: T;
scaleX: number;
scaleY: number;
transformOrigin: number[];
}
export declare enum SnapPoints {
minX = "minX",
midX = "midX",
maxX = "maxX",
minY = "minY",
midY = "midY",
maxY = "maxY"
}
export declare type Snap = {
id: SnapPoints;
isSnapped: false;
} | {
id: SnapPoints;
isSnapped: true;
to: number;
B: TLBoundsWithCenter;
distance: number;
};
export interface IShapeTreeNode<T extends TLShape, M = any> {
shape: T;
asset?: TLAsset;
children?: IShapeTreeNode<TLShape, M>[];
isGhost: boolean;
isChildOfSelected: boolean;
isEditing: boolean;
isBinding: boolean;
isHovered: boolean;
isSelected: boolean;
meta?: M extends any ? M : never;
}
export declare type MappedByType<K extends string, T extends {
type: K;
}> = {
[P in T['type']]: T extends any ? (P extends T['type'] ? T : never) : never;
};
export declare type RequiredKeys<T> = {
[K in keyof T]-?: Record<string, unknown> extends Pick<T, K> ? never : K;
}[keyof T];
//# sourceMappingURL=types.d.ts.map