image:ai-empty#
Emitted when AI image insertion receives no images. (AI plugins)
Type: signal.
Payload: none.
Example:
app.on('image:ai-empty', () => {
// react to the signal
});
image:alignment#
Emitted when image alignment changes (Email plugin).
Type: signal.
Payload:
Example:
app.on('image:alignment', ({ align }) => {
updateEmailPreviewAlignment(align);
});
image:before:change#
Hook emitted before image block data is updated. Handlers may return a modified payload.
Type: hook (handler may return a value).
Payload:
- block — block instance
- data — image fields to apply (
src,alt,caption,srcset, …) - event — native DOM or input event (user-driven actions) (optional)
Example:
app.on('image:before:change', ({ block, data, event }) => {
return { block, data: { ...data, alt: data.alt || '' }, event };
});
image:before:drop#
Hook emitted before image files are dropped onto the editor. Set cancel: true on the payload to abort.
Type: hook (handler may return a value).
Payload:
- event — native DOM or input event (user-driven actions)
- files — FileList or file array from drop/paste
- targetBlock — block under the drop target, if any (optional)
- replace — boolean — whether an existing image block is replaced
- cancel — boolean — set to
truein the handler to abort the drop
Example:
app.on('image:before:drop', (payload) => {
if (payload.files.length > 5) payload.cancel = true;
});
image:center#
Emitted when an image is aligned to the center.
Type: signal.
Payload: none.
Example:
app.on('image:center', () => {
// react to the signal
});
image:change#
Emitted after image block data is updated.
Type: signal.
Payload:
- block — block instance
- data — applied image fields
- event — native DOM or input event (user-driven actions) (optional)
Example:
app.on('image:change', ({ block, data }) => {
cacheThumbnail(block.getEl(), data.src);
});
image:dimensions#
Emitted when image width/height change on the block.
Type: signal.
Payload:
- block — image block instance
Example:
app.on('image:dimensions', ({ block }) => {
syncResizeHandles(block.getEl());
});
image:dnd:leave#
Emitted when dragged files leave an image drop target.
Type: signal.
Payload:
- event — native DOM or input event (user-driven actions)
Example:
app.on('image:dnd:leave', ({ event }) => {
console.log('image:dnd:leave', { event });
});
image:dnd:over#
Emitted while dragging files over an image drop target.
Type: signal.
Payload:
- event — native DOM or input event (user-driven actions)
- files — FileList or file array from drop/paste
- targetBlock — block under the drop target, if any
- replace — boolean — whether an existing image block is replaced
Example:
app.on('image:dnd:over', ({ event, files, targetBlock, replace }) => {
console.log('image:dnd:over', { event, files, targetBlock, replace });
});
image:drop#
Emitted when image files are dropped into the editor.
Type: signal.
Payload:
- event — native DOM or input event (user-driven actions)
- files — FileList or file array from drop/paste
- targetBlock — block under the drop target, if any
- replace — boolean — whether an existing image block is replaced
Example:
app.on('image:drop', ({ event, files, targetBlock, replace }) => {
console.log('image:drop', { event, files, targetBlock, replace });
});
image:insert#
Emitted when an image block is inserted.
Type: signal.
Payload: none.
Example:
app.on('image:insert', () => {
// react to the signal
});
image:left#
Emitted when an image is aligned to the left.
Type: signal.
Payload: none.
Example:
app.on('image:left', () => {
// react to the signal
});
image:outset#
Emitted when image outset mode is toggled.
Type: signal.
Payload: none.
Example:
app.on('image:outset', () => {
// react to the signal
});
image:paste#
Emitted when image files are pasted from the clipboard.
Type: signal.
Payload:
- event — native DOM or input event (user-driven actions)
- files — FileList or file array from drop/paste
- source — string — source identifier (e.g.
clipboard,html)
Example:
app.on('image:paste', ({ event, files, source }) => {
console.log('image:paste', { event, files, source });
});
image:paste:html#
Emitted when pasted HTML contains images to process.
Type: signal.
Payload:
- event — native DOM or input event (user-driven actions)
- html — HTML string
- prepared — prepared paste HTML
- source — string — source identifier (e.g.
clipboard,html)
Example:
app.on('image:paste:html', ({ html }) => {
console.log(html.length);
});
image:resize:start#
Emitted when image resize drag starts.
Type: signal.
Payload:
- event — native DOM or input event (user-driven actions)
- e — event-specific value
- block — block instance
- blockEl — image block root element
- imageEl —
<img>element inside the block
Example:
app.on('image:resize:start', ({ block }) => {
console.log(block.getType());
});
image:resize:stop#
Emitted when image resize drag ends.
Type: signal.
Payload:
- event — native DOM or input event (user-driven actions)
- e — event-specific value
- block — block instance
- blockEl — image block root element
- imageEl —
<img>element inside the block
Example:
app.on('image:resize:stop', ({ block }) => {
console.log(block.getType());
});
image:right#
Emitted when an image is aligned to the right.
Type: signal.
Payload: none.
Example:
app.on('image:right', () => {
// react to the signal
});
image:save#
Emitted when image settings are saved from the image dropdown.
Type: signal.
Payload:
- block — image block instance
- data — saved image fields from the dropdown form
Example:
app.on('image:save', ({ block, data }) => {
persistImageMeta(block, data);
});
image:upload#
Emitted when an uploaded image is applied to a block.
Type: signal.
Payload:
- block — image block instance
- data — processed upload fields (
src,srcset, …) - event — native event from file input or drop (optional)
Example:
app.on('image:upload', ({ block, data }) => {
registerUploadedAsset(data.src);
});
image:upload:error#
Emitted when image upload fails.
Type: signal.
Payload:
- response — server or transport response
Example:
app.on('image:upload:error', ({ response }) => {
console.log('image:upload:error', { response });
});
image:wrap#
Emitted when text wrap is toggled for an image.
Type: signal.
Payload: none.
Example:
app.on('image:wrap', () => {
// react to the signal
});