or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

commands.mdcore-functionality.mdimage-captions.mdimage-insertion.mdimage-resizing.mdimage-styling.mdimage-text-alternative.mdimage-upload.mdindex.mdutility-functions.md
tile.json

image-resizing.mddocs/

Image Resizing

Interactive image resizing with drag handles, preset size buttons, and custom size input with support for pixels and percentages.

Capabilities

ImageResize Plugin

Main resizing plugin that combines editing functionality with handles and buttons.

/**
 * Main resizing plugin that combines editing functionality with handles and buttons
 */
class ImageResize {
  static pluginName: 'ImageResize';
  static requires: [ImageResizeEditing, ImageResizeHandles, ImageCustomResizeUI, ImageResizeButtons];
  static isOfficialPlugin: true;
}

Usage:

import { ImageResize } from '@ckeditor/ckeditor5-image';
import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic';

ClassicEditor
  .create(document.querySelector('#editor'), {
    plugins: [ImageResize],
    image: {
      resizeUnit: '%',
      resizeOptions: [
        {
          name: 'resizeImage:original',
          value: null,
          icon: 'original'
        },
        {
          name: 'resizeImage:25',
          value: '25',
          icon: 'small'
        },
        {
          name: 'resizeImage:50',
          value: '50',
          icon: 'medium'
        },
        {
          name: 'resizeImage:75',
          value: '75',
          icon: 'large'
        }
      ]
    }
  });

ImageResizeEditing Plugin

Core editing functionality for image resizing with schema and command registration.

/**
 * Core editing functionality for image resizing with schema and command registration
 */
class ImageResizeEditing {
  static pluginName: 'ImageResizeEditing';
  static requires: [ImageUtils];
  static isOfficialPlugin: true;
}

ImageResizeHandles Plugin

Visual drag handles for interactive image resizing.

/**
 * Visual drag handles for interactive image resizing
 */
class ImageResizeHandles {
  static pluginName: 'ImageResizeHandles';
  static requires: [ImageResizeEditing, WidgetResize];
  static isOfficialPlugin: true;
}

ImageResizeButtons Plugin

Preset size buttons for quick image resizing operations.

/**
 * Preset size buttons for quick image resizing operations
 */
class ImageResizeButtons {
  static pluginName: 'ImageResizeButtons';
  static requires: [ImageResizeEditing];
  static isOfficialPlugin: true;
}

ImageCustomResizeUI Plugin

Custom resize form UI allowing manual width/height input.

/**
 * Custom resize form UI allowing manual width/height input
 */
class ImageCustomResizeUI {
  static pluginName: 'ImageCustomResizeUI';
  static requires: [ImageResizeEditing];
  static isOfficialPlugin: true;
}

ResizeImageCommand

Command for programmatic image resizing operations.

/**
 * Command for programmatic image resizing operations
 */
class ResizeImageCommand {
  constructor(editor: Editor);
  
  /**
   * Execute resize operation
   * @param options - Resize options
   */
  execute(options: { width: string | null }): void;
  
  /** Current resize value with width and height */
  readonly value: { width: string | null, height: string | null } | null;
}

Usage:

// Resize to 50% width
editor.execute('resizeImage', { width: '50%' });

// Resize to 300px width
editor.execute('resizeImage', { width: '300px' });

// Reset to original size
editor.execute('resizeImage', { width: null });

// Check current size
const currentSize = editor.commands.get('resizeImage').value;
console.log('Current size:', currentSize);

Configuration

interface ImageResizeOption {
  /** Unique name for the resize option */
  name: string;
  /** Size value - null for original size, string with unit for specific size */
  value: string | null;
  /** Icon name for the button */
  icon?: string; // 'small', 'medium', 'large', 'original'
  /** Display label for the option */
  label?: string;
}

interface ImageConfig {
  /** Available resize options */
  resizeOptions?: Array<ImageResizeOption>;
  /** Default unit for resizing operations */
  resizeUnit?: 'px' | '%'; // Default: '%'
}

Configuration Examples:

// Pixel-based resizing with custom options
ClassicEditor
  .create(document.querySelector('#editor'), {
    image: {
      resizeUnit: 'px',
      resizeOptions: [
        {
          name: 'resizeImage:original',
          value: null,
          label: 'Original size',
          icon: 'original'
        },
        {
          name: 'resizeImage:200',
          value: '200',
          label: 'Small (200px)',
          icon: 'small'
        },
        {
          name: 'resizeImage:400',
          value: '400',
          label: 'Medium (400px)',
          icon: 'medium'
        }
      ]
    }
  });

// Percentage-based with fewer options
ClassicEditor
  .create(document.querySelector('#editor'), {
    image: {
      resizeUnit: '%',
      resizeOptions: [
        { name: 'resizeImage:original', value: null, icon: 'original' },
        { name: 'resizeImage:50', value: '50', icon: 'medium' }
      ]
    }
  });

Type Definitions

/**
 * Possible resize range for selected image
 */
interface _PossibleResizeImageRange {
  unit: 'px' | '%';
  lower: number;
  upper: number;
}

/**
 * Image dimension with unit specification
 */
interface _ImageDimensionWithUnit {
  value: number;
  unit: 'px' | '%';
}

/**
 * Validator callback for custom resize form
 */
type _ImageCustomResizeFormValidatorCallback = (value: string) => string | undefined;

Utility Functions

/**
 * Get image size value if specified in pixels
 * @param imageElement - Image model element
 * @returns Size value in pixels or null
 */
function _getImageSizeValueIfInPx(imageElement: any): string | null;

/**
 * Check if image has both width and height styles set
 * @param imageElement - Image view element
 * @returns True if both dimensions are styled
 */
function _checkIfImageWidthAndHeightStylesAreBothSet(imageElement: any): boolean;

/**
 * Get selected image width in specified units
 * @param imageElement - Image model element
 * @returns Width with unit information
 */
function _getSelectedImageWidthInUnits(imageElement: any): _ImageDimensionWithUnit | null;

/**
 * Parse image dimension string with unit
 * @param dimension - Dimension string (e.g., "50px", "25%")
 * @returns Parsed dimension with unit
 */
function _tryParseImageDimensionWithUnit(dimension: string): _ImageDimensionWithUnit | null;

/**
 * Convert image dimensions between units
 * @param dimensions - Current dimensions
 * @param targetUnit - Target unit for conversion
 * @param imageElement - Image element for context
 * @returns Converted dimensions
 */
function _tryCastImageDimensionsToUnit(
  dimensions: _ImageDimensionWithUnit,
  targetUnit: 'px' | '%',
  imageElement: any
): _ImageDimensionWithUnit | null;

UI Components

/**
 * Form view for custom image resize input
 */
class _ImageCustomResizeFormView {
  constructor(locale: any, options: any);
  
  widthInputView: any;
  heightInputView: any;
  saveButtonView: any;
  cancelButtonView: any;
  
  render(): void;
  destroy(): void;
}