/* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run json-schema-to-typescript to regenerate this file. */ /** * The main heading displayed above the image in single-image mode. Use to describe or label the image content. */ export type Title = string; /** * Optional URL for the title. When provided, the title becomes a clickable link. */ export type TitleLink = string; /** * When enabled, images stretch to fill the entire widget area, potentially distorting aspect ratio. When disabled, images maintain their original aspect ratio and are contained within the widget bounds with letterboxing if needed. */ export type StretchToFill = boolean; /** * When enabled, displays multiple images in a responsive grid layout from the data array. When disabled, shows a single image from imageUrl or uploaded file. Enable for galleries, camera grids, or comparing multiple visual assets. */ export type MultiImage = boolean; /** * Spacing between images in pixels when using multi-image mode. Increase for visual separation, decrease for compact grids. The gap scales proportionally with image size. */ export type Gap = number; /** * Font size in pixels for image labels displayed below each image. Applies to both single and multi-image modes when labels are provided. */ export type ImageLabelFontSize = number; /** * Image source for single-image mode. Accepts a direct URL (e.g., 'https://example.com/image.jpg') or a base64-encoded image supplied as a data URI. Can be bound to a data column for dynamic image sources (e.g. a database column). Base64 values MUST include the data-URI prefix with the correct MIME type: 'data:image/png;base64,' (or image/jpeg, image/gif, image/svg+xml, etc.) — a raw base64 string without this prefix will not render. The base64 payload must contain no whitespace or line breaks. Used when 'Use image upload' is disabled. */ export type ImageURL = string; /** * When enabled, displays an uploaded image file instead of loading from URL. Use for static images that don't change or when the image isn't accessible via URL. */ export type UseImageUpload = boolean; /** * Unix timestamp in milliseconds for time-based filtering. When a timeRange filter is active, only images with timestamps within the range are displayed. Images without timestamps are always shown. */ export type Timestamp = number; /** * Image source for this entry. Either a full, accessible URL starting with http:// or https://, or a base64-encoded image supplied as a data URI. Can be bound to a data column (e.g. a database column). Base64 values MUST include the data-URI prefix with the correct MIME type: 'data:image/png;base64,' (or image/jpeg, image/gif, image/svg+xml, etc.) — a raw base64 string without this prefix will not render. The base64 payload must contain no whitespace or line breaks. */ export type ImageURL1 = string; /** * Text label displayed below this image. Use for identification, captions, or metadata like camera name or timestamp. */ export type ImageLabel = string; /** * Array of images for multi-image mode. Each entry specifies an image URL, optional label, and optional timestamp for time-based filtering. Images are arranged in an optimized responsive grid. */ export type Images = { timestamp?: Timestamp; imageUrl?: ImageURL1; label?: ImageLabel; [k: string]: unknown; }[]; /** * An image display widget for showing single or multiple images from URLs or base64-encoded data. Use this widget to display photos, diagrams, camera feeds, or any visual content on dashboards. Supports single image mode with direct URL or file upload, and multi-image mode for grid layouts of multiple images with optional labels. Features time-based filtering for displaying images within a selected time range and responsive grid layouts that optimize image arrangement based on available space. */ export interface ImageConfiguration { title?: Title; titleLink?: TitleLink; stretchToFit?: StretchToFill; multiImage?: MultiImage; gap?: Gap; labelFontSize?: ImageLabelFontSize; imageUrl?: ImageURL; useUpload?: UseImageUpload; image?: UploadImageFile; data?: Images; [k: string]: unknown; } /** * Upload an image file directly to the dashboard. Supports common formats (PNG, JPG, GIF, SVG). The image is stored with the dashboard configuration. */ export interface UploadImageFile { [k: string]: unknown; }