FrameShapeUtil

See source code
Table of contents

Extends BaseBoxShapeUtil<TLFrameShape>.

class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {}

Constructor

Constructs a new instance of the ShapeUtil class

Parameters

NameDescription

editor


Properties

migrations

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

props

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

type

static
static type: 'frame'

editor

editor: Editor

options


Methods

configure()

static
static configure<T extends TLShapeUtilConstructor<any, any>>(
  this: T,
  options: T extends new (...args: any[]) => {
    options: infer Options
  }
    ? Partial<Options>
    : never
): T

Parameters

NameDescription

this

T

options

T extends new (...args: any[]) => {
  options: infer Options
}
  ? Partial<Options>
  : never

Returns

T

canBeLaidOut()

Whether the shape can participate in layout functions such as alignment or distribution.

canBeLaidOut(_shape: Shape, _info: TLShapeUtilCanBeLaidOutOpts): boolean

Parameters

NameDescription

_shape

Shape

_info

Returns

boolean

canBind()

Whether the shape can be bound to. See TLShapeUtilCanBindOpts for details.

canBind(_opts: TLShapeUtilCanBindOpts): boolean

Parameters

NameDescription

_opts

Returns

boolean

canCrop()

Whether the shape can be cropped.

canCrop(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

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()

canReceiveNewChildrenOfType(shape: TLShape): boolean

Parameters

NameDescription

shape

Returns

boolean

canResize()

canResize(): boolean

canResizeChildren()

canResizeChildren(): boolean

canScroll()

Whether the shape can be scrolled while editing.

canScroll(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

canSnap()

Whether the shape can be snapped to by another shape.

canSnap(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

canTabTo()

Whether the shape can be tabbed to.

canTabTo(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

component()

component(shape: TLFrameShape): import('react/jsx-runtime').JSX.Element

Parameters

NameDescription

shape

Returns

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

getAriaDescriptor()

getAriaDescriptor(shape: TLFrameShape): string

Parameters

NameDescription

shape

Returns

string

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()

Return elements to be added to the <defs> section of the canvases SVG context. This can be used to define SVG content (e.g. patterns & masks) that can be referred to by ID from svg elements returned by component.

Each def should have a unique key. If multiple defs from different shapes all have the same key, only one will be used.

getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[]

getDefaultProps()

getDefaultProps(): TLFrameShape['props']

getFontFaces()

Get the font faces that should be rendered in the document in order for this shape to render correctly.

getFontFaces(shape: Shape): TLFontFace[]

Parameters

NameDescription

shape

Shape

The shape.

Returns


getGeometry()

getGeometry(shape: TLFrameShape): Geometry2d

Parameters

NameDescription

shape

Returns


getHandles()

optional

Get an array of handle models for the shape. This is an optional method.

getHandles?(shape: Shape): TLHandle[]

Example

util.getHandles?.(myShape)

Parameters

NameDescription

shape

Shape

The shape.

Returns


getHandleSnapGeometry()

getHandleSnapGeometry(shape: Shape): HandleSnapGeometry

Parameters

NameDescription

shape

Shape

Returns


getInterpolatedProps()

getInterpolatedProps(
  startShape: TLFrameShape,
  endShape: TLFrameShape,
  t: number
): TLFrameShapeProps

Parameters

NameDescription

startShape

endShape

t

number

Returns


getText()

getText(shape: TLFrameShape): string | undefined

Parameters

NameDescription

shape

Returns

string | undefined

hideResizeHandles()

Whether the shape should hide its resize handles when selected.

hideResizeHandles(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

hideRotateHandle()

Whether the shape should hide its rotation handles when selected.

hideRotateHandle(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

hideSelectionBoundsBg()

Whether the shape should hide its selection bounds background when selected.

hideSelectionBoundsBg(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

hideSelectionBoundsFg()

Whether the shape should hide its selection bounds foreground when selected.

hideSelectionBoundsFg(_shape: Shape): boolean

Parameters

NameDescription

_shape

Shape

Returns

boolean

indicator()

indicator(shape: TLFrameShape): import('react/jsx-runtime').JSX.Element

Parameters

NameDescription

shape

Returns

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

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.


onCrop()

optional

A callback called when a shape changes from a crop.

onCrop?(
  shape: Shape,
  info: TLCropInfo<Shape>
): Omit<TLShapePartial<Shape>, 'id' | 'type'> | undefined | void

Parameters

NameDescription

shape

Shape

The shape at the start of the crop.

info

TLCropInfo<Shape>

Info about the crop.

Returns

Omit<TLShapePartial<Shape>, 'id' | 'type'> | undefined | 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.


onDoubleClickCorner()

onDoubleClickCorner(shape: TLFrameShape): {
  id: import('@tldraw/editor').TLShapeId
  type: 'frame'
}

Parameters

NameDescription

shape

Returns

{
  id: import('@tldraw/editor').TLShapeId
  type: 'frame'
}

onDoubleClickEdge()

onDoubleClickEdge(
  shape: TLFrameShape,
  info: TLClickEventInfo
):
  | {
      id: import('@tldraw/editor').TLShapeId
      props: {
        h: number
        w: number
      }
      type: 'frame'
    }
  | undefined

Parameters

NameDescription

shape

info

Returns

  | {
      id: import('@tldraw/editor').TLShapeId
      props: {
        h: number
        w: number
      }
      type: 'frame'
    }
  | undefined

onDoubleClickHandle()

optional

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

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

Parameters

NameDescription

shape

Shape

The shape.

handle

The handle that is double-clicked.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onDragShapesIn()

onDragShapesIn(
  shape: TLFrameShape,
  draggingShapes: TLShape[],
  { initialParentIds, initialIndices }: TLDragShapesOverInfo
): void

Parameters

NameDescription

shape

draggingShapes

{ initialParentIds, initialIndices }

Returns

void

onDragShapesOut()

onDragShapesOut(
  shape: TLFrameShape,
  draggingShapes: TLShape[],
  info: TLDragShapesOutInfo
): void

Parameters

NameDescription

shape

draggingShapes

info

Returns

void

onDragShapesOver()

optional

A callback called when some other shapes are dragged over this one. This fires when the shapes are dragged over the shape for the first time (after the onDragShapesIn callback), and again on every update while the shapes are being dragged.

onDragShapesOver?(
  shape: Shape,
  shapes: TLShape[],
  info: TLDragShapesOverInfo
): 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.

info

Returns

void

onDropShapesOver()

optional

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

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

Parameters

NameDescription

shape

Shape

The shape.

shapes

The shapes that are being dropped over this one.

info

Returns

void

onEditEnd()

optional

A callback called when a shape finishes being edited.

onEditEnd?(shape: Shape): void

Parameters

NameDescription

shape

Shape

The shape.

Returns

void

onEditStart()

optional

A callback called when a shape starts being edited.

onEditStart?(shape: Shape): void

Parameters

NameDescription

shape

Shape

The shape.

Returns

void

onHandleDrag()

optional

A callback called when a shape's handle changes.

onHandleDrag?(
  shape: Shape,
  info: TLHandleDragInfo<Shape>
): TLShapePartial<Shape> | void

Parameters

NameDescription

shape

Shape

The current shape.

info

An object containing the handle and whether the handle is 'precise' or not.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


onResize()

onResize(shape: any, info: TLResizeInfo<any>): any

Parameters

NameDescription

shape

any

info

Returns

any

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()

optional

A callback called when a shape changes from a translation.

onTranslate?(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.


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()

optional

A callback called when a shape starts being translated.

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

Parameters

NameDescription

shape

Shape

The shape.

Returns

TLShapePartial<Shape> | void

A change to apply to the shape, or void.


providesBackgroundForChildren()

providesBackgroundForChildren(): boolean

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: TLFrameShape,
  ctx: SvgExportContext
): import('react/jsx-runtime').JSX.Element

Parameters

NameDescription

shape

ctx

Returns

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

Prev
FrameShapeTool
Next
GeoShapeTool