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
RequiredThe event that's fired when the user starts dragging an element.
dragData
object
RequiredThe options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
RequiredThe type of element to add to the design. For embeds, this must be "EMBED"
.
dragData.embedUrl
string
RequiredThe URL of the embeddable media.
dragData.previewUrl
string
RequiredThe 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
RequiredThe dimensions of the drag preview, in pixels.
dragData.previewSize.width
number
RequiredThe width of the drag preview, in pixels.
dragData.previewSize.height
number
RequiredThe height of the drag preview, in pixels.
When adding an audio track to a design, set the following parameters:
event
object
RequiredThe event that's fired when the user starts dragging an element.
dragData
object
RequiredThe options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
RequiredThe type of element to add to the design. For audio tracks, this must be "AUDIO"
.
dragData.title
string
RequiredA human-readable title that appears in the Canva editor.
dragData.durationMs
number
RequiredThe duration of the audio file, in milliseconds.
dragData.resolveAudioRef
function
RequiredA 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
RequiredThe event that's fired when the user starts dragging an element.
dragData
object
RequiredThe options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
RequiredThe type of element to add to the design. For images, this must be "IMAGE"
.
dragData.resolveImageRef
function
RequiredA function that returns the result of the upload
method.
dragData.previewSize
object
RequiredThe dimensions of the drag preview, in pixels. The dimensions should have the same aspect ratio as the full-size image.
dragData.previewSize.width
number
RequiredThe width of the drag preview, in pixels.
dragData.previewSize.height
number
RequiredThe height of the drag preview, in pixels.
dragData.fullSize
object
OptionalThe dimensions of the full-size image. If omitted, the drag preview dimensions are used.
dragData.fullSize.width
number
RequiredThe width of the full-size image, in pixels.
dragData.fullSize.height
number
RequiredThe height of the full-size image, in pixels.
dragData.previewUrl
string
OptionalThe 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
RequiredThe event that's fired when the user starts dragging an element.
dragData
object
RequiredThe options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
RequiredThe type of element to add to the design. For text, this must be "TEXT"
.
dragData.children
array
RequiredThe 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
OptionalThe horizontal alignment of the text.
The available options include:
"start"
"center"
"end"
The default value is "start"
.
dragData.fontWeight
string
OptionalThe 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
OptionalThe style of the font.
The available options include:
"normal"
"italic"
The default value is "normal"
.
dragData.decoration
string
OptionalThe decoration to apply to the font.
The available options include:
"normal"
"underline"
The default value is "normal"
.
dragData.fontRef
string
OptionalA 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
RequiredThe event that's fired when the user starts dragging an element.
dragData
object
RequiredThe options for configuring what's added to the user's design at the end of a drag event.
dragData.type
string
RequiredThe type of element to add to the design. For videos, this must be "VIDEO"
.
dragData.resolveVideoRef
function
RequiredA function that returns the result of the upload
method.
dragData.previewSize
object
RequiredThe dimensions of the drag preview, in pixels. The dimensions should have the same aspect ratio as the full-size video.
dragData.previewSize.width
number
RequiredThe width of the drag preview, in pixels.
dragData.previewSize.height
number
RequiredThe height of the drag preview, in pixels.
dragData.previewUrl
string
RequiredThe 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
OptionalThe 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>