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:
eventobjectThe event that's fired when the user starts dragging an element.
dragDataobjectThe options for configuring what's added to the user's design at the end of a drag event.
dragData.typestringThe type of element to add to the design. For embeds, this must be "EMBED".
dragData.embedUrlstringThe URL of the embeddable media.
dragData.previewUrlstringThe 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.previewSizeobjectThe dimensions of the drag preview, in pixels.
dragData.previewSize.widthnumberThe width of the drag preview, in pixels.
dragData.previewSize.heightnumberThe height of the drag preview, in pixels.
When adding an audio track to a design, set the following parameters:
eventobjectThe event that's fired when the user starts dragging an element.
dragDataobjectThe options for configuring what's added to the user's design at the end of a drag event.
dragData.typestringThe type of element to add to the design. For audio tracks, this must be "AUDIO".
dragData.titlestringA human-readable title that appears in the Canva editor.
dragData.durationMsnumberThe duration of the audio file, in milliseconds.
dragData.resolveAudioReffunctionA function that returns the result of the upload method.
For image elements, the expected parameters depend on the format of the image data:
eventobjectThe event that's fired when the user starts dragging an element.
dragDataobjectThe options for configuring what's added to the user's design at the end of a drag event.
dragData.typestringThe type of element to add to the design. For images, this must be "IMAGE".
dragData.resolveImageReffunctionA function that returns the result of the upload method.
dragData.previewSizeobjectThe dimensions of the drag preview, in pixels. The dimensions should have the same aspect ratio as the full-size image.
dragData.previewSize.widthnumberThe width of the drag preview, in pixels.
dragData.previewSize.heightnumberThe height of the drag preview, in pixels.
dragData.fullSizeobjectThe dimensions of the full-size image. If omitted, the drag preview dimensions are used.
dragData.fullSize.widthnumberThe width of the full-size image, in pixels.
dragData.fullSize.heightnumberThe height of the full-size image, in pixels.
dragData.previewUrlstringThe 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:
eventobjectThe event that's fired when the user starts dragging an element.
dragDataobjectThe options for configuring what's added to the user's design at the end of a drag event.
dragData.typestringThe type of element to add to the design. For text, this must be "TEXT".
dragData.childrenarrayThe 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.textAlignstringThe horizontal alignment of the text.
The available options include:
"start""center""end"
The default value is "start".
dragData.fontWeightstringThe weight (boldness) of the font.
The available options include:
"normal""thin""extralight""light""medium""semibold""bold""ultrabold""heavy"
The default value is "normal".
dragData.fontStylestringThe style of the font.
The available options include:
"normal""italic"
The default value is "normal".
dragData.decorationstringThe decoration to apply to the font.
The available options include:
"normal""underline"
The default value is "normal".
dragData.fontRefstringA 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:
eventobjectThe event that's fired when the user starts dragging an element.
dragDataobjectThe options for configuring what's added to the user's design at the end of a drag event.
dragData.typestringThe type of element to add to the design. For videos, this must be "VIDEO".
dragData.resolveVideoReffunctionA function that returns the result of the upload method.
dragData.previewSizeobjectThe dimensions of the drag preview, in pixels. The dimensions should have the same aspect ratio as the full-size video.
dragData.previewSize.widthnumberThe width of the drag preview, in pixels.
dragData.previewSize.heightnumberThe height of the drag preview, in pixels.
dragData.previewUrlstringThe 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.fullSizeobjectThe dimensions of the full-size video, in pixels. If omitted, the drag preview dimensions are used.
dragData.fullSize.widthnumberThe width of the full-size video, in pixels.
dragData.fullSize.heightnumberThe height of the full-size video, in pixels.
Returns
Promise<void>