Drag & drop

dnd:custom:drop#

Emitted when custom drag-and-drop content is dropped.

Type: signal.

Payload:

  • event — native DOM or input event (user-driven actions)
  • payload — custom drop payload from dataTransfer
  • targetBlock — block under the drop target, if any
  • dataTransfer — DragEvent dataTransfer

Example:

app.on('dnd:custom:drop', ({ event, payload, targetBlock, dataTransfer }) => {
  console.log('dnd:custom:drop', { event, payload, targetBlock, dataTransfer });
});

dnd:custom:leave#

Emitted when custom drag content leaves a drop target.

Type: signal.

Payload:

  • event — native DOM or input event (user-driven actions)

Example:

app.on('dnd:custom:leave', ({ event }) => {
  console.log('dnd:custom:leave', { event });
});

dnd:custom:over#

Emitted while custom drag content is over a valid drop target.

Type: signal.

Payload:

  • event — native DOM or input event (user-driven actions)
  • targetBlock — block under the drop target, if any

Example:

app.on('dnd:custom:over', ({ event, targetBlock }) => {
  console.log('dnd:custom:over', { event, targetBlock });
});

dnd:drop#

Emitted when content is dropped into the editor.

Type: signal.

Payload:

  • event — native DOM or input event (user-driven actions)
  • scope — string — snapshot scope (e.g. schemaSection)
  • inside — event-specific value
  • inEditable — boolean — whether the key event happened inside the editable
  • inEditor — event-specific value

Example:

app.on('dnd:drop', ({ event, scope, inside, inEditable, inEditor }) => {
  console.log('dnd:drop', { event, scope, inside, inEditable, inEditor });
});

dnd:leave#

Emitted when a drag leaves the editor drop zone.

Type: signal.

Payload:

  • event — native DOM or input event (user-driven actions)
  • scope — string — snapshot scope (e.g. schemaSection)
  • inside — event-specific value
  • inEditable — boolean — whether the key event happened inside the editable
  • inEditor — event-specific value

Example:

app.on('dnd:leave', ({ event, scope, inside, inEditable, inEditor }) => {
  console.log('dnd:leave', { event, scope, inside, inEditable, inEditor });
});

dnd:over#

Emitted repeatedly while dragging over the editor.

Type: signal.

Payload:

  • event — native DOM or input event (user-driven actions)
  • scope — string — snapshot scope (e.g. schemaSection)
  • inside — event-specific value
  • inEditable — boolean — whether the key event happened inside the editable
  • inEditor — event-specific value

Example:

app.on('dnd:over', ({ event, scope, inside, inEditable, inEditor }) => {
  console.log('dnd:over', { event, scope, inside, inEditable, inEditor });
});

dnd:start#

Emitted when drag starts inside the editor.

Type: signal.

Payload:

  • event — native DOM or input event (user-driven actions)
  • scope — string — snapshot scope (e.g. schemaSection)
  • inside — event-specific value
  • inEditable — boolean — whether the key event happened inside the editable
  • inEditor — event-specific value

Example:

app.on('dnd:start', ({ event, scope, inside, inEditable, inEditor }) => {
  console.log('dnd:start', { event, scope, inside, inEditable, inEditor });
});