UNPKG

@tldraw/core

Version:

The tldraw core renderer and utilities.

272 lines 9.21 kB
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