FrameShapeUtil
See source codeTable of contents
- migrations
 - props
 - type
 - editor
 - Properties
 - Methods
- canBeLaidOut
 - canBind
 - canCrop
 - canDropShapes
 - canEdit
 - canEditInReadOnly
 - canReceiveNewChildrenOfType
 - canResize
 - canScroll
 - canSnap
 - component
 - getBoundsSnapGeometry
 - getCanvasSvgDefs
 - getDefaultProps
 - getGeometry
 - getHandles
 - getHandleSnapGeometry
 - getInterpolatedProps
 - getText
 - hideResizeHandles
 - hideRotateHandle
 - hideSelectionBoundsBg
 - hideSelectionBoundsFg
 - indicator
 - isAspectRatioLocked
 - onBeforeCreate
 - onBeforeUpdate
 - onChildrenChange
 - onClick
 - onDoubleClick
 - onDoubleClickEdge
 - onDoubleClickHandle
 - onDragShapesOut
 - onDragShapesOver
 - onDropShapesOver
 - onEditEnd
 - onHandleDrag
 - onResize
 - onResizeEnd
 - onResizeStart
 - onRotate
 - onRotateEnd
 - onRotateStart
 - onTranslate
 - onTranslateEnd
 - onTranslateStart
 - providesBackgroundForChildren
 - toBackgroundSvg
 - toSvg
 
 
Extends BaseBoxShapeUtil<TLFrameShape>.
class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {}
Constructor
Constructs a new instance of the ShapeUtil class
Parameters
| Name | Description | 
|---|---|
  | 
