## API Report File for "@tldraw/editor" > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts /// import { Atom } from '@tldraw/state'; import { atom } from '@tldraw/state'; import { Box2d } from '@tldraw/primitives'; import { Box2dModel } from '@tldraw/tlschema'; import { Computed } from '@tldraw/state'; import { computed } from '@tldraw/state'; import { ComputedCache } from '@tldraw/store'; import { CubicSpline2d } from '@tldraw/primitives'; import { defineMigrations } from '@tldraw/store'; import { EASINGS } from '@tldraw/primitives'; import { EmbedDefinition } from '@tldraw/tlschema'; import { EventEmitter } from 'eventemitter3'; import { getHashForString } from '@tldraw/utils'; import { HistoryEntry } from '@tldraw/store'; import { MatLike } from '@tldraw/primitives'; import { Matrix2d } from '@tldraw/primitives'; import { Matrix2dModel } from '@tldraw/primitives'; import { Migrations } from '@tldraw/store'; import { Polyline2d } from '@tldraw/primitives'; import { react } from '@tldraw/state'; import { default as React_2 } from 'react'; import * as React_3 from 'react'; import { RecursivePartial } from '@tldraw/utils'; import { RotateCorner } from '@tldraw/primitives'; import { SelectionCorner } from '@tldraw/primitives'; import { SelectionEdge } from '@tldraw/primitives'; import { SelectionHandle } from '@tldraw/primitives'; import { SerializedSchema } from '@tldraw/store'; import { SerializedStore } from '@tldraw/store'; import { ShapeProps } from '@tldraw/tlschema'; import { Signal } from '@tldraw/state'; import { StoreSchema } from '@tldraw/store'; import { StrokePoint } from '@tldraw/primitives'; import { StyleProp } from '@tldraw/tlschema'; import { TLArrowShape } from '@tldraw/tlschema'; import { TLArrowShapeArrowheadStyle } from '@tldraw/tlschema'; import { TLAsset } from '@tldraw/tlschema'; import { TLAssetId } from '@tldraw/tlschema'; import { TLAssetPartial } from '@tldraw/tlschema'; import { TLBaseShape } from '@tldraw/tlschema'; import { TLBookmarkAsset } from '@tldraw/tlschema'; import { TLBookmarkShape } from '@tldraw/tlschema'; import { TLCamera } from '@tldraw/tlschema'; import { TLCursor } from '@tldraw/tlschema'; import { TLDefaultHorizontalAlignStyle } from '@tldraw/tlschema'; import { TLDocument } from '@tldraw/tlschema'; import { TLDrawShape } from '@tldraw/tlschema'; import { TLEmbedShape } from '@tldraw/tlschema'; import { TLFrameShape } from '@tldraw/tlschema'; import { TLGeoShape } from '@tldraw/tlschema'; import { TLGroupShape } from '@tldraw/tlschema'; import { TLHandle } from '@tldraw/tlschema'; import { TLHighlightShape } from '@tldraw/tlschema'; import { TLImageAsset } from '@tldraw/tlschema'; import { TLImageShape } from '@tldraw/tlschema'; import { TLInstance } from '@tldraw/tlschema'; import { TLInstancePageState } from '@tldraw/tlschema'; import { TLInstancePresence } from '@tldraw/tlschema'; import { TLLineShape } from '@tldraw/tlschema'; import { TLNoteShape } from '@tldraw/tlschema'; import { TLPage } from '@tldraw/tlschema'; import { TLPageId } from '@tldraw/tlschema'; import { TLParentId } from '@tldraw/tlschema'; import { TLRecord } from '@tldraw/tlschema'; import { TLScribble } from '@tldraw/tlschema'; import { TLShape } from '@tldraw/tlschema'; import { TLShapeId } from '@tldraw/tlschema'; import { TLShapePartial } from '@tldraw/tlschema'; import { TLStore } from '@tldraw/tlschema'; import { TLStoreProps } from '@tldraw/tlschema'; import { TLTextShape } from '@tldraw/tlschema'; import { TLUnknownShape } from '@tldraw/tlschema'; import { TLVideoAsset } from '@tldraw/tlschema'; import { TLVideoShape } from '@tldraw/tlschema'; import { track } from '@tldraw/state'; import { UnknownRecord } from '@tldraw/store'; import { useComputed } from '@tldraw/state'; import { useQuickReactor } from '@tldraw/state'; import { useReactor } from '@tldraw/state'; import { useValue } from '@tldraw/state'; import { Vec2d } from '@tldraw/primitives'; import { Vec2dModel } from '@tldraw/tlschema'; import { VecLike } from '@tldraw/primitives'; import { whyAmIRunning } from '@tldraw/state'; // @public (undocumented) export const ACCEPTED_ASSET_TYPE: string; // @public (undocumented) export const ACCEPTED_IMG_TYPE: string[]; // @public (undocumented) export const ACCEPTED_VID_TYPE: string[]; // @internal (undocumented) export const ANIMATION_MEDIUM_MS = 320; // @internal (undocumented) export const ANIMATION_SHORT_MS = 80; // @public (undocumented) export const ArrowShape: TLShapeInfo; // @public (undocumented) export class ArrowShapeUtil extends ShapeUtil { // (undocumented) canBind: () => boolean; // (undocumented) canEdit: () => boolean; // (undocumented) canSnap: () => boolean; // (undocumented) component(shape: TLArrowShape): JSX.Element | null; // (undocumented) getArrowInfo(shape: TLArrowShape): ArrowInfo | undefined; // (undocumented) getBounds(shape: TLArrowShape): Box2d; // (undocumented) getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[]; // (undocumented) getCenter(shape: TLArrowShape): Vec2d; // (undocumented) getDefaultProps(): TLArrowShape['props']; // (undocumented) getHandles(shape: TLArrowShape): TLHandle[]; // (undocumented) getLabelBounds(shape: TLArrowShape): Box2d | null; // (undocumented) getOutline(shape: TLArrowShape): Vec2d[]; // (undocumented) getOutlineWithoutLabel(shape: TLArrowShape): Vec2d[]; // (undocumented) hideResizeHandles: TLShapeUtilFlag; // (undocumented) hideRotateHandle: TLShapeUtilFlag; // (undocumented) hideSelectionBoundsBg: TLShapeUtilFlag; // (undocumented) hideSelectionBoundsFg: TLShapeUtilFlag; // (undocumented) hitTestLineSegment(shape: TLArrowShape, A: VecLike, B: VecLike): boolean; // (undocumented) hitTestPoint(shape: TLArrowShape, point: VecLike): boolean; // (undocumented) indicator(shape: TLArrowShape): JSX.Element | null; // (undocumented) isClosed: () => boolean; // (undocumented) get labelBoundsCache(): ComputedCache; // (undocumented) onDoubleClickHandle: (shape: TLArrowShape, handle: TLHandle) => TLShapePartial | void; // (undocumented) onEditEnd: TLOnEditEndHandler; // (undocumented) onHandleChange: TLOnHandleChangeHandler; // (undocumented) onResize: TLOnResizeHandler; // (undocumented) onTranslateStart: TLOnTranslateStartHandler; // (undocumented) snapPoints(_shape: TLArrowShape): Vec2d[]; // (undocumented) toSvg(shape: TLArrowShape, ctx: SvgExportContext): SVGGElement; // (undocumented) static type: "arrow"; } export { atom } // @public (undocumented) export abstract class BaseBoxShapeTool extends StateNode { // (undocumented) static children: () => (typeof Idle_4 | typeof Pointing_2)[]; // (undocumented) static id: string; // (undocumented) static initial: string; // (undocumented) abstract shapeType: TLShapeUtilConstructor; } // @public (undocumented) export abstract class BaseBoxShapeUtil extends ShapeUtil { // (undocumented) getBounds(shape: Shape): Box2d; // (undocumented) getCenter(shape: Shape): Vec2d; // (undocumented) getOutline(shape: Shape): Vec2d[]; // (undocumented) hitTestLineSegment(shape: Shape, A: VecLike, B: VecLike): boolean; // (undocumented) hitTestPoint(shape: Shape, point: VecLike): boolean; // (undocumented) onResize: TLOnResizeHandler; } // @public (undocumented) export function blobAsString(blob: Blob): Promise; // @public (undocumented) export const BookmarkShape: TLShapeInfo; // @public (undocumented) export class BookmarkShapeUtil extends BaseBoxShapeUtil { // (undocumented) canResize: () => boolean; // (undocumented) component(shape: TLBookmarkShape): JSX.Element; // (undocumented) getDefaultProps(): TLBookmarkShape['props']; // (undocumented) hideSelectionBoundsBg: () => boolean; // (undocumented) hideSelectionBoundsFg: () => boolean; // (undocumented) indicator(shape: TLBookmarkShape): JSX.Element; // (undocumented) onBeforeCreate?: TLOnBeforeCreateHandler; // (undocumented) onBeforeUpdate?: TLOnBeforeUpdateHandler; // (undocumented) static type: "bookmark"; } // @public (undocumented) export const Canvas: React_2.MemoExoticComponent<() => JSX.Element>; // @public (undocumented) export const checkFlag: (flag: (() => boolean) | boolean | undefined) => boolean | undefined; export { computed } // @public export function containBoxSize(originalSize: BoxWidthHeight, containBoxSize: BoxWidthHeight): BoxWidthHeight; // @public (undocumented) export const coreShapes: readonly [TLShapeInfo, TLShapeInfo, TLShapeInfo, TLShapeInfo, TLShapeInfo]; // @public (undocumented) export function correctSpacesToNbsp(input: string): string; // @public export function createSessionStateSnapshotSignal(store: TLStore): Signal; // @public export function createTLStore({ initialData, defaultName, ...rest }: TLStoreOptions): TLStore; // @public (undocumented) export function createTLUser(opts?: { derivePresenceState?: ((store: TLStore) => Signal) | undefined; userPreferences?: Signal | undefined; setUserPreferences?: ((userPreferences: TLUserPreferences) => void) | undefined; }): TLUser; // @public (undocumented) export function dataTransferItemAsString(item: DataTransferItem): Promise; // @public (undocumented) export function dataUrlToFile(url: string, filename: string, mimeType: string): Promise; // @internal (undocumented) export type DebugFlag = DebugFlagDef & Atom; // @internal (undocumented) export const debugFlags: { preventDefaultLogging: DebugFlag; pointerCaptureLogging: DebugFlag; pointerCaptureTracking: DebugFlag; pointerCaptureTrackingObject: DebugFlag>; elementRemovalLogging: DebugFlag; debugSvg: DebugFlag; throwToBlob: DebugFlag; logMessages: DebugFlag; resetConnectionEveryPing: DebugFlag; debugCursors: DebugFlag; forceSrgb: DebugFlag; }; // @internal (undocumented) export const DEFAULT_ANIMATION_OPTIONS: { duration: number; easing: (t: number) => number; }; // @public (undocumented) export let defaultEditorAssetUrls: TLEditorAssetUrls; // @public (undocumented) export function defaultEmptyAs(str: string, dflt: string): string; // @internal (undocumented) export const DefaultErrorFallback: TLErrorFallbackComponent; // @public (undocumented) export const defaultShapes: readonly [TLShapeInfo, TLShapeInfo, TLShapeInfo, TLShapeInfo, TLShapeInfo, TLShapeInfo, TLShapeInfo, TLShapeInfo]; // @public (undocumented) export const defaultTools: TLStateNodeConstructor[]; export { defineMigrations } // @public (undocumented) export function defineShape(type: T['type'], opts: Omit, 'type'>): TLShapeInfo; // @internal (undocumented) export const DOUBLE_CLICK_DURATION = 450; // @public (undocumented) export function downloadDataURLAsFile(dataUrl: string, filename: string): void; // @internal (undocumented) export const DRAG_DISTANCE = 4; // @public (undocumented) export const DrawShape: TLShapeInfo; // @public (undocumented) export class DrawShapeUtil extends ShapeUtil { // (undocumented) component(shape: TLDrawShape): JSX.Element; // (undocumented) expandSelectionOutlinePx(shape: TLDrawShape): number; // (undocumented) getBounds(shape: TLDrawShape): Box2d; // (undocumented) getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[]; // (undocumented) getCenter(shape: TLDrawShape): Vec2d; // (undocumented) getDefaultProps(): TLDrawShape['props']; // (undocumented) getOutline(shape: TLDrawShape): Vec2d[]; // (undocumented) hideResizeHandles: (shape: TLDrawShape) => boolean; // (undocumented) hideRotateHandle: (shape: TLDrawShape) => boolean; // (undocumented) hideSelectionBoundsBg: (shape: TLDrawShape) => boolean; // (undocumented) hideSelectionBoundsFg: (shape: TLDrawShape) => boolean; // (undocumented) hitTestLineSegment(shape: TLDrawShape, A: VecLike, B: VecLike): boolean; // (undocumented) hitTestPoint(shape: TLDrawShape, point: VecLike): boolean; // (undocumented) indicator(shape: TLDrawShape): JSX.Element; // (undocumented) isClosed: (shape: TLDrawShape) => boolean; // (undocumented) onResize: TLOnResizeHandler; // (undocumented) toSvg(shape: TLDrawShape, ctx: SvgExportContext): SVGGElement; // (undocumented) static type: "draw"; } // @public (undocumented) export class Editor extends EventEmitter { constructor({ store, user, shapes, tools, getContainer }: TLEditorOptions); addOpenMenu(id: string): this; alignShapes(operation: 'bottom' | 'center-horizontal' | 'center-vertical' | 'left' | 'right' | 'top', ids?: TLShapeId[]): this; get allShapesCommonBounds(): Box2d | null; animateCamera(x: number, y: number, z?: number, opts?: TLAnimationOptions): this; animateShapes(partials: (null | TLShapePartial | undefined)[], options?: { duration?: number; ease?: (t: number) => number; }): this; animateToShape(shapeId: TLShapeId, opts?: TLAnimationOptions): this; animateToUser(userId: string): void; get animationSpeed(): number; // @internal (undocumented) annotateError(error: unknown, { origin, willCrashApp, tags, extras, }: { origin: string; willCrashApp: boolean; tags?: Record; extras?: Record; }): void; get assets(): (TLBookmarkAsset | TLImageAsset | TLVideoAsset)[]; bail(): this; bailToMark(id: string): this; batch(fn: () => void): this; blur(): this; bringForward(ids?: TLShapeId[]): this; bringToFront(ids?: TLShapeId[]): this; get brush(): Box2dModel | null; get camera(): TLCamera; get cameraState(): "idle" | "moving"; cancel(): this; cancelDoubleClick(): void; get canMoveCamera(): boolean; set canMoveCamera(canMove: boolean); get canRedo(): boolean; get canUndo(): boolean; // @internal (undocumented) capturedPointerId: null | number; centerOnPoint(x: number, y: number, opts?: TLAnimationOptions): this; // @internal protected _clickManager: ClickManager; complete(): this; // @internal (undocumented) crash(error: unknown): void; // @internal get crashingError(): unknown; createAssets(assets: TLAsset[]): this; // @internal (undocumented) createErrorAnnotations(origin: string, willCrashApp: 'unknown' | boolean): { tags: { origin: string; willCrashApp: 'unknown' | boolean; }; extras: { activeStateNode?: string; selectedShapes?: TLUnknownShape[]; editingShape?: TLUnknownShape; inputs?: Record; }; }; createPage(title: string, id?: TLPageId, belowPageIndex?: string): this; createShapes(partials: TLShapePartial[], select?: boolean): this; get croppingId(): null | TLShapeId; get currentPage(): TLPage; get currentPageId(): TLPageId; get currentPageShapeIds(): Set; get currentToolId(): string; get cursor(): TLCursor; deleteAssets(ids: TLAssetId[]): this; deleteOpenMenu(id: string): this; deletePage(id: TLPageId): void; deleteShapes(ids?: TLShapeId[]): this; deselect(...ids: TLShapeId[]): this; get devicePixelRatio(): number; dispatch(info: TLEventInfo): this; readonly disposables: Set<() => void>; dispose(): void; distributeShapes(operation: 'horizontal' | 'vertical', ids?: TLShapeId[]): this; get documentSettings(): TLDocument; duplicatePage(id?: TLPageId, createId?: TLPageId): this; duplicateShapes(ids?: TLShapeId[], offset?: VecLike): this; get editingId(): null | TLShapeId; // (undocumented) get editingShape(): null | TLUnknownShape; get erasingIds(): TLShapeId[]; get erasingIdsSet(): Set; // (undocumented) externalContentManager: PlopManager; findAncestor(shape: TLShape, predicate: (parent: TLShape) => boolean): TLShape | undefined; findCommonAncestor(shapes: TLShape[], predicate?: (shape: TLShape) => boolean): TLShapeId | undefined; flipShapes(operation: 'horizontal' | 'vertical', ids?: TLShapeId[]): this; focus(): this; get focusLayerId(): TLPageId | TLShapeId; get focusLayerShape(): TLShape | undefined; getAncestorPageId(shape?: TLShape): TLPageId | undefined; getAncestors(shape: TLShape, acc?: TLShape[]): TLShape[]; getAncestorsById(id: TLShapeId, acc?: TLShape[]): TLShape[]; getArrowsBoundTo(shapeId: TLShapeId): { arrowId: TLShapeId; handleId: "end" | "start"; }[]; getAssetById(id: TLAssetId): TLAsset | undefined; getAssetBySrc(src: string): TLBookmarkAsset | TLImageAsset | TLVideoAsset | undefined; getBounds(shape: T): Box2d; getBoundsById(id: T['id']): Box2d | undefined; getClipPathById(id: TLShapeId): string | undefined; getContainer: () => HTMLElement; getContent(ids?: TLShapeId[]): TLContent | undefined; getDeltaInParentSpace(shape: TLShape, delta: VecLike): Vec2d; getDeltaInShapeSpace(shape: TLShape, delta: VecLike): Vec2d; getDroppingShape(point: VecLike, droppingShapes?: TLShape[]): TLUnknownShape | undefined; getHandles(shape: T): TLHandle[] | undefined; getHandlesById(id: T['id']): TLHandle[] | undefined; getHighestIndexForParent(parentId: TLPageId | TLShapeId): string; getMaskedPageBounds(shape: TLShape): Box2d | undefined; getMaskedPageBoundsById(id: TLShapeId): Box2d | undefined; getOutermostSelectableShape(shape: TLShape, filter?: (shape: TLShape) => boolean): TLShape; getOutline(shape: T): Vec2d[]; getOutlineById(id: TLShapeId): Vec2d[]; getOutlineSegments(shape: T): Vec2d[][]; getOutlineSegmentsById(id: TLShapeId): Vec2d[][]; getPageBounds(shape: TLShape): Box2d | undefined; getPageBoundsById(id: TLShapeId): Box2d | undefined; getPageById(id: TLPageId): TLPage | undefined; getPageCenter(shape: TLShape): null | Vec2d; getPageCenterById(id: TLShapeId): null | Vec2d; getPageCorners(shape: TLShape): Vec2d[]; getPageInfoById(id: TLPage['id']): TLPage | undefined; getPageMaskById(id: TLShapeId): undefined | VecLike[]; getPagePointById(id: TLShapeId): undefined | Vec2d; getPageRotation(shape: TLShape): number; getPageRotationById(id: TLShapeId): number; getPageStateByPageId(id: TLPageId): TLInstancePageState | undefined; getPageTransform(shape: TLShape): Matrix2d | undefined; getPageTransformById(id: TLShapeId): Matrix2d | undefined; getParentIdForNewShapeAtPoint(point: VecLike, shapeType: TLShape['type']): TLPageId | TLShapeId; getParentShape(shape?: TLShape): TLShape | undefined; getParentsMappedToChildren(ids: TLShapeId[]): Map>; getParentTransform(shape: TLShape): Matrix2d; getPointInParentSpace(shapeId: TLShapeId, point: VecLike): Vec2d; getPointInShapeSpace(shape: TLShape, point: VecLike): Vec2d; getShapeAndDescendantIds(ids: TLShapeId[]): Set; getShapeById(id: TLParentId): T | undefined; getShapeIdsInPage(pageId: TLPageId): Set; getShapesAtPoint(point: VecLike): TLShape[]; // (undocumented) getShapeStyleIfExists(shape: TLShape, style: StyleProp): T | undefined; getShapeUtil; type: string; }>(util: C): InstanceType; getShapeUtil(shape: S | TLShapePartial): ShapeUtil; getSortedChildIds(parentId: TLParentId): TLShapeId[]; getStateDescendant(path: string): StateNode | undefined; // @internal (undocumented) getStyleForNextShape(style: StyleProp): T; getSvg(ids?: TLShapeId[], opts?: Partial<{ scale: number; background: boolean; padding: number; darkMode?: boolean | undefined; preserveAspectRatio: React.SVGAttributes['preserveAspectRatio']; }>): Promise; getTransform(shape: TLShape): Matrix2d; get gridSize(): number; groupShapes(ids?: TLShapeId[], groupId?: TLShapeId): this; hasAncestor(shape: TLShape | undefined, ancestorId: TLShapeId): boolean; get hintingIds(): TLShapeId[]; readonly history: HistoryManager; get hoveredId(): null | TLShapeId; get hoveredShape(): null | TLUnknownShape; inputs: { originPagePoint: Vec2d; originScreenPoint: Vec2d; previousPagePoint: Vec2d; previousScreenPoint: Vec2d; currentPagePoint: Vec2d; currentScreenPoint: Vec2d; keys: Set; buttons: Set; isPen: boolean; shiftKey: boolean; ctrlKey: boolean; altKey: boolean; isDragging: boolean; isPointing: boolean; isPinching: boolean; isEditing: boolean; isPanning: boolean; pointerVelocity: Vec2d; }; get instanceState(): TLInstance; interrupt(): this; get isChangingStyle(): boolean; set isChangingStyle(v: boolean); readonly isChromeForIos: boolean; get isCoarsePointer(): boolean; set isCoarsePointer(v: boolean); get isDarkMode(): boolean; get isFocused(): boolean; get isFocusMode(): boolean; get isGridMode(): boolean; isIn(path: string): boolean; isInAny(...paths: string[]): boolean; readonly isIos: boolean; get isMenuOpen(): boolean; get isPenMode(): boolean; isPointInShape(point: VecLike, shape: TLShape): boolean; get isReadOnly(): boolean; readonly isSafari: boolean; isSelected(id: TLShapeId): boolean; isShapeInPage(shape: TLShape, pageId?: TLPageId): boolean; isShapeOfType(shape: TLUnknownShape, util: { new (...args: any): ShapeUtil; type: string; }): shape is T; isShapeOrAncestorLocked(shape?: TLShape): boolean; get isSnapMode(): boolean; get isToolLocked(): boolean; isWithinSelection(id: TLShapeId): boolean; get locale(): string; mark(reason?: string, onUndo?: boolean, onRedo?: boolean): string; moveShapesToPage(ids: TLShapeId[], pageId: TLPageId): this; nudgeShapes(ids: TLShapeId[], direction: Vec2dModel, major?: boolean, ephemeral?: boolean): this; get onlySelectedShape(): null | TLShape; get openMenus(): string[]; packShapes(ids?: TLShapeId[], padding?: number): this; get pages(): TLPage[]; get pageState(): TLInstancePageState; pageToScreen(x: number, y: number, z?: number, camera?: Vec2dModel): { x: number; y: number; z: number; }; pan(dx: number, dy: number, opts?: TLAnimationOptions): this; panZoomIntoView(ids: TLShapeId[], opts?: TLAnimationOptions): this; popFocusLayer(): this; // @internal (undocumented) get projectName(): string; putContent(content: TLContent, options?: { point?: VecLike; select?: boolean; preservePosition?: boolean; preserveIds?: boolean; }): this; putExternalContent(info: TLExternalContent): Promise; redo(): this; renamePage(id: TLPageId, name: string, squashing?: boolean): this; get renderingBounds(): Box2d; // @internal (undocumented) readonly _renderingBounds: Atom; get renderingBoundsExpanded(): Box2d; // @internal (undocumented) readonly _renderingBoundsExpanded: Atom; get renderingShapes(): { id: TLShapeId; index: number; backgroundIndex: number; opacity: number; isCulled: boolean; isInViewport: boolean; maskedPageBounds: Box2d | undefined; }[]; reorderShapes(operation: 'backward' | 'forward' | 'toBack' | 'toFront', ids: TLShapeId[]): this; reparentShapesById(ids: TLShapeId[], parentId: TLParentId, insertIndex?: string): this; replaceStoreContentsWithRecordsForOtherDocument(records: TLRecord[]): void; resetZoom(point?: Vec2d, opts?: TLAnimationOptions): this; resizeShape(id: TLShapeId, scale: VecLike, options?: { initialBounds?: Box2d; scaleOrigin?: VecLike; scaleAxisRotation?: number; initialShape?: TLShape; initialPageTransform?: MatLike; dragHandle?: TLResizeHandle; mode?: TLResizeMode; }): this; readonly root: RootState; rotateShapesBy(ids: TLShapeId[], delta: number): this; screenToPage(x: number, y: number, z?: number, camera?: Vec2dModel): { x: number; y: number; z: number; }; get scribble(): null | TLScribble; select(...ids: TLShapeId[]): this; selectAll(): this; get selectedIds(): TLShapeId[]; get selectedIdsSet(): ReadonlySet; get selectedPageBounds(): Box2d | null; get selectedShapes(): TLShape[]; get selectionBounds(): Box2d | undefined; get selectionPageCenter(): null | Vec2d; get selectionRotation(): number; selectNone(): this; sendBackward(ids?: TLShapeId[]): this; sendToBack(ids?: TLShapeId[]): this; setAnimationSpeed(animationSpeed: number): this; setBrush(brush?: Box2dModel | null): this; setCamera(x: number, y: number, z?: number, { stopFollowing }?: TLViewportOptions): this; setCroppingId(id: null | TLShapeId): this; setCurrentPageId(pageId: TLPageId, { stopFollowing }?: TLViewportOptions): this; setCursor(cursor: Partial): this; setDarkMode(isDarkMode: boolean): this; setDevicePixelRatio(dpr: number): this; setEditingId(id: null | TLShapeId): this; setErasingIds(ids?: TLShapeId[]): this; setFocusLayer(next: null | TLShapeId): this; setFocusMode(isFocusMode: boolean): this; setGridMode(isGridMode: boolean): this; setHintingIds(ids: TLShapeId[]): this; setHoveredId(id?: null | TLShapeId): this; setLocale(locale: string): void; setOpacity(opacity: number, ephemeral?: boolean, squashing?: boolean): this; setPageState(partial: Partial, ephemeral?: boolean): void; setPenMode(isPenMode: boolean): this; // @internal (undocumented) setProjectName(name: string): void; setReadOnly(isReadOnly: boolean): this; setScribble(scribble?: null | TLScribble): this; setSelectedIds(ids: TLShapeId[], squashing?: boolean): this; setSelectedTool(id: string, info?: {}): this; setSnapMode(isSnapMode: boolean): this; setStyle(style: StyleProp, value: T, ephemeral?: boolean, squashing?: boolean): this; setToolLocked(isToolLocked: boolean): this; setZoomBrush(zoomBrush?: Box2dModel | null): this; get shapesArray(): TLShape[]; shapeUtils: { readonly [K in string]?: ShapeUtil; }; get sharedOpacity(): SharedStyle; get sharedStyles(): ReadonlySharedStyleMap; slideCamera(opts?: { speed: number; direction: Vec2d; friction: number; speedThreshold?: number | undefined; }): this | undefined; readonly snaps: SnapManager; get sortedShapesArray(): TLShape[]; stackShapes(operation: 'horizontal' | 'vertical', ids?: TLShapeId[], gap?: number): this; startFollowingUser(userId: string): this | undefined; stopCameraAnimation(): this; stopFollowingUser(): this; readonly store: TLStore; stretchShapes(operation: 'horizontal' | 'vertical', ids?: TLShapeId[]): this; readonly textMeasure: TextManager; toggleLock(ids?: TLShapeId[]): this; undo(): HistoryManager; ungroupShapes(ids?: TLShapeId[]): this; updateAssets(assets: TLAssetPartial[]): this; updateDocumentSettings(settings: Partial): void; updateInstanceState(partial: Partial>, ephemeral?: boolean, squashing?: boolean): this; updatePage(partial: RequiredKeys, squashing?: boolean): this; // @internal updateRenderingBounds(): this; updateShapes(partials: (null | TLShapePartial | undefined)[], squashing?: boolean): this; updateViewportScreenBounds(center?: boolean): this; readonly user: UserPreferencesManager; get viewportPageBounds(): Box2d; get viewportPageCenter(): Vec2d; get viewportScreenBounds(): Box2d; get viewportScreenCenter(): Vec2d; visitDescendants(parentId: TLParentId, visitor: (id: TLShapeId) => false | void): void; get zoomBrush(): Box2dModel | null; zoomIn(point?: Vec2d, opts?: TLAnimationOptions): this; get zoomLevel(): number; zoomOut(point?: Vec2d, opts?: TLAnimationOptions): this; zoomToBounds(x: number, y: number, width: number, height: number, targetZoom?: number, opts?: TLAnimationOptions): this; zoomToContent(): this; zoomToFit(opts?: TLAnimationOptions): this; zoomToSelection(opts?: TLAnimationOptions): this; } // @public (undocumented) export const EmbedShape: TLShapeInfo; // @public (undocumented) export class EmbedShapeUtil extends BaseBoxShapeUtil { // (undocumented) canEdit: TLShapeUtilFlag; // (undocumented) canResize: (shape: TLEmbedShape) => boolean; // (undocumented) canUnmount: TLShapeUtilFlag; // (undocumented) component(shape: TLEmbedShape): JSX.Element; // (undocumented) getDefaultProps(): TLEmbedShape['props']; // (undocumented) hideSelectionBoundsBg: TLShapeUtilFlag; // (undocumented) hideSelectionBoundsFg: TLShapeUtilFlag; // (undocumented) indicator(shape: TLEmbedShape): JSX.Element; // (undocumented) isAspectRatioLocked: TLShapeUtilFlag; // (undocumented) onResize: TLOnResizeHandler; // (undocumented) static type: "embed"; } // @public (undocumented) export class ErrorBoundary extends React_3.Component>, TLErrorBoundaryState> { // (undocumented) componentDidCatch(error: unknown): void; // (undocumented) static getDerivedStateFromError(error: Error): { error: Error; }; // (undocumented) render(): boolean | JSX.Element | null | number | React_3.ReactFragment | string | undefined; // (undocumented) state: TLErrorBoundaryState; } // @public (undocumented) export function ErrorScreen({ children }: { children: any; }): JSX.Element; // @public (undocumented) export const EVENT_NAME_MAP: Record, keyof TLEventHandlers>; // @internal (undocumented) export function extractSessionStateFromLegacySnapshot(store: Record): null | TLSessionStateSnapshot; // @internal (undocumented) export const featureFlags: { peopleMenu: DebugFlag; highlighterTool: DebugFlag; }; // @public export function fileToBase64(file: Blob): Promise; // @public (undocumented) export const FrameShape: TLShapeInfo; // @public (undocumented) export class FrameShapeUtil extends BaseBoxShapeUtil { // (undocumented) canBind: () => boolean; // (undocumented) canDropShapes: (shape: TLFrameShape, _shapes: TLShape[]) => boolean; // (undocumented) canEdit: () => boolean; // (undocumented) canReceiveNewChildrenOfType: (shape: TLShape, _type: TLShape['type']) => boolean; // (undocumented) component(shape: TLFrameShape): JSX.Element; // (undocumented) getDefaultProps(): TLFrameShape['props']; // (undocumented) indicator(shape: TLFrameShape): JSX.Element; // (undocumented) onDragShapesOut: (_shape: TLFrameShape, shapes: TLShape[]) => void; // (undocumented) onDragShapesOver: (frame: TLFrameShape, shapes: TLShape[]) => { shouldHint: boolean; }; // (undocumented) onResizeEnd: TLOnResizeEndHandler; // (undocumented) providesBackgroundForChildren(): boolean; // (undocumented) toSvg(shape: TLFrameShape): Promise | SVGElement; // (undocumented) static type: "frame"; } // @public (undocumented) export const GeoShape: TLShapeInfo; // @public (undocumented) export class GeoShapeUtil extends BaseBoxShapeUtil { // (undocumented) canEdit: () => boolean; // (undocumented) component(shape: TLGeoShape): JSX.Element; // (undocumented) getBounds(shape: TLGeoShape): Box2d; // (undocumented) getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[]; // (undocumented) getCenter(shape: TLGeoShape): Vec2d; // (undocumented) getDefaultProps(): TLGeoShape['props']; // (undocumented) getOutline(shape: TLGeoShape): Vec2d[]; // (undocumented) hitTestLineSegment(shape: TLGeoShape, A: VecLike, B: VecLike): boolean; // (undocumented) hitTestPoint(shape: TLGeoShape, point: VecLike): boolean; // (undocumented) indicator(shape: TLGeoShape): JSX.Element; // (undocumented) onBeforeCreate: (shape: TLGeoShape) => { props: { growY: number; geo: "arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "check-box" | "diamond" | "ellipse" | "hexagon" | "octagon" | "oval" | "pentagon" | "rectangle" | "rhombus-2" | "rhombus" | "star" | "trapezoid" | "triangle" | "x-box"; labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; fill: "none" | "pattern" | "semi" | "solid"; dash: "dashed" | "dotted" | "draw" | "solid"; size: "l" | "m" | "s" | "xl"; font: "draw" | "mono" | "sans" | "serif"; align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start"; verticalAlign: "end" | "middle" | "start"; url: string; w: number; h: number; text: string; }; type: "geo"; x: number; y: number; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; id: TLShapeId; typeName: "shape"; } | undefined; // (undocumented) onBeforeUpdate: (prev: TLGeoShape, next: TLGeoShape) => { props: { growY: number; geo: "arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "check-box" | "diamond" | "ellipse" | "hexagon" | "octagon" | "oval" | "pentagon" | "rectangle" | "rhombus-2" | "rhombus" | "star" | "trapezoid" | "triangle" | "x-box"; labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; fill: "none" | "pattern" | "semi" | "solid"; dash: "dashed" | "dotted" | "draw" | "solid"; size: "l" | "m" | "s" | "xl"; font: "draw" | "mono" | "sans" | "serif"; align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start"; verticalAlign: "end" | "middle" | "start"; url: string; w: number; h: number; text: string; }; type: "geo"; x: number; y: number; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; id: TLShapeId; typeName: "shape"; } | undefined; // (undocumented) onDoubleClick: (shape: TLGeoShape) => { props: { geo: "check-box"; }; type: "geo"; x: number; y: number; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; id: TLShapeId; typeName: "shape"; } | { props: { geo: "rectangle"; }; type: "geo"; x: number; y: number; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; id: TLShapeId; typeName: "shape"; } | undefined; // (undocumented) onEditEnd: TLOnEditEndHandler; // (undocumented) onResize: TLOnResizeHandler; // (undocumented) toSvg(shape: TLGeoShape, ctx: SvgExportContext): SVGElement; // (undocumented) static type: "geo"; } // @public export function getEmbedInfo(inputUrl: string): TLEmbedResult; // @public export function getEmbedInfoUnsafely(inputUrl: string): TLEmbedResult; // @public export function getFileMetaData(file: File): Promise<{ isAnimated: boolean; }>; // @public (undocumented) export function getFreshUserPreferences(): TLUserPreferences; export { getHashForString } // @public export function getImageSizeFromSrc(dataURL: string): Promise<{ w: number; h: number; }>; // @public export function getIncrementedName(name: string, others: string[]): string; // @public export function getMediaAssetFromFile(file: File): Promise; // @internal (undocumented) export function getPointerInfo(e: PointerEvent | React.PointerEvent, container: HTMLElement): { point: { x: number; y: number; z: number; }; shiftKey: boolean; altKey: boolean; ctrlKey: boolean; pointerId: number; button: number; isPen: boolean; }; // @public export function getResizedImageDataUrl(dataURLForImage: string, width: number, height: number): Promise; // @public (undocumented) export function getRotatedBoxShadow(rotation: number): string; // @public (undocumented) export function getSplineForLineShape(shape: TLLineShape): NonNullable; // @public (undocumented) export function getSvgAsDataUrl(svg: SVGElement): Promise; // @public (undocumented) export function getSvgAsDataUrlSync(node: SVGElement): string; // @public (undocumented) export function getSvgAsImage(svg: SVGElement, options: { type: TLCopyType | TLExportType; quality: number; scale: number; }): Promise; // @public (undocumented) export function getSvgAsString(svg: SVGElement): string; // @public export function getSvgPathFromStroke(points: Vec2d[], closed?: boolean): string; // @public export function getSvgPathFromStrokePoints(points: StrokePoint[], closed?: boolean): string; // @public (undocumented) export function getTextBoundingBox(text: SVGTextElement): DOMRect; // @public (undocumented) export function getUserPreferences(): TLUserPreferences; // @public (undocumented) export const getValidHttpURLList: (url: string) => string[] | undefined; // @public export function getVideoSizeFromSrc(src: string): Promise<{ w: number; h: number; }>; // @internal (undocumented) export const GRID_INCREMENT = 5; // @public (undocumented) export const GRID_STEPS: { min: number; mid: number; step: number; }[]; // @public (undocumented) export const GroupShape: TLShapeInfo; // @public (undocumented) export class GroupShapeUtil extends ShapeUtil { // (undocumented) canBind: () => boolean; // (undocumented) component(shape: TLGroupShape): JSX.Element | null; // (undocumented) getBounds(shape: TLGroupShape): Box2d; // (undocumented) getCenter(shape: TLGroupShape): Vec2d; // (undocumented) getDefaultProps(): TLGroupShape['props']; // (undocumented) getOutline(shape: TLGroupShape): Vec2d[]; // (undocumented) hideSelectionBoundsBg: () => boolean; // (undocumented) hideSelectionBoundsFg: () => boolean; // (undocumented) indicator(shape: TLGroupShape): JSX.Element; // (undocumented) onChildrenChange: TLOnChildrenChangeHandler; // (undocumented) static type: "group"; // (undocumented) type: "group"; } // @internal (undocumented) export const HAND_TOOL_FRICTION = 0.09; // @public export function hardReset({ shouldReload }?: { shouldReload?: boolean | undefined; }): Promise; // @public (undocumented) export function hardResetEditor(): void; // @internal (undocumented) export const HASH_PATTERN_ZOOM_NAMES: Record; // @public (undocumented) export const HighlightShape: TLShapeInfo; // @public (undocumented) export class HighlightShapeUtil extends ShapeUtil { // (undocumented) backgroundComponent(shape: TLHighlightShape): JSX.Element; // (undocumented) component(shape: TLHighlightShape): JSX.Element; // (undocumented) expandSelectionOutlinePx(shape: TLHighlightShape): number; // (undocumented) getBounds(shape: TLHighlightShape): Box2d; // (undocumented) getCenter(shape: TLHighlightShape): Vec2d; // (undocumented) getDefaultProps(): TLHighlightShape['props']; // (undocumented) getOutline(shape: TLHighlightShape): Vec2d[]; // (undocumented) hideResizeHandles: (shape: TLHighlightShape) => boolean; // (undocumented) hideRotateHandle: (shape: TLHighlightShape) => boolean; // (undocumented) hideSelectionBoundsBg: (shape: TLHighlightShape) => boolean; // (undocumented) hideSelectionBoundsFg: (shape: TLHighlightShape) => boolean; // (undocumented) hitTestLineSegment(shape: TLHighlightShape, A: VecLike, B: VecLike): boolean; // (undocumented) hitTestPoint(shape: TLHighlightShape, point: VecLike): boolean; // (undocumented) indicator(shape: TLHighlightShape): JSX.Element; // (undocumented) onResize: TLOnResizeHandler; // (undocumented) toBackgroundSvg(shape: TLHighlightShape): SVGPathElement; // (undocumented) toSvg(shape: TLHighlightShape): SVGPathElement; // (undocumented) static type: "highlight"; } // @public (undocumented) export function HTMLContainer({ children, className, ...rest }: HTMLContainerProps): JSX.Element; // @public (undocumented) export type HTMLContainerProps = React_3.HTMLAttributes; // @public (undocumented) export const ImageShape: TLShapeInfo; // @public (undocumented) export class ImageShapeUtil extends BaseBoxShapeUtil { // (undocumented) canCrop: () => boolean; // (undocumented) component(shape: TLImageShape): JSX.Element; // (undocumented) getDefaultProps(): TLImageShape['props']; // (undocumented) indicator(shape: TLImageShape): JSX.Element | null; // (undocumented) isAspectRatioLocked: () => boolean; // (undocumented) onDoubleClick: (shape: TLImageShape) => void; // (undocumented) onDoubleClickEdge: TLOnDoubleClickHandler; // (undocumented) toSvg(shape: TLImageShape): Promise; // (undocumented) static type: "image"; } // @public (undocumented) export const INDENT = " "; // @public export function isAnimated(buffer: ArrayBuffer): boolean; // @public export function isGIF(buffer: ArrayBuffer): boolean; // @public (undocumented) export const isImage: (ext: string) => boolean; // @public export function isSerializable(value: any): boolean; // @public (undocumented) export const isSvgText: (text: string) => boolean; // @public (undocumented) export const isValidHttpURL: (url: string) => boolean; // @public (undocumented) export function isValidUrl(url: string): boolean; // @public (undocumented) export const LineShape: TLShapeInfo; // @public (undocumented) export class LineShapeUtil extends ShapeUtil { // (undocumented) component(shape: TLLineShape): JSX.Element | undefined; // (undocumented) getBounds(shape: TLLineShape): Box2d; // (undocumented) getDefaultProps(): TLLineShape['props']; // (undocumented) getHandles(shape: TLLineShape): TLHandle[]; // (undocumented) getOutline(shape: TLLineShape): Vec2d[]; // (undocumented) getOutlineSegments(shape: TLLineShape): Vec2d[][]; // (undocumented) hideResizeHandles: () => boolean; // (undocumented) hideRotateHandle: () => boolean; // (undocumented) hideSelectionBoundsBg: () => boolean; // (undocumented) hideSelectionBoundsFg: () => boolean; // (undocumented) hitTestLineSegment(shape: TLLineShape, A: VecLike, B: VecLike): boolean; // (undocumented) hitTestPoint(shape: TLLineShape, point: Vec2d): boolean; // (undocumented) indicator(shape: TLLineShape): JSX.Element; // (undocumented) isClosed: () => boolean; // (undocumented) onHandleChange: TLOnHandleChangeHandler; // (undocumented) onResize: TLOnResizeHandler; // (undocumented) toSvg(shape: TLLineShape): SVGGElement; // (undocumented) static type: "line"; } // @public (undocumented) export function LoadingScreen({ children }: { children: any; }): JSX.Element; // @public export function loadSessionStateSnapshotIntoStore(store: TLStore, snapshot: TLSessionStateSnapshot): void; // @public (undocumented) export function loopToHtmlElement(elm: Element): HTMLElement; // @internal (undocumented) export const MAJOR_NUDGE_FACTOR = 10; // @public (undocumented) export function matchEmbedUrl(url: string): { definition: { readonly type: "codepen"; readonly title: "Codepen"; readonly hostnames: readonly ["codepen.io"]; readonly minWidth: 300; readonly minHeight: 300; readonly width: 520; readonly height: 400; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "codesandbox"; readonly title: "CodeSandbox"; readonly hostnames: readonly ["codesandbox.io"]; readonly minWidth: 300; readonly minHeight: 300; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "excalidraw"; readonly title: "Excalidraw"; readonly hostnames: readonly ["excalidraw.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly isAspectRatioLocked: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "felt"; readonly title: "Felt"; readonly hostnames: readonly ["felt.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "figma"; readonly title: "Figma"; readonly hostnames: readonly ["figma.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "github_gist"; readonly title: "GitHub Gist"; readonly hostnames: readonly ["gist.github.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "google_calendar"; readonly title: "Google Calendar"; readonly hostnames: readonly ["calendar.google.*"]; readonly width: 720; readonly height: 500; readonly minWidth: 460; readonly minHeight: 360; readonly doesResize: true; readonly canUnmount: false; readonly instructionLink: "https://support.google.com/calendar/answer/41207?hl=en"; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "google_maps"; readonly title: "Google Maps"; readonly hostnames: readonly ["google.*"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "google_slides"; readonly title: "Google Slides"; readonly hostnames: readonly ["docs.google.*"]; readonly width: 720; readonly height: 500; readonly minWidth: 460; readonly minHeight: 360; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "observable"; readonly title: "Observable"; readonly hostnames: readonly ["observablehq.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly isAspectRatioLocked: false; readonly backgroundColor: "#fff"; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "replit"; readonly title: "Replit"; readonly hostnames: readonly ["replit.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "scratch"; readonly title: "Scratch"; readonly hostnames: readonly ["scratch.mit.edu"]; readonly width: 520; readonly height: 400; readonly doesResize: false; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "spotify"; readonly title: "Spotify"; readonly hostnames: readonly ["open.spotify.com"]; readonly width: 720; readonly height: 500; readonly minHeight: 500; readonly overrideOutlineRadius: 12; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "tldraw"; readonly title: "tldraw"; readonly hostnames: readonly ["beta.tldraw.com", "lite.tldraw.com", "www.tldraw.com"]; readonly minWidth: 300; readonly minHeight: 300; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "vimeo"; readonly title: "Vimeo"; readonly hostnames: readonly ["vimeo.com", "player.vimeo.com"]; readonly width: 640; readonly height: 360; readonly doesResize: true; readonly canUnmount: false; readonly isAspectRatioLocked: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "youtube"; readonly title: "YouTube"; readonly hostnames: readonly ["*.youtube.com", "youtube.com", "youtu.be"]; readonly width: 800; readonly height: 450; readonly doesResize: true; readonly canUnmount: false; readonly overridePermissions: { readonly 'allow-presentation': true; }; readonly isAspectRatioLocked: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; }; url: string; embedUrl: string; } | undefined; // @public (undocumented) export function matchUrl(url: string): { definition: { readonly type: "codepen"; readonly title: "Codepen"; readonly hostnames: readonly ["codepen.io"]; readonly minWidth: 300; readonly minHeight: 300; readonly width: 520; readonly height: 400; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "codesandbox"; readonly title: "CodeSandbox"; readonly hostnames: readonly ["codesandbox.io"]; readonly minWidth: 300; readonly minHeight: 300; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "excalidraw"; readonly title: "Excalidraw"; readonly hostnames: readonly ["excalidraw.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly isAspectRatioLocked: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "felt"; readonly title: "Felt"; readonly hostnames: readonly ["felt.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "figma"; readonly title: "Figma"; readonly hostnames: readonly ["figma.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "github_gist"; readonly title: "GitHub Gist"; readonly hostnames: readonly ["gist.github.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "google_calendar"; readonly title: "Google Calendar"; readonly hostnames: readonly ["calendar.google.*"]; readonly width: 720; readonly height: 500; readonly minWidth: 460; readonly minHeight: 360; readonly doesResize: true; readonly canUnmount: false; readonly instructionLink: "https://support.google.com/calendar/answer/41207?hl=en"; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "google_maps"; readonly title: "Google Maps"; readonly hostnames: readonly ["google.*"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "google_slides"; readonly title: "Google Slides"; readonly hostnames: readonly ["docs.google.*"]; readonly width: 720; readonly height: 500; readonly minWidth: 460; readonly minHeight: 360; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "observable"; readonly title: "Observable"; readonly hostnames: readonly ["observablehq.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly isAspectRatioLocked: false; readonly backgroundColor: "#fff"; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "replit"; readonly title: "Replit"; readonly hostnames: readonly ["replit.com"]; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "scratch"; readonly title: "Scratch"; readonly hostnames: readonly ["scratch.mit.edu"]; readonly width: 520; readonly height: 400; readonly doesResize: false; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "spotify"; readonly title: "Spotify"; readonly hostnames: readonly ["open.spotify.com"]; readonly width: 720; readonly height: 500; readonly minHeight: 500; readonly overrideOutlineRadius: 12; readonly doesResize: true; readonly canUnmount: false; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "tldraw"; readonly title: "tldraw"; readonly hostnames: readonly ["beta.tldraw.com", "lite.tldraw.com", "www.tldraw.com"]; readonly minWidth: 300; readonly minHeight: 300; readonly width: 720; readonly height: 500; readonly doesResize: true; readonly canUnmount: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "vimeo"; readonly title: "Vimeo"; readonly hostnames: readonly ["vimeo.com", "player.vimeo.com"]; readonly width: 640; readonly height: 360; readonly doesResize: true; readonly canUnmount: false; readonly isAspectRatioLocked: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; } | { readonly type: "youtube"; readonly title: "YouTube"; readonly hostnames: readonly ["*.youtube.com", "youtube.com", "youtu.be"]; readonly width: 800; readonly height: 450; readonly doesResize: true; readonly canUnmount: false; readonly overridePermissions: { readonly 'allow-presentation': true; }; readonly isAspectRatioLocked: true; readonly toEmbedUrl: (url: string) => string | undefined; readonly fromEmbedUrl: (url: string) => string | undefined; }; embedUrl: string; url: string; } | undefined; // @internal (undocumented) export const MAX_ASSET_HEIGHT = 1000; // @internal (undocumented) export const MAX_ASSET_WIDTH = 1000; // @internal (undocumented) export const MAX_PAGES = 40; // @internal (undocumented) export const MAX_SHAPES_PER_PAGE = 2000; // @internal (undocumented) export const MAX_ZOOM = 8; // @internal (undocumented) export const MIN_ZOOM = 0.1; // @internal (undocumented) export const MINOR_NUDGE_FACTOR = 1; // @internal (undocumented) export const MULTI_CLICK_DURATION = 200; // @public (undocumented) export function normalizeWheel(event: React.WheelEvent | WheelEvent): { x: number; y: number; z: number; }; // @public (undocumented) export const NoteShape: TLShapeInfo; // @public (undocumented) export class NoteShapeUtil extends ShapeUtil { // (undocumented) canEdit: () => boolean; // (undocumented) component(shape: TLNoteShape): JSX.Element; // (undocumented) getBounds(shape: TLNoteShape): Box2d; // (undocumented) getCenter(_shape: TLNoteShape): Vec2d; // (undocumented) getDefaultProps(): TLNoteShape['props']; // (undocumented) getHeight(shape: TLNoteShape): number; // (undocumented) getOutline(shape: TLNoteShape): Vec2d[]; // (undocumented) hideResizeHandles: () => boolean; // (undocumented) hideSelectionBoundsBg: () => boolean; // (undocumented) hideSelectionBoundsFg: () => boolean; // (undocumented) indicator(shape: TLNoteShape): JSX.Element; // (undocumented) onBeforeCreate: (next: TLNoteShape) => { props: { growY: number; color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; size: "l" | "m" | "s" | "xl"; font: "draw" | "mono" | "sans" | "serif"; align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start"; verticalAlign: "end" | "middle" | "start"; url: string; text: string; }; type: "note"; x: number; y: number; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; id: TLShapeId; typeName: "shape"; } | undefined; // (undocumented) onBeforeUpdate: (prev: TLNoteShape, next: TLNoteShape) => { props: { growY: number; color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; size: "l" | "m" | "s" | "xl"; font: "draw" | "mono" | "sans" | "serif"; align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start"; verticalAlign: "end" | "middle" | "start"; url: string; text: string; }; type: "note"; x: number; y: number; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; id: TLShapeId; typeName: "shape"; } | undefined; // (undocumented) onEditEnd: TLOnEditEndHandler; // (undocumented) toSvg(shape: TLNoteShape, ctx: SvgExportContext): SVGGElement; // (undocumented) static type: "note"; } // @public (undocumented) export function openWindow(url: string, target?: string): void; // @internal (undocumented) export function OptionalErrorBoundary({ children, fallback, ...props }: Omit & { fallback: TLErrorFallbackComponent; }): JSX.Element; // @public (undocumented) export class PlopManager { constructor(editor: Editor); createAssetFromFile(_editor: Editor, file: File): Promise; createAssetFromUrl(_editor: Editor, url: string): Promise; // (undocumented) createShapesForAssets(editor: Editor, assets: TLAsset[], position: VecLike): Promise; // (undocumented) editor: Editor; // (undocumented) handleContent: (info: TLExternalContent) => Promise; handleEmbed(editor: Editor, { point, url, embed }: Extract): Promise; handleFiles(editor: Editor, { point, files }: Extract): Promise; handleSvgText(editor: Editor, { point, text }: Extract): Promise; handleText(editor: Editor, { point, text }: Extract): Promise; handleUrl: (editor: Editor, { point, url }: Extract) => Promise; } // @public export function preventDefault(event: Event | React_2.BaseSyntheticEvent): void; export { react } // @public export class ReadonlySharedStyleMap { // (undocumented) [Symbol.iterator](): IterableIterator<[StyleProp, SharedStyle]>; constructor(entries?: Iterable<[StyleProp, SharedStyle]>); // (undocumented) entries(): IterableIterator<[StyleProp, SharedStyle]>; // (undocumented) equals(other: ReadonlySharedStyleMap): boolean; // (undocumented) get(prop: StyleProp): SharedStyle | undefined; // (undocumented) getAsKnownValue(prop: StyleProp): T | undefined; // (undocumented) keys(): IterableIterator>; // @internal (undocumented) protected map: Map, SharedStyle>; // (undocumented) get size(): number; // (undocumented) values(): IterableIterator>; } // @public (undocumented) export function refreshPage(): void; // @public (undocumented) export function releasePointerCapture(element: Element, event: PointerEvent | React_2.PointerEvent): void; // @internal (undocumented) export const REMOVE_SYMBOL: unique symbol; // @public (undocumented) export type RequiredKeys = Pick & Partial; // @public (undocumented) export function resizeBox(shape: TLBaseBoxShape, info: { newPoint: Vec2dModel; handle: TLResizeHandle; mode: TLResizeMode; scaleX: number; scaleY: number; initialBounds: Box2d; initialShape: TLBaseBoxShape; }, opts?: Partial<{ minWidth: number; maxWidth: number; minHeight: number; maxHeight: number; }>): { x: number; y: number; props: { w: number; h: number; }; }; // @public (undocumented) export type ResizeBoxOptions = Partial<{ minWidth: number; maxWidth: number; minHeight: number; maxHeight: number; }>; // @internal (undocumented) export const RICH_TYPES: Record; // @public (undocumented) export const runtime: { openWindow: (url: string, target: string) => void; refreshPage: () => void; hardReset: () => void; }; // @internal (undocumented) export function setDefaultEditorAssetUrls(assetUrls: TLEditorAssetUrls): void; // @public (undocumented) export function setPointerCapture(element: Element, event: PointerEvent | React_2.PointerEvent): void; // @public (undocumented) export function setRuntimeOverrides(input: Partial): void; // @public (undocumented) export function setUserPreferences(user: TLUserPreferences): void; // @public (undocumented) export abstract class ShapeUtil { constructor(editor: Editor, type: Shape['type'], styleProps: ReadonlyMap, string>); // @internal backgroundComponent?(shape: Shape): any; canBind: (_shape: Shape, _otherShape?: K | undefined) => boolean; canCrop: TLShapeUtilFlag; canDropShapes(shape: Shape, shapes: TLShape[]): boolean; canEdit: TLShapeUtilFlag; canReceiveNewChildrenOfType(shape: Shape, type: TLShape['type']): boolean; canResize: TLShapeUtilFlag; canScroll: TLShapeUtilFlag; canSnap: TLShapeUtilFlag; canUnmount: TLShapeUtilFlag; center(shape: Shape): Vec2d; abstract component(shape: Shape): any; // (undocumented) editor: Editor; // @internal (undocumented) expandSelectionOutlinePx(shape: Shape): number; abstract getBounds(shape: Shape): Box2d; getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[]; getCenter(shape: Shape): Vec2d; abstract getDefaultProps(): Shape['props']; getHandles?(shape: Shape): TLHandle[]; getOutline(shape: Shape): Vec2d[]; getOutlineSegments(shape: Shape): Vec2d[][]; hideResizeHandles: TLShapeUtilFlag; hideRotateHandle: TLShapeUtilFlag; hideSelectionBoundsBg: TLShapeUtilFlag; hideSelectionBoundsFg: TLShapeUtilFlag; hitTestLineSegment(shape: Shape, A: VecLike, B: VecLike): boolean; hitTestPoint(shape: Shape, point: VecLike): boolean; abstract indicator(shape: Shape): any; isAspectRatioLocked: TLShapeUtilFlag; isClosed: TLShapeUtilFlag; onBeforeCreate?: TLOnBeforeCreateHandler; onBeforeUpdate?: TLOnBeforeUpdateHandler; // @internal onBindingChange?: TLOnBindingChangeHandler; onChildrenChange?: TLOnChildrenChangeHandler; onClick?: TLOnClickHandler; onDoubleClick?: TLOnDoubleClickHandler; onDoubleClickEdge?: TLOnDoubleClickHandler; onDoubleClickHandle?: TLOnDoubleClickHandleHandler; onDragShapesOut?: TLOnDragHandler; onDragShapesOver?: TLOnDragHandler; onDropShapesOver?: TLOnDragHandler; onEditEnd?: TLOnEditEndHandler; onHandleChange?: TLOnHandleChangeHandler; onResize?: TLOnResizeHandler; onResizeEnd?: TLOnResizeEndHandler; onResizeStart?: TLOnResizeStartHandler; onRotate?: TLOnRotateHandler; onRotateEnd?: TLOnRotateEndHandler; onRotateStart?: TLOnRotateStartHandler; onTranslate?: TLOnTranslateHandler; onTranslateEnd?: TLOnTranslateEndHandler; onTranslateStart?: TLOnTranslateStartHandler; // @internal providesBackgroundForChildren(shape: Shape): boolean; // (undocumented) setStyleInPartial(style: StyleProp, shape: TLShapePartial, value: T): TLShapePartial; snapPoints(shape: Shape): Vec2d[]; // (undocumented) readonly styleProps: ReadonlyMap, string>; toBackgroundSvg?(shape: Shape, ctx: SvgExportContext): null | Promise | SVGElement; toSvg?(shape: Shape, ctx: SvgExportContext): Promise | SVGElement; // (undocumented) readonly type: Shape['type']; static type: string; } // @public export type SharedStyle = { readonly type: 'mixed'; } | { readonly type: 'shared'; readonly value: T; }; // @internal (undocumented) export class SharedStyleMap extends ReadonlySharedStyleMap { // (undocumented) applyValue(prop: StyleProp, value: T): void; // (undocumented) set(prop: StyleProp, value: SharedStyle): void; } // @public (undocumented) export function snapToGrid(n: number, gridSize: number): number; // @public (undocumented) export abstract class StateNode implements Partial { constructor(editor: Editor, parent?: StateNode); // (undocumented) static children?: () => TLStateNodeConstructor[]; // (undocumented) children?: Record; // (undocumented) current: Atom; // (undocumented) editor: Editor; // (undocumented) enter(info: any, from: string): void; // (undocumented) exit(info: any, from: string): void; // (undocumented) handleEvent(info: Exclude): void; // (undocumented) static id: string; // (undocumented) id: string; // (undocumented) static initial?: string; // (undocumented) initial?: string; // (undocumented) isActive: boolean; // (undocumented) onCancel?: TLEventHandlers['onCancel']; // (undocumented) onComplete?: TLEventHandlers['onComplete']; // (undocumented) onDoubleClick?: TLEventHandlers['onDoubleClick']; // (undocumented) onEnter?: TLEnterEventHandler; // (undocumented) onExit?: TLExitEventHandler; // (undocumented) onInterrupt?: TLEventHandlers['onInterrupt']; // (undocumented) onKeyDown?: TLEventHandlers['onKeyDown']; // (undocumented) onKeyRepeat?: TLEventHandlers['onKeyRepeat']; // (undocumented) onKeyUp?: TLEventHandlers['onKeyUp']; // (undocumented) onMiddleClick?: TLEventHandlers['onMiddleClick']; // (undocumented) onPointerDown?: TLEventHandlers['onPointerDown']; // (undocumented) onPointerEnter?: TLEventHandlers['onPointerEnter']; // (undocumented) onPointerLeave?: TLEventHandlers['onPointerLeave']; // (undocumented) onPointerMove?: TLEventHandlers['onPointerMove']; // (undocumented) onPointerUp?: TLEventHandlers['onPointerUp']; // (undocumented) onQuadrupleClick?: TLEventHandlers['onQuadrupleClick']; // (undocumented) onRightClick?: TLEventHandlers['onRightClick']; // (undocumented) onTripleClick?: TLEventHandlers['onTripleClick']; // (undocumented) onWheel?: TLEventHandlers['onWheel']; // (undocumented) parent: StateNode; // (undocumented) path: Computed; // (undocumented) shapeType?: TLShapeUtilConstructor>; // (undocumented) transition(id: string, info: any): this; // (undocumented) type: TLStateNodeType; } // @internal (undocumented) export const SVG_PADDING = 32; // @public (undocumented) export function SVGContainer({ children, className, ...rest }: SVGContainerProps): JSX.Element; // @public (undocumented) export type SVGContainerProps = React_3.HTMLAttributes; // @public export const TAB_ID: string; // @public (undocumented) export const TextShape: TLShapeInfo; // @public (undocumented) export class TextShapeUtil extends ShapeUtil { // (undocumented) canEdit: () => boolean; // (undocumented) component(shape: TLTextShape): JSX.Element; // (undocumented) getBounds(shape: TLTextShape): Box2d; // (undocumented) getDefaultProps(): TLTextShape['props']; // (undocumented) getMinDimensions(shape: TLTextShape): { height: number; width: number; }; // (undocumented) getOutline(shape: TLTextShape): Vec2d[]; // (undocumented) indicator(shape: TLTextShape): JSX.Element; // (undocumented) isAspectRatioLocked: TLShapeUtilFlag; // (undocumented) onBeforeCreate: (shape: TLTextShape) => { x: number; y: number; type: "text"; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; props: { color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; size: "l" | "m" | "s" | "xl"; font: "draw" | "mono" | "sans" | "serif"; align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start"; w: number; text: string; scale: number; autoSize: boolean; }; id: TLShapeId; typeName: "shape"; } | undefined; // (undocumented) onBeforeUpdate: (prev: TLTextShape, next: TLTextShape) => { x: number; y: number; props: { w: number; color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "yellow"; size: "l" | "m" | "s" | "xl"; font: "draw" | "mono" | "sans" | "serif"; align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start"; text: string; scale: number; autoSize: boolean; }; type: "text"; rotation: number; index: string; parentId: TLParentId; isLocked: boolean; opacity: number; id: TLShapeId; typeName: "shape"; } | undefined; // (undocumented) onDoubleClickEdge: (shape: TLTextShape) => { id: TLShapeId; type: "text"; props: { autoSize: boolean; scale?: undefined; }; } | { id: TLShapeId; type: "text"; props: { scale: number; autoSize?: undefined; }; } | undefined; // (undocumented) onEditEnd: TLOnEditEndHandler; // (undocumented) onResize: TLOnResizeHandler; // (undocumented) toSvg(shape: TLTextShape, ctx: SvgExportContext): SVGGElement; // (undocumented) static type: "text"; } // @public (undocumented) export type TLAnimationOptions = Partial<{ duration: number; easing: typeof EASINGS.easeInOutCubic; }>; // @public (undocumented) export type TLBaseBoxShape = TLBaseShape; // @public (undocumented) export interface TLBaseEventInfo { // (undocumented) altKey: boolean; // (undocumented) ctrlKey: boolean; // (undocumented) shiftKey: boolean; // (undocumented) type: UiEventType; } // @public (undocumented) export type TLCancelEvent = (info: TLCancelEventInfo) => void; // @public (undocumented) export type TLCancelEventInfo = { type: 'misc'; name: 'cancel'; }; // @public (undocumented) export type TLClickEvent = (info: TLClickEventInfo) => void; // @public (undocumented) export type TLClickEventInfo = TLBaseEventInfo & { type: 'click'; name: TLCLickEventName; point: VecLike; pointerId: number; button: number; phase: 'down' | 'settle' | 'up'; } & TLPointerEventTarget; // @public (undocumented) export type TLCLickEventName = 'double_click' | 'quadruple_click' | 'triple_click'; // @public (undocumented) export type TLCommand = { type: 'command'; id: string; data: Data; name: Name; preservesRedoStack?: boolean; }; // @public (undocumented) export type TLCommandHandler = { do: (data: Data) => void; undo: (data: Data) => void; redo?: (data: Data) => void; squash?: (prevData: Data, nextData: Data) => Data; }; // @public (undocumented) export type TLCompleteEvent = (info: TLCompleteEventInfo) => void; // @public (undocumented) export type TLCompleteEventInfo = { type: 'misc'; name: 'complete'; }; // @public (undocumented) export interface TLContent { // (undocumented) assets: TLAsset[]; // (undocumented) rootShapeIds: TLShapeId[]; // (undocumented) schema: SerializedSchema; // (undocumented) shapes: TLShape[]; } // @public (undocumented) export type TLCopyType = 'jpeg' | 'json' | 'png' | 'svg'; // @public (undocumented) export const TldrawEditor: React_2.NamedExoticComponent; // @public (undocumented) export type TldrawEditorProps = { children?: any; shapes?: readonly AnyTLShapeInfo[]; tools?: readonly TLStateNodeConstructor[]; assetUrls?: RecursivePartial; autoFocus?: boolean; components?: Partial; onMount?: (editor: Editor) => (() => void) | undefined | void; } & ({ store: TLStore | TLStoreWithStatus; } | { store?: undefined; initialData?: SerializedStore; persistenceKey?: string; sessionId?: string; defaultName?: string; }); // @public (undocumented) export type TLEditorAssetUrls = { fonts: { monospace: string; serif: string; sansSerif: string; draw: string; }; }; // @public (undocumented) export interface TLEditorComponents { // (undocumented) Background: null | TLBackgroundComponent; // (undocumented) Brush: null | TLBrushComponent; // (undocumented) CollaboratorBrush: null | TLBrushComponent; // (undocumented) CollaboratorCursor: null | TLCursorComponent; // (undocumented) CollaboratorHint: null | TLCollaboratorHintComponent; // (undocumented) CollaboratorScribble: null | TLScribbleComponent; // (undocumented) CollaboratorShapeIndicator: null | TLShapeIndicatorComponent; // (undocumented) Cursor: null | TLCursorComponent; // (undocumented) ErrorFallback: TLErrorFallbackComponent; // (undocumented) Grid: null | TLGridComponent; // (undocumented) Handle: null | TLHandleComponent; // (undocumented) Scribble: null | TLScribbleComponent; // (undocumented) ShapeErrorFallback: TLShapeErrorFallbackComponent; // (undocumented) ShapeIndicatorErrorFallback: TLShapeIndicatorErrorFallback; // (undocumented) SnapLine: null | TLSnapLineComponent; // (undocumented) Spinner: null | TLSpinnerComponent; // (undocumented) SvgDefs: null | TLSvgDefsComponent; // (undocumented) ZoomBrush: null | TLBrushComponent; } // @public (undocumented) export interface TLEditorOptions { getContainer: () => HTMLElement; shapes: readonly AnyTLShapeInfo[]; store: TLStore; tools: readonly TLStateNodeConstructor[]; user?: TLUser; } // @public (undocumented) export type TLEmbedResult = { definition: EmbedDefinition; url: string; embedUrl: string; } | undefined; // @public (undocumented) export type TLEnterEventHandler = (info: any, from: string) => void; // @public (undocumented) export interface TLErrorBoundaryProps { // (undocumented) children: React_3.ReactNode; // (undocumented) fallback: (props: { error: unknown; }) => any; // (undocumented) onError?: ((error: unknown) => void) | null; } // @public (undocumented) export interface TLEventHandlers { // (undocumented) onCancel: TLCancelEvent; // (undocumented) onComplete: TLCompleteEvent; // (undocumented) onDoubleClick: TLClickEvent; // (undocumented) onInterrupt: TLInterruptEvent; // (undocumented) onKeyDown: TLKeyboardEvent; // (undocumented) onKeyRepeat: TLKeyboardEvent; // (undocumented) onKeyUp: TLKeyboardEvent; // (undocumented) onMiddleClick: TLPointerEvent; // (undocumented) onPointerDown: TLPointerEvent; // (undocumented) onPointerEnter: TLPointerEvent; // (undocumented) onPointerLeave: TLPointerEvent; // (undocumented) onPointerMove: TLPointerEvent; // (undocumented) onPointerUp: TLPointerEvent; // (undocumented) onQuadrupleClick: TLClickEvent; // (undocumented) onRightClick: TLPointerEvent; // (undocumented) onTripleClick: TLClickEvent; // (undocumented) onWheel: TLWheelEvent; } // @public (undocumented) export type TLEventInfo = TLCancelEventInfo | TLClickEventInfo | TLCompleteEventInfo | TLInterruptEventInfo | TLKeyboardEventInfo | TLPinchEventInfo | TLPointerEventInfo | TLWheelEventInfo; // @public (undocumented) export interface TLEventMap { // (undocumented) 'change-history': [{ reason: 'bail'; markId?: string; } | { reason: 'push' | 'redo' | 'undo'; }]; // (undocumented) 'mark-history': [{ id: string; }]; // (undocumented) 'max-shapes': [{ name: string; pageId: TLPageId; count: number; }]; // (undocumented) 'stop-camera-animation': []; // (undocumented) 'stop-following': []; // (undocumented) change: [HistoryEntry]; // (undocumented) crash: [{ error: unknown; }]; // (undocumented) event: [TLEventInfo]; // (undocumented) frame: [number]; // (undocumented) mount: []; // (undocumented) tick: [number]; // (undocumented) update: []; } // @public (undocumented) export type TLEventMapHandler = (...args: TLEventMap[T]) => void; // @public (undocumented) export type TLEventName = 'cancel' | 'complete' | 'interrupt' | 'wheel' | TLCLickEventName | TLKeyboardEventName | TLPinchEventName | TLPointerEventName; // @public (undocumented) export type TLExitEventHandler = (info: any, to: string) => void; // @public (undocumented) export type TLExportType = 'jpeg' | 'json' | 'png' | 'svg' | 'webp'; // @public (undocumented) export type TLExternalContent = { type: 'embed'; url: string; point?: VecLike; embed: EmbedDefinition; } | { type: 'files'; files: File[]; point?: VecLike; ignoreParent: boolean; } | { type: 'svg-text'; text: string; point?: VecLike; } | { type: 'text'; point?: VecLike; text: string; } | { type: 'url'; url: string; point?: VecLike; }; // @public (undocumented) export type TLHistoryEntry = TLCommand | TLHistoryMark; // @public (undocumented) export type TLHistoryMark = { type: 'STOP'; id: string; onUndo: boolean; onRedo: boolean; }; // @public (undocumented) export type TLInterruptEvent = (info: TLInterruptEventInfo) => void; // @public (undocumented) export type TLInterruptEventInfo = { type: 'misc'; name: 'interrupt'; }; // @public (undocumented) export type TLKeyboardEvent = (info: TLKeyboardEventInfo) => void; // @public (undocumented) export type TLKeyboardEventInfo = TLBaseEventInfo & { type: 'keyboard'; name: TLKeyboardEventName; key: string; code: string; }; // @public (undocumented) export type TLKeyboardEventName = 'key_down' | 'key_repeat' | 'key_up'; // @public (undocumented) export type TLOnBeforeCreateHandler = (next: T) => T | void; // @public (undocumented) export type TLOnBeforeUpdateHandler = (prev: T, next: T) => T | void; // @internal (undocumented) export type TLOnBindingChangeHandler = (shape: T) => TLShapePartial | void; // @public (undocumented) export type TLOnChildrenChangeHandler = (shape: T) => TLShapePartial[] | void; // @public (undocumented) export type TLOnClickHandler = (shape: T) => TLShapePartial | void; // @public (undocumented) export type TLOnDoubleClickHandleHandler = (shape: T, handle: TLHandle) => TLShapePartial | void; // @public (undocumented) export type TLOnDoubleClickHandler = (shape: T) => TLShapePartial | void; // @public (undocumented) export type TLOnDragHandler = (shape: T, shapes: TLShape[]) => R; // @public (undocumented) export type TLOnEditEndHandler = (shape: T) => void; // @public (undocumented) export type TLOnHandleChangeHandler = (shape: T, info: { handle: TLHandle; isPrecise: boolean; }) => TLShapePartial | void; // @public (undocumented) export type TLOnResizeEndHandler = TLEventChangeHandler; // @public (undocumented) export type TLOnResizeHandler = (shape: T, info: TLResizeInfo) => Omit, 'id' | 'type'> | undefined | void; // @public (undocumented) export type TLOnResizeStartHandler = TLEventStartHandler; // @public (undocumented) export type TLOnRotateEndHandler = TLEventChangeHandler; // @public (undocumented) export type TLOnRotateHandler = TLEventChangeHandler; // @public (undocumented) export type TLOnRotateStartHandler = TLEventStartHandler; // @public (undocumented) export type TLOnTranslateEndHandler = TLEventChangeHandler; // @public (undocumented) export type TLOnTranslateHandler = TLEventChangeHandler; // @public (undocumented) export type TLOnTranslateStartHandler = TLEventStartHandler; // @public (undocumented) export type TLPinchEvent = (info: TLPinchEventInfo) => void; // @public (undocumented) export type TLPinchEventInfo = TLBaseEventInfo & { type: 'pinch'; name: TLPinchEventName; point: Vec2dModel; delta: Vec2dModel; }; // @public (undocumented) export type TLPinchEventName = 'pinch_end' | 'pinch_start' | 'pinch'; // @public (undocumented) export type TLPointerEvent = (info: TLPointerEventInfo) => void; // @public (undocumented) export type TLPointerEventInfo = TLBaseEventInfo & { type: 'pointer'; name: TLPointerEventName; point: VecLike; pointerId: number; button: number; isPen: boolean; } & TLPointerEventTarget; // @public (undocumented) export type TLPointerEventName = 'middle_click' | 'pointer_down' | 'pointer_enter' | 'pointer_leave' | 'pointer_move' | 'pointer_up' | 'right_click'; // @public (undocumented) export type TLPointerEventTarget = { target: 'canvas'; shape?: undefined; } | { target: 'handle'; shape: TLShape; handle: TLHandle; } | { target: 'selection'; handle?: TLSelectionHandle; shape?: undefined; } | { target: 'shape'; shape: TLShape; }; // @public (undocumented) export type TLResizeHandle = SelectionCorner | SelectionEdge; // @public export type TLResizeInfo = { newPoint: Vec2d; handle: TLResizeHandle; mode: TLResizeMode; scaleX: number; scaleY: number; initialBounds: Box2d; initialShape: T; }; // @public export type TLResizeMode = 'resize_bounds' | 'scale_shape'; // @public (undocumented) export type TLSelectionHandle = RotateCorner | SelectionCorner | SelectionEdge; // @public export interface TLSessionStateSnapshot { // (undocumented) currentPageId: TLPageId; // (undocumented) exportBackground: boolean; // (undocumented) isDebugMode: boolean; // (undocumented) isFocusMode: boolean; // (undocumented) isGridMode: boolean; // (undocumented) isToolLocked: boolean; // (undocumented) pageStates: Array<{ pageId: TLPageId; camera: { x: number; y: number; z: number; }; selectedIds: TLShapeId[]; focusLayerId: null | TLShapeId; }>; // (undocumented) version: number; } // @public (undocumented) export type TLShapeInfo = { type: T['type']; util: TLShapeUtilConstructor; props?: ShapeProps; migrations?: Migrations; tool?: TLStateNodeConstructor; }; // @public (undocumented) export interface TLShapeUtilConstructor = ShapeUtil> { // (undocumented) new (editor: Editor, type: T['type'], styleProps: ReadonlyMap, string>): U; // (undocumented) type: T['type']; } // @public (undocumented) export type TLShapeUtilFlag = (shape: T) => boolean; // @public (undocumented) export interface TLStateNodeConstructor { // (undocumented) new (editor: Editor, parent?: StateNode): StateNode; // (undocumented) children?: () => TLStateNodeConstructor[]; // (undocumented) id: string; // (undocumented) initial?: string; } // @public (undocumented) export type TLStoreEventInfo = HistoryEntry; // @public (undocumented) export type TLStoreOptions = { initialData?: SerializedStore; defaultName?: string; } & ({ schema: StoreSchema; } | { shapes: readonly AnyTLShapeInfo[]; }); // @public (undocumented) export type TLStoreWithStatus = { readonly status: 'error'; readonly store?: undefined; readonly error: Error; } | { readonly status: 'loading'; readonly store?: undefined; readonly error?: undefined; } | { readonly status: 'not-synced'; readonly store: TLStore; readonly error?: undefined; } | { readonly status: 'synced-local'; readonly store: TLStore; readonly error?: undefined; } | { readonly status: 'synced-remote'; readonly connectionStatus: 'offline' | 'online'; readonly store: TLStore; readonly error?: undefined; }; // @public (undocumented) export type TLTickEvent = (elapsed: number) => void; // @public export interface TLUserPreferences { // (undocumented) animationSpeed: number; // (undocumented) color: string; // (undocumented) id: string; // (undocumented) isDarkMode: boolean; // (undocumented) isSnapMode: boolean; // (undocumented) locale: string; // (undocumented) name: string; } // @public (undocumented) export type TLWheelEvent = (info: TLWheelEventInfo) => void; // @public (undocumented) export type TLWheelEventInfo = TLBaseEventInfo & { type: 'wheel'; name: 'wheel'; delta: Vec2dModel; }; export { track } // @public (undocumented) export const truncateStringWithEllipsis: (str: string, maxLength: number) => string; // @public (undocumented) export type UiEvent = TLCancelEvent | TLClickEvent | TLCompleteEvent | TLKeyboardEvent | TLPinchEvent | TLPointerEvent; // @public (undocumented) export type UiEventType = 'click' | 'keyboard' | 'pinch' | 'pointer' | 'wheel' | 'zoom'; // @public export function uniqueId(): string; export { useComputed } // @public (undocumented) export function useContainer(): HTMLDivElement; // @public (undocumented) export const useEditor: () => Editor; // @internal (undocumented) export function useLocalStore({ persistenceKey, sessionId, ...rest }: { persistenceKey?: string; sessionId?: string; } & TLStoreOptions): TLStoreWithStatus; // @internal (undocumented) export function usePeerIds(): string[]; // @public (undocumented) export function usePrefersReducedMotion(): boolean; // @internal (undocumented) export function usePresence(userId: string): null | TLInstancePresence; export { useQuickReactor } // @internal (undocumented) export const USER_COLORS: readonly ["#FF802B", "#EC5E41", "#F2555A", "#F04F88", "#E34BA9", "#BD54C6", "#9D5BD2", "#7B66DC", "#02B1CC", "#11B3A3", "#39B178", "#55B467"]; export { useReactor } // @public (undocumented) export function useTLStore(opts: TLStoreOptions): TLStore; export { useValue } // @public (undocumented) export const VideoShape: TLShapeInfo; // @public (undocumented) export class VideoShapeUtil extends BaseBoxShapeUtil { // (undocumented) canEdit: () => boolean; // (undocumented) component(shape: TLVideoShape): JSX.Element; // (undocumented) getDefaultProps(): TLVideoShape['props']; // (undocumented) indicator(shape: TLVideoShape): JSX.Element; // (undocumented) isAspectRatioLocked: () => boolean; // (undocumented) toSvg(shape: TLVideoShape): SVGGElement; // (undocumented) static type: "video"; } // @public (undocumented) export class WeakMapCache { // (undocumented) access(item: T): K | undefined; // (undocumented) bust(): void; // (undocumented) get

(item: P, cb: (item: P) => K): NonNullable; // (undocumented) has(item: T): boolean; // (undocumented) invalidate(item: T): void; // (undocumented) items: WeakMap; // (undocumented) set(item: T, value: K): void; } export { whyAmIRunning } // @internal (undocumented) export const ZOOMS: number[]; export * from "@tldraw/indices"; export * from "@tldraw/tlschema"; // (No @packageDocumentation comment for this package) ```