ArrowShapeUtil

See source code
Table of contents

Extends ShapeUtil<TLArrowShape>.

class ArrowShapeUtil extends ShapeUtil<TLArrowShape> {}

Constructor

Constructs a new instance of the ShapeUtil class

Parameters

NameDescription

editor


Properties

migrations

static
static migrations: import('@tldraw/editor').MigrationSequence

props

static
static props: import('@tldraw/editor').RecordProps<TLArrowShape>

type

static
static type: 'arrow'

editor

editor: Editor

Methods

canBeLaidOut()

canBeLaidOut(shape: TLArrowShape): boolean

Parameters

NameDescription

shape

Returns

boolean

canBind()

canBind({ toShapeType }: TLShapeUtilCanBindOpts<TLArrowShape>): boolean

Parameters

NameDescription

{ toShapeType }

Returns

boolean

canCrop()

Whether the shape can be cropped.

canCrop(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

canDropShapes()

Get whether the shape can receive children of a given type.

canDropShapes(_shape: Shape, _shapes: TLShape[]): boolean

Parameters

NameDescription

_shape

Shape

_shapes

Returns

boolean

canEdit()

canEdit(): boolean

canEditInReadOnly()

Whether the shape can be edited in read-only mode.

canEditInReadOnly(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

canReceiveNewChildrenOfType()

Get whether the shape can receive children of a given type.

canReceiveNewChildrenOfType(_shape: Shape, _type: TLShape['type']): boolean

Parameters

NameDescription

_shape

Shape

_type

TLShape['type']

Returns

boolean

canResize()

Whether the shape can be resized.

canResize(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

canScroll()

Whether the shape can be scrolled while editing.

canScroll(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

canSnap()

canSnap(): boolean

component()

component(shape: TLArrowShape): import('react/jsx-runtime').JSX.Element | null

Parameters

NameDescription

shape

Returns

import('react/jsx-runtime').JSX.Element | null

getBoundsSnapGeometry()

Get the geometry to use when snapping to this this shape in translate/resize operations. See BoundsSnapGeometry for details.

getBoundsSnapGeometry(_shape: Shape): BoundsSnapGeometry

Parameters

NameDescription

_shape

Shape

Returns


getCanvasSvgDefs()

getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[]

getDefaultProps()

getDefaultProps(): TLArrowShape['props']

getGeometry()

getGeometry(shape: TLArrowShape): Group2d

Parameters

NameDescription

shape

Returns


getHandles()

getHandles(shape: TLArrowShape): TLHandle[]

Parameters

NameDescription

shape

Returns


getHandleSnapGeometry()

Get the geometry to use when snapping handles to this shape. See HandleSnapGeometry for details.

getHandleSnapGeometry(_shape: Shape): HandleSnapGeometry

Parameters

NameDescription

_shape

Shape

Returns


getInterpolatedProps()

getInterpolatedProps(
  startShape: TLArrowShape,
  endShape: TLArrowShape,
  progress: number
): TLArrowShapeProps

Parameters

NameDescription

startShape

endShape

progress

number

Returns


getText()

getText(shape: TLArrowShape): string

Parameters

NameDescription

shape

Returns

string

hideResizeHandles()

hideResizeHandles(): boolean

hideRotateHandle()

hideRotateHandle(): boolean

hideSelectionBoundsBg()

hideSelectionBoundsBg(): boolean

hideSelectionBoundsFg()

hideSelectionBoundsFg(): boolean

indicator()

indicator(shape: TLArrowShape): import('react/jsx-runtime').JSX.Element | null

Parameters

NameDescription

shape

Returns

import('react/jsx-runtime').JSX.Element | null

isAspectRatioLocked()

Whether the shape's aspect ratio is locked.

isAspectRatioLocked(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

onBeforeCreate()

optional

A callback called just before a shape is created. This method provides a last chance to modify the created shape.

onBeforeCreate?(next: Shape): Shape | void

Example

onBeforeCreate = (next) => {
  return { ...next, x: next.x + 1 }
}

Parameters

NameDescription

next

Shape

The next shape.

Returns

Shape | void

The next shape or void.


onBeforeUpdate()

optional

A callback called just before a shape is updated. This method provides a last chance to modify the updated shape.

onBeforeUpdate?(prev: Shape, next: Shape): Shape | void

Example

onBeforeUpdate = (prev, next) => {
  if (prev.x === next.x) {
    return { ...next, x: next.x + 1 }
  }
}

Parameters

NameDescription

prev

Shape

The previous shape.

next

Shape

The next shape.

Returns

Shape | void

The next shape or void.


onChildrenChange()

optional

A callback called when a shape's children change.

onChildrenChange?(shape: Shape): TLShapePartial[] | void

Parameters

NameDescription

shape

Shape

The shape.

Returns

An array of shape updates, or void.


onClick()

optional

A callback called when a shape is clicked.

onClick?(shape: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

shape

Shape

The shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onDoubleClick()

optional

A callback called when a shape is double clicked.

onDoubleClick?(shape: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

shape

Shape

The shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onDoubleClickEdge()

optional

A callback called when a shape's edge is double clicked.

onDoubleClickEdge?(shape: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

shape

Shape

The shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onDoubleClickHandle()

onDoubleClickHandle(
  shape: TLArrowShape,
  handle: TLHandle
): TLShapePartial<TLArrowShape> | void

Parameters

NameDescription

shape

handle

Returns


onDragShapesOut()

optional

A callback called when some other shapes are dragged out of this one.

onDragShapesOut?(shape: Shape, shapes: TLShape[]): void

Parameters

NameDescription

shape

Shape

The shape.

shapes

The shapes that are being dragged out.

Returns

void

onDragShapesOver()

optional

A callback called when some other shapes are dragged over this one.

onDragShapesOver?(shape: Shape, shapes: TLShape[]): void

Example

onDragShapesOver = (shape, shapes) => {
  this.editor.reparentShapes(shapes, shape.id)
}

Parameters

NameDescription

shape

Shape

The shape.

shapes

The shapes that are being dragged over this one.

Returns

void

onDropShapesOver()

optional

A callback called when some other shapes are dropped over this one.

onDropShapesOver?(shape: Shape, shapes: TLShape[]): void

Parameters

NameDescription

shape

Shape

The shape.

shapes

The shapes that are being dropped over this one.

Returns

void

onEditEnd()

onEditEnd(shape: TLArrowShape): void

Parameters

NameDescription

shape

Returns

void

onHandleDrag()

onHandleDrag(
  shape: TLArrowShape,
  { handle, isPrecise }: TLHandleDragInfo<TLArrowShape>
): {
  id: import('@tldraw/editor').TLShapeId
  meta?: Partial<import('@tldraw/editor').JsonObject> | undefined
  props?: Partial<TLArrowShapeProps> | undefined
  type: 'arrow'
} & Partial<Omit<TLArrowShape, 'id' | 'meta' | 'props' | 'type'>>

Parameters

NameDescription

shape

{ handle, isPrecise }

Returns

{
  id: import('@tldraw/editor').TLShapeId
  meta?: Partial<import('@tldraw/editor').JsonObject> | undefined
  props?: Partial<TLArrowShapeProps> | undefined
  type: 'arrow'
} & Partial<Omit<TLArrowShape, 'id' | 'meta' | 'props' | 'type'>>

onResize()

onResize(
  shape: TLArrowShape,
  info: TLResizeInfo<TLArrowShape>
): {
  props: {
    bend: number
    end: import('@tldraw/editor').VecModel
    start: import('@tldraw/editor').VecModel
  }
}

Parameters

NameDescription

shape

info

Returns

{
  props: {
    bend: number
    end: import('@tldraw/editor').VecModel
    start: import('@tldraw/editor').VecModel
  }
}

onResizeEnd()

optional

A callback called when a shape finishes resizing.

onResizeEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

initial

Shape

The shape at the start of the resize.

current

Shape

The current shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onResizeStart()

optional

A callback called when a shape starts being resized.

onResizeStart?(shape: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

shape

Shape

The shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onRotate()

optional

A callback called when a shape changes from a rotation.

onRotate?(initial: Shape, current: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

initial

Shape

The shape at the start of the rotation.

current

Shape

The current shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onRotateEnd()

optional

A callback called when a shape finishes rotating.

onRotateEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

initial

Shape

The shape at the start of the rotation.

current

Shape

The current shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onRotateStart()

optional

A callback called when a shape starts being rotated.

onRotateStart?(shape: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

shape

Shape

The shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onTranslate()

onTranslate(initialShape: TLArrowShape, shape: TLArrowShape): void

Parameters

NameDescription

initialShape

shape

Returns

void

onTranslateEnd()

optional

A callback called when a shape finishes translating.

onTranslateEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void

Parameters

NameDescription

initial

Shape

The shape at the start of the translation.

current

Shape

The current shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onTranslateStart()

onTranslateStart(shape: TLArrowShape): void

Parameters

NameDescription

shape

Returns

void

toBackgroundSvg()

optional

Get the shape's background layer as an SVG object.

toBackgroundSvg?(
  shape: Shape,
  ctx: SvgExportContext
): null | Promise<null | ReactElement> | ReactElement

Parameters

NameDescription

shape

Shape

The shape.

ctx

ctx - The export context for the SVG - used for adding e.g. <def>s

Returns

null | Promise<null | ReactElement> | ReactElement

An SVG element.


toSvg()

toSvg(
  shape: TLArrowShape,
  ctx: SvgExportContext
): import('react/jsx-runtime').JSX.Element

Parameters

NameDescription

shape

ctx

Returns

import('react/jsx-runtime').JSX.Element

Prev
ArrowShapeTool
Next
BookmarkShapeUtil