ui.startDrag
Handles a drag event. At the end of the drag event, the specified type of element — for example, an image — will be added at the drop coordinates.
Usage
import React from "react";import { Text, TypographyCard } from "@canva/app-ui-kit";import { addNativeElement, ui } from "@canva/design";export function App() {return (<TypographyCardariaLabel="Add text to design"onClick={() => {addNativeElement({type: "TEXT",children: ["Add text into a design"],});}}onDragStart={(event: React.DragEvent<HTMLElement>) => {ui.startDrag(event, {type: "TEXT",children: ["Add text into a design"],});}}><Text>Add text into a design</Text></TypographyCard>);}
Parameters
The expected parameters depend on what will be added to the user's design at the end of a drag event:
event
object
The event that's fired when the user starts dragging an element.
dragData
object
The options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
The type of element to add to the design. For embeds, this must be "EMBED"
.
dragData.embedUrl
string
The URL of the embeddable media.
dragData.previewUrl
string
The URL or data URL of the image to use for the drag preview. This image will appear under the user's cursor during the drag event.
dragData.previewSize
object
The dimensions of the drag preview, in pixels.
dragData.previewSize.width
number
The width of the drag preview, in pixels.
dragData.previewSize.height
number
The height of the drag preview, in pixels.
When adding an audio track to a design, set the following parameters:
event
object
The event that's fired when the user starts dragging an element.
dragData
object
The options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
The type of element to add to the design. For audio tracks, this must be "AUDIO"
.
dragData.title
string
A human-readable title that appears in the Canva editor.
dragData.durationMs
number
The duration of the audio file, in milliseconds.
dragData.resolveAudioRef
function
A function that returns the result of the upload
method.
For image elements, the expected parameters depend on the format of the image data:
event
object
The event that's fired when the user starts dragging an element.
dragData
object
The options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
The type of element to add to the design. For images, this must be "IMAGE"
.
dragData.resolveImageRef
function
A function that returns the result of the upload
method.
dragData.previewSize
object
The dimensions of the drag preview, in pixels. The dimensions should have the same aspect ratio as the full-size image.
dragData.previewSize.width
number
The width of the drag preview, in pixels.
dragData.previewSize.height
number
The height of the drag preview, in pixels.
dragData.fullSize
object
The dimensions of the full-size image. If omitted, the drag preview dimensions are used.
dragData.fullSize.width
number
The width of the full-size image, in pixels.
dragData.fullSize.height
number
The height of the full-size image, in pixels.
dragData.previewUrl
string
The URL or data URL of the image to use for the drag preview. This image will appear under the user's cursor during the drag event. If omitted, the full-size image will be used.
When adding text to a design, set the following parameters:
event
object
The event that's fired when the user starts dragging an element.
dragData
object
The options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
The type of element to add to the design. For text, this must be "TEXT"
.
dragData.children
array
The text to add to the user's design, provided as an array of strings.
For the time being, the array is only allowed to have one item. In the future, each element in the array will be rendered as a separate line of text.
dragData.textAlign
string
The horizontal alignment of the text.
The available options include:
"start"
"center"
"end"
The default value is "start"
.
dragData.fontWeight
string
The weight (boldness) of the font.
The available options include:
"normal"
"thin"
"extralight"
"light"
"medium"
"semibold"
"bold"
"ultrabold"
"heavy"
The default value is "normal"
.
dragData.fontStyle
string
The style of the font.
The available options include:
"normal"
"italic"
The default value is "normal"
.
dragData.decoration
string
The decoration to apply to the font.
The available options include:
"normal"
"underline"
The default value is "normal"
.
dragData.fontRef
string
A unique identifier that references a font asset in Canva's backend. To learn more, see Creating text.
When adding a video to a design, set the following parameters:
event
object
The event that's fired when the user starts dragging an element.
dragData
object
The options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
The type of element to add to the design. For videos, this must be "VIDEO"
.
dragData.resolveVideoRef
function
A function that returns the result of the upload
method.
dragData.previewSize
object
The dimensions of the drag preview, in pixels. The dimensions should have the same aspect ratio as the full-size video.
dragData.previewSize.width
number
The width of the drag preview, in pixels.
dragData.previewSize.height
number
The height of the drag preview, in pixels.
dragData.previewUrl
string
The URL or data URL of the image to use for the drag preview. This image will appear under the user's cursor during the drag event. If omitted, the full-size image will be used.
dragData.fullSize
object
The dimensions of the full-size video, in pixels. If omitted, the drag preview dimensions are used.
dragData.fullSize.width
number
The width of the full-size video, in pixels.
dragData.fullSize.height
number
The height of the full-size video, in pixels.
Returns
Promise<void>