Properties
migrations
static migrations: import('@tldraw/editor').TLPropsMigrations
props
static props: import('@tldraw/editor').RecordProps<TLFrameShape>
type
static type: 'frame'
editor
editor: Editor
Methods
canBeLaidOut()
Whether the shape participates in stacking, aligning, and distributing.
canBeLaidOut(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
canBind()
Whether the shape can be bound to. See TLShapeUtilCanBindOpts for details.
canBind(_opts: TLShapeUtilCanBindOpts<Shape>): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
canCrop()
Whether the shape can be cropped.
canCrop(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
canDropShapes()
canDropShapes(shape: TLFrameShape, _shapes: TLShape[]): boolean
Parameters
| Name | Description | 
|---|---|
  | |
  |  | 
Returns
boolean
canEdit()
canEdit(): boolean
canEditInReadOnly()
Whether the shape can be edited in read-only mode.
canEditInReadOnly(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
canReceiveNewChildrenOfType()
Parameters
Returns
boolean
canResize()
Whether the shape can be resized.
canResize(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
canScroll()
Whether the shape can be scrolled while editing.
canScroll(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
canSnap()
Whether the shape can be snapped to by another shape.
canSnap(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
component()
component(shape: TLFrameShape): import('react/jsx-runtime').JSX.Element
Parameters
| Name | Description | 
|---|---|
  | 
Returns
import('react/jsx-runtime').JSX.Element
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
| Name | Description | 
|---|---|
  |  | 
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']
getGeometry()
getGeometry(shape: TLFrameShape): Geometry2d
Parameters
| Name | Description | 
|---|---|
  | 
Returns
getHandles()
Get an array of handle models for the shape. This is an optional method.
getHandles?(shape: Shape): TLHandle[]
Example
util.getHandles?.(myShape)
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLHandle[]
getHandleSnapGeometry()
getHandleSnapGeometry(shape: Shape): HandleSnapGeometry
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
getInterpolatedProps()
getInterpolatedProps(
  startShape: TLFrameShape,
  endShape: TLFrameShape,
  t: number
): TLFrameShapeProps
Parameters
| Name | Description | 
|---|---|
  | |
  | |
  |  | 
Returns
getText()
getText(shape: TLFrameShape): string | undefined
Parameters
| Name | Description | 
|---|---|
  | 
Returns
string | undefined
hideResizeHandles()
Whether the shape should hide its resize handles when selected.
hideResizeHandles(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
hideRotateHandle()
Whether the shape should hide its rotation handles when selected.
hideRotateHandle(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
hideSelectionBoundsBg()
Whether the shape should hide its selection bounds background when selected.
hideSelectionBoundsBg(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
hideSelectionBoundsFg()
Whether the shape should hide its selection bounds foreground when selected.
hideSelectionBoundsFg(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
indicator()
indicator(shape: TLFrameShape): import('react/jsx-runtime').JSX.Element
Parameters
| Name | Description | 
|---|---|
  | 
Returns
import('react/jsx-runtime').JSX.Element
isAspectRatioLocked()
Whether the shape's aspect ratio is locked.
isAspectRatioLocked(_shape: Shape): boolean
Parameters
| Name | Description | 
|---|---|
  |  | 
Returns
boolean
onBeforeCreate()
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
| Name | Description | 
|---|---|
  | The next shape.  | 
Returns
Shape | void
The next shape or void.
onBeforeUpdate()
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
| Name | Description | 
|---|---|
  | The previous shape.  | 
  | The next shape.  | 
Returns
Shape | void
The next shape or void.
onChildrenChange()
A callback called when a shape's children change.
onChildrenChange?(shape: Shape): TLShapePartial[] | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLShapePartial[] | void
An array of shape updates, or void.
onClick()
A callback called when a shape is clicked.
onClick?(shape: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onDoubleClick()
A callback called when a shape is double clicked.
onDoubleClick?(shape: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onDoubleClickEdge()
A callback called when a shape's edge is double clicked.
onDoubleClickEdge?(shape: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onDoubleClickHandle()
A callback called when a shape's handle is double clicked.
onDoubleClickHandle?(
  shape: Shape,
  handle: TLHandle
): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
  | The handle that is double-clicked.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onDragShapesOut()
onDragShapesOut(_shape: TLFrameShape, shapes: TLShape[]): void
Parameters
| Name | Description | 
|---|---|
  | |
  |  | 
Returns
void
onDragShapesOver()
onDragShapesOver(frame: TLFrameShape, shapes: TLShape[]): void
Parameters
| Name | Description | 
|---|---|
  | |
  |  | 
Returns
void
onDropShapesOver()
A callback called when some other shapes are dropped over this one.
onDropShapesOver?(shape: Shape, shapes: TLShape[]): void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
  | The shapes that are being dropped over this one.  | 
Returns
void
onEditEnd()
A callback called when a shape finishes being editing.
onEditEnd?(shape: Shape): void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
void
onHandleDrag()
A callback called when a shape's handle changes.
onHandleDrag?(
  shape: Shape,
  info: TLHandleDragInfo<Shape>
): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The current shape.  | 
  | 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
| Name | Description | 
|---|---|
  |  | 
  |  | 
Returns
any
onResizeEnd()
A callback called when a shape finishes resizing.
onResizeEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape at the start of the resize.  | 
  | The current shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onResizeStart()
A callback called when a shape starts being resized.
onResizeStart?(shape: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onRotate()
A callback called when a shape changes from a rotation.
onRotate?(initial: Shape, current: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape at the start of the rotation.  | 
  | The current shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onRotateEnd()
A callback called when a shape finishes rotating.
onRotateEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape at the start of the rotation.  | 
  | The current shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onRotateStart()
A callback called when a shape starts being rotated.
onRotateStart?(shape: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onTranslate()
A callback called when a shape changes from a translation.
onTranslate?(initial: Shape, current: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape at the start of the translation.  | 
  | The current shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onTranslateEnd()
A callback called when a shape finishes translating.
onTranslateEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape at the start of the translation.  | 
  | The current shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
onTranslateStart()
A callback called when a shape starts being translated.
onTranslateStart?(shape: Shape): TLShapePartial<Shape> | void
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
Returns
TLShapePartial<Shape> | void
A change to apply to the shape, or void.
providesBackgroundForChildren()
providesBackgroundForChildren(): boolean
toBackgroundSvg()
Get the shape's background layer as an SVG object.
toBackgroundSvg?(
  shape: Shape,
  ctx: SvgExportContext
): null | Promise<null | ReactElement> | ReactElement
Parameters
| Name | Description | 
|---|---|
  | The shape.  | 
  | 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
| Name | Description | 
|---|---|
  | |
  | 
Returns
import('react/jsx-runtime').JSX.Element