@imgly/plugin-ai-image-generation-web
Version:
AI image generation plugin for the CE.SDK editor
129 lines (128 loc) • 4.05 kB
TypeScript
import { type OpenAPIV3 } from 'openapi-types';
import type CreativeEditorSDK from '@cesdk/cesdk-js';
import type { CreativeEngine } from '@cesdk/cesdk-js';
import { ImageOutput, RenderCustomProperty, GetBlockInput, Provider, Middleware } from '@imgly/plugin-ai-generation-web';
import { DimensionConstraints } from './utils';
import { ImageQuickActionSupportMap } from '../types';
/**
* Configuration for Runware image providers.
*/
type ImageProviderConfiguration = {
/**
* HTTP endpoint URL for the Runware proxy. The proxy handles API key injection.
*/
proxyUrl: string;
/**
* Enable debug logging for provider creation and API calls.
*/
debug?: boolean;
/**
* Middleware functions to process inputs/outputs.
*/
middlewares?: Middleware<any, any>[];
/**
* @deprecated Use `middlewares` instead.
*/
middleware?: Middleware<any, any>[];
/**
* Override provider's default history asset source.
*/
history?: false | '@imgly/local' | '@imgly/indexedDB' | (string & {});
/**
* Configure supported quick actions.
*/
supportedQuickActions?: {
[quickActionId: string]: Partial<ImageQuickActionSupportMap<any>[string]> | false | null;
};
};
/**
* Options for creating a Runware image provider.
*/
interface CreateProviderOptions<I extends Record<string, any>> {
/**
* Runware model identifier (AIR format, e.g., 'bfl:5@1').
*/
modelId: string;
/**
* Unique provider identifier for registration.
*/
providerId: string;
/**
* Human-readable provider name displayed in the UI.
*/
name: string;
/**
* OpenAPI schema document describing the input parameters.
*/
schema: OpenAPIV3.Document;
/**
* JSON reference to the input schema (e.g., '#/components/schemas/Input').
*/
inputReference: string;
/**
* User flow mode for the provider panel.
*/
useFlow?: 'placeholder' | 'generation-only';
/**
* Initialization callback when the provider is registered.
*/
initialize?: (context: {
cesdk?: CreativeEditorSDK;
engine: CreativeEngine;
}) => void;
/**
* Custom property renderers for the input panel.
*/
renderCustomProperty?: RenderCustomProperty;
/**
* Quick actions this provider supports.
*/
supportedQuickActions?: ImageQuickActionSupportMap<I>;
/**
* Get block dimensions from input parameters.
*/
getBlockInput?: GetBlockInput<'image', I>;
/**
* Extract image dimensions from input parameters.
*/
getImageSize?: (input: I) => {
width: number;
height: number;
};
/**
* Transform input parameters to Runware API format.
*/
mapInput: (input: I) => Record<string, any>;
/**
* Provider-specific middleware functions.
*/
middleware?: Middleware<I, ImageOutput>[];
/**
* Custom headers to include in API requests.
*/
headers?: Record<string, string>;
/**
* CE.SDK instance for image URL conversion.
*/
cesdk?: CreativeEditorSDK;
/**
* Model-specific dimension constraints for image-to-image.
* Required for I2I providers to properly constrain output dimensions.
*/
dimensionConstraints?: DimensionConstraints;
/**
* Skip automatic dimension injection for image-to-image.
* When true, the API will auto-detect dimensions from the reference image.
*/
skipAutoDimensions?: boolean;
}
/**
* Creates a Runware image provider from schema. This should work out of the box
* but may be rough around the edges and should/can be further customized.
*/
declare function createImageProvider<I extends Record<string, any> & {
image_url?: string;
image_urls?: string[];
}>(options: CreateProviderOptions<I>, config: ImageProviderConfiguration): Provider<'image', I, ImageOutput>;
export default createImageProvider;
export type { ImageProviderConfiguration as RunwareProviderConfiguration